public class ClassMemberImpliedModifierCheck extends AbstractCheck
Checks for implicit modifiers on nested types in classes.
This check is effectively the opposite of RedundantModifier. It checks the modifiers on nested types in classes, ensuring that certain modifiers are explicitly specified even though they are actually redundant.
Nested enums and interfaces within a class are always static
and as such the compiler
does not require the static
modifier. This check provides the ability to enforce that
the static
modifier is explicitly coded and not implicitly added by the compiler.
public final class Person { enum Age { // violation CHILD, ADULT } }
Rationale for this check: Nested enums and interfaces are treated differently from nested
classes as they are only allowed to be static
. Developers should not need to remember
this rule, and this check provides the means to enforce that the modifier is coded explicitly.
violateImpliedStaticOnNestedEnum
- Control whether to enforce that
static
is explicitly coded on nested enums in classes.
Type is boolean
.
Default value is true
.
violateImpliedStaticOnNestedInterface
- Control whether to enforce that
static
is explicitly coded on nested interfaces in classes.
Type is boolean
.
Default value is true
.
This example checks that all implicit modifiers on nested interfaces and enums are explicitly specified in classes.
Configuration:
<module name="ClassMemberImpliedModifier" />
Code:
public final class Person { static interface Address1 { // valid } interface Address2 { // violation } static enum Age1 { // valid CHILD, ADULT } enum Age2 { // violation CHILD, ADULT } }
Parent is com.puppycrawl.tools.checkstyle.TreeWalker
Violation Message Keys:
class.implied.modifier
AutomaticBean.OutputStreamOptions
Modifier and Type | Field and Description |
---|---|
static String |
MSG_KEY
A key is pointing to the warning message text in "messages.properties" file.
|
Constructor and Description |
---|
ClassMemberImpliedModifierCheck() |
Modifier and Type | Method and Description |
---|---|
int[] |
getAcceptableTokens()
The configurable token set.
|
int[] |
getDefaultTokens()
Returns the default token a check is interested in.
|
int[] |
getRequiredTokens()
The tokens that this check must be registered for.
|
void |
setViolateImpliedStaticOnNestedEnum(boolean violateImplied)
Setter to control whether to enforce that
static is explicitly coded
on nested enums in classes. |
void |
setViolateImpliedStaticOnNestedInterface(boolean violateImplied)
Setter to control whether to enforce that
static is explicitly coded
on nested interfaces in classes. |
void |
visitToken(DetailAST ast)
Called to process a token.
|
beginTree, clearMessages, destroy, finishTree, getFileContents, getLine, getLines, getMessages, getTabWidth, getTokenNames, init, isCommentNodesRequired, leaveToken, log, log, log, setFileContents, setTabWidth, setTokens
finishLocalSetup, getCustomMessages, getId, getMessageBundle, getSeverity, getSeverityLevel, setId, setSeverity
configure, contextualize, getConfiguration, setupChild
public static final String MSG_KEY
public ClassMemberImpliedModifierCheck()
public void setViolateImpliedStaticOnNestedEnum(boolean violateImplied)
static
is explicitly coded
on nested enums in classes.violateImplied
- True to perform the check, false to turn the check off.public void setViolateImpliedStaticOnNestedInterface(boolean violateImplied)
static
is explicitly coded
on nested interfaces in classes.violateImplied
- True to perform the check, false to turn the check off.public int[] getDefaultTokens()
AbstractCheck
getDefaultTokens
in class AbstractCheck
TokenTypes
public int[] getRequiredTokens()
AbstractCheck
getRequiredTokens
in class AbstractCheck
TokenTypes
public int[] getAcceptableTokens()
AbstractCheck
getAcceptableTokens
in class AbstractCheck
TokenTypes
public void visitToken(DetailAST ast)
AbstractCheck
visitToken
in class AbstractCheck
ast
- the token to processCopyright © 2001–2020. All rights reserved.