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, setTokensfinishLocalSetup, getCustomMessages, getId, getMessageBundle, getSeverity, getSeverityLevel, setId, setSeverityconfigure, contextualize, getConfiguration, setupChildpublic 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()
AbstractCheckgetDefaultTokens in class AbstractCheckTokenTypespublic int[] getRequiredTokens()
AbstractCheckgetRequiredTokens in class AbstractCheckTokenTypespublic int[] getAcceptableTokens()
AbstractCheckgetAcceptableTokens in class AbstractCheckTokenTypespublic void visitToken(DetailAST ast)
AbstractCheckvisitToken in class AbstractCheckast - the token to processCopyright © 2001–2020. All rights reserved.