Могу ли я сказать 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
.