public final class AnnotationUseStyleCheck extends AbstractCheck
Annotations have three element styles starting with the least verbose.
To not enforce an element style aIGNORE
type is provided. The desired style
can be set through the elementStyle
property.
Using the EXPANDED style is more verbose. The expanded version is sometimes referred to as "named parameters" in other languages.
Using the COMPACT style is less verbose. This style can only be used when there is an element called 'value' which is either the sole element or all other elements have default values.
Using the COMPACT_NO_ARRAY style is less verbose. It is similar to the COMPACT style but single value arrays are flagged. With annotations a single value array does not need to be placed in an array initializer. This style can only be used when there is an element called 'value' which is either the sole element or all other elements have default values.
The ending parenthesis are optional when using annotations with no elements.
To always require ending parenthesis use the
ALWAYS
type. To never have ending parenthesis
use the NEVER
type. To not enforce a
closing parenthesis preference a IGNORE
type is
provided. Set this through the closingParens
property.
Annotations also allow you to specify arrays of elements in a standard
format. As with normal arrays, a trailing comma is optional. To always
require a trailing comma use the ALWAYS
type. To never have a trailing comma use the
NEVER
type. To not enforce a trailing
array comma preference a IGNORE
type
is provided. Set this through the trailingArrayComma
property.
By default the ElementStyle is set to EXPANDED, the TrailingArrayComma is set to NEVER, and the ClosingParens is set to ALWAYS.
According to the JLS, it is legal to include a trailing comma in arrays used in annotations but Sun's Java 5 & 6 compilers will not compile with this syntax. This may in be a bug in Sun's compilers since eclipse 3.4's built-in compiler does allow this syntax as defined in the JLS. Note: this was tested with compilers included with JDK versions 1.5.0.17 and 1.6.0.11 and the compiler included with eclipse 3.4.1.
See Java Language specification, §9.7.
An example shown below is set to enforce an EXPANDED style, with a trailing array comma set to NEVER and always including the closing parenthesis.
<module name="AnnotationUseStyle"> <property name="ElementStyle" value="EXPANDED"/> <property name="TrailingArrayComma" value="NEVER"/> <property name="ClosingParens" value="ALWAYS"/> </module>
Modifier and Type | Class and Description |
---|---|
static class |
AnnotationUseStyleCheck.ClosingParens
Defines the two styles for defining
elements in an annotation.
|
static class |
AnnotationUseStyleCheck.ElementStyle
Defines the styles for defining elements in an annotation.
|
static class |
AnnotationUseStyleCheck.TrailingArrayComma
Defines the two styles for defining
elements in an annotation.
|
Modifier and Type | Field and Description |
---|---|
private static java.lang.String |
ANNOTATION_ELEMENT_SINGLE_NAME
The element name used to receive special linguistic support
for annotation use.
|
private AnnotationUseStyleCheck.ClosingParens |
closingParens
Closing parens option.
|
private AnnotationUseStyleCheck.ElementStyle |
elementStyle
ElementStyle option.
|
static java.lang.String |
MSG_KEY_ANNOTATION_INCORRECT_STYLE
A key is pointing to the warning message text in "messages.properties"
file.
|
static java.lang.String |
MSG_KEY_ANNOTATION_PARENS_MISSING
A key is pointing to the warning message text in "messages.properties"
file.
|
static java.lang.String |
MSG_KEY_ANNOTATION_PARENS_PRESENT
A key is pointing to the warning message text in "messages.properties"
file.
|
static java.lang.String |
MSG_KEY_ANNOTATION_TRAILING_COMMA_MISSING
A key is pointing to the warning message text in "messages.properties"
file.
|
static java.lang.String |
MSG_KEY_ANNOTATION_TRAILING_COMMA_PRESENT
A key is pointing to the warning message text in "messages.properties"
file.
|
private AnnotationUseStyleCheck.TrailingArrayComma |
trailingArrayComma
Trailing array comma option.
|
Constructor and Description |
---|
AnnotationUseStyleCheck() |
Modifier and Type | Method and Description |
---|---|
private void |
checkCheckClosingParens(DetailAST ast)
Checks to see if the closing parenthesis are present if required or
prohibited.
|
private void |
checkCompactNoArrayStyle(DetailAST annotation)
Checks for compact no array style type violations.
|
private void |
checkCompactStyle(DetailAST annotation)
Checks for compact style type violations.
|
private void |
checkExpandedStyle(DetailAST annotation)
Checks for expanded style type violations.
|
private void |
checkStyleType(DetailAST annotation)
Checks to see if the
AnnotationElementStyle
is correct. |
private void |
checkTrailingComma(DetailAST annotation)
Checks to see if the trailing comma is present if required or
prohibited.
|
int[] |
getAcceptableTokens()
The configurable token set.
|
int[] |
getDefaultTokens()
Returns the default token a check is interested in.
|
private static <T extends java.lang.Enum<T>> |
getOption(java.lang.Class<T> enumClass,
java.lang.String value)
Retrieves an
Enum type from a @{link String String}. |
int[] |
getRequiredTokens()
The tokens that this check must be registered for.
|
private void |
logCommaViolation(DetailAST ast)
Logs a trailing array comma violation if one exists.
|
void |
setClosingParens(java.lang.String parens)
Sets the ClosingParens from a string.
|
void |
setElementStyle(java.lang.String style)
Sets the ElementStyle from a string.
|
void |
setTrailingArrayComma(java.lang.String comma)
Sets the TrailingArrayComma from a string.
|
void |
visitToken(DetailAST ast)
Called to process a token.
|
beginTree, destroy, finishTree, getClassLoader, getFileContents, getLine, getLines, getTabWidth, getTokenNames, init, isCommentNodesRequired, leaveToken, log, log, setClassLoader, setFileContents, setMessages, setTabWidth, setTokens
getCustomMessages, getId, getMessageBundle, getSeverity, getSeverityLevel, log, setId, setSeverity
configure, contextualize, finishLocalSetup, getConfiguration, setupChild
public static final java.lang.String MSG_KEY_ANNOTATION_INCORRECT_STYLE
public static final java.lang.String MSG_KEY_ANNOTATION_PARENS_MISSING
public static final java.lang.String MSG_KEY_ANNOTATION_PARENS_PRESENT
public static final java.lang.String MSG_KEY_ANNOTATION_TRAILING_COMMA_MISSING
public static final java.lang.String MSG_KEY_ANNOTATION_TRAILING_COMMA_PRESENT
private static final java.lang.String ANNOTATION_ELEMENT_SINGLE_NAME
private AnnotationUseStyleCheck.ElementStyle elementStyle
setElementStyle(String)
private AnnotationUseStyleCheck.TrailingArrayComma trailingArrayComma
setTrailingArrayComma(String)
private AnnotationUseStyleCheck.ClosingParens closingParens
setClosingParens(String)
public void setElementStyle(java.lang.String style)
style
- string representationorg.apache.commons.beanutils.ConversionException
- if cannot convert string.public void setTrailingArrayComma(java.lang.String comma)
comma
- string representationorg.apache.commons.beanutils.ConversionException
- if cannot convert string.public void setClosingParens(java.lang.String parens)
parens
- string representationorg.apache.commons.beanutils.ConversionException
- if cannot convert string.private static <T extends java.lang.Enum<T>> T getOption(java.lang.Class<T> enumClass, java.lang.String value)
Enum
type from a @{link String String}.T
- the enum typeenumClass
- the enum classvalue
- the string representing the enumpublic 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 processprivate void checkStyleType(DetailAST annotation)
AnnotationElementStyle
is correct.annotation
- the annotation tokenprivate void checkExpandedStyle(DetailAST annotation)
annotation
- the annotation tokenprivate void checkCompactStyle(DetailAST annotation)
annotation
- the annotation tokenprivate void checkCompactNoArrayStyle(DetailAST annotation)
annotation
- the annotation tokenprivate void checkTrailingComma(DetailAST annotation)
annotation
- the annotation tokenprivate void logCommaViolation(DetailAST ast)
ast
- the array init
ANNOTATION_ARRAY_INIT
.private void checkCheckClosingParens(DetailAST ast)
ast
- the annotation token