FindBugs 错误等级、类别和类型的关系

Relationship of FindBugs bug rank, category and type

我正在使用 FindBug,我想了解它生成的 .XML 报告以供记录。

我得到的样本如下。

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

因此类别 CORRECTNESS 的类型 RANGE_ARRAY_INDEX 似乎具有等级 7,因此它是 scary 类型。那么它总是正确的吗? RANGE_ARRAY_INDEX 总是 scary 吗?

我找不到任何提及它们之间关系的资源。

我参考了FindBugs Bug Descriptions and FindBugs 2 site and this SO question which dose not have a clear answer

好像我们有几个类别,

  1. 不好的做法
  2. 正确性
  3. 实验性
  4. 国际化
  5. 恶意代码漏洞
  6. 多线程正确性
  7. 性能
  8. 安全
  9. 狡猾的代码

我们有很多类型,因为它在文档中。

谁能帮我解决这个问题?

有一个answer by David Harkness which explains it pretty well, partly cited below. I also checked the SpotBugs code. SpotBugs is FindBugs' successor。简而言之:

  • Type - 这只是找到的 BugPattern 的名称。
  • Category - 该类别用于对 BugPatterns 进行分组,硬编码在 FindBugs 中。例如,RANGE_ARRAY_INDEX 将始终属于 CORRECTNESS 类别(由 DumbMethods 检测器报告)。
  • Rank - Rank 是复杂计算的结果,可以变化,并指示所发现错误的严重性。 它从 20(最低)到 1(最高)不等,UI 将值分为四类:scariestscarytroublingof concern. (Harkness) 因此,某个 NullPointerException 可能会得到 1,而潜在的性能改进可能只会得到 12.
  • 优先级 - 也是一个变化的计算值。它表明找到的错误实际上是错误的信心。 FindBugs 采用可能出错的启发式方法。它从 1(最高置信度)到 5(最低置信度,忽略)不等。很长一段时间以来,优先级已重命名为 confidence 以使其更清楚。出于兼容性原因,XML 仍然显示 priority