Class AbbreviationAsWordInNameCheck

All Implemented Interfaces:
Configurable, Contextualizable

public class AbbreviationAsWordInNameCheck extends AbstractCheck

Validates abbreviations (consecutive capital letters) length in identifier name, it also allows to enforce camel case naming. Please read more at Google Style Guide to get to know how to avoid long abbreviations in names.

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.

  • Property allowedAbbreviationLength - Indicate the number of consecutive capital letters allowed in targeted identifiers (abbreviations in the classes, interfaces, variables and methods names, ... ). Type is int. Default value is 3.
  • Property allowedAbbreviations - Specify list of abbreviations that must be skipped for checking. Abbreviations should be separated by comma. Type is java.lang.String[]. Default value is "".
  • Property ignoreFinal - Allow to skip variables with final modifier. Type is boolean. Default value is true.
  • Property ignoreStatic - Allow to skip variables with static modifier. Type is boolean. Default value is true.
  • Property ignoreStaticFinal - Allow to skip variables with both static and final modifiers. Type is boolean. Default value is true.
  • Property ignoreOverriddenMethods - Allow to ignore methods tagged with @Override annotation (that usually mean inherited name). Type is boolean. Default value is true.
  • Property tokens - tokens to check Type is java.lang.String[]. Validation type is tokenSet. Default value is: 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.

To configure the check:

 <module name="AbbreviationAsWordInName"/>
 

Example:

 public class MyClass extends SuperClass { // OK, camel case
   int CURRENT_COUNTER; // violation, at most 4 consecutive capital letters allowed
   static int GLOBAL_COUNTER; // OK, static is ignored
   final Set<String> stringsFOUND = new HashSet<>(); // OK, final is ignored

   @Override
   void printCOUNTER() { // OK, overridden method is ignored
     System.out.println(CURRENT_COUNTER); // OK, only definitions are checked
   }

   void incrementCOUNTER() { // violation, at most 4 consecutive capital letters allowed
     CURRENT_COUNTER++; // OK, only definitions are checked
   }

   static void incrementGLOBAL() { // violation, static method is not ignored
     GLOBAL_COUNTER++; // OK, only definitions are checked
   }

 }
 

To configure to include static variables and methods tagged with @Override annotation.

Configuration:

 <module name="AbbreviationAsWordInName">
   <property name="ignoreStatic" value="false"/>
   <property name="ignoreOverriddenMethods" value="false"/>
 </module>
 

