Class GoogleNonConstantFieldNameCheck
java.lang.Object
com.puppycrawl.tools.checkstyle.AbstractAutomaticBean
com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter
com.puppycrawl.tools.checkstyle.api.AbstractCheck
com.puppycrawl.tools.checkstyle.checks.naming.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. Fields in interfaces and annotations
are also skipped because they are implicitly public static final (constants)
- Since:
- 13.3.0
-
Nested Class Summary
Nested classes/interfaces inherited from class com.puppycrawl.tools.checkstyle.AbstractAutomaticBean
AbstractAutomaticBean.OutputStreamOptions -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate static final PatternPattern to detect invalid underscore usage: leading, trailing, consecutive, or between letter-letter, letter-digit, or digit-letter combinations.static final StringA key is pointing to the violation message text in "messages.properties" file.private static final PatternPattern for valid non-constant field name in Google style.private static final PatternPattern to strip trailing numbering suffix (underscore followed by digits). -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionint[]The configurable token set.int[]Returns the default token a check is interested in.private static DetailASTReturns the IDENT node of the given AST.private static DetailASTgetModifiers(DetailAST ast) Returns the MODIFIERS node of the given AST.int[]The tokens that this check must be registered for.private static booleanChecks if this field should be validated.private voidvalidateNonConstantFieldName(DetailAST nameAst, String fieldName) Validates a non-constant field name according to Google style.voidvisitToken(DetailAST ast) Called to process a token.Methods inherited from class com.puppycrawl.tools.checkstyle.api.AbstractCheck
beginTree, clearViolations, destroy, finishTree, getFileContents, getFilePath, getLine, getLineCodePoints, getLines, getTabWidth, getTokenNames, getViolations, init, isCommentNodesRequired, leaveToken, log, log, log, setFileContents, setTabWidth, setTokensMethods inherited from class com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter
finishLocalSetup, getCustomMessages, getId, getMessageBundle, getSeverity, getSeverityLevel, setId, setSeverityMethods inherited from class com.puppycrawl.tools.checkstyle.AbstractAutomaticBean
configure, contextualize, getConfiguration, setupChild
-
Field Details
-
MSG_KEY_INVALID_FORMAT
A key is pointing to the violation message text in "messages.properties" file.- See Also:
-
NON_CONSTANT_FIELD_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
Pattern to strip trailing numbering suffix (underscore followed by digits). -
INVALID_UNDERSCORE_PATTERN
Pattern to detect invalid underscore usage: leading, trailing, consecutive, or between letter-letter, letter-digit, or digit-letter combinations.
-
-
Constructor Details
-
GoogleNonConstantFieldNameCheck
public GoogleNonConstantFieldNameCheck()
-
-
Method Details
-
getDefaultTokens
Description copied from class:AbstractCheckReturns the default token a check is interested in. Only used if the configuration for a check does not define the tokens.- Specified by:
getDefaultTokensin classAbstractCheck- Returns:
- the default tokens
- See Also:
-
getAcceptableTokens
Description copied from class:AbstractCheckThe 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:
getAcceptableTokensin classAbstractCheck- Returns:
- the token set this check is designed for.
- See Also:
-
getRequiredTokens
Description copied from class:AbstractCheckThe tokens that this check must be registered for.- Specified by:
getRequiredTokensin classAbstractCheck- Returns:
- the token set this must be registered for.
- See Also:
-
visitToken
Description copied from class:AbstractCheckCalled to process a token.- Overrides:
visitTokenin classAbstractCheck- Parameters:
ast- the token to process
-
getIdent
Returns the IDENT node of the given AST.- Parameters:
ast- the AST node- Returns:
- the IDENT child node
-
shouldCheckFieldName
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
-
getModifiers
Returns the MODIFIERS node of the given AST. The MODIFIERS node is always present in the AST for type, method, and field declarations, even when no modifiers are explicitly written in code (e.g.,int x;still has an empty MODIFIERS node).- Parameters:
ast- the AST node- Returns:
- the MODIFIERS child node
-
validateNonConstantFieldName
Validates a non-constant field name according to Google style.- Parameters:
nameAst- the IDENT AST node containing the field namefieldName- the field name string
-