[Checkers] Problems with NonNull checker

Michael Ernst mernst at csail.mit.edu
Mon Apr 21 10:01:18 EDT 2008


Matt and Mahmood-

I'm having trouble running the NonNull checker.  Some of the problems seem
to be with the NonNull checker itself, and others with the framework.

The commands that I am running are as follows.  They appear in file
~mernst/wisdom/build/build-jast .

# Install JastAdd NonNull inferencer
cd ~/java
mv JavaNonNullInferencer.jar JavaNonNullInferencer.jar-`ls -l JavaNonNullInferencer.jar | cut --delimiter=' ' --fields=6`
wget http://builds.jastadd.org/NonNullTools/latest/JavaNonNullInferencer.jar
alias nninfer='java -Xmx768M -jar ~/java/JavaNonNullInferencer.jar -classpath ${CLASSPATH} -legacysyntax -import "checkers.quals.*"'

## To run on Daikon:
# Infer
rm -rf ~/tmp/nninfer/invariants-java
cd $inv/java
nninfer -d ~/tmp/nninfer/invariants-java `make showvar_JAVA_FILES`
# Compile
setenv CLASSPATH .:$CLASSPATH
cd ~/tmp/nninfer/invariants-java
# To make the javac command work, I have to replace some but not all @Raw by
# @checkers.quals.Raw.  Why?
javac `findfile '*.java'`
javac -typeprocessor checkers.nonnull.NonNullChecker `findfile '*.java'`


You don't have to install JastAdd and run it if you don't want to -- you
can just work from the files in my directory
/afs/csail.mit.edu/u/m/mernst/tmp/nninfer/invariants-java .

My problems include:

 * I have to replace some but not all uses of "@Raw" by "@checkers.quals.Raw".
   (I have already done this in the one place I had to, in FileIO.java.)
 * Error messages for class names, when accessing a static variable -- the
   message says that the class name is possibly-null.  This is most of the
   messages, in fact.
 * The checker crashes, after a long delay.  I have not investigated this
   to determine which file(s) are at fault.

I tried to reproduce these, but couldn't reproduce some of them, and it may
be more useful for you to have the whole codebase to work through problems.

Please let me know if I can provide any more information.

Below is the output of the last command, which runs the NonNull checker.

                    -Mike


