15

Findbugsはこれを報告します:

findbugs:
 [findbugs] Executing findbugs from ant task
 [findbugs] Running FindBugs...
 [findbugs] The following classes needed for analysis were missing:
 [findbugs]   com.company.OptionalClass
 [findbugs] Warnings generated: 11
 [findbugs] Missing classes: 2
 [findbugs] Calculating exit code...
 [findbugs] Setting 'missing class' flag (2)
 [findbugs] Setting 'bugs found' flag (1)
 [findbugs] Exit code set to: 3
 [findbugs] Java Result: 3
 [findbugs] Classes needed for analysis were missing
 [findbugs] Output saved to findbugs.xml
BUILD SUCCESSFUL

このOptionalClassは、ソースコードがなく、findbugs分析が必要ないサードパーティのjarから参照されています。これは、クラスパスやその他の場所にないクラスを指します。このクラスは、サードパーティのjarが特定の方法で構成されている場合に、おそらく使用されます。

このクラスを無視するようにfindbugsに指示する方法はありますか?

分析が完了してfindbugs.xmlレポートが作成されるため、これは小さな問題であることに注意してください。

4

3 に答える 3

7

このメッセージは、バイナリクラスのどこかでそのクラスを参照しているために表示されます。それは必ずしもFindBugsがcom.company.OptionalClassそれについて報告するために分析しようとしていたことを意味するわけではありません。むしろ、FindBugsがそれを分析して、それを参照するクラスに関するより多くの情報を取得していた可能性が高いです。

分析したいソースコードのいくつかを考えてみましょう。

package my.actual.codebase;
import com.some.third.party.stuff.OptionalClass;

class ReferencesOptionalClass extends OptionalClass {}

この種の例は、たとえば参照するテストクラスで一般的ですorg.junit.@Testが、JUnitjarは分析する対象に含まれていません。

上記の例では、の結果が必要ですReferenceOptionalClassが、結果を取得するには、FindBugsの一部でを確認する必要がありますOptionalClass。それができない場合は、そこにないため、クラスが欠落していると報告されます[1]。FindBugsがそのクラスを見つけることができない場合、通常、実行しようとしていた特定の種類の分析を中止し、残りの分析を問題なく続行します。

簡単な答えは、FindBugsが提供する分析のレベルに満足している場合は、エラーを無視することです。

[1]これは推移的な参照である可能性もあることに注意してください。つまり、コードにクラスAが含まれ、補助JARのBを参照し、次にOptionalClassを参照します。

于 2010-09-30T11:42:25.513 に答える
1

いいえ。ただし、findbugsプロジェクトファイルの「auxillaryjars」セクションにjarを追加する場合は、このコードのソースまたはfindbugsレポートを生成する必要はありません。

于 2010-07-30T18:42:35.527 に答える
1

サードパーティのクラスを無視するには、コマンドラインを使用するときにオプションを指定するか、 antタスクを使用するときに-auxclasspath classpathネストされた要素を指定します。サードパーティのjarはにあり ます。 <auxClasspath refid="classpath">classpath

于 2012-11-13T15:17:55.850 に答える