私は最近、FindBugs の注釈を発見しまし@edu.umd.cs.findbugs.annotations.SuppressWarnings
た。これは非常にクールで、基本的に FindBugs に特定の警告を無視するように指示することができます。
slf4j-simple
独自のロガーおよびロガー ファクトリ バインディングで取得および変更するという推奨事項に従って、独自の SLF4J バインディングを正常に実装しました。
StaticLoggerBinder
この SLF4J バインディングを含むパッケージで find bugs を実行したところ、元の作成者 (Ceki Gulku)によって記述された特定のコード行について不平を言っています。
// to avoid constant folding by the compiler, this field must *not* be final.
publicstatic String REQUESTED_API_VERSION = "1.6"; // !final
FindBugs は、このフィールドは「最終的なものではありませんが、最終的なものであるべきです」と不平を言っています。しかし、SLF4J の (非常に) 賢い人々はすでにそれを考えており、上記の周囲のコメントを配置しました。
そこで、FindBugs を黙らせるために、FB 警告を抑制する通常の方法でコードを修正しました。
@edu.umd.cs.findbugs.annotations.SuppressWarnings("MS_SHOULD_BE_FINAL")
public static String REQUESTED_API_VERSION = "1.6";
プロジェクトをクリーンアップして FindBugs を再実行すると、同じコード行で2 回目の警告が表示されます。
このフィールドは読み取られません。フィールドは public または protected であるため、分析の一部として認識されないクラスで使用することを意図している可能性があります。そうでない場合は、クラスから削除することを検討してください。
この 2 番目の警告抑制を追加すると、次のようになります。
@edu.umd.cs.findbugs.annotations.SuppressWarnings("MS_SHOULD_BE_FINAL")
@edu.umd.cs.findbugs.annotations.SuppressWarnings("URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
public static String REQUESTED_API_VERSION = "1.6";
Eclipse からコンパイラ/構文エラーが発生します。
アノテーション @SuppressWarnings が重複しています。
同じコード行で複数の FindBugs 警告を抑制するにはどうすればよいですか?