小编典典

如何为特定任务创建蚂蚁监听器

java

我们的应用程序中有大约80个罐子。所有这些都是使用ant中的javac任务和jar任务创建的。

我想介绍一下findbug检查。一种选择是创建单个findbug check ant项目。它具有所有jars,其中定义了所有源路径。这可行-
需要大量空间。分析结果也不是很直接。首先有成千上万的警告。

我正在考虑的一种选择是在javac任务ant上使用特殊的侦听器运行ant,提取源和类的位置,并使用源和类文件信息调用findbug任务。任何其他方式都可以将findbug引入大型项目。


阅读 286

收藏
2020-11-30

共1个答案

小编典典

调整了taskFinished()…适合我的用法。

public class JavacListener implements BuildListener

     public void taskFinished(BuildEvent be) {

            if ( be.getTask() instanceof UnknownElement ) {
                UnknownElement ue= (UnknownElement) be.getTask();
                ue.maybeConfigure();

                if ( ue.getTask() instanceof Javac ) {
                Javac task = (Javac)ue.getTask();
                    final Path sourcepath = task.getSrcdir();
                    FindBugsTask fbtask = new FindBugsTask();
                    System.out.println ("Trying FindBugs");
                    fbtask.setSourcePath(sourcepath);
                    fbtask.setAuxClasspath(task.getClasspath());
                    Path destPath = new Path( task.getProject() );
                    destPath.setPath(task.getDestdir().getAbsolutePath());
                    fbtask.setAuxAnalyzepath(destPath);
                    fbtask.setOutputFile(getFileName(task.getProject()));
                    fbtask.setProject(task.getProject());

                    fbtask.setHome(new File("C:\\apps\\findbugs-1.3.0"));
                    fbtask.execute();
                }

            } else {
                System.out.println(be.getTask().getClass().getName());
                System.out.println(be.getTask().getTaskName());
            }
        }
..
2020-11-30