2010-09-20 82 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