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

任何人都可以对Linux提供的静态代码分析工具进行比较吗? 以下工具的优点和缺点是什么?

  • 林田,
  • 疏,
  • 夹板,
  • RATS,
  • 使用-Wall选项。

你会认为只使用其中一种工具就足够了吗?

我不是在寻找build议(我可以find很多),而是直接比较可用的工具。

Solutions Collecting From Web of "比较Linux中的静态代码分析工具?"

当然有维基百科列表 。 这个列表就是一个列表,而不是一个比较,但是网页上的一个链接似乎至少部分地回答了你的问题,并且(很简单地)提到了你列出的几个程序。

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

Splint可以在你的应用程序中发现其他潜在的弱点,但是在大多数情况下(!)它会打印出错误的警告信息,所以你必须真正理解什么是夹板意味着什么样的警告,大多数时候你必须在你的注释中插入/ out / or / unused /代码,所以夹板不会对你大喊。 使用夹板,您应该过滤掉对您不重要的警告,否则您花费了太多的时间分析和滚动大量的信息。

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

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

我有时使用稀疏,认为它是一个有价值的工具。 它提供了一个名为“cgcc”的gcc封装器。 因此,即使程序包含很多源文件( export CC=cgccexport CC=cgcc ),在程序上运行稀疏也很简单。 如果你正在分析内核源代码,这个程序效果最好。

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