敢えて規約を破るケース(FindBugsの警告抑制)
の情報も探してみた。が、こちらは結構難しい。
Checkstyleは、*.javaを解析してチェックします。なので、コメントに反応できる。しかしFindBugsはコンパイル後の *.class がチェック対象です。なのでコメントでFindBugsを制御することはできません。
従って、FindBugsではアノテーションによる警告抑制手段を用意しているようです。
@edu.umd.cs.findbugs.annotations.SuppressWarnings( value="EQ_COMPARETO_USE_OBJECT_EQUALS", justification="because I know better")
justification要素で「この抑制が正当である理由」を記述できるのが++ですね。
ただ、java.lang.SuppressWarnings と単純名がカブっているので、完全修飾名で書くことが奨められているようです。
しかし、ここで気になるのがライセンス。FindBugsはLGPLで配布されるオープンソースプロダクトです。自分で書いたコードをFindBugsで「調査する」だけであれば、このコードはFindBugsに依存することはないので、LGPLによる制約は受けません。
しかし、FindBugsによって定義されたアノテーションをコード内に書く(依存する、つまりFindBugsがなければコンパイルできない)となると話は違ってくるのではないだろうか。
と思って使用に踏み切れない。