2017-09-18 765 views
1

我正在使用FindBug,並且我想了解它爲生成文檔而生成的.XML報告。FindBugs錯誤等級,類別和類型的關係

我得到的樣本如下。

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

所以,因爲它似乎鍵入CORRECTNESSRANGE_ARRAY_INDEX是有秩7所以它是一個scary一個。那它總是如此嗎? RANGE_ARRAY_INDEX總是一個scary嗎?

我找不到任何資源提及它們之間的關係。

我提到FindBugs Bug DescriptionsFindBugs 2 sitethis SO question which dose not have a clear answer

,因爲它似乎我們有幾個類別,

  1. 壞實踐
  2. 正確性
  3. 實驗
  4. 國際
  5. 惡意代碼漏洞
  6. 多線程正確性
  7. 性能
  8. 安全
  9. 狡猾的代碼

而且

  • 最可怕的(1-4),
  • 可怕(5- 9),
  • 麻煩(10-14)
  • 關注(等級15-20)

而且我們有很多類型,因爲它是在doc。

任何人都可以幫助我嗎?

回答

1

大衛哈克尼斯有一個answer解釋得很好,下面部分引用。我也檢查了SpotBugs code。 SpotBugs是FindBugs' successor。總之:

  • 類型 - 這是被發現BugPattern的只是名字。
  • 類別 - 該類別用於對FindBugs中硬編碼的BugPatterns進行分組。例如,RANGE_ARRAY_INDEX將始終屬於CORRECTNESS類別(並且由DumbMethods檢測器報告)。
  • 排名 - 排名是複雜計算的結果,可以變化,並指示發現錯誤的嚴重性。它從20(最低)到1(最高)不等,UI將這些值分爲四類:scariest,scary,troublingof concern(Harkness)因此,某個NullPointerException可能會得到1,並且潛在的性能改進可能只會得到12.
  • 優先級 - 也是一個計算值會變化的值。它表明了所發現的錯誤實際上是一個錯誤的信心。 FindBugs採用了可能出錯的啓發式方法。它從1(最高置信度)到5(最低置信度,忽略)不等。現在很長一段時間,優先級已被更名爲信心爲了使這個更清晰。由於兼容性原因,XML仍然說priority
+0

謝謝你的回答。 '因此,某個NullPointerException可能會得到1,並且潛在的性能提升可能只會達到12個。'儘管如此,它們有'mights'。是不是NullPointerException總是獲得排名1?如果不是什麼級別計算的標準。 – prime

+0

是的,這些都是啓發式的。有一個[BugRanker](https://github.com/spotbugs/spotbugs/blob/3.1.0_RC5/spotbugs/src/main/java/edu/umd/cs/findbugs/BugRanker.java#L39-L79)框架,具體[調整](https://github.com/spotbugs/spotbugs/blob/3.1.0_RC5/spotbugs/etc/bugrank.txt),以及分析代碼可能產生的影響。所有這些影響了最終的排名。 –

+0

嗯,那麼NullPointerException可能會得到1以外的排名。 – prime