From 0010bb8209bf0003bb198b6b989ca5564e9d0184 Mon Sep 17 00:00:00 2001 From: Aayush <kumaraayush9810@gmail.com> Date: Thu, 30 Nov 2023 13:04:27 +0530 Subject: [PATCH] Issue #6207: Added Xpath IT regression test for StaticVariableName --- ...XpathRegressionStaticVariableNameTest.java | 117 ++++++++++++++++++ ...ionXpathRegressionStaticVariableName2.java | 18 +++ ...ionXpathRegressionStaticVariableName3.java | 8 ++ ...ionXpathRegressionStaticVariableName1.java | 7 ++ .../internal/XpathRegressionTest.java | 1 - 5 files changed, 150 insertions(+), 1 deletion(-) create mode 100644 src/it/java/org/checkstyle/suppressionxpathfilter/XpathRegressionStaticVariableNameTest.java create mode 100644 src/it/resources-noncompilable/org/checkstyle/suppressionxpathfilter/staticvariablename/SuppressionXpathRegressionStaticVariableName2.java create mode 100644 src/it/resources-noncompilable/org/checkstyle/suppressionxpathfilter/staticvariablename/SuppressionXpathRegressionStaticVariableName3.java create mode 100644 src/it/resources/org/checkstyle/suppressionxpathfilter/staticvariablename/SuppressionXpathRegressionStaticVariableName1.java diff --git a/src/it/java/org/checkstyle/suppressionxpathfilter/XpathRegressionStaticVariableNameTest.java b/src/it/java/org/checkstyle/suppressionxpathfilter/XpathRegressionStaticVariableNameTest.java new file mode 100644 index 00000000000..21af685d65b --- /dev/null +++ b/src/it/java/org/checkstyle/suppressionxpathfilter/XpathRegressionStaticVariableNameTest.java @@ -0,0 +1,117 @@ +/////////////////////////////////////////////////////////////////////////////////////////////// +// checkstyle: Checks Java source code and other text files for adherence to a set of rules. +// Copyright (C) 2001-2023 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.Collections; +import java.util.List; + +import org.junit.jupiter.api.Test; + +import com.puppycrawl.tools.checkstyle.DefaultConfiguration; +import com.puppycrawl.tools.checkstyle.checks.naming.AbstractNameCheck; +import com.puppycrawl.tools.checkstyle.checks.naming.StaticVariableNameCheck; + +public class XpathRegressionStaticVariableNameTest extends AbstractXpathTestSupport { + + private final String checkName = StaticVariableNameCheck.class.getSimpleName(); + + @Override + protected String getCheckName() { + return checkName; + } + + @Test + public void test1() throws Exception { + final File fileToProcess = + new File(getPath("SuppressionXpathRegressionStaticVariableName1.java")); + + final String pattern = "^[a-z][a-zA-Z0-9]*$"; + final DefaultConfiguration moduleConfig = + createModuleConfig(StaticVariableNameCheck.class); + + final String[] expectedViolation = { + "6:24: " + getCheckMessage(StaticVariableNameCheck.class, + AbstractNameCheck.MSG_INVALID_PATTERN, "NUM2", pattern), + }; + + final List<String> expectedXpathQueries = Collections.singletonList( + "/COMPILATION_UNIT" + + "/CLASS_DEF[./IDENT[@text" + + "='SuppressionXpathRegressionStaticVariableName1']]" + + "/OBJBLOCK/VARIABLE_DEF/IDENT[@text='NUM2']" + + ); + runVerifications(moduleConfig, fileToProcess, expectedViolation, + expectedXpathQueries); + } + + @Test + public void test2() throws Exception { + final File fileToProcess = + new File(getNonCompilablePath( + "SuppressionXpathRegressionStaticVariableName2.java")); + + final String pattern = "^[a-z][a-zA-Z0-9]*$"; + final DefaultConfiguration moduleConfig = + createModuleConfig(StaticVariableNameCheck.class); + + final String[] expectedViolation = { + "14:24: " + getCheckMessage(StaticVariableNameCheck.class, + AbstractNameCheck.MSG_INVALID_PATTERN, "NUM3", pattern), + }; + + final List<String> expectedXpathQueries = Collections.singletonList( + "/COMPILATION_UNIT" + + "/CLASS_DEF[./IDENT[@text" + + "='SuppressionXpathRegressionStaticVariableName2']]" + + "/OBJBLOCK/METHOD_DEF[./IDENT[@text='outerMethod']]" + + "/SLIST/CLASS_DEF[./IDENT[@text='MyLocalClass']]" + + "/OBJBLOCK/VARIABLE_DEF/IDENT[@text='NUM3']" + ); + runVerifications(moduleConfig, fileToProcess, expectedViolation, + expectedXpathQueries); + } + + @Test + public void test3() throws Exception { + final File fileToProcess = + new File(getNonCompilablePath( + "SuppressionXpathRegressionStaticVariableName3.java")); + + final String pattern = "^[a-z][a-zA-Z0-9]*$"; + final DefaultConfiguration moduleConfig = + createModuleConfig(StaticVariableNameCheck.class); + + final String[] expectedViolation = { + "6:19: " + getCheckMessage(StaticVariableNameCheck.class, + AbstractNameCheck.MSG_INVALID_PATTERN, "NUM3", pattern), + }; + + final List<String> expectedXpathQueries = Collections.singletonList( + "/COMPILATION_UNIT" + + "/CLASS_DEF[./IDENT[@text" + + "='SuppressionXpathRegressionStaticVariableName2']]" + + "/OBJBLOCK/INSTANCE_INIT/SLIST/VARIABLE_DEF/IDENT[@text='NUM3']" + ); + runVerifications(moduleConfig, fileToProcess, expectedViolation, + expectedXpathQueries); + } +} diff --git a/src/it/resources-noncompilable/org/checkstyle/suppressionxpathfilter/staticvariablename/SuppressionXpathRegressionStaticVariableName2.java b/src/it/resources-noncompilable/org/checkstyle/suppressionxpathfilter/staticvariablename/SuppressionXpathRegressionStaticVariableName2.java new file mode 100644 index 00000000000..2e03f53264f --- /dev/null +++ b/src/it/resources-noncompilable/org/checkstyle/suppressionxpathfilter/staticvariablename/SuppressionXpathRegressionStaticVariableName2.java @@ -0,0 +1,18 @@ +//non-compiled with javac: Compilable with Java14 +package org.checkstyle.suppressionxpathfilter.staticvariablename; + +public class SuppressionXpathRegressionStaticVariableName2 { + + public int num1; + + protected int NUM2; + + public void outerMethod() { + + class MyLocalClass { + + static int NUM3; //warn + + } + } + } diff --git a/src/it/resources-noncompilable/org/checkstyle/suppressionxpathfilter/staticvariablename/SuppressionXpathRegressionStaticVariableName3.java b/src/it/resources-noncompilable/org/checkstyle/suppressionxpathfilter/staticvariablename/SuppressionXpathRegressionStaticVariableName3.java new file mode 100644 index 00000000000..31ba38eaf0e --- /dev/null +++ b/src/it/resources-noncompilable/org/checkstyle/suppressionxpathfilter/staticvariablename/SuppressionXpathRegressionStaticVariableName3.java @@ -0,0 +1,8 @@ +//non-compiled with javac: Compilable with Java14 +package org.checkstyle.suppressionxpathfilter.staticvariablename; + +public class SuppressionXpathRegressionStaticVariableName2 { + { + static int NUM3; //warn + } + } diff --git a/src/it/resources/org/checkstyle/suppressionxpathfilter/staticvariablename/SuppressionXpathRegressionStaticVariableName1.java b/src/it/resources/org/checkstyle/suppressionxpathfilter/staticvariablename/SuppressionXpathRegressionStaticVariableName1.java new file mode 100644 index 00000000000..df47703cc31 --- /dev/null +++ b/src/it/resources/org/checkstyle/suppressionxpathfilter/staticvariablename/SuppressionXpathRegressionStaticVariableName1.java @@ -0,0 +1,7 @@ +package org.checkstyle.suppressionxpathfilter.staticvariablename; + +public class SuppressionXpathRegressionStaticVariableName1 { + + public int num1; // OK + public static int NUM2; // warn +} diff --git a/src/test/java/com/puppycrawl/tools/checkstyle/internal/XpathRegressionTest.java b/src/test/java/com/puppycrawl/tools/checkstyle/internal/XpathRegressionTest.java index 91baf4de126..050b7860f9f 100644 --- a/src/test/java/com/puppycrawl/tools/checkstyle/internal/XpathRegressionTest.java +++ b/src/test/java/com/puppycrawl/tools/checkstyle/internal/XpathRegressionTest.java @@ -118,7 +118,6 @@ public class XpathRegressionTest extends AbstractModuleTestSupport { "RedundantModifier", "SeparatorWrap", "SimplifyBooleanExpression", - "StaticVariableName", "SuperFinalize", "SuppressWarnings", "VisibilityModifier"