特定のフィールドまたはローカル変数に対するFindBugsの警告を抑制したいと思います。FindBugsは、注釈として、、、、、、を使用できることを文書化しています[ Target
1 Type
] 。ただし、フィールドに注釈を付けることはできません。メソッドに注釈を付ける場合にのみ、警告が抑制されます。Field
Method
Parameter
Constructor
Package
edu.umd.cs.findbugs.annotations.SuppressWarning
メソッド全体に注釈を付けることは、私には広いように思えます。特定のフィールドの警告を抑制する方法はありますか?別の関連する質問[2]がありますが、答えはありません。
[1] http://findbugs.sourceforge.net/manual/annotations.html
デモコード:
public class SyncOnBoxed
{
static int counter = 0;
// The following SuppressWarnings does NOT prevent the FindBugs warning
@edu.umd.cs.findbugs.annotations.SuppressWarnings(value="DL_SYNCHRONIZATION_ON_BOXED_PRIMITIVE")
final static Long expiringLock = new Long(System.currentTimeMillis() + 10);
public static void main(String[] args) {
while (increment(expiringLock)) {
System.out.println(counter);
}
}
// The following SuppressWarnings prevents the FindBugs warning
@edu.umd.cs.findbugs.annotations.SuppressWarnings(value="DL_SYNCHRONIZATION_ON_BOXED_PRIMITIVE")
protected static boolean increment(Long expiringLock)
{
synchronized (expiringLock) { // <<< FindBugs warning is here: Synchronization on Long in SyncOnBoxed.increment()
counter++;
}
return expiringLock > System.currentTimeMillis(); // return false when lock is expired
}
}