解析プロパティ

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 文のフォールスルーを見つけられます。