2009-06-15 153 views
13

有沒有人對Linux可用的靜態代碼分析工具進行任何比較?什麼是以下工具的優勢和劣勢:Linux中靜態代碼分析工具的比較?

  • 林田,
  • 稀疏,
  • 夾板,
  • 大鼠,
  • 使用-Wall選項。

您認爲只使用其中一種工具就足夠了嗎?

我不是在尋找建議(我可以找到很多這些),而是直接比較可用工具。

回答

6

當然有wikipedia list。該列表僅僅是一個列表,並不是一個比較,但網頁上的the links之一似乎至少部分地回答了您的問題,並且(非常簡要地)提到了您列出的一些程序。

4

對於每個c開發人員,使用-Wall應該是理所當然的。此外,另外使用-Wextra可能是一個好主意。

夾板可以在自己的應用程序,但在大多數情況下,其他潛在的弱點(!),它打印錯誤的警告,所以你必須真正瞭解你所擁有插入像/ 標註出什麼警告,大部分時間是什麼意思夾板/或/ 未使用 /在你的代碼中,所以夾板不會對你大吼。使用藤條,您應該過濾掉對您不重要的警告,否則您花費了太多時間分析和滾動瀏覽大量郵件。

請注意,這些工具只執行靜態代碼檢查。您應該使用valgrind來查找運行時內存泄漏。

+0

是的,我在Windows世界中有靜態檢查器的經驗,所以我意識到誤報的問題。 – Makis 2009-06-18 06:29:41

3

我已經使用了夾板幾次,發現它太冗長:我 禁用了大部分警告。如果您正確註釋了代碼,我認爲該工具可能會提供 有趣的結果。如果沒有代碼 註釋,這個工具不是很有幫助。

我有時使用稀疏並將其視爲一種有價值的工具。它提供了一個名爲「cgcc」的gcc封裝器 。因此,即使程序包含許多源文件(export CC=cgcc和voilà),在程序上運行 稀疏也很簡單。如果您正在分析 內核源代碼,此程序效果最佳。

作爲一個旁註,我也定期使用pmccabe。 pmccabe不是 靜態分析器:它計算圈複雜度。它可以幫助你在你的程序中找到最複雜的功能 。這些函數是 可能容易出錯並且很難測試。