Skip to content

Commit

Permalink
Issue checkstyle#7723: Update AbstractChecks to log DetailAST - Array…
Browse files Browse the repository at this point in the history
…TrailingComma
  • Loading branch information
wilcoln authored and romani committed Mar 13, 2020
1 parent bb108e4 commit ce28f73
Show file tree
Hide file tree
Showing 9 changed files with 151 additions and 10 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
////////////////////////////////////////////////////////////////////////////////
// checkstyle: Checks Java source code for adherence to a set of rules.
// Copyright (C) 2001-2020 the original author or authors.
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
// version 2.1 of the License, or (at your option) any later version.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with this library; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
////////////////////////////////////////////////////////////////////////////////

package org.checkstyle.suppressionxpathfilter;

import java.io.File;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;

import org.junit.jupiter.api.Test;

import com.puppycrawl.tools.checkstyle.DefaultConfiguration;
import com.puppycrawl.tools.checkstyle.checks.coding.ArrayTrailingCommaCheck;

public class XpathRegressionArrayTrailingCommaTest extends AbstractXpathTestSupport {

private final String checkName = ArrayTrailingCommaCheck.class.getSimpleName();

@Override
protected String getCheckName() {
return checkName;
}

@Test
public void testOne() throws Exception {
final File fileToProcess =
new File(getPath("SuppressionXpathRegressionArrayTrailingCommaOne.java"));

final DefaultConfiguration moduleConfig =
createModuleConfig(ArrayTrailingCommaCheck.class);

final String[] expectedViolation = {
"16:9: " + getCheckMessage(ArrayTrailingCommaCheck.class,
ArrayTrailingCommaCheck.MSG_KEY),
};

final List<String> expectedXpathQueries = Arrays.asList(
"/CLASS_DEF[./IDENT[@text='SuppressionXpathRegressionArrayTrailingCommaOne']]"
+ "/OBJBLOCK/VARIABLE_DEF[./IDENT[@text='a2']]/ASSIGN/EXPR/LITERAL_NEW"
+ "/ARRAY_INIT/EXPR[./NUM_INT[@text='3']]",
"/CLASS_DEF[./IDENT[@text='SuppressionXpathRegressionArrayTrailingCommaOne']]"
+ "/OBJBLOCK/VARIABLE_DEF[./IDENT[@text='a2']]/ASSIGN/EXPR/LITERAL_NEW"
+ "/ARRAY_INIT/EXPR/NUM_INT[@text='3']"
);

runVerifications(moduleConfig, fileToProcess, expectedViolation,
expectedXpathQueries);
}

@Test
public void testTwo() throws Exception {
final File fileToProcess =
new File(getPath("SuppressionXpathRegressionArrayTrailingCommaTwo.java"));

final DefaultConfiguration moduleConfig =
createModuleConfig(ArrayTrailingCommaCheck.class);

final String[] expectedViolation = {
"17:9: " + getCheckMessage(ArrayTrailingCommaCheck.class,
ArrayTrailingCommaCheck.MSG_KEY),
};

final List<String> expectedXpathQueries = Collections.singletonList(
"/CLASS_DEF[./IDENT[@text='SuppressionXpathRegressionArrayTrailingCommaTwo']]"
+ "/OBJBLOCK/VARIABLE_DEF[./IDENT[@text='d2']]/ASSIGN/EXPR/LITERAL_NEW"
+ "/ARRAY_INIT/ARRAY_INIT[./EXPR/NUM_INT[@text='5']]"
);

runVerifications(moduleConfig, fileToProcess, expectedViolation,
expectedXpathQueries);
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package org.checkstyle.suppressionxpathfilter.arraytrailingcomma;

public class SuppressionXpathRegressionArrayTrailingCommaOne
{
int[] a1 = new int[]
{
1,
2,
3,
};

int[] a2 = new int[]
{
1,
2,
3 // warn
};
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package org.checkstyle.suppressionxpathfilter.arraytrailingcomma;

public class SuppressionXpathRegressionArrayTrailingCommaTwo
{
int[][] d1 = new int[][]
{
{1, 2,},
{3, 3,},
{5, 6,},
};

int[][] d2 = new int[][]
{
{1,
2},
{3, 3,},
{5, 6,} // warn
};

}
Original file line number Diff line number Diff line change
Expand Up @@ -167,7 +167,7 @@ public void visitToken(DetailAST arrayInit) {
&& !TokenUtil.areOnSameLine(rcurly, previousSibling)
&& !TokenUtil.areOnSameLine(arrayInit, previousSibling)
&& previousSibling.getType() != TokenTypes.COMMA) {
log(rcurly.getLineNo(), MSG_KEY);
log(previousSibling, MSG_KEY);
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -53,9 +53,6 @@
* AnnotationUseStyle
* </li>
* <li>
* ArrayTrailingComma
* </li>
* <li>
* AvoidEscapedUnicodeCharacters
* </li>
* <li>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,8 +41,10 @@ public void testDefault()
final DefaultConfiguration checkConfig =
createModuleConfig(ArrayTrailingCommaCheck.class);
final String[] expected = {
"17: " + getCheckMessage(MSG_KEY),
"37: " + getCheckMessage(MSG_KEY),
"16:9: " + getCheckMessage(MSG_KEY),
"36:9: " + getCheckMessage(MSG_KEY),
"75:12: " + getCheckMessage(MSG_KEY),
"73:9: " + getCheckMessage(MSG_KEY),
};
verify(checkConfig, getPath("InputArrayTrailingComma.java"), expected);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,6 @@ public class XpathRegressionTest extends AbstractModuleTestSupport {
"AnnotationLocation",
"AnnotationOnSameLine",
"AnnotationUseStyle",
"ArrayTrailingComma",
"AvoidEscapedUnicodeCharacters",
"AvoidStarImport",
"AvoidStaticImport",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ public class InputArrayTrailingComma
{
1,
2,
3
3 // violation
};

int[] b1 = new int[] {1, 2, 3,};
Expand All @@ -33,7 +33,7 @@ public class InputArrayTrailingComma
{1,
2},
{3, 3,},
{5, 6,}
{5, 6,} // violation
};

int[] e1 = new int[] {
Expand All @@ -58,4 +58,20 @@ public class InputArrayTrailingComma
1,
2
,};

Object[][] g1 = new Object[][]
{
{ 1, 1 },
{
null,
new int[] { 2,
3 }, }, };

Object[][] g2 = new Object[][]
{
{ 1, 1 },
{
null,
new int[] { 2,
3 } } }; // violation
}
1 change: 0 additions & 1 deletion src/xdocs/config_filters.xml
Original file line number Diff line number Diff line change
Expand Up @@ -905,7 +905,6 @@ public class UserService {
<li>AnnotationLocation</li>
<li>AnnotationOnSameLine</li>
<li>AnnotationUseStyle</li>
<li>ArrayTrailingComma</li>
<li>AvoidEscapedUnicodeCharacters</li>
<li>AvoidStarImport</li>
<li>AvoidStaticImport</li>
Expand Down

0 comments on commit ce28f73

Please sign in to comment.