我们的应用程序中有大约80个罐子。所有都是在ant。中使用javac task和jar任务创建的。
我想介绍一下findbug检查。一种选择是创建单个findbug check ant项目。这包含所有jar,其中定义了所有源路径。这工作 - 需要很多空间。分析结果也不太直接。有数以千计的警告开始。
我正在考虑的一个选项是在javac task ant上运行带有特殊监听器的ant,提取源和类位置,使用源和类文件信息调用findbug任务。任何其他方式将findbug引入大型项目。
答案 0 :(得分:0)
调整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());
}
}
..