[Checkers] Javari checker test case
Jaime Quinonez
jaimeq at MIT.EDU
Thu Apr 10 18:23:02 EDT 2008
I updated and ran the Javari checker on the scene library and obtained
two false positives before the checker threw an exception. Here's the
command I ran along with all the output (including a lot of warnings
from the annotated jdk): (the -cp ${CLASSPATH} was necessary)
Jaime
jaimeq at scallion:~/research/annotations/scene-lib$ pwd
/afs/csail.mit.edu/u/j/jaimeq/research/annotations/scene-lib
jaimeq at scallion:~/research/annotations/scene-lib$ javac -version
javac 1.7.0-jsr308-dev-20080404
jaimeq at scallion:~/research/annotations/scene-lib$ echoclasspath
/afs/csail.mit.edu/u/j/jaimeq/research/annotations/checkers/build
/afs/csail.mit.edu/u/j/jaimeq/research/annotations/checkers/checkers.jar
/afs/csail.mit.edu/u/j/jaimeq/research/annotations/langtools/dist/lib/
javap.jar
/afs/csail.mit.edu/u/j/jaimeq/research/annotations/langtools/dist/lib/
javac.jar
/afs/csail.mit.edu/u/j/jaimeq/bin/jdk1.7.0/jre/lib/rt.jar
.
bin
/afs/csail.mit.edu/u/j/jaimeq/research/annotations/shared/bin
/afs/csail.mit.edu/u/j/jaimeq/research/annotations/annotator/bin
/afs/csail.mit.edu/u/j/jaimeq/research/annotations/annotator/lib/
commons-cli-1.0.jar
/afs/csail.mit.edu/u/j/jaimeq/research/annotations/asmx/bin
/afs/csail.mit.edu/u/j/jaimeq/research/annotations/scene-lib/bin
/afs/csail.mit.edu/u/j/jaimeq/research/invariants/java
/afs/csail.mit.edu/u/j/jaimeq/research/invariants/java/lib/bcel.jar
/afs/csail.mit.edu/u/j/jaimeq/research/invariants/java/lib/commons-
io.jar
/afs/csail.mit.edu/u/j/jaimeq/research/invariants/java/lib/java-
getopt.jar
/afs/csail.mit.edu/u/j/jaimeq/research/invariants/java/lib/junit.jar
/afs/csail.mit.edu/u/j/jaimeq/research/invariants/java/lib/bcel.jar
/afs/csail.mit.edu/u/m/mernst/java/jdk/lib/tools.jar
/afs/csail.mit.edu/u/j/jaimeq/research/invariants/java/lib/java-
getopt.jar
jaimeq at scallion:~/research/annotations/scene-lib$ javac -cp $
{CLASSPATH} \
-sourcepath ${HOME}/research/annotations/checkers/jdk/javari/src \
-typeprocessor checkers.javari.JavariChecker \
src/annotations/*.java \
src/annotations/*/*.java \
src/annotations/*/*/*.java \
/afs/csail.mit.edu/u/j/jaimeq/research/annotations/checkers/jdk/javari/
src/java/lang/Class.java:41: warning: sun.misc.Unsafe is Sun
proprietary API and may be removed in a future release
import sun.misc.Unsafe;
^
/afs/csail.mit.edu/u/j/jaimeq/research/annotations/checkers/jdk/javari/
src/java/lang/Class.java:42: warning: sun.reflect.ConstantPool is Sun
proprietary API and may be removed in a future release
import sun.reflect.ConstantPool;
^
/afs/csail.mit.edu/u/j/jaimeq/research/annotations/checkers/jdk/javari/
src/java/lang/Class.java:43: warning: sun.reflect.Reflection is Sun
proprietary API and may be removed in a future release
import sun.reflect.Reflection;
^
/afs/csail.mit.edu/u/j/jaimeq/research/annotations/checkers/jdk/javari/
src/java/lang/Class.java:44: warning: sun.reflect.ReflectionFactory is
Sun proprietary API and may be removed in a future release
import sun.reflect.ReflectionFactory;
^
/afs/csail.mit.edu/u/j/jaimeq/research/annotations/checkers/jdk/javari/
src/java/lang/Class.java:45: warning: sun.reflect.SignatureIterator is
Sun proprietary API and may be removed in a future release
import sun.reflect.SignatureIterator;
^
/afs/csail.mit.edu/u/j/jaimeq/research/annotations/checkers/jdk/javari/
src/java/lang/Class.java:46: warning:
sun.reflect.generics.factory.CoreReflectionFactory is Sun proprietary
API and may be removed in a future release
import sun.reflect.generics.factory.CoreReflectionFactory;
^
/afs/csail.mit.edu/u/j/jaimeq/research/annotations/checkers/jdk/javari/
src/java/lang/Class.java:47: warning:
sun.reflect.generics.factory.GenericsFactory is Sun proprietary API
and may be removed in a future release
import sun.reflect.generics.factory.GenericsFactory;
^
/afs/csail.mit.edu/u/j/jaimeq/research/annotations/checkers/jdk/javari/
src/java/lang/Class.java:48: warning:
sun.reflect.generics.repository.ClassRepository is Sun proprietary API
and may be removed in a future release
import sun.reflect.generics.repository.ClassRepository;
^
/afs/csail.mit.edu/u/j/jaimeq/research/annotations/checkers/jdk/javari/
src/java/lang/Class.java:49: warning:
sun.reflect.generics.repository.MethodRepository is Sun proprietary
API and may be removed in a future release
import sun.reflect.generics.repository.MethodRepository;
^
/afs/csail.mit.edu/u/j/jaimeq/research/annotations/checkers/jdk/javari/
src/java/lang/Class.java:50: warning:
sun.reflect.generics.repository.ConstructorRepository is Sun
proprietary API and may be removed in a future release
import sun.reflect.generics.repository.ConstructorRepository;
^
/afs/csail.mit.edu/u/j/jaimeq/research/annotations/checkers/jdk/javari/
src/java/lang/Class.java:51: warning:
sun.reflect.generics.scope.ClassScope is Sun proprietary API and may
be removed in a future release
import sun.reflect.generics.scope.ClassScope;
^
/afs/csail.mit.edu/u/j/jaimeq/research/annotations/checkers/jdk/javari/
src/java/lang/Class.java:52: warning:
sun.security.util.SecurityConstants is Sun proprietary API and may be
removed in a future release
import sun.security.util.SecurityConstants;
^
/afs/csail.mit.edu/u/j/jaimeq/research/annotations/checkers/jdk/javari/
src/java/lang/AbstractStringBuilder.java:11: warning:
sun.misc.FloatingDecimal is Sun proprietary API and may be removed in
a future release
import sun.misc.FloatingDecimal;
^
/afs/csail.mit.edu/u/j/jaimeq/research/annotations/checkers/jdk/javari/
src/java/lang/Class.java:2244: warning:
sun.reflect.generics.repository.ClassRepository is Sun proprietary API
and may be removed in a future release
private transient ClassRepository genericInfo;
^
/afs/csail.mit.edu/u/j/jaimeq/research/annotations/checkers/jdk/javari/
src/java/lang/Class.java:2247: warning:
sun.reflect.generics.factory.GenericsFactory is Sun proprietary API
and may be removed in a future release
private GenericsFactory getFactory() {
^
/afs/csail.mit.edu/u/j/jaimeq/research/annotations/checkers/jdk/javari/
src/java/lang/Class.java:2253: warning:
sun.reflect.generics.repository.ClassRepository is Sun proprietary API
and may be removed in a future release
private ClassRepository getGenericInfo() {
^
/afs/csail.mit.edu/u/j/jaimeq/research/annotations/checkers/jdk/javari/
src/java/lang/Class.java:2266: warning: sun.reflect.ConstantPool is
Sun proprietary API and may be removed in a future release
native ConstantPool getConstantPool();
^
/afs/csail.mit.edu/u/j/jaimeq/research/annotations/checkers/jdk/javari/
src/java/lang/Class.java:2870: warning: sun.reflect.ReflectionFactory
is Sun proprietary API and may be removed in a future release
private static ReflectionFactory getReflectionFactory() {
^
/afs/csail.mit.edu/u/j/jaimeq/research/annotations/checkers/jdk/javari/
src/java/lang/Class.java:2878: warning: sun.reflect.ReflectionFactory
is Sun proprietary API and may be removed in a future release
private static ReflectionFactory reflectionFactory;
^
/afs/csail.mit.edu/u/j/jaimeq/research/annotations/checkers/jdk/javari/
src/java/lang/Class.java:3097: warning:
sun.reflect.annotation.AnnotationType is Sun proprietary API and may
be removed in a future release
private AnnotationType annotationType;
^
/afs/csail.mit.edu/u/j/jaimeq/research/annotations/checkers/jdk/javari/
src/java/lang/Class.java:3099: warning:
sun.reflect.annotation.AnnotationType is Sun proprietary API and may
be removed in a future release
void setAnnotationType(AnnotationType type) {
^
/afs/csail.mit.edu/u/j/jaimeq/research/annotations/checkers/jdk/javari/
src/java/lang/Class.java:3103: warning:
sun.reflect.annotation.AnnotationType is Sun proprietary API and may
be removed in a future release
AnnotationType getAnnotationType() {
^
/afs/csail.mit.edu/u/j/jaimeq/research/annotations/checkers/jdk/javari/
src/java/io/OutputStreamWriter.java:12: warning:
sun.nio.cs.StreamEncoder is Sun proprietary API and may be removed in
a future release
import sun.nio.cs.StreamEncoder;
^
/afs/csail.mit.edu/u/j/jaimeq/research/annotations/checkers/jdk/javari/
src/java/io/OutputStreamWriter.java:63: warning:
sun.nio.cs.StreamEncoder is Sun proprietary API and may be removed in
a future release
private final StreamEncoder se;
^
/afs/csail.mit.edu/u/j/jaimeq/research/annotations/checkers/jdk/javari/
src/java/lang/Float.java:11: warning: sun.misc.FloatingDecimal is Sun
proprietary API and may be removed in a future release
import sun.misc.FloatingDecimal;
^
/afs/csail.mit.edu/u/j/jaimeq/research/annotations/checkers/jdk/javari/
src/java/lang/Float.java:12: warning: sun.misc.FpUtils is Sun
proprietary API and may be removed in a future release
import sun.misc.FpUtils;
^
/afs/csail.mit.edu/u/j/jaimeq/research/annotations/checkers/jdk/javari/
src/java/lang/Float.java:13: warning: sun.misc.FloatConsts is Sun
proprietary API and may be removed in a future release
import sun.misc.FloatConsts;
^
/afs/csail.mit.edu/u/j/jaimeq/research/annotations/checkers/jdk/javari/
src/java/lang/Float.java:14: warning: sun.misc.DoubleConsts is Sun
proprietary API and may be removed in a future release
import sun.misc.DoubleConsts;
^
/afs/csail.mit.edu/u/j/jaimeq/research/annotations/checkers/jdk/javari/
src/java/lang/Double.java:11: warning: sun.misc.FloatingDecimal is Sun
proprietary API and may be removed in a future release
import sun.misc.FloatingDecimal;
^
/afs/csail.mit.edu/u/j/jaimeq/research/annotations/checkers/jdk/javari/
src/java/lang/Double.java:12: warning: sun.misc.FpUtils is Sun
proprietary API and may be removed in a future release
import sun.misc.FpUtils;
^
/afs/csail.mit.edu/u/j/jaimeq/research/annotations/checkers/jdk/javari/
src/java/lang/Double.java:13: warning: sun.misc.DoubleConsts is Sun
proprietary API and may be removed in a future release
import sun.misc.DoubleConsts;
^
/afs/csail.mit.edu/u/j/jaimeq/research/annotations/checkers/jdk/javari/
src/java/lang/System.java:19: warning: sun.nio.ch.Interruptible is Sun
proprietary API and may be removed in a future release
import sun.nio.ch.Interruptible;
^
/afs/csail.mit.edu/u/j/jaimeq/research/annotations/checkers/jdk/javari/
src/java/lang/System.java:20: warning: sun.net.InetAddressCachePolicy
is Sun proprietary API and may be removed in a future release
import sun.net.InetAddressCachePolicy;
^
/afs/csail.mit.edu/u/j/jaimeq/research/annotations/checkers/jdk/javari/
src/java/lang/System.java:21: warning: sun.reflect.Reflection is Sun
proprietary API and may be removed in a future release
import sun.reflect.Reflection;
^
/afs/csail.mit.edu/u/j/jaimeq/research/annotations/checkers/jdk/javari/
src/java/lang/System.java:22: warning:
sun.security.util.SecurityConstants is Sun proprietary API and may be
removed in a future release
import sun.security.util.SecurityConstants;
^
/afs/csail.mit.edu/u/j/jaimeq/research/annotations/checkers/jdk/javari/
src/java/lang/System.java:23: warning:
sun.reflect.annotation.AnnotationType is Sun proprietary API and may
be removed in a future release
import sun.reflect.annotation.AnnotationType;
^
/afs/csail.mit.edu/u/j/jaimeq/research/annotations/checkers/jdk/javari/
src/java/io/InputStreamReader.java:13: warning:
sun.nio.cs.StreamDecoder is Sun proprietary API and may be removed in
a future release
import sun.nio.cs.StreamDecoder;
^
/afs/csail.mit.edu/u/j/jaimeq/research/annotations/checkers/jdk/javari/
src/java/io/InputStreamReader.java:48: warning:
sun.nio.cs.StreamDecoder is Sun proprietary API and may be removed in
a future release
private final StreamDecoder sd;
^
src/annotations/AbstractAnnotation.java:28: warning: cast increases
mutability access
return o instanceof Annotation && equals((/*@NonNull*/
Annotation) o);
^
src/annotations/AbstractAnnotation.java:48: cannot invoke a Mutable
method from a ReadOnly reference
return def.equals(o.def())
^
src/annotations/AbstractAnnotation.java:49: incompatible types.
found : @NonNull @ReadOnly Annotation
required: @NonNull @Mutable Annotation
&& myFieldMap.equals(Annotations.fieldValuesMap(o));
^
An annotation processor threw an uncaught exception.
Consult the following stack trace for details.
java.lang.NullPointerException
at
checkers
.javari
.JavariAnnotatedTypeFactory
.getImmutabilityAnnotation(JavariAnnotatedTypeFactory.java:58)
at
checkers
.javari
.JavariAnnotatedTypeFactory
.hasImmutabilityAnnotation(JavariAnnotatedTypeFactory.java:78)
at checkers.javari.JavariAnnotatedTypeFactory
$TypePostAnnotator.scan(JavariAnnotatedTypeFactory.java:362)
at checkers.javari.JavariAnnotatedTypeFactory
$TypePostAnnotator.scan(JavariAnnotatedTypeFactory.java:351)
at
checkers
.types.AnnotatedTypeScanner.scanAndReduce(AnnotatedTypeScanner.java:109)
at
checkers
.types.AnnotatedTypeScanner.visitWildcard(AnnotatedTypeScanner.java:175)
at checkers.types.AnnotatedTypeMirror
$AnnotatedWildcardType.accept(AnnotatedTypeMirror.java:1276)
at checkers.types.AnnotatedTypeScanner.scan(AnnotatedTypeScanner.java:
81)
at checkers.javari.JavariAnnotatedTypeFactory
$TypePostAnnotator.scan(JavariAnnotatedTypeFactory.java:416)
at checkers.javari.JavariAnnotatedTypeFactory
$TypePostAnnotator.scan(JavariAnnotatedTypeFactory.java:351)
at
checkers
.types.AnnotatedTypeScanner.scanAndReduce(AnnotatedTypeScanner.java:109)
at checkers.types.AnnotatedTypeScanner.scan(AnnotatedTypeScanner.java:
98)
at
checkers
.types.AnnotatedTypeScanner.visitDeclared(AnnotatedTypeScanner.java:120)
at checkers.types.AnnotatedTypeMirror
$AnnotatedDeclaredType.accept(AnnotatedTypeMirror.java:440)
at checkers.types.AnnotatedTypeScanner.scan(AnnotatedTypeScanner.java:
81)
at checkers.javari.JavariAnnotatedTypeFactory
$TypePostAnnotator.scan(JavariAnnotatedTypeFactory.java:416)
at checkers.javari.JavariAnnotatedTypeFactory
$TypePostAnnotator.scan(JavariAnnotatedTypeFactory.java:351)
at
checkers.types.AnnotatedTypeScanner.visit(AnnotatedTypeScanner.java:71)
at
checkers.types.AnnotatedTypeScanner.visit(AnnotatedTypeScanner.java:65)
at
checkers
.javari
.JavariAnnotatedTypeFactory
.annotateInheritedFromClass(JavariAnnotatedTypeFactory.java:89)
at
checkers
.types.AnnotatedTypeFactory.fromTypeTree(AnnotatedTypeFactory.java:290)
at checkers.types.TypeFromTree
$TypeFromMember.visitVariable(TypeFromTree.java:295)
at checkers.types.TypeFromTree
$TypeFromMember.visitVariable(TypeFromTree.java:283)
at com.sun.tools.javac.tree.JCTree$JCVariableDecl.accept(JCTree.java:
727)
at com.sun.source.util.SimpleTreeVisitor.visit(SimpleTreeVisitor.java:
52)
at checkers.types.TypeFromTree
$TypeFromMember.visitMethod(TypeFromTree.java:349)
at checkers.types.TypeFromTree
$TypeFromMember.visitMethod(TypeFromTree.java:283)
at com.sun.tools.javac.tree.JCTree$JCMethodDecl.accept(JCTree.java:681)
at com.sun.source.util.SimpleTreeVisitor.visit(SimpleTreeVisitor.java:
52)
at
checkers
.types
.AnnotatedTypeFactory.fromTreeWithVisitor(AnnotatedTypeFactory.java:232)
at
checkers
.types.AnnotatedTypeFactory.fromMember(AnnotatedTypeFactory.java:263)
at
checkers
.types.AnnotatedTypeFactory.getAnnotatedType(AnnotatedTypeFactory.java:
449)
at checkers.basetype.BaseTypeVisitor.visitMethod(BaseTypeVisitor.java:
152)
at com.sun.tools.javac.tree.JCTree$JCMethodDecl.accept(JCTree.java:681)
at com.sun.source.util.TreePathScanner.scan(TreePathScanner.java:67)
at com.sun.source.util.TreeScanner.scanAndReduce(TreeScanner.java:80)
at com.sun.source.util.TreeScanner.scan(TreeScanner.java:90)
at com.sun.source.util.TreeScanner.scanAndReduce(TreeScanner.java:98)
at com.sun.source.util.TreeScanner.visitClass(TreeScanner.java:132)
at checkers.basetype.BaseTypeVisitor.visitClass(BaseTypeVisitor.java:
123)
at checkers.javari.JavariVisitor.visitClass(JavariVisitor.java:76)
at checkers.javari.JavariVisitor.visitClass(JavariVisitor.java:23)
at com.sun.tools.javac.tree.JCTree$JCClassDecl.accept(JCTree.java:604)
at com.sun.source.util.TreePathScanner.scan(TreePathScanner.java:49)
at checkers.source.SourceChecker.process(SourceChecker.java:190)
at
com
.sun
.tools
.javac
.processing
.JavacProcessingEnvironment
.callProcessor(JavacProcessingEnvironment.java:733)
at
com
.sun
.tools
.javac
.processing
.JavacProcessingEnvironment
.discoverAndRunProcs(JavacProcessingEnvironment.java:662)
at
com
.sun
.tools
.javac
.processing
.JavacProcessingEnvironment
.doProcessing(JavacProcessingEnvironment.java:807)
at
com
.sun
.tools.javac.main.JavaCompiler.processAnnotations(JavaCompiler.java:995)
at com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:741)
at com.sun.tools.javac.main.Main.compile(Main.java:380)
at com.sun.tools.javac.main.Main.compile(Main.java:306)
at com.sun.tools.javac.main.Main.compile(Main.java:297)
at com.sun.tools.javac.Main.compile(Main.java:82)
at com.sun.tools.javac.Main.main(Main.java:67)
More information about the checkers
mailing list