您觉得源代码分析器有用吗?

时间:2009-01-07 08:55:21

标签: debugging code-analysis static-analysis

  • 您使用的是源代码分析器吗?如果是这样,哪些语言发展?哪种语言发展?
  • 您是否发现它们有助于解决代码中的潜在错误?或者他们的大多数警告都是微不足道的?
  • 长时间使用后,您是否发现您的代码质量比以前更高?

7 个答案:

答案 0 :(得分:3)

我在Java中使用了一些静态分析工具。 FindBugs是第一道防线,可以捕捉到许多常见错误并提供非常有用的反馈。它经常发现疲惫的程序员的愚蠢错误,并没有给用户带来很大的负担。

PMD对许多其他更琐碎的错误有好处,但需要更多配置。您会发现PMD默认值通常超过顶部。有太多规则可能在很小的范围内有益,但最终无法帮助其他程序员维护您的代码。一些PMD规则经常会过早优化。

PMD中的CPD支持可能更有用。它试图找到在其他地方重复的代码,以便使重构更容易。运行整个项目,这确实有助于确定清理代码和阻止任何干扰违规的最大优先级。

Checkstyle也很方便,确保您的编码器符合某些编码风格标准。它与PMD有一点重叠,但通常更有用。

最后,Cobertura是一个很棒的测试覆盖套件。非常方便找出缺少单元测试的位置,以及应该优先创建新测试的位置。

哦,我也一直在测试Jester。在测试中找到漏洞似乎相当不错,即使代码有一些覆盖范围。不推荐,只是因为我没有使用它,而是一个用来测试。

我在Eclipse中运行这些工具,并作为自动构建套件的一部分运行。

答案 1 :(得分:1)

对于C和C ++,我是PC-Lint的长期用户,并且发现它非常有用。这些工具在接管您不熟悉的代码库时非常有用。随着时间的推移,你会达到收益递减规律,你发现的新错误的数量往往会落后。

我总是在一个重要的版本上完成一个完整的项目。

编辑:维基百科上有一个很好的相关工具列表here

答案 2 :(得分:1)

对于C,我使用MEMWATCH。它真的很容易使用和免费。

过去我用它来发现很多内存错误。

答案 3 :(得分:1)

我使用了resharper和MS TS(基本上是FXCop),它们都非常有用,特别是在以下方面:

  • 识别死码
  • 广泛范围
  • 绩效改进(与全球化等相关)

建议并不总是很好,但通常会提高代码的质量。

答案 4 :(得分:0)

我将StyleCop用于C#。这是一个很好的工具,可以保持一致的代码风格,从而提高代码质量。另外ReSharper进行了一些代码分析,但它非常基础。

答案 5 :(得分:0)

我对ReSharper非常满意。它不仅在编码时提供有用的信息位(例如,不必要的强制转换,只读应用等),但其重构功能非常适合快速重新排列代码。

它并不涵盖所有内容,因此FxCop(或类似)是工具箱的一个不错的补充。然而,由于Resharper提供即时反馈,周转时间非常好。 (我知道FxCop可以从VS运行,但它只是不一样的imo)。

答案 6 :(得分:0)

我发现分析器有点用处,我使用buildin到visual studio(例如/分析c / c ++和.net的自定义规则),偶尔我会使用stylecopcodeitright来表示c#主要是指导事情应该如何。

我认为没有一个完美的工具可以找到所有错误,但我认为这些工具有助于找到一些错误,而不是无法追踪,但相信我会花很多时间找到它们。

是的,您的代码质量比以前更好,但我也相信还需要手动调试。尽管如此,源分析仪并不是最终的治疗方法。如果有一个工具你只是执行它并发现任何类型的错误并修复它将花费数百万美元。

我知道有些程序员发誓IBM Rational PurifyPlus非常棒,但他们认为我只有2-3次使用该工具。

但是请记住,编程逻辑错误的基本原则之一是查找和修复最难的,因此长时间的调试时间是不可避免的。一个好的代码分析器结合单元测试可能会创造奇迹。

PS。我倾向于在C#中产生比在C ++中更少的错误,有人可能会说我错了,但是我使用c ++比c#多了几年,我发现“代码它我会照顾它”C#的gc方法比c ++容易得多特别是对于你在时间限制/截止日期前赶紧完成的项目,每个项目都是这样的......