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(); |