212

PMD では、特定の警告を無視したい場合、// NOPMDその行を無視するために使用できます。

FindBugs に似たようなものはありますか?

4

7 に答える 7

334

FindBugs の最初のアプローチには、フィルターとも呼ばれる XML 構成ファイルが含まれます。これは PMD ソリューションほど便利ではありませんが、FindBugs はソース コードではなくバイトコードで機能するため、コメントは明らかにオプションではありません。例:

<Match>
   <Class name="com.mycompany.Foo" />
   <Method name="bar" />
   <Bug pattern="DLS_DEAD_STORE_OF_CLASS_LITERAL" />
</Match>

ただし、この問題を解決するために、FindBugs は後に、クラスまたはメソッド レベルで使用できるアノテーション(参考文献を参照)に基づく別のソリューションを導入しましSuppressFBWarningsた (私の意見では、XML よりも便利です)。例(おそらく最良のものではないかもしれませんが、まあ、それは単なる例です):

@edu.umd.cs.findbugs.annotations.SuppressFBWarnings(
    value="HE_EQUALS_USE_HASHCODE", 
    justification="I know what I'm doing")

FindBugs 3.0.0SuppressWarnings@SuppressFBWarnings、Java のSuppressWarnings.

于 2009-12-02T00:34:33.163 に答える
17

XML フィルターのより完全な例を次に示します (上記の例はスニペットを表示するだけで、<FindBugsFilter>開始タグと終了タグがないため、それ自体では機能しません)。

<FindBugsFilter>
    <Match>
        <Class name="com.mycompany.foo" />
        <Method name="bar" />
        <Bug pattern="NP_BOOLEAN_RETURN_NULL" />
    </Match>
</FindBugsFilter>

Android Studio FindBugs プラグインを使用している場合は、[File] -> [Other Settings] -> [Default Settings] -> [Other Settings] -> [FindBugs-IDEA] -> [Filter] -> [Exclude filter files] -> [Add] を使用して、XML フィルタ ファイルを参照します。

于 2014-06-02T15:56:52.580 に答える
15

Gradle の更新

dependencies {
    compile group: 'findbugs', name: 'findbugs', version: '1.0.0'
}

FindBugs レポートを見つける

file:///Users/your_user/IdeaProjects/projectname/build/reports/findbugs/main.html

特定のメッセージを見つける

バグを見つける

正しいバージョンの注釈をインポートする

import edu.umd.cs.findbugs.annotations.SuppressWarnings;

問題のあるコードのすぐ上に注釈を追加します

@SuppressWarnings("OUT_OF_RANGE_ARRAY_INDEX")

詳細については、こちらを参照してください: findbugs Spring Annotation

于 2016-08-17T06:22:16.783 に答える
-8

これをここに残します:https://stackoverflow.com/a/14509697/1356953

java.lang.SuppressWarningsこれは で機能するため、別の注釈を使用する必要がないことに注意してください。

フィールドの @SuppressWarnings は、そのフィールドに関連付けられたすべての警告ではなく、そのフィールド宣言に対して報告された findbugs 警告のみを抑制します。

たとえば、これは「フィールドのみが null に設定されている」という警告を抑制します。

@SuppressWarnings("UWF_NULL_FIELD") 文字列 s = null; あなたができる最善のことは、警告のあるコードを可能な限り最小のメソッドに分離し、メソッド全体で警告を抑制することだと思います。

于 2016-02-04T14:43:43.410 に答える