langtools/make/tools/crules/CodingRulesAnalyzerPlugin.java
changeset 26266 2d24bda701dc
parent 25848 3bc09f4676a9
child 36526 3b41f1c69604
equal deleted inserted replaced
26265:46aacfffd3b5 26266:2d24bda701dc
    39 import com.sun.source.util.TaskListener;
    39 import com.sun.source.util.TaskListener;
    40 import com.sun.source.util.Trees;
    40 import com.sun.source.util.Trees;
    41 import com.sun.tools.javac.api.BasicJavacTask;
    41 import com.sun.tools.javac.api.BasicJavacTask;
    42 import com.sun.tools.javac.tree.JCTree;
    42 import com.sun.tools.javac.tree.JCTree;
    43 import com.sun.tools.javac.util.Context;
    43 import com.sun.tools.javac.util.Context;
       
    44 import com.sun.tools.javac.util.DefinedBy;
       
    45 import com.sun.tools.javac.util.DefinedBy.Api;
    44 import com.sun.tools.javac.util.Log;
    46 import com.sun.tools.javac.util.Log;
    45 
    47 
    46 public class CodingRulesAnalyzerPlugin implements Plugin {
    48 public class CodingRulesAnalyzerPlugin implements Plugin {
    47 
    49 
    48     protected Log log;
    50     protected Log log;
    49     protected Trees trees;
    51     protected Trees trees;
    50 
    52 
       
    53     @DefinedBy(Api.COMPILER_TREE)
    51     public void init(JavacTask task, String... args) {
    54     public void init(JavacTask task, String... args) {
    52         BasicJavacTask impl = (BasicJavacTask)task;
    55         BasicJavacTask impl = (BasicJavacTask)task;
    53         Context context = impl.getContext();
    56         Context context = impl.getContext();
    54         log = Log.instance(context);
    57         log = Log.instance(context);
    55         trees = Trees.instance(task);
    58         trees = Trees.instance(task);
    56         task.addTaskListener(new PostAnalyzeTaskListener(
    59         task.addTaskListener(new PostAnalyzeTaskListener(
    57                 new MutableFieldsAnalyzer(task),
    60                 new MutableFieldsAnalyzer(task),
    58                 new AssertCheckAnalyzer(task)
    61                 new AssertCheckAnalyzer(task),
       
    62                 new DefinedByAnalyzer(task)
    59         ));
    63         ));
    60     }
    64     }
    61 
    65 
    62     public class PostAnalyzeTaskListener implements TaskListener {
    66     public class PostAnalyzeTaskListener implements TaskListener {
    63         private final Map<Kind, List<AbstractCodingRulesAnalyzer>> analyzers = new HashMap<>();
    67         private final Map<Kind, List<AbstractCodingRulesAnalyzer>> analyzers = new HashMap<>();
    72 
    76 
    73                 currentAnalyzers.add(analyzer);
    77                 currentAnalyzers.add(analyzer);
    74             }
    78             }
    75         }
    79         }
    76 
    80 
    77         @Override
    81         @Override @DefinedBy(Api.COMPILER_TREE)
    78         public void started(TaskEvent taskEvent) {}
    82         public void started(TaskEvent taskEvent) {}
    79 
    83 
    80         @Override
    84         @Override @DefinedBy(Api.COMPILER_TREE)
    81         public void finished(TaskEvent taskEvent) {
    85         public void finished(TaskEvent taskEvent) {
    82             List<AbstractCodingRulesAnalyzer> currentAnalyzers = this.analyzers.get(taskEvent.getKind());
    86             List<AbstractCodingRulesAnalyzer> currentAnalyzers = this.analyzers.get(taskEvent.getKind());
    83 
    87 
    84             if (currentAnalyzers != null) {
    88             if (currentAnalyzers != null) {
    85                 TypeElement typeElem = taskEvent.getTypeElement();
    89                 TypeElement typeElem = taskEvent.getTypeElement();
    97                 }
   101                 }
    98             }
   102             }
    99         }
   103         }
   100     }
   104     }
   101 
   105 
   102     @Override
   106     @Override @DefinedBy(Api.COMPILER_TREE)
   103     public String getName() {
   107     public String getName() {
   104         return "coding_rules";
   108         return "coding_rules";
   105     }
   109     }
   106 
   110 
   107 }
   111 }