Example:

 public class MyClass extends SuperClass { // OK, camel case
   int CURRENT_COUNTER; // violation, at most 4 consecutive capital letters allowed
   static int GLOBAL_COUNTER; // violation, static is not ignored
   final Set<String> stringsFOUND = new HashSet<>(); // OK, final is ignored

   @Override
   void printCOUNTER() { // violation, overridden method is not ignored
     System.out.println(CURRENT_COUNTER); // OK, only definitions are checked
   }

   void incrementCOUNTER() { // violation, at most 4 consecutive capital letters allowed
     CURRENT_COUNTER++; // OK, only definitions are checked
   }

   static void incrementGLOBAL() { // violation, at most 4 consecutive capital letters allowed
     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="AbbreviationAsWordInName">
   <property name="tokens" value="VARIABLE_DEF,CLASS_DEF"/>
   <property name="ignoreStatic" value="false"/>
   <property name="allowedAbbreviationLength" value="0"/>
   <property name="allowedAbbreviations" value="XML,URL"/>
 </module>
 

Example:

 public class MyClass { // OK
   int firstNum; // OK
   int secondNUM; // violation, it allowed only 1 consecutive capital letter
   static int thirdNum; // OK, the static modifier would be checked
   static int fourthNUm; // violation, the static modifier would be checked,
                         // and only 1 consecutive capital letter is allowed
   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
 }
 

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="AbbreviationAsWordInName">
   <property name="tokens" value="VARIABLE_DEF"/>
   <property name="ignoreStatic" value="true"/>
   <property name="allowedAbbreviationLength" value="1"/>
   <property name="allowedAbbreviations" value="CSV"/>
 </module>
 

Example:

 public class MyClass { // OK, ignore checking the class name
   int firstNum; // OK, abbreviation "N" is of allowed length 1
   int secondNUm; // OK
   int secondMYNum; // violation, found "MYN" but only
                    // 2 consecutive capital letters are allowed
   int thirdNUM; // violation, found "NUM" but it is allowed
                 // only 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, XML abbreviation is not allowed
   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="AbbreviationAsWordInName">
     <property name="tokens" value="VARIABLE_DEF"/>
     <property name="ignoreFinal" value="false"/>
     <property name="ignoreStatic" value="false"/>
     <property name="ignoreStaticFinal" value="true"/>
     <property name="allowedAbbreviationLength" value="0"/>
 </module>
 

Example:

 public class MyClass {
     public int counterXYZ = 1;                // violation
     public final int customerID = 2;          // violation
     public static int nextID = 3;             // violation
     public 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="AbbreviationAsWordInName">
     <property name="tokens" value="VARIABLE_DEF"/>
     <property name="ignoreFinal" value="false"/>
     <property name="ignoreStatic" value="true"/>
     <property name="ignoreStaticFinal" value="false"/>
     <property name="allowedAbbreviationLength" value="0"/>
 </module>
 

Example:

 public class MyClass {
     public int counterXYZ = 1;                // violation
     public final int customerID = 2;          // violation
     public static int nextID = 3;             // OK, ignored
     public static final int MAX_ALLOWED = 4;  // violation
 }
 

Parent is com.puppycrawl.tools.checkstyle.TreeWalker

Violation Message Keys:

  • abbreviation.as.word
Since:
5.8
  • Field Details

  • Constructor Details

    • AbbreviationAsWordInNameCheck

      public AbbreviationAsWordInNameCheck()
  • Method Details

    • setIgnoreFinal

      public void setIgnoreFinal(boolean ignoreFinal)
      Setter to allow to skip variables with final modifier.
      Parameters:
      ignoreFinal - Defines if ignore variables with 'final' modifier or not.
    • setIgnoreStatic

      public void setIgnoreStatic(boolean ignoreStatic)
      Setter to allow to skip variables with static modifier.
      Parameters:
      ignoreStatic - Defines if ignore variables with 'static' modifier or not.
    • setIgnoreStaticFinal

      public void setIgnoreStaticFinal(boolean ignoreStaticFinal)
      Setter to allow to skip variables with both static and final modifiers.
      Parameters:
      ignoreStaticFinal - Defines if ignore variables with both 'static' and 'final' modifiers or not.
    • setIgnoreOverriddenMethods

      public void setIgnoreOverriddenMethods(boolean ignoreOverriddenMethods)
      Setter to allow to ignore methods tagged with @Override annotation (that usually mean inherited name).
      Parameters:
      ignoreOverriddenMethods - Defines if ignore methods with "@Override" annotation or not.
    • setAllowedAbbreviationLength

      public void setAllowedAbbreviationLength(int allowedAbbreviationLength)
      Setter to indicate the number of consecutive capital letters allowed in targeted identifiers (abbreviations in the classes, interfaces, variables and methods names, ... ).
      Parameters:
      allowedAbbreviationLength - amount of allowed capital letters in abbreviation.
    • setAllowedAbbreviations

      public void setAllowedAbbreviations(String... allowedAbbreviations)
      Setter to specify list of abbreviations that must be skipped for checking. Abbreviations should be separated by comma.
      Parameters:
      allowedAbbreviations - an string of abbreviations that must be skipped from checking, each abbreviation separated by comma.
    • getDefaultTokens

      public int[] getDefaultTokens()
      Description copied from class: AbstractCheck
      Returns the default token a check is interested in. Only used if the configuration for a check does not define the tokens.
      Specified by:
      getDefaultTokens in class AbstractCheck
      Returns:
      the default tokens
      See Also:
    • getAcceptableTokens

      public int[] getAcceptableTokens()
      Description copied from class: AbstractCheck
      The configurable token set. Used to protect Checks against malicious users who specify an unacceptable token set in the configuration file. The default implementation returns the check's default tokens.
      Specified by:
      getAcceptableTokens in class AbstractCheck
      Returns:
      the token set this check is designed for.
      See Also:
    • getRequiredTokens

      public int[] getRequiredTokens()
      Description copied from class: AbstractCheck
      The tokens that this check must be registered for.
      Specified by:
      getRequiredTokens in class AbstractCheck
      Returns:
      the token set this must be registered for.
      See Also:
    • visitToken

      public void visitToken(DetailAST ast)
      Description copied from class: AbstractCheck
      Called to process a token.
      Overrides:
      visitToken in class AbstractCheck
      Parameters:
      ast - the token to process