Since Checkstyle 5.8
'_' is considered as word separator in identifier name.
allowedAbbreviationLength
specifies how many consecutive capital letters are
allowed in the identifier.
A value of 3 indicates that up to 4 consecutive capital letters are allowed,
one after the other, before a violation is printed. The identifier 'MyTEST' would be
allowed, but 'MyTESTS' would not be.
A value of 0 indicates that only 1 consecutive capital letter is allowed. This
is what should be used to enforce strict camel casing. The identifier 'MyTest' would
be allowed, but 'MyTEst' would not be.
ignoreFinal
, ignoreStatic
, and ignoreStaticFinal
control whether variables with the respective modifiers are to be ignored.
Note that a variable that is both static and final will always be considered under
ignoreStaticFinal
only, regardless of the values of ignoreFinal
and ignoreStatic
. So for example if ignoreStatic
is true but
ignoreStaticFinal
is false, then static final variables will not be ignored.
name | description | type | default value | since |
---|---|---|---|---|
allowedAbbreviationLength | Indicate the number of consecutive capital letters allowed in targeted identifiers (abbreviations in the classes, interfaces, variables and methods names, ... ). | int | 3 |
5.8 |
allowedAbbreviations | Specify abbreviations that must be skipped for checking. | String[] | {} |
5.8 |
ignoreFinal | Allow to skip variables with final modifier. |
boolean | true |
5.8 |
ignoreOverriddenMethods | Allow to ignore methods tagged with @Override annotation (that usually mean inherited name). |
boolean | true |
5.8 |
ignoreStatic | Allow to skip variables with static modifier. |
boolean | true |
5.8 |
ignoreStaticFinal | Allow to skip variables with both static and final modifiers. |
boolean | true |
8.32 |
tokens | tokens to check | subset of tokens CLASS_DEF , INTERFACE_DEF , ENUM_DEF , ANNOTATION_DEF , ANNOTATION_FIELD_DEF , PARAMETER_DEF , VARIABLE_DEF , METHOD_DEF , ENUM_CONSTANT_DEF , PATTERN_VARIABLE_DEF , RECORD_DEF , RECORD_COMPONENT_DEF . | CLASS_DEF , INTERFACE_DEF , ENUM_DEF , ANNOTATION_DEF , ANNOTATION_FIELD_DEF , PARAMETER_DEF , VARIABLE_DEF , METHOD_DEF , PATTERN_VARIABLE_DEF , RECORD_DEF , RECORD_COMPONENT_DEF . | 5.8 |
To configure the check:
<module name="Checker"> <module name="TreeWalker"> <module name="AbbreviationAsWordInName"/> </module> </module>
Example:
class Example1 extends SuperClass { // OK, camel case int CURRENT_COUNTER; // violation 'no more than '4' consecutive capital letters' static int GLOBAL_COUNTER; // OK, static is ignored final Set<String> stringsFOUND = new HashSet<>(); // OK, final is ignored @Override public void printCOUNTER() { // OK, overridden method is ignored System.out.println(CURRENT_COUNTER); } // violation below 'no more than '4' consecutive capital letters' void incrementCOUNTER() { CURRENT_COUNTER++; // OK, only definitions are checked } // violation below 'no more than '4' consecutive capital letters' static void incrementGLOBAL() { GLOBAL_COUNTER++; // OK, only definitions are checked } }
To configure to include static variables and
methods tagged with @Override
annotation.
Configuration:
<module name="Checker"> <module name="TreeWalker"> <module name="AbbreviationAsWordInName"> <property name="ignoreStatic" value="false"/> <property name="ignoreOverriddenMethods" value="false"/> </module> </module> </module>
Example:
class Example2 extends SuperClass { // OK, camel case int CURRENT_COUNTER; // violation 'no more than '4' consecutive capital letters' // violation below 'no more than '4' consecutive capital letters' static int GLOBAL_COUNTER; final Set<String> stringsFOUND = new HashSet<>(); // OK, final is ignored @Override // violation below 'no more than '4' consecutive capital letters' public void printCOUNTER() { System.out.println(CURRENT_COUNTER); // OK, only definitions are checked } // violation below 'no more than '4' consecutive capital letters' void incrementCOUNTER() { CURRENT_COUNTER++; // OK, only definitions are checked } // violation below 'no more than '4' consecutive capital letters' static void incrementGLOBAL() { GLOBAL_COUNTER++; // OK, only definitions are checked } }
To configure to check all variables and identifiers (including ones with the static modifier) and enforce no abbreviations (essentially camel case) except for words like 'XML' and 'URL'.
Configuration:
<module name="Checker"> <module name="TreeWalker"> <module name="AbbreviationAsWordInName"> <property name="allowedAbbreviationLength" value="0"/> <property name="allowedAbbreviations" value="XML,URL,O"/> <property name="ignoreStatic" value="false"/> <property name="tokens" value="VARIABLE_DEF,CLASS_DEF"/> </module> </module> </module>
Example:
class Example3 { int firstNum; int secondNUM; // violation 'no more than '1' consecutive capital letters' static int thirdNum; // OK, the static modifier would be checked static int fourthNUm; // violation 'no more than '1' consecutive capital letters' String firstXML; // OK, XML abbreviation is allowed String firstURL; // OK, URL abbreviation is allowed final int TOTAL = 5; // OK, final is ignored static final int LIMIT = 10; // OK, static final is ignored void newOAuth2Client() {} // OK, O abbreviation is allowed void OAuth2() {} // OK, O abbreviation is allowed void OAUth2() {} }
To configure to check variables, excluding fields with the static modifier, and allow abbreviations up to 2 consecutive capital letters ignoring the longer word 'CSV'.
Configuration:
<module name="Checker"> <module name="TreeWalker"> <module name="AbbreviationAsWordInName"> <property name="allowedAbbreviationLength" value="1"/> <property name="allowedAbbreviations" value="CSV"/> <property name="ignoreStatic" value="true"/> <property name="tokens" value="VARIABLE_DEF"/> </module> </module> </module>
Example:
class Example4 { // OK, ignore checking the class name int firstNum; // OK, abbreviation "N" is of allowed length 1 int secondNUm; int secondMYNum; // violation 'no more than '2' consecutive capital letters' int thirdNUM; // violation 'no more than '2' consecutive capital letters' static int fourthNUM; // OK, variables with static modifier would be ignored String firstCSV; // OK, CSV abbreviation is allowed String firstXML; // violation 'no more than '2' consecutive capital letters' final int TOTAL = 5; // OK, final is ignored static final int LIMIT = 10; // OK, static final is ignored }
To configure to check variables, enforcing no abbreviations except for variables that are both static and final.
Configuration:
<module name="Checker"> <module name="TreeWalker"> <module name="AbbreviationAsWordInName"> <property name="allowedAbbreviationLength" value="0"/> <property name="ignoreFinal" value="false"/> <property name="ignoreStatic" value="false"/> <property name="ignoreStaticFinal" value="true"/> <property name="tokens" value="VARIABLE_DEF"/> </module> </module> </module>
Example:
class Example5 { int counterXYZ = 1; // violation 'no more than '1' consecutive capital letters' // violation below 'no more than '1' consecutive capital letters' final int customerID = 2; static int nextID = 3; // violation 'no more than '1' consecutive capital letters' static final int MAX_ALLOWED = 4; // OK, ignored }
To configure to check variables, enforcing no abbreviations and ignoring static (but non-final) variables only.
Configuration:
<module name="Checker"> <module name="TreeWalker"> <module name="AbbreviationAsWordInName"> <property name="allowedAbbreviationLength" value="0"/> <property name="ignoreFinal" value="false"/> <property name="ignoreStatic" value="true"/> <property name="ignoreStaticFinal" value="false"/> <property name="tokens" value="VARIABLE_DEF"/> </module> </module> </module>
Example:
class Example6 { int counterXYZ = 1; // violation 'no more than '1' consecutive capital letters' // violation below 'no more than '1' consecutive capital letters' final int customerID = 2; static int nextID = 3; // OK, ignored // violation below 'no more than '1' consecutive capital letters' static final int MAX_ALLOWED = 4; }
To configure to check variables, enforce no abbreviations (essentially camel case) except for words like 'ALLOWED'.
Configuration:
<module name="Checker"> <module name="TreeWalker"> <module name="AbbreviationAsWordInName"> <property name="allowedAbbreviations" value="ALLOWED"/> <property name="ignoreStaticFinal" value="false"/> </module> </module> </module>
Example:
class Example7 { int counterXYZ = 1; final int customerID = 2; static int nextID = 3; static final int MAX_ALLOWED = 4; // OK, abbreviation is allowed }
All messages can be customized if the default message doesn't suit you. Please see the documentation to learn how to.
com.puppycrawl.tools.checkstyle.checks.naming