Взаимосвязь ранга ошибки FindBugs, категории и типа

Я использую FindBug и хочу понять созданный им отчет .XML для целей документации.

Образец, который я получил, ниже.

<BugInstance type="RANGE_ARRAY_INDEX" priority="2" rank="7" abbrev="RANGE" category="CORRECTNESS" first="1">

Таким образом, похоже, что тип RANGE_ARRAY_INDEX категории CORRECTNESS имеет ранг 7, поэтому он scary. Так всегда ли верно? Всегда ли RANGE_ARRAY_INDEX соответствует scary?

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

Я ссылался на описания ошибок FindBugs и сайт FindBugs 2 и это ТАКОЙ вопрос, на который нет четкого ответа

Как кажется, у нас есть несколько категорий,

  1. Плохая практика
  2. Правильность
  3. Экспериментальный
  4. Интернационализация
  5. Уязвимость вредоносного кода
  6. Многопоточная корректность
  7. Представление
  8. Безопасность
  9. Хитрый код

И

  • Самый страшный (1-4),
  • Страшно (5-9),
  • Тревожный (10-14)
  • Вызывает озабоченность (ранг 15-20)

И у нас есть много типов, как это в документе.

Может ли кто-нибудь помочь мне в этом?


person prime    schedule 18.09.2017    source источник


Ответы (1)


Существует ответ Дэвида Харкнесса, который довольно хорошо объясняет это, частично цитируемый ниже. Я также проверил код SpotBugs. SpotBugs является преемником FindBugs. Короче:

  • Тип — это просто имя найденного шаблона ошибки.
  • Категория. Категория предназначена для группировки шаблонов ошибок, жестко запрограммированных в FindBugs. Например, RANGE_ARRAY_INDEX всегда будет подпадать под категорию CORRECTNESS (об этом сообщает детектор DumbMethods).
  • Рейтинг. Ранг является результатом сложных расчетов, может варьироваться и указывает на серьезность обнаруженной ошибки. Он варьируется от 20 (самый низкий) до 1 (самый высокий), а пользовательский интерфейс группирует значения в четыре категории: scariest, scary, troubling и of concern. (Harkness). Таким образом, определенное исключение NullPointerException может получить 1, а потенциальное улучшение производительности может просто получить 12.
  • Приоритет — расчетное значение, которое может меняться. Он указывает на уверенность в том, что найденная ошибка на самом деле является ошибкой. FindBugs использует эвристику, которая может пойти не так. Он варьируется от 1 (самая высокая достоверность) до 5 (самая низкая достоверность, которую следует игнорировать). Уже давно приоритет был переименован в уверенность, чтобы сделать это более понятным. XML по-прежнему говорит priority из соображений совместимости.
person barfuin    schedule 19.09.2017
comment
Спасибо за ответ. So, a certain NullPointerException might get a 1, and a potential performance improvement might just get a 12. Еще у тех есть mights. Разве NullPointerException не всегда получает ранг 1? Если нет, то каковы критерии расчета рейтинга. - person prime; 20.09.2017
comment
Да, это эвристика. Существует BugRanker, конкретный настройки и возможное влияние анализируемого кода. Все это влияет на итоговый рейтинг. - person barfuin; 20.09.2017
comment
Хм, тогда NullPointerException может получить ранг, отличный от 1. ? - person prime; 21.09.2017
comment
Да, конечно! - person barfuin; 21.09.2017