2010-09-20 46 views
6

我有一个混合的scala/java项目 - 主要是java。我想在我的java代码上使用Findbugs,但scala类给了它麻烦。所以我想从Findbugs中排除它们。到目前为止,我已经尝试在排除过滤器中列出scala类,但这没有帮助。我正在使用maven codehaus findbugs插件版本2.3.1。从findbugs隐藏非java类

例外我得到大多采取这种形式:

 
Exception analyzing some.scala.Class using detector edu.umd.cs.findbugs.detect.FindUnrelatedTypesInGenericContainer 
    java.lang.NullPointerException 
    At edu.umd.cs.findbugs.classfile.engine.ClassParserUsingASM$1$2.visitEnd(ClassParserUsingASM.java:319) 
    At org.objectweb.asm.ClassReader.accept(Unknown Source) 
    At edu.umd.cs.findbugs.asm.FBClassReader.accept(FBClassReader.java:44) 
    At org.objectweb.asm.ClassReader.accept(Unknown Source) 
    At edu.umd.cs.findbugs.classfile.engine.ClassParserUsingASM.parse(ClassParserUsingASM.java:93) 
    At edu.umd.cs.findbugs.classfile.engine.ClassParserUsingASM.parse(ClassParserUsingASM.java:414) 
    At edu.umd.cs.findbugs.classfile.engine.ClassInfoAnalysisEngine.analyze(ClassInfoAnalysisEngine.java:65) 
    At edu.umd.cs.findbugs.classfile.engine.ClassInfoAnalysisEngine.analyze(ClassInfoAnalysisEngine.java:39) 
    At edu.umd.cs.findbugs.classfile.impl.AnalysisCache.getClassAnalysis(AnalysisCache.java:214) 
    At edu.umd.cs.findbugs.ba.XFactory.getXClass(XFactory.java:581) 
    At edu.umd.cs.findbugs.ba.AnalysisCacheToAnalysisContextAdapter.setAppClassList(AnalysisCacheToAnalysisContextAdapter.java:319) 
    At edu.umd.cs.findbugs.FindBugs2.createAnalysisContext(FindBugs2.java:785) 
    At edu.umd.cs.findbugs.FindBugs2.execute(FindBugs2.java:187) 
    At edu.umd.cs.findbugs.FindBugs.runMain(FindBugs.java:348) 
    At edu.umd.cs.findbugs.FindBugs2.main(FindBugs2.java:1057) 
+0

您是否已经分离了您的源代码目录?/src/main/java和src/main/scala – crowne 2010-09-20 19:42:05

+3

Findbugs在.class文件上运行,而不是源文件。 – 2010-09-20 19:44:08

+0

问题是findbugs在分析由scalac生成的* .class文件时创建了1000个NPE。 – 2011-01-11 10:52:56

回答

3

不是一个真正的解决办法,但FindBugs的工作应该斯卡拉生成的类文件一样,所以我建议报告这些错误的FindBugs团队。当然,在大多数情况下,FindBugs的分析对于Scala类可能不是很有帮助(因为编译器很强大),但至少FindBugs不应该崩溃。我希望FindBugs迟早会扩展到给予Scala类特殊待遇(但是如果没有人抱怨,这不会发生:-)

+1

确实,这个bug已经在findbugs trunk中修复了:http://code.google.com/p/findbugs/source/detail?r=12121我不确定是否有办法让findbugs maven插件使用尽管findbugs的主干构建。 – 2010-09-21 13:47:00

+0

@Geoff Reedy谢谢!我必须自己将这个修补程序应用于1.3.9代码,但它似乎让findbugs感到高兴。希望findbugs 2.0即将推出。 – sblundy 2010-09-24 12:54:08