解析プロパティ

SpotBugs は,実行する解析の観点をカスタマイズできます。システムプロパティがオプションを設定するために使用されます。この章では,設定可能な解析オプションについて説明します。

解析オプションには主に2つの目的があります。1つ目は,SpotBugs にアプリケーションのメソッドの意味を通知し,より正確な結果を生成したり,誤検出を少なくしたりできます。2つ目は,実行される解析の精度を設定できます。解析の精度を下げると,メモリと解析時間を節約できますが,本当のバグを見逃したり,より多くの誤検出を作り出したりします。

解析オプションは,-property コマンドラインオプションを使用して設定します。たとえば:

$ spotbugs -textui -property "cfg.noprune=true" myApp.jar

設定できる解析プロパティのリストを次の表に示します。

プロパティ名

意味

findbugs.assertionmethods

コンマ区切りの完全就職メソッド名のリスト (例,「com.foo.MyClass.checkAssertion」)

このプロパティは,プログラムのアサーションをチェックするために使用されるメソッドの名前を指定します。これらのメソッドを指定すると,null 間接参照バグディテクタは,アサーションメソッドによってチェックされる値に対する誤検出を回避できます。

findbugs.de.comment

true または false

true のときは,DroppedException ディテクタは空のキャッチブロックにコメントがないかスキャンし,見つかったときは警告を報告しません。

findbugs.maskedfields.locals

true または false

true のときは,フィールドを隠蔽するローカル変数に対する優先度の低い警告を発行します。デフォルトは false です。

findbugs.nullderef.assumensp

true または false

使わないでください (意図: trueのときは,null 間接参照ディテクタはメソッドから返された,またはメソッドに渡されたパラメータの参照値が null であるとみなします。デフォルトは false です。このプロパティを有効にすると,多数の誤った警告が生成されることに注意してください。)

findbugs.refcomp.reportAll

true または false

true のときは,== と != 演算子を使用している疑わしい参照比較がすべて報告されます。false のときは,メソッドごとに警告が1つだけ発行されます。デフォルトは false です。

findbugs.sf.comment

true または false

true のときは,SwitchFallthrough ディテクタは,ソースコードに「fall」または「nobreak」という単語がコメントに含まれていないときに警告を報告します。(この機能を正しく動作させるためには,正確なソースパスを使用する必要があります。) これにより,意図的ではない switch 文のフォールスルーを見つけられます。