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

7 回答 7

3

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

PMD适用于许多其他更棘手的错误,但需要更多配置。您会发现 PMD 的默认值通常超过顶部。有太多的规则可能在很小的范围内是有益的,但最终不会帮助其他程序员维护你的代码。一些 PMD 规则通常带有过早优化的味道。

可能更有用的是 PMD 中的CPD支持。它试图找到在别处重复的代码,以使重构更容易。运行整个项目,这确实有助于确定清理代码和停止任何 DRY 违规的最大优先事项。

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

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

哦,我也一直在测试Jester。即使在代码有一定覆盖率的情况下,它似乎也能很好地发现测试中的漏洞。暂时不推荐,只是因为我用的还不够多,只能试一试。

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

于 2009-01-07T09:24:02.437 回答
1

我是PC-Lint for C 和 C++ 的长期用户,发现它非常有帮助。在接管您不熟悉的代码库时,这些工具最有用。随着时间的推移,您会遇到收益递减规律,您发现的新错误的数量往往会逐渐减少。

我总是对一个大版本的完整项目进行 lint。

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

于 2009-01-07T09:08:08.990 回答
1

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

过去我用它来查找许多内存错误。

于 2009-01-07T09:44:07.280 回答
1

我使用了 resharper 和 MS TS(基本上是 FXCop),它们都非常有用,尤其是在以下领域:

  • 识别死代码
  • 范围广
  • 性能改进(与全球化等有关)

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

于 2009-01-07T10:47:52.050 回答
0

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

于 2009-01-07T09:08:47.353 回答
0

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

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

于 2009-01-07T10:08:01.943 回答
0

我发现分析器有些用处,我使用 Visual Studio 的 buildin(例如 /analyze 用于 c/c++ 和 .net 的自定义规则),偶尔我将stylecopcodeitright用于 c#,主要用于指导事情应该如何。

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

是的,您的代码质量比以前好一些,但我也相信仍然需要大量手动调试。源分析器不是最终的治疗方法,但它们是一种好药。如果有一个工具,您只需执行它并找到任何类型的错误并为您修复它,将花费数百万美元。

我认识的一些程序员发誓 IBM Rational PurifyPlus 非常棒,但他们认为我只使用了 2-3 次工具。

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

PS。我倾向于在 C# 中产生比在 C++ 中少得多的错误,有人可能会说我错了,但是虽然我使用 c++ 的年头比 c# 多,但我发现 C# 的“编码它,我会处理它”的 gc 方法比 c++ 容易得多特别是对于您急于在时间限制/截止日期完成的项目,每个项目都像现在这样......

于 2009-01-07T10:49:05.170 回答