第9章 分析プロパティー

FindBugs は分析する場合にいくつかの観点を持っています。そして、観点をカスタマイズして実行することができます。システムプロパティーを使って、それらのオプションを設定します。この章では、分析オプションの設定方法を説明します。

分析オプションの主な目的は、 2 つあります。1 番目は、 FindBugs に対して分析されるアプリケーションのメソッドの意味を伝えることです。そうすることで FindBugs がより正確な結果を出すことができ、誤検出を減らすことができます。2 番目に、分析を行うに当たりその精度を設定できるようにすることです。分析の精度を落とすことで、メモリ使用量と分析時間を減らすことができます。ただし、本当のバグを見逃したり、誤検出の数が増えるという代償があります。

コマンドラインオプション -property を使って、分析オプションを設定することができます。次に、例を示します:

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

設定することができる分析オプションの一覧を 表9.1「設定可能な分析プロパティー」 に示します。

表9.1 設定可能な分析プロパティー

プロパティー名設定値目的
findbugs.assertionmethodsコンマ区切りの完全修飾メソッド名リスト : 例、 "com.foo.MyClass.checkAssertion"このプロパティーには、プログラムが正しいことをチェックするために使われるメソッドを指定します。これらのメソッドを指定することで、 チェックメソッドで確認した値に対する null 参照アクセスディテクタの誤検出を回避できます。
findbugs.de.commenttrue または falsetrue に設定すると、 DroppedException (無視された例外) ディテクタは空の catch ブロック にコメントが無いか探します。そして、コメントがみつかった場合には警告が報告されません。
findbugs.maskedfields.localstrue または falsetrue に設定すると、フィールドを隠蔽しているローカル変数に対して優先度(低)の警告が発行されます。デフォルトは、 false です。
findbugs.nullderef.assumensptrue または false使用されません。 (意図 : true に設定すると、null 参照アクセスディテクタはメソッドからの戻り値、または、メソッドに受け渡される引数を null であると仮定します。デフォルトは、 false です。このプロパティーを有効にすると、大量の誤検出が生成されるであろうことに注意してください。)
findbugs.refcomp.reportAlltrue または falsetrue に設定すると、 == および != 演算子を使っている疑わしい参照比較がすべて報告されます。 false に設定すると、同様の警告は 1 メソッドにつき 1 つしか発行されません。デフォルトは、 false です。
findbugs.sf.commenttrue または falsetrue に設定すると、 SwitchFallthrough ディテクタはソースコードに「fall」または「nobreak」という単語を含んだコメントを記載していない caseラベル に限り警告を報告します。(この機能が正しく動作するためには、正確なソースパスが必要です。) これにより、意図的ではない switch 文の fallthrough を発見し易くなります。