Class GoogleNonConstantFieldNameCheck

All Implemented Interfaces:
Configurable, Contextualizable

Checks that non-constant field names conform to the Google Java Style Guide for non-constant field naming.

This check enforces Google's specific non-constant field naming requirements:

  • Non-constant field names must start with a lowercase letter and use uppercase letters for word boundaries.
  • Underscores may be used to separate adjacent numbers (e.g., version numbers like guava33_4_5), but NOT between letters and digits.

Static fields are skipped because Checkstyle cannot determine type immutability to distinguish constants from non-constants.

Since:
13.1.0
  • Field Details

    • MSG_KEY_INVALID_FORMAT

      public static final String MSG_KEY_INVALID_FORMAT
      A key is pointing to the violation message text in "messages.properties" file.
      See Also:
    • MSG_KEY_INVALID_UNDERSCORE

      public static final String MSG_KEY_INVALID_UNDERSCORE
      A key pointing to the violation message for invalid underscore usage.
      See Also:
    • MEMBER_NAME_PATTERN

      private static final Pattern MEMBER_NAME_PATTERN
      Pattern for valid non-constant field name in Google style. Format: start with lowercase, have at least 2 chars, optionally followed by numbering suffix.

      Explanation:

      • ^(?![a-z]$) - Negative lookahead: cannot be single lowercase char
      • (?![a-z][A-Z]) - Negative lookahead: cannot be like "fO"
      • [a-z] - Must start with lowercase
      • [a-z0-9]*+ - Followed by lowercase or digits
      • (?:[A-Z][a-z0-9]*+)*+ - CamelCase humps (uppercase followed by lowercase)
      • $ - End of string (numbering suffix validated separately)
    • NUMBERING_SUFFIX_PATTERN

      private static final Pattern NUMBERING_SUFFIX_PATTERN
      Pattern to strip trailing numbering suffix (underscore followed by digits).
    • INVALID_UNDERSCORE_PATTERN

      private static final Pattern INVALID_UNDERSCORE_PATTERN
      Pattern to detect invalid underscore usage: leading, trailing, consecutive, or between letter-letter, letter-digit, or digit-letter combinations.
  • Constructor Details

  • Method Details

    • 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
    • mustCheckName

      private static boolean mustCheckName(DetailAST ast)
      Checks if this field should be validated. Returns true for instance fields only. Static fields are excluded because Checkstyle cannot determine type immutability. Local variables and interface/annotation fields are also excluded.
      Parameters:
      ast - the VARIABLE_DEF AST node
      Returns:
      true if this variable should be checked
    • validateMemberName

      private void validateMemberName(DetailAST nameAst, String memberName)
      Validates a non-constant field according to Google style.
      Parameters:
      nameAst - the IDENT AST node containing the member name
      memberName - the member name string