From 13139b607ab6587e2bd6fd1112ef97705823f318 Mon Sep 17 00:00:00 2001 From: Arin Modi Date: Tue, 29 Nov 2022 16:59:57 +0530 Subject: [PATCH] Issue #12409: Inconsistent allowedAbbreviations --- ...ices_should_be_free_of_cycles_suppressions | 120 +++++++++--------- .../naming/AbbreviationAsWordInNameCheck.java | 40 +++++- .../AbbreviationAsWordInNameCheckTest.java | 9 ++ .../InputAbbreviationAsWordInNameType7.java | 28 ++++ src/xdocs/config_naming.xml | 32 +++++ 5 files changed, 168 insertions(+), 61 deletions(-) create mode 100644 src/test/resources/com/puppycrawl/tools/checkstyle/checks/naming/abbreviationaswordinname/InputAbbreviationAsWordInNameType7.java diff --git a/config/archunit-store/slices_should_be_free_of_cycles_suppressions b/config/archunit-store/slices_should_be_free_of_cycles_suppressions index 13f4dd7d5b0..a7621045683 100644 --- a/config/archunit-store/slices_should_be_free_of_cycles_suppressions +++ b/config/archunit-store/slices_should_be_free_of_cycles_suppressions @@ -115,22 +115,22 @@ Cycle detected: Slice api -> \ - Method calls method in (ParameterNameCheck.java:266)\ - Method calls method in (ParameterNameCheck.java:270)\ - Method calls method in (ParameterNameCheck.java:271)\ - - Constructor ()> calls constructor ()> in (AbbreviationAsWordInNameCheck.java:314)\ - - Method calls method in (AbbreviationAsWordInNameCheck.java:463)\ - - Method calls method in (AbbreviationAsWordInNameCheck.java:464)\ - - Method calls method in (AbbreviationAsWordInNameCheck.java:481)\ - - Method calls method in (AbbreviationAsWordInNameCheck.java:484)\ - - Method calls method in (AbbreviationAsWordInNameCheck.java:493)\ - - Method calls method in (AbbreviationAsWordInNameCheck.java:509)\ - - Method calls method in (AbbreviationAsWordInNameCheck.java:510)\ - - Method calls method in (AbbreviationAsWordInNameCheck.java:530)\ - - Method calls method in (AbbreviationAsWordInNameCheck.java:531)\ - - Method calls method in (AbbreviationAsWordInNameCheck.java:533)\ - - Method calls method in (AbbreviationAsWordInNameCheck.java:534)\ - - Method calls method in (AbbreviationAsWordInNameCheck.java:551)\ - - Method calls method in (AbbreviationAsWordInNameCheck.java:553)\ - - Method calls method in (AbbreviationAsWordInNameCheck.java:663)\ - - Method calls method in (AbbreviationAsWordInNameCheck.java:666) + - Constructor ()> calls constructor ()> in (AbbreviationAsWordInNameCheck.java:346)\ + - Method calls method in (AbbreviationAsWordInNameCheck.java:495)\ + - Method calls method in (AbbreviationAsWordInNameCheck.java:496)\ + - Method calls method in (AbbreviationAsWordInNameCheck.java:513)\ + - Method calls method in (AbbreviationAsWordInNameCheck.java:516)\ + - Method calls method in (AbbreviationAsWordInNameCheck.java:525)\ + - Method calls method in (AbbreviationAsWordInNameCheck.java:541)\ + - Method calls method in (AbbreviationAsWordInNameCheck.java:542)\ + - Method calls method in (AbbreviationAsWordInNameCheck.java:562)\ + - Method calls method in (AbbreviationAsWordInNameCheck.java:563)\ + - Method calls method in (AbbreviationAsWordInNameCheck.java:565)\ + - Method calls method in (AbbreviationAsWordInNameCheck.java:566)\ + - Method calls method in (AbbreviationAsWordInNameCheck.java:583)\ + - Method calls method in (AbbreviationAsWordInNameCheck.java:585)\ + - Method calls method in (AbbreviationAsWordInNameCheck.java:701)\ + - Method calls method in (AbbreviationAsWordInNameCheck.java:704) Cycle detected: Slice api -> \ Slice checks.naming -> \ Slice utils -> \ @@ -158,8 +158,8 @@ Cycle detected: Slice api -> \ - Method calls method in (MethodNameCheck.java:232)\ - Method calls method in (ParameterNameCheck.java:236)\ - Method calls method in (ParameterNameCheck.java:238)\ - - Method gets field in (AbbreviationAsWordInNameCheck.java:457)\ - - Method calls method in (AbbreviationAsWordInNameCheck.java:497)\ + - Method gets field in (AbbreviationAsWordInNameCheck.java:489)\ + - Method calls method in (AbbreviationAsWordInNameCheck.java:529)\ 3. Dependencies of Slice utils\ - Method has parameter of type in (AnnotationUtil.java:0)\ - Method has parameter of type in (AnnotationUtil.java:0)\ @@ -535,8 +535,8 @@ Cycle detected: Slice api -> \ - Method calls method in (MethodNameCheck.java:232)\ - Method calls method in (ParameterNameCheck.java:236)\ - Method calls method in (ParameterNameCheck.java:238)\ - - Method gets field in (AbbreviationAsWordInNameCheck.java:457)\ - - Method calls method in (AbbreviationAsWordInNameCheck.java:497)\ + - Method gets field in (AbbreviationAsWordInNameCheck.java:489)\ + - Method calls method in (AbbreviationAsWordInNameCheck.java:529)\ 3. Dependencies of Slice utils\ - Method has return type in (JavadocUtil.java:0)\ - Method calls method in (JavadocUtil.java:121)\ @@ -1077,8 +1077,8 @@ Cycle detected: Slice api -> \ - Method calls method in (MethodNameCheck.java:232)\ - Method calls method in (ParameterNameCheck.java:236)\ - Method calls method in (ParameterNameCheck.java:238)\ - - Method gets field in (AbbreviationAsWordInNameCheck.java:457)\ - - Method calls method in (AbbreviationAsWordInNameCheck.java:497)\ + - Method gets field in (AbbreviationAsWordInNameCheck.java:489)\ + - Method calls method in (AbbreviationAsWordInNameCheck.java:529)\ 3. Dependencies of Slice utils\ - Method calls method in (JavadocUtil.java:102)\ - Method calls method in (JavadocUtil.java:107)\ @@ -1123,8 +1123,8 @@ Cycle detected: Slice api -> \ - Method calls method in (MethodNameCheck.java:232)\ - Method calls method in (ParameterNameCheck.java:236)\ - Method calls method in (ParameterNameCheck.java:238)\ - - Method gets field in (AbbreviationAsWordInNameCheck.java:457)\ - - Method calls method in (AbbreviationAsWordInNameCheck.java:497)\ + - Method gets field in (AbbreviationAsWordInNameCheck.java:489)\ + - Method calls method in (AbbreviationAsWordInNameCheck.java:529)\ 3. Dependencies of Slice utils\ - Method has generic return type > with type argument depending on in (XpathUtil.java:0)\ - Method has parameter of type in (XpathUtil.java:0)\ @@ -2219,22 +2219,22 @@ Cycle detected: Slice api -> \ - Method calls method in (ParameterNameCheck.java:266)\ - Method calls method in (ParameterNameCheck.java:270)\ - Method calls method in (ParameterNameCheck.java:271)\ - - Constructor ()> calls constructor ()> in (AbbreviationAsWordInNameCheck.java:314)\ - - Method calls method in (AbbreviationAsWordInNameCheck.java:463)\ - - Method calls method in (AbbreviationAsWordInNameCheck.java:464)\ - - Method calls method in (AbbreviationAsWordInNameCheck.java:481)\ - - Method calls method in (AbbreviationAsWordInNameCheck.java:484)\ - - Method calls method in (AbbreviationAsWordInNameCheck.java:493)\ - - Method calls method in (AbbreviationAsWordInNameCheck.java:509)\ - - Method calls method in (AbbreviationAsWordInNameCheck.java:510)\ - - Method calls method in (AbbreviationAsWordInNameCheck.java:530)\ - - Method calls method in (AbbreviationAsWordInNameCheck.java:531)\ - - Method calls method in (AbbreviationAsWordInNameCheck.java:533)\ - - Method calls method in (AbbreviationAsWordInNameCheck.java:534)\ - - Method calls method in (AbbreviationAsWordInNameCheck.java:551)\ - - Method calls method in (AbbreviationAsWordInNameCheck.java:553)\ - - Method calls method in (AbbreviationAsWordInNameCheck.java:663)\ - - Method calls method in (AbbreviationAsWordInNameCheck.java:666) + - Constructor ()> calls constructor ()> in (AbbreviationAsWordInNameCheck.java:346)\ + - Method calls method in (AbbreviationAsWordInNameCheck.java:495)\ + - Method calls method in (AbbreviationAsWordInNameCheck.java:496)\ + - Method calls method in (AbbreviationAsWordInNameCheck.java:513)\ + - Method calls method in (AbbreviationAsWordInNameCheck.java:516)\ + - Method calls method in (AbbreviationAsWordInNameCheck.java:525)\ + - Method calls method in (AbbreviationAsWordInNameCheck.java:541)\ + - Method calls method in (AbbreviationAsWordInNameCheck.java:542)\ + - Method calls method in (AbbreviationAsWordInNameCheck.java:562)\ + - Method calls method in (AbbreviationAsWordInNameCheck.java:563)\ + - Method calls method in (AbbreviationAsWordInNameCheck.java:565)\ + - Method calls method in (AbbreviationAsWordInNameCheck.java:566)\ + - Method calls method in (AbbreviationAsWordInNameCheck.java:583)\ + - Method calls method in (AbbreviationAsWordInNameCheck.java:585)\ + - Method calls method in (AbbreviationAsWordInNameCheck.java:701)\ + - Method calls method in (AbbreviationAsWordInNameCheck.java:704) Cycle detected: Slice api -> \ Slice utils -> \ Slice checks.javadoc.utils -> \ @@ -2406,22 +2406,22 @@ Cycle detected: Slice api -> \ - Method calls method in (ParameterNameCheck.java:266)\ - Method calls method in (ParameterNameCheck.java:270)\ - Method calls method in (ParameterNameCheck.java:271)\ - - Constructor ()> calls constructor ()> in (AbbreviationAsWordInNameCheck.java:314)\ - - Method calls method in (AbbreviationAsWordInNameCheck.java:463)\ - - Method calls method in (AbbreviationAsWordInNameCheck.java:464)\ - - Method calls method in (AbbreviationAsWordInNameCheck.java:481)\ - - Method calls method in (AbbreviationAsWordInNameCheck.java:484)\ - - Method calls method in (AbbreviationAsWordInNameCheck.java:493)\ - - Method calls method in (AbbreviationAsWordInNameCheck.java:509)\ - - Method calls method in (AbbreviationAsWordInNameCheck.java:510)\ - - Method calls method in (AbbreviationAsWordInNameCheck.java:530)\ - - Method calls method in (AbbreviationAsWordInNameCheck.java:531)\ - - Method calls method in (AbbreviationAsWordInNameCheck.java:533)\ - - Method calls method in (AbbreviationAsWordInNameCheck.java:534)\ - - Method calls method in (AbbreviationAsWordInNameCheck.java:551)\ - - Method calls method in (AbbreviationAsWordInNameCheck.java:553)\ - - Method calls method in (AbbreviationAsWordInNameCheck.java:663)\ - - Method calls method in (AbbreviationAsWordInNameCheck.java:666) + - Constructor ()> calls constructor ()> in (AbbreviationAsWordInNameCheck.java:346)\ + - Method calls method in (AbbreviationAsWordInNameCheck.java:495)\ + - Method calls method in (AbbreviationAsWordInNameCheck.java:496)\ + - Method calls method in (AbbreviationAsWordInNameCheck.java:513)\ + - Method calls method in (AbbreviationAsWordInNameCheck.java:516)\ + - Method calls method in (AbbreviationAsWordInNameCheck.java:525)\ + - Method calls method in (AbbreviationAsWordInNameCheck.java:541)\ + - Method calls method in (AbbreviationAsWordInNameCheck.java:542)\ + - Method calls method in (AbbreviationAsWordInNameCheck.java:562)\ + - Method calls method in (AbbreviationAsWordInNameCheck.java:563)\ + - Method calls method in (AbbreviationAsWordInNameCheck.java:565)\ + - Method calls method in (AbbreviationAsWordInNameCheck.java:566)\ + - Method calls method in (AbbreviationAsWordInNameCheck.java:583)\ + - Method calls method in (AbbreviationAsWordInNameCheck.java:585)\ + - Method calls method in (AbbreviationAsWordInNameCheck.java:701)\ + - Method calls method in (AbbreviationAsWordInNameCheck.java:704) Cycle detected: Slice api -> \ Slice utils -> \ Slice xpath -> \ @@ -2530,8 +2530,8 @@ Cycle detected: Slice checks.javadoc -> \ - Method calls method in (MethodNameCheck.java:232)\ - Method calls method in (ParameterNameCheck.java:236)\ - Method calls method in (ParameterNameCheck.java:238)\ - - Method gets field in (AbbreviationAsWordInNameCheck.java:457)\ - - Method calls method in (AbbreviationAsWordInNameCheck.java:497)\ + - Method gets field in (AbbreviationAsWordInNameCheck.java:489)\ + - Method calls method in (AbbreviationAsWordInNameCheck.java:529)\ 3. Dependencies of Slice utils\ - Method has return type in (JavadocUtil.java:0)\ - Method calls method in (JavadocUtil.java:121)\ @@ -2700,8 +2700,8 @@ Cycle detected: Slice checks.naming -> \ - Method calls method in (MethodNameCheck.java:232)\ - Method calls method in (ParameterNameCheck.java:236)\ - Method calls method in (ParameterNameCheck.java:238)\ - - Method gets field in (AbbreviationAsWordInNameCheck.java:457)\ - - Method calls method in (AbbreviationAsWordInNameCheck.java:497)\ + - Method gets field in (AbbreviationAsWordInNameCheck.java:489)\ + - Method calls method in (AbbreviationAsWordInNameCheck.java:529)\ 2. Dependencies of Slice utils\ - Method has return type in (CheckUtil.java:0)\ - Method has return type in (CheckUtil.java:0)\ diff --git a/src/main/java/com/puppycrawl/tools/checkstyle/checks/naming/AbbreviationAsWordInNameCheck.java b/src/main/java/com/puppycrawl/tools/checkstyle/checks/naming/AbbreviationAsWordInNameCheck.java index 3b8a3969a3b..e0695cb3830 100644 --- a/src/main/java/com/puppycrawl/tools/checkstyle/checks/naming/AbbreviationAsWordInNameCheck.java +++ b/src/main/java/com/puppycrawl/tools/checkstyle/checks/naming/AbbreviationAsWordInNameCheck.java @@ -297,6 +297,38 @@ * } * *

