Я хотел бы подавить предупреждения FindBugs для определенных полей или локальных переменных. FindBugs документирует, что целью может быть тип, поле, метод, параметр, конструктор, пакет для его аннотации edu.umd.cs.findbugs.annotations.SuppressWarning [1]. Но у меня не получается аннотировать поле, только когда я аннотирую метод, предупреждение подавляется.
Мне кажется, что аннотирование всего метода - это слишком много. Есть ли способ подавить предупреждения в определенных полях? Есть еще один связанный с этим вопрос [2], но нет ответа.
[1] http://findbugs.sourceforge.net/manual/annotations.html
[2] Отключить предупреждения FindBugs в Eclipse
Демо-код:
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
}
}
@SuppressWarnings
был устаревшим и заменен с@SuppressFBWarnings
. 31.10.2014java.lang.SuppressWarnings
. Мне не удалось найти проверенный источник, чтобы объяснить, почему. 04.02.2016java.lang.SuppressWarnings
не может работать. Он сохраняет исходный код, поэтому он не виден для поиска ошибок. 22.03.2016