Могу ли я сказать findbugs игнорировать классы, которые я не могу добавить? - PullRequest
13 голосов
/ 30 июля 2010

Findbugs сообщает об этом:

findbugs:
 [findbugs] Executing findbugs from ant task
 [findbugs] Running FindBugs...
 [findbugs] The following classes needed for analysis were missing:
 [findbugs]   com.company.OptionalClass
 [findbugs] Warnings generated: 11
 [findbugs] Missing classes: 2
 [findbugs] Calculating exit code...
 [findbugs] Setting 'missing class' flag (2)
 [findbugs] Setting 'bugs found' flag (1)
 [findbugs] Exit code set to: 3
 [findbugs] Java Result: 3
 [findbugs] Classes needed for analysis were missing
 [findbugs] Output saved to findbugs.xml
BUILD SUCCESSFUL

На этот OptionalClass ссылаются из стороннего jar, для которого у меня нет исходного кода и для которого я не хочу анализ findbugs. Это относится к классу, которого у меня нет ни в моем классе, ни где-либо еще. Этот класс, вероятно, используется в определенных случаях, когда наш сторонний jar настроен определенным образом.

Есть ли способ указать findbugs игнорировать этот класс?

Обратите внимание, что он завершает анализ и создает отчет findbugs.xml, так что это незначительная проблема.

Ответы [ 3 ]

6 голосов
/ 30 сентября 2010

Это сообщение появляется, потому что где-то в ваших двоичных классах вы ссылаетесь на этот класс. Это не обязательно означает, что FindBugs пытался проанализировать com.company.OptionalClass, чтобы сообщить об этом; скорее, FindBugs скорее проанализировал его, чтобы получить больше информации о классе, который на него ссылается.

Рассмотрим часть вашего исходного кода, который вы хотите проанализировать:

package my.actual.codebase;
import com.some.third.party.stuff.OptionalClass;

class ReferencesOptionalClass extends OptionalClass {}

Этот тип примера является общим для тестовых классов, которые ссылаются, например, на org.junit.@Test но банка JUnit не включена в то, что вы хотите проанализировать.

В приведенном выше примере вы хотите получить результаты для ReferenceOptionalClass, но чтобы получить их, некоторые части FindBugs должны посмотреть на OptionalClass. Если он не может этого сделать, потому что его там нет, он сообщает, что класс отсутствует [1]. Когда FindBugs не может найти этот класс, он, как правило, просто прерывает определенный вид анализа, который пытался выполнить, и продолжает анализ без проблем.

Простой ответ: если вас устраивает уровень анализа, который вам предоставляет FindBugs, просто игнорируйте ошибку.

[1] Обратите внимание, что вполне вероятно, что это может быть даже транзитивная ссылка, т. Е. Ваш код содержит класс A, который ссылается на B во вспомогательном JAR, который затем ссылается на OptionalClass.

1 голос
/ 13 ноября 2012

Чтобы игнорировать сторонние классы, укажите параметр -auxclasspath classpath при использовании командной строки или укажите вложенный элемент <auxClasspath refid="classpath"> при использовании задачи ant , где ваш сторонний jar находится в classpath.

1 голос
/ 30 июля 2010

Нет, но вам не нужен источник или генерировать отчеты findbugs для этого кода, если вы добавляете jar в раздел «вспомогательные jars» файла проекта findbugs.

...