Это половина ответа:
В этом классе объявлено неиспользуемое поле. FindBugs использует статический анализ байтового кода для поиска ошибок; К сожалению, формат байтового кода не хранит номера строк для полей класса или члена, поэтому FindBugs не может на самом деле сообщить номер строки. Должен быть какой-то переключатель, который позволит ему выводить более полезную информацию (то есть имя поля), но я понятия не имею.
В качестве альтернативы вы можете попробовать PMD , который намного шумнее, но на самом деле анализирует исходный код и также интегрируется с Hudson .
Еще немного покопался, и похоже, что это, вероятно, ошибка в инспекторе для этого шаблона ошибок. Предполагая, что ваш прогон FindBugs сконфигурирован с n подходящим исходным каталогом (то есть с использованием -sourcepath
), большинство найденных ошибок должно иметь номера строк, связанные с ними. Чтобы проверить это, откройте выведенный отчет. Вы должны увидеть элементы, подобные следующим:
<!-- skipping a bit -->
<BugInstance type="...">
<Class classname="com.example.MyClass">
<!-- ... -->
</Class>
<!-- ... -->
<SourceLine classname="com.example.MyClass" start="5" end="5" sourcefile="MyClass.java"/>
</BugInstance>
Ключом является <SourceLine classname="..."/>
, который сообщает номер строки, на которой была обнаружена ошибка. Для многих других проверок, включая проверки непрочитанных полей и нескольких других случаев, когда в байтовом коде нет номеров строк, эта строка заполняется правильно, но не для UUF_UNUSED_FIELD
. Следовательно, плагин Hudson делает разумную вещь и сообщает о line = -1
.
Тем не менее, плагин Eclipse, который имеет доступ к богатым метаданным Eclipse об исходном коде, может находить поле по соответствию имени поля, следовательно, он, похоже, работает в Eclipse (если вы удаляете рассматриваемое поле в Eclipse вы должны увидеть ошибку, отображаемую в первой строке файла, другие ошибки отображаются в номере строки, указанном в отчете XML).
Нет исправлений, но, надеюсь, это прояснит, что происходит.