3

Findbugs を使用して、以下の空の catch ブロックを検出したいと考えています。

これに対するデフォルトの Findbugs チェッカーはありますか?

をみつけられない ....

} catch (RemoteException re) {
    /* ignore */
} catch (Settings.SettingNotFoundException e) {
    ;
} catch (Exception e) {
}

カスタム チェッカーを作成する必要がある場合、どのようにすればよいですか?

そのためのガイドをいくつかいただけませんか?

4

4 に答える 4

1

Java バイト コードには問題があり、catch ブロックの最後を常に確認できるとは限らないため、通常、FindBugs でこのテストを 100% 実行することはできません。

たとえば、try ブロックからの唯一の出口が return ステートメントであり、その後に catch ブロックまたは finally ブロックがない場合です。

于 2017-01-12T22:53:59.943 に答える
1

空の catch ブロックを作成しても警告が表示されないため、FindBugs にはこれに対する組み込みのチェック機能はないと思います。ただし、Checkstyleには、EmptyBlockブロックのすべてのタイプに個別に適用できるチェックがあります: trycatchifelseなど。

于 2013-09-04T19:01:21.360 に答える
0

名前が示すように、"FindBugs" は、SQL インジェクションを引き起こす可能性のあるコード行があるかどうかなど、ソース コード内のバグのみを探します。ベスト プラクティスは考慮されていません。CheckStyle は、空の catch ブロックを識別したり、例外をスローせずにキャッチしたりするのに最適な API です。

于 2017-05-05T14:40:47.113 に答える
0

FindBugs には、このためのディテクタの実装がありません。プロジェクトを右クリックし、[プロパティ] -> [Findbugs] -> [ディテクタの設定] を選択すると、Findbugs が持つディテクタを確認できます。

しかし、このバグを検出する検出器を自分で作成することもできます。または、CodePro Analysis、PMD などの他のツールを使用することもできます。

于 2013-09-13T12:46:48.657 に答える