Linux中静态代码分析工具的比较?

时间:2009-06-15 12:12:02

标签: c linux software-quality

有没有人对Linux可用的静态代码分析工具进行过任何比较?以下工具的优点和缺点是什么:

  • 林田,
  • 稀疏
  • 夹板,
  • 大鼠,
  • 使用-Wall选项。

您是否认为只使用其中一种工具就足够了?

我不是在寻找建议(我可以找到很多建议),但可以直接比较可用的工具。

3 个答案:

答案 0 :(得分:6)

当然有wikipedia list。该列表只是一个列表,而不是比较,但页面上的the links之一似乎至少部分回答了您的问题,并且(非常简短地)提到了您列出的几个程序。

答案 1 :(得分:4)

对每个c开发人员来说,使用-Wall应该是理所当然的。此外,另外使用-Wextra可能是一个好主意。

Splint可以在您的应用程序中找到其他潜在的弱点,但在大多数情况下(!)它会打印错误警告,因此您必须真正理解夹板意味着什么警告,并且大多数时候您必须插入注释,例如/ out < / em> /或/ unused /在您的代码中,因此splint不会对您大喊大叫。使用splint,您应该过滤掉对您来说不重要的警告,否则您在分析和滚动大量消息时花费了太多时间。

请注意,这些工具仅执行静态代码检查。您应该使用valgrind来查找运行时内存泄漏。

答案 2 :(得分:3)

我曾经使用夹板几次,发现它太冗长:我 禁用大部分警告。我认为这个工具可能会提供 如果您正确注释您的代码,有趣的结果。没有代码 注释,这个工具不是很有帮助。

我有时会使用稀疏,并将其视为一种有价值的工具。它提供 围绕gcc的包装器,称为“cgcc”。因此,它很容易运行 即使它包含许多源文件(export CC=cgcc和voilà),也会在程序上稀疏。如果您正在分析,此程序最有效 内核源代码。

作为旁注,我也定期使用pmccabe。 pmccabe不是 静态分析器:它计算圈复杂度。它可能会帮助你 找到程序中最复杂的功能。这些功能是 可能容易出错且难以测试。