+ * To configure to check variables, enforce + * no abbreviations (essentially camel case) except for + * words like 'ORDERS', 'OBSERVATION', 'UNDERSCORE', 'TEST'. + *

+ *

Configuration:

+ *
+ * <module name="AbbreviationAsWordInName">
+ *     <property name="allowedAbbreviations" value="ORDER, OBSERVATION, UNDERSCORE, TEST"/>
+ * </module>
+ * 
+ *

Example:

+ *
+ * public class InputAbbreviationAsWordInNameType7 {
+ *    void getTEST() {
+ *    } // OK
+ *
+ *    void getORDER_OBSERVATION() {} // OK
+ *
+ *    void getUNDERSCORE() {} // OK
+ *
+ *    void getTEST_OBSERVATION() {} // OK
+ *
+ *    void getTEST_UNDERSCORE() {} // OK
+ *
+ *    void getORDER() {} // OK
+ *
+ *    void getOBSERVATION() {} // OK
+ *
+ *    void getORDER_UNDERSCORE() {} // OK
+ * }
+ * 
+ *

* Parent is {@code com.puppycrawl.tools.checkstyle.TreeWalker} *

*

@@ -583,7 +615,13 @@ private String getDisallowedAbbreviation(String str) { else if (abbrStarted) { abbrStarted = false; - final int endIndex = index - 1; + final int endIndex; + if (Character.isLetterOrDigit(symbol)) { + endIndex = index - 1; + } + else { + endIndex = index; + } result = getAbbreviationIfIllegal(str, beginIndex, endIndex); if (result != null) { break; diff --git a/src/test/java/com/puppycrawl/tools/checkstyle/checks/naming/AbbreviationAsWordInNameCheckTest.java b/src/test/java/com/puppycrawl/tools/checkstyle/checks/naming/AbbreviationAsWordInNameCheckTest.java index c300bbb5ae1..7cd3db94a30 100644 --- a/src/test/java/com/puppycrawl/tools/checkstyle/checks/naming/AbbreviationAsWordInNameCheckTest.java +++ b/src/test/java/com/puppycrawl/tools/checkstyle/checks/naming/AbbreviationAsWordInNameCheckTest.java @@ -467,4 +467,13 @@ public void testReceiver() throws Exception { expected); } + @Test + public void demoTest() throws Exception { + final String[] expected = CommonUtil.EMPTY_STRING_ARRAY; + + verifyWithInlineConfigParser( + getPath("InputAbbreviationAsWordInNameType7.java"), + expected); + } + } diff --git a/src/test/resources/com/puppycrawl/tools/checkstyle/checks/naming/abbreviationaswordinname/InputAbbreviationAsWordInNameType7.java b/src/test/resources/com/puppycrawl/tools/checkstyle/checks/naming/abbreviationaswordinname/InputAbbreviationAsWordInNameType7.java new file mode 100644 index 00000000000..0c492e70055 --- /dev/null +++ b/src/test/resources/com/puppycrawl/tools/checkstyle/checks/naming/abbreviationaswordinname/InputAbbreviationAsWordInNameType7.java @@ -0,0 +1,28 @@ +/* +AbbreviationAsWordInName +allowedAbbreviations = ORDER, OBSERVATION, UNDERSCORE, TEST + + +*/ + + +package com.puppycrawl.tools.checkstyle.checks.naming.abbreviationaswordinname; + +public class InputAbbreviationAsWordInNameType7 { + void getTEST() { + } // OK + + void getORDER_OBSERVATION() {} // ok + + void getUNDERSCORE() {} // ok + + void getTEST_OBSERVATION() {} // ok + + void getTEST_UNDERSCORE() {} // ok + + void getORDER() {} // ok + + void getOBSERVATION() {} // ok + + void getORDER_UNDERSCORE() {} // ok +} diff --git a/src/xdocs/config_naming.xml b/src/xdocs/config_naming.xml index 505781eacff..7e55486ca49 100644 --- a/src/xdocs/config_naming.xml +++ b/src/xdocs/config_naming.xml @@ -344,6 +344,38 @@ public class MyClass { public final int customerID = 2; // violation public static int nextID = 3; // OK, ignored public static final int MAX_ALLOWED = 4; // violation +} + +

+ To configure to check variables, enforce + no abbreviations (essentially camel case) except for + words like 'ORDERS', 'OBSERVATION', 'UNDERSCORE', 'TEST'. +

+

Configuration:

+ +<module name="AbbreviationAsWordInName"> + <property name="allowedAbbreviations" value="ORDER, OBSERVATION, UNDERSCORE, TEST"/> +</module> + +

Example:

+ +public class InputAbbreviationAsWordInNameType7 { + void getTEST() { + } // OK + + void getORDER_OBSERVATION() {} // OK + + void getUNDERSCORE() {} // OK + + void getTEST_OBSERVATION() {} // OK + + void getTEST_UNDERSCORE() {} // OK + + void getORDER() {} // OK + + void getOBSERVATION() {} // OK + + void getORDER_UNDERSCORE() {} // OK }