Могу ли я сказать findbugs игнорировать классы, которые я не могу добавить?

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

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

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

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

Ответ 1

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

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

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

class ReferencesOptionalClass extends OptionalClass {}

Этот пример типичен для тестовых классов, эта ссылка, например. [email protected], но банку JUnit не входит в то, что вы хотите проанализировать.

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

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

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

Ответ 2

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

Ответ 3

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