-
-
Notifications
You must be signed in to change notification settings - Fork 3.8k
Closed
Labels
Milestone
Description
https://checkstyle.org/config_annotation.html#AnnotationLocation
$ javac TestClass.java package-info.java
(no output)
$ cat TestConfig.xml
<?xml version="1.0"?>
<!DOCTYPE module PUBLIC
"-//Puppy Crawl//DTD Check Configuration 1.3//EN"
"http://www.puppycrawl.com/dtds/configuration_1_3.dtd">
<module name="Checker">
<module name="TreeWalker">
<module name="AnnotationLocation">
<property name="allowSamelineSingleParameterlessAnnotation" value="false"/>
<!-- all available tokens -->
<property name="tokens" value="CLASS_DEF,INTERFACE_DEF,ENUM_DEF,METHOD_DEF,CTOR_DEF,VARIABLE_DEF,PARAMETER_DEF,ANNOTATION_DEF,TYPECAST,LITERAL_THROWS,IMPLEMENTS_CLAUSE,TYPE_ARGUMENT,LITERAL_NEW,DOT,ANNOTATION_FIELD_DEF"/>
</module>
</module>
</module>
$ cat TestClass.java
package test;
import java.lang.annotation.ElementType;
import java.lang.annotation.Target;
@Ann enum TestEnum { // ok (line 6)
@Ann ENUM_VALUE(); // missing violation
TestEnum() {
Object o = (@Ann TestEnum & @Ann Cloneable) null; // missing violation or ... ??
}
}
@Target({ElementType.TYPE_USE, ElementType.PACKAGE, ElementType.FIELD})
@interface Ann {}
$cat package-info.java
@Ann package test; //missing violation
$ RUN_LOCALE="-Duser.language=en -Duser.country=US"
$RUN_LOCALE java -jar checkstyle-8.16-all.jar -c TestConfig.xml TestClass.java package-info.java
Starting audit...
[WARN] TestClass.java:6: Annotation 'Ann' should be alone on line. [AnnotationLocation]
Audit done.
Expected 2 more violations.
The tokens PACKAGE_DEF
, ENUM_CONSTANT_DEF
, have no MODIFIERS
, their annotations are under ANNOTATIONS
token:
for example
@Ann ENUM_VALUE();
is
|--ENUM_CONSTANT_DEF
| |--ANNOTATIONS
| | |--ANNOTATION
AnnotationLocation
does not support ANNOTATIONS
at all. This is a bug and should be fixed.
Vampire