manioc 27% pwd
/afs/csail.mit.edu/u/m/mernst/tmp/nninfer/invariants-java
manioc 28% javac -typeprocessor checkers.nonnull.NonNullChecker `findfile '*.java'`
./daikon/inv/unary/sequence/NoDuplicates.java:71: cannot dereference the possibly-null reference Level
    if (debug.isLoggable(Level.FINE)) {
                              ^
./daikon/inv/unary/sequence/NoDuplicates.java:75: cannot dereference the possibly-null reference OutputFormat
    if (format == OutputFormat.DAIKON) {
                              ^
./daikon/inv/unary/sequence/NoDuplicates.java:79: cannot dereference the possibly-null reference OutputFormat
    if (format == OutputFormat.IOA) {
                              ^
./daikon/inv/unary/sequence/NoDuplicates.java:83: cannot dereference the possibly-null reference OutputFormat
    if (format == OutputFormat.SIMPLIFY) {
                              ^
./daikon/inv/unary/sequence/NoDuplicates.java:96: cannot dereference the possibly-null reference Level
    if (debugPrint.isLoggable(Level.FINE)) {
                                   ^
./daikon/inv/unary/sequence/NoDuplicates.java:100: cannot dereference the possibly-null reference Quantify
    /*@NonNull*/ Quantify.IOAQuantification quant = VarInfo.get_ioa_quantify (var(), var());
                         ^
./daikon/inv/unary/sequence/NoDuplicates.java:126: cannot dereference the possibly-null reference a
    for (int i=1; i<a.length; i++) {
                     ^
./daikon/inv/unary/sequence/NoDuplicates.java:129: cannot dereference the possibly-null reference InvariantStatus
          return InvariantStatus.FALSIFIED;
                                ^
./daikon/inv/unary/sequence/NoDuplicates.java:133: cannot dereference the possibly-null reference InvariantStatus
    return InvariantStatus.NO_CHANGE;
                          ^
./daikon/inv/unary/sequence/NoDuplicates.java:138: cannot dereference the possibly-null reference Level
    if (debug.isLoggable(Level.FINE) && (status == InvariantStatus.FALSIFIED)) {
                              ^
./daikon/inv/unary/sequence/NoDuplicates.java:138: cannot dereference the possibly-null reference InvariantStatus
    if (debug.isLoggable(Level.FINE) && (status == InvariantStatus.FALSIFIED)) {
                                                                  ^
./daikon/inv/unary/sequence/NoDuplicates.java:152: cannot dereference the possibly-null reference vis[0]
    if (!vis[0].aux.getFlag(VarInfoAux.HAS_DUPLICATES)) {
               ^
./daikon/inv/unary/sequence/NoDuplicates.java:152: cannot dereference the possibly-null reference VarInfoAux
    if (!vis[0].aux.getFlag(VarInfoAux.HAS_DUPLICATES)) {
                                      ^
./daikon/inv/unary/sequence/NoDuplicates.java:153: cannot dereference the possibly-null reference DiscardCode
      return new DiscardInfo(this, DiscardCode.obvious, "Obvious statically");
                                              ^
./daikon/inv/unary/sequence/NoDuplicates.java:177: cannot dereference the possibly-null reference ValueSet
    ValueSet.ValueSetScalarArray vs = (ValueSet.ValueSetScalarArray) vis[0].get_value_set();
            ^
./daikon/inv/unary/sequence/NoDuplicates.java:177: cannot dereference the possibly-null reference ValueSet
    ValueSet.ValueSetScalarArray vs = (ValueSet.ValueSetScalarArray) vis[0].get_value_set();
                                               ^
./daikon/inv/unary/sequence/NoDuplicates.java:179: cannot dereference the possibly-null reference DiscardCode
      return new DiscardInfo (this, DiscardCode.obvious, "Size of " + vis[0]
                                               ^
./daikon/inv/unary/sequence/NoDuplicates.java:186: cannot dereference the possibly-null reference ppt
    /*@Raw*/ PptTopLevel parent = ppt.parent;
                                     ^
./daikon/inv/unary/sequence/NoDuplicates.java:191: cannot dereference the possibly-null reference inv.ppt
        VarInfo v2 = inv.ppt.var_infos[0];
                            ^
./daikon/inv/unary/sequence/NoDuplicates.java:191: cannot dereference the possibly-null reference inv
        VarInfo v2 = inv.ppt.var_infos[0];
                        ^
./daikon/inv/unary/sequence/NoDuplicates.java:195: cannot dereference the possibly-null reference DiscardCode
          return new DiscardInfo(this, DiscardCode.obvious, "Invariant holds over a supersequence");
                                                  ^
./daikon/inv/unary/sequence/NoDuplicates.java:202: cannot dereference the possibly-null reference this.ppt
    PptSlice slice = this.ppt.parent.findSlice_unordered (vis);
                             ^
./daikon/inv/unary/sequence/NoDuplicates.java:202: cannot dereference the possibly-null reference this
    PptSlice slice = this.ppt.parent.findSlice_unordered (vis);
                         ^
./daikon/inv/unary/sequence/NoDuplicates.java:204: cannot dereference the possibly-null reference slice
      for (Invariant inv : slice.invs) {
                                ^
./daikon/inv/unary/sequence/NoDuplicates.java:209: cannot dereference the possibly-null reference DiscardCode
          return new DiscardInfo(this, DiscardCode.obvious, "Sequence is sorted: " + inv.format());
                                                  ^
./daikon/inv/unary/sequence/SingleFloatSequence.java:27: cannot dereference the possibly-null reference vis
    return ((vis.length == 1)
                ^
./daikon/inv/unary/sequence/SingleFloatSequence.java:28: cannot dereference the possibly-null reference vis[0]
            && vis[0].file_rep_type.baseIsFloat()
                     ^
./daikon/inv/unary/sequence/SingleFloatSequence.java:29: cannot dereference the possibly-null reference vis[0]
            && vis[0].file_rep_type.isArray());
                     ^
./daikon/inv/unary/sequence/SingleFloatSequence.java:47: cannot dereference the possibly-null reference InvariantStatus
    return InvariantStatus.NO_CHANGE;
                          ^
./daikon/inv/unary/sequence/SingleFloatSequence.java:62: cannot dereference the possibly-null reference InvariantStatus
    return InvariantStatus.NO_CHANGE;
                          ^
./daikon/inv/unary/sequence/SingleFloatSequence.java:76: cannot dereference the possibly-null reference InvariantStatus
    return InvariantStatus.NO_CHANGE;
                          ^
./daikon/inv/unary/sequence/SingleFloatSequence.java:82: cannot dereference the possibly-null reference InvariantStatus
    return InvariantStatus.NO_CHANGE;
                          ^
./daikon/inv/unary/sequence/SingleScalarSequence.java:28: cannot dereference the possibly-null reference vis
    return ((vis.length == 1)
                ^
./daikon/inv/unary/sequence/SingleScalarSequence.java:29: cannot dereference the possibly-null reference vis[0]
            && vis[0].file_rep_type.baseIsScalar()
                     ^
./daikon/inv/unary/sequence/SingleScalarSequence.java:30: cannot dereference the possibly-null reference vis[0]
            && vis[0].file_rep_type.isArray());
                     ^
./daikon/inv/unary/sequence/SingleScalarSequence.java:39: cannot dereference the possibly-null reference ppt
    return ppt.var_infos[0];
              ^
./daikon/inv/unary/sequence/SingleScalarSequence.java:54: cannot dereference the possibly-null reference InvariantStatus
      return InvariantStatus.NO_CHANGE;
                            ^
./daikon/inv/unary/sequence/SingleScalarSequence.java:69: cannot dereference the possibly-null reference InvariantStatus
      return InvariantStatus.NO_CHANGE;
                            ^
./daikon/inv/unary/sequence/SingleScalarSequence.java:88: cannot dereference the possibly-null reference InvariantStatus
    return InvariantStatus.NO_CHANGE;
                          ^
./daikon/inv/unary/sequence/SingleScalarSequence.java:95: cannot dereference the possibly-null reference InvariantStatus
    return InvariantStatus.NO_CHANGE;
                          ^
./daikon/inv/unary/sequence/EltwiseFloatGreaterThan.java:83: cannot dereference the possibly-null reference OutputFormat
    if (format == OutputFormat.DAIKON) return format_daikon();
                              ^
./daikon/inv/unary/sequence/EltwiseFloatGreaterThan.java:84: cannot dereference the possibly-null reference OutputFormat
    if (format == OutputFormat.IOA) return format_ioa();
                              ^
./daikon/inv/unary/sequence/EltwiseFloatGreaterThan.java:85: cannot dereference the possibly-null reference OutputFormat
    if (format == OutputFormat.ESCJAVA) return format_esc();
                              ^
./daikon/inv/unary/sequence/EltwiseFloatGreaterThan.java:86: cannot dereference the possibly-null reference OutputFormat
    if (format == OutputFormat.SIMPLIFY) return format_simplify();
                              ^
./daikon/inv/unary/sequence/EltwiseFloatGreaterThan.java:93: cannot dereference the possibly-null reference System
      System.out.println(repr());
            ^
./daikon/inv/unary/sequence/EltwiseFloatGreaterThan.java:101: cannot dereference the possibly-null reference Quantify
    /*@NonNull*/ Quantify.IOAQuantification quant = VarInfo.get_ioa_quantify (var(), var());
                         ^
./daikon/inv/unary/sequence/EltwiseFloatGreaterThan.java:134: cannot dereference the possibly-null reference a
    for (int i=1; i<a.length; i++) {
                     ^
./daikon/inv/unary/sequence/EltwiseFloatGreaterThan.java:135: cannot dereference the possibly-null reference Global
      if (!(Global.fuzzy.gt (a[i-1], a[i]))) {
                  ^
./daikon/inv/unary/sequence/EltwiseFloatGreaterThan.java:136: cannot dereference the possibly-null reference InvariantStatus
        return InvariantStatus.FALSIFIED;
                              ^
./daikon/inv/unary/sequence/EltwiseFloatGreaterThan.java:139: cannot dereference the possibly-null reference InvariantStatus
    return InvariantStatus.NO_CHANGE;
                          ^
./daikon/inv/unary/sequence/EltwiseFloatGreaterThan.java:185: cannot dereference the possibly-null reference ppt
    for (Invariant inv : ppt.invs) {
                            ^
./daikon/inv/unary/sequence/EltwiseFloatGreaterThan.java:216: cannot dereference the possibly-null reference ValueSet
    ValueSet.ValueSetFloatArray vs = (ValueSet.ValueSetFloatArray) ppt.var_infos[0].get_value_set();
            ^
./daikon/inv/unary/sequence/EltwiseFloatGreaterThan.java:216: cannot dereference the possibly-null reference ValueSet
    ValueSet.ValueSetFloatArray vs = (ValueSet.ValueSetFloatArray) ppt.var_infos[0].get_value_set();
                                              ^
./daikon/inv/unary/sequence/EltwiseFloatGreaterThan.java:216: cannot dereference the possibly-null reference ppt
    ValueSet.ValueSetFloatArray vs = (ValueSet.ValueSetFloatArray) ppt.var_infos[0].get_value_set();
                                                                      ^
./daikon/inv/unary/sequence/EltwiseFloatGreaterThan.java:227: cannot dereference the possibly-null reference DiscardCode
      return new DiscardInfo(this, DiscardCode.obvious,
                                              ^
./daikon/inv/unary/sequence/EltwiseFloatGreaterThan.java:233: cannot dereference the possibly-null reference DiscardCode
      return new DiscardInfo(this, DiscardCode.obvious, "The sequence contains all equal values.");
                                              ^
./daikon/inv/unary/sequence/EltwiseFloatGreaterThan.java:252: cannot dereference the possibly-null reference ppt
      for (Invariant inv : ppt.invs) {
                              ^
./daikon/inv/unary/sequence/EltwiseFloatGreaterThan.java:264: cannot dereference the possibly-null reference vis[0]
    Derivation deriv = vis[0].derived;
                             ^
./daikon/inv/unary/sequence/EltwiseFloatGreaterThan.java:271: cannot dereference the possibly-null reference ppt
        sliceToCheck = ppt.parent.findSlice(((SequenceScalarSubsequence)deriv).seqvar());
                          ^
./daikon/inv/unary/sequence/EltwiseFloatGreaterThan.java:273: cannot dereference the possibly-null reference ppt
        sliceToCheck = ppt.parent.findSlice(((SequenceFloatSubsequence)deriv).seqvar());
                          ^
./daikon/inv/unary/sequence/EltwiseFloatGreaterThan.java:276: cannot dereference the possibly-null reference sliceToCheck
        for (Invariant inv : sliceToCheck.invs) {
                                         ^
./daikon/inv/unary/sequence/EltwiseFloatGreaterThan.java:280: cannot dereference the possibly-null reference DiscardCode
            return new DiscardInfo(this, DiscardCode.obvious, discardString);
                                                    ^
./daikon/inv/unary/sequence/CommonFloatSequence.java:72: cannot dereference the possibly-null reference intersect
    for (int i=0; i<intersect.length; i++) {
                             ^
./daikon/inv/unary/sequence/CommonFloatSequence.java:74: cannot dereference the possibly-null reference intersect
      if (i!=intersect.length-1)
                      ^
./daikon/inv/unary/sequence/CommonFloatSequence.java:82: cannot dereference the possibly-null reference OutputFormat
    if (format == OutputFormat.DAIKON) return format_daikon();
                              ^
./daikon/inv/unary/sequence/CommonFloatSequence.java:83: cannot dereference the possibly-null reference OutputFormat
    if (format == OutputFormat.IOA) return format_ioa();
                              ^
./daikon/inv/unary/sequence/CommonFloatSequence.java:84: cannot dereference the possibly-null reference OutputFormat
    if (format == OutputFormat.SIMPLIFY) return format_simplify();
                              ^
./daikon/inv/unary/sequence/CommonFloatSequence.java:103: cannot dereference the possibly-null reference intersect
    if (intersect == null || intersect.length == 0) {
                                      ^
./daikon/inv/unary/sequence/CommonFloatSequence.java:108: cannot dereference the possibly-null reference OutputFormat
      return format_unimplemented(OutputFormat.SIMPLIFY);
                                              ^
./daikon/inv/unary/sequence/CommonFloatSequence.java:118: cannot dereference the possibly-null reference intersect
    for (int i=0; i<intersect.length; i++) {
                             ^
./daikon/inv/unary/sequence/CommonFloatSequence.java:136: cannot dereference the possibly-null reference intersect
      if (i == intersect.length - 1)
                        ^
./daikon/inv/unary/sequence/CommonFloatSequence.java:146: cannot dereference the possibly-null reference InvariantStatus
      return InvariantStatus.FALSIFIED;
                            ^
./daikon/inv/unary/sequence/CommonFloatSequence.java:148: cannot dereference the possibly-null reference InvariantStatus
      return InvariantStatus.NO_CHANGE;
                            ^
./daikon/inv/unary/sequence/CommonFloatSequence.java:150: cannot dereference the possibly-null reference a
      for (int i = 0; i < a.length; i++) {
                           ^
./daikon/inv/unary/sequence/CommonFloatSequence.java:151: cannot dereference the possibly-null reference Global
        if (Global.fuzzy.indexOf (intersect, a[i]) != -1) {
                  ^
./daikon/inv/unary/sequence/CommonFloatSequence.java:152: cannot dereference the possibly-null reference InvariantStatus
          return InvariantStatus.NO_CHANGE;
                                ^
./daikon/inv/unary/sequence/CommonFloatSequence.java:155: cannot dereference the possibly-null reference InvariantStatus
      return InvariantStatus.FALSIFIED;
                            ^
./daikon/inv/unary/sequence/CommonFloatSequence.java:162: cannot dereference the possibly-null reference InvariantStatus
      return InvariantStatus.FALSIFIED;
                            ^
./daikon/inv/unary/sequence/CommonFloatSequence.java:165: cannot dereference the possibly-null reference InvariantStatus
      return InvariantStatus.NO_CHANGE;
                            ^
./daikon/inv/unary/sequence/CommonFloatSequence.java:167: cannot dereference the possibly-null reference intersect
      /*@NonNull*/ double[] tmp = new double[intersect.length];
                                                      ^
./daikon/inv/unary/sequence/CommonFloatSequence.java:169: cannot dereference the possibly-null reference a
      for (int i=0; i<a.length; i++) {
                       ^
./daikon/inv/unary/sequence/CommonFloatSequence.java:172: cannot dereference the possibly-null reference Global
        int ii = Global.fuzzy.indexOf (intersect, a[i]);
                       ^
./daikon/inv/unary/sequence/CommonFloatSequence.java:174: cannot dereference the possibly-null reference Global
          (Global.fuzzy.indexOf (ArraysMDE.subarray(tmp,0,size), a[i]) == -1)) {
                 ^
./daikon/inv/unary/sequence/CommonFloatSequence.java:184: cannot dereference the possibly-null reference InvariantStatus
        return InvariantStatus.FALSIFIED;
                              ^
./daikon/inv/unary/sequence/CommonFloatSequence.java:192: cannot dereference the possibly-null reference InvariantStatus
    return InvariantStatus.NO_CHANGE;
                          ^
./daikon/inv/unary/sequence/SeqIndexIntGreaterEqual.java:45: cannot dereference the possibly-null reference var()
    Assert.assertTrue(var().rep_type == ProglangType.INT_ARRAY);
                           ^
./daikon/inv/unary/sequence/SeqIndexIntGreaterEqual.java:45: cannot dereference the possibly-null reference ProglangType
    Assert.assertTrue(var().rep_type == ProglangType.INT_ARRAY);
                                                    ^
./daikon/inv/unary/sequence/SeqIndexIntGreaterEqual.java:69: cannot dereference the possibly-null reference vis[0]
    ProglangType elt_type = vis[0].file_rep_type.elementType();
                                  ^
./daikon/inv/unary/sequence/SeqIndexIntGreaterEqual.java:76: cannot dereference the possibly-null reference seqvar
    if (seqvar.comparability != null) {
              ^
./daikon/inv/unary/sequence/SeqIndexIntGreaterEqual.java:77: cannot dereference the possibly-null reference seqvar
      elt_compar = seqvar.comparability.elementType();
                         ^
./daikon/inv/unary/sequence/SeqIndexIntGreaterEqual.java:78: cannot dereference the possibly-null reference seqvar
      index_compar = seqvar.comparability.indexType(0);
                           ^
./daikon/inv/unary/sequence/SeqIndexIntGreaterEqual.java:102: cannot dereference the possibly-null reference SeqIndexIntGreaterEqual
      /*@NonNull*/ NISuppressee suppressee = new NISuppressee (SeqIndexIntGreaterEqual.class, 1);
                                                                                      ^
./daikon/inv/unary/sequence/SeqIndexIntGreaterEqual.java:106: cannot dereference the possibly-null reference SeqIndexIntEqual
      /*@NonNull*/ NISuppressor v1_eq_v2 = new NISuppressor (0, SeqIndexIntEqual.class);
                                                                                ^
./daikon/inv/unary/sequence/SeqIndexIntGreaterEqual.java:108: cannot dereference the possibly-null reference SeqIndexIntGreaterThan
      /*@NonNull*/ NISuppressor v1_gt_v2 = new NISuppressor (0,SeqIndexIntGreaterThan.class);
                                                                                     ^
./daikon/inv/unary/sequence/SeqIndexIntGreaterEqual.java:137: cannot dereference the possibly-null reference OutputFormat
    if (format == OutputFormat.DAIKON) return format_daikon();
                              ^
./daikon/inv/unary/sequence/SeqIndexIntGreaterEqual.java:138: cannot dereference the possibly-null reference OutputFormat
    if (format == OutputFormat.IOA) return format_ioa();
                              ^
./daikon/inv/unary/sequence/SeqIndexIntGreaterEqual.java:139: cannot dereference the possibly-null reference OutputFormat
    if (format == OutputFormat.ESCJAVA) return format_esc();
                              ^
./daikon/inv/unary/sequence/SeqIndexIntGreaterEqual.java:140: cannot dereference the possibly-null reference OutputFormat
    if (format == OutputFormat.SIMPLIFY) return format_simplify();
                              ^
./daikon/inv/unary/sequence/SeqIndexIntGreaterEqual.java:160: cannot dereference the possibly-null reference Quantify
    /*@NonNull*/ Quantify.IOAQuantification quant = VarInfo.get_ioa_quantify (var());
                         ^
./daikon/inv/unary/sequence/SeqIndexIntGreaterEqual.java:186: cannot dereference the possibly-null reference a
    for (int i=0; i<a.length; i++) {
                     ^


An annotation processor threw an uncaught exception.
Consult the following stack trace for details.
java.lang.UnsupportedOperationException: conversion undefined for tree type PRIMITIVE_TYPE
	at checkers.types.TypeFromTree.defaultAction(TypeFromTree.java:30)
	at checkers.types.TypeFromTree$TypeFromExpression.defaultAction(TypeFromTree.java:47)
	at com.sun.source.util.SimpleTreeVisitor.visitPrimitiveType(SimpleTreeVisitor.java:220)
	at com.sun.tools.javac.tree.JCTree$JCPrimitiveTypeTree.accept(JCTree.java:1814)
	at com.sun.source.util.SimpleTreeVisitor.visit(SimpleTreeVisitor.java:52)
	at checkers.types.AnnotatedTypeFactory.fromTreeWithVisitor(AnnotatedTypeFactory.java:246)
	at checkers.types.AnnotatedTypeFactory.fromExpression(AnnotatedTypeFactory.java:260)
	at checkers.types.AnnotatedTypeFactory.getAnnotatedType(AnnotatedTypeFactory.java:466)
	at checkers.nonnull.NonNullVisitor.visitMemberSelect(NonNullVisitor.java:40)
	at checkers.nonnull.NonNullVisitor.visitMemberSelect(NonNullVisitor.java:21)
	at com.sun.tools.javac.tree.JCTree$JCFieldAccess.accept(JCTree.java:1673)
	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.visitAssignment(TreeScanner.java:293)
	at checkers.basetype.BaseTypeVisitor.visitAssignment(BaseTypeVisitor.java:115)
	at com.sun.tools.javac.tree.JCTree$JCAssign.accept(JCTree.java:1463)
	at com.sun.source.util.TreePathScanner.scan(TreePathScanner.java:67)
	at com.sun.source.util.TreeScanner.visitExpressionStatement(TreeScanner.java:239)
	at com.sun.tools.javac.tree.JCTree$JCExpressionStatement.accept(JCTree.java:1155)
	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.visitBlock(TreeScanner.java:159)
	at com.sun.tools.javac.tree.JCTree$JCBlock.accept(JCTree.java:781)
	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.visitIf(TreeScanner.java:233)
	at com.sun.tools.javac.tree.JCTree$JCIf.accept(JCTree.java:1130)
	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.visitBlock(TreeScanner.java:159)
	at com.sun.tools.javac.tree.JCTree$JCBlock.accept(JCTree.java:781)
	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.visitForLoop(TreeScanner.java:178)
	at com.sun.tools.javac.tree.JCTree$JCForLoop.accept(JCTree.java:876)
	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.visitBlock(TreeScanner.java:159)
	at com.sun.tools.javac.tree.JCTree$JCBlock.accept(JCTree.java:781)
	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.visitMethod(TreeScanner.java:143)
	at checkers.basetype.BaseTypeVisitor.visitMethod(BaseTypeVisitor.java:205)
	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:128)
	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:189)
	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)
manioc 29% 



More information about the checkers mailing list