- 你使用源代码分析器吗?如果是这样,哪些和哪些语言发展?
- 您是否发现它们有助于解决代码中的潜在错误?还是他们的大多数警告都是微不足道的?
- 长时间使用后,您是否发现您的代码质量比以前更高了?
7 回答
我在 Java 中使用了一些静态分析工具。FindBugs是第一道防线,可以捕捉到很多常见错误并提供非常有用的反馈。它经常发现疲倦的程序员的愚蠢错误,并且不会给用户带来沉重的负担。
PMD适用于许多其他更棘手的错误,但需要更多配置。您会发现 PMD 的默认值通常超过顶部。有太多的规则可能在很小的范围内是有益的,但最终不会帮助其他程序员维护你的代码。一些 PMD 规则通常带有过早优化的味道。
可能更有用的是 PMD 中的CPD支持。它试图找到在别处重复的代码,以使重构更容易。运行整个项目,这确实有助于确定清理代码和停止任何 DRY 违规的最大优先事项。
Checkstyle也很方便,确保您的编码器符合一些编码风格标准。它与 PMD 有一些重叠,但通常更有用。
最后,Cobertura是一个很棒的测试覆盖套件。非常方便找出缺少单元测试的地方,以及应该优先考虑创建新测试的地方。
哦,我也一直在测试Jester。即使在代码有一定覆盖率的情况下,它似乎也能很好地发现测试中的漏洞。暂时不推荐,只是因为我用的还不够多,只能试一试。
我在 Eclipse 中和作为自动化构建套件的一部分运行这些工具。
对于 C,我使用MEMWATCH。它真的很容易使用和免费。
过去我用它来查找许多内存错误。
我使用了 resharper 和 MS TS(基本上是 FXCop),它们都非常有用,尤其是在以下领域:
- 识别死代码
- 范围广
- 性能改进(与全球化等有关)
建议并不总是很好,但通常会提高代码的质量。
我对ReSharper非常满意。它不仅在编码时提供有用的信息位(例如,不必要的强制转换、只读应用等),而且它的重构功能非常适合快速重新排列代码。
它并没有涵盖所有内容,因此 FxCop(或类似的)是工具箱的一个不错的补充。但是,由于 Resharper 会立即提供反馈,因此周转时间非常好。(我知道 FxCop 可以从 VS 运行,但它与 imo 不同)。
我发现分析器有些用处,我使用 Visual Studio 的 buildin(例如 /analyze 用于 c/c++ 和 .net 的自定义规则),偶尔我将stylecop和codeitright用于 c#,主要用于指导事情应该如何。
我不认为有一个完美的工具可以找到所有的错误,但我认为这些工具有助于找到一些错误,不是无法追踪的,但相信我你会花费大量时间来找到它们。
是的,您的代码质量比以前好一些,但我也相信仍然需要大量手动调试。源分析器不是最终的治疗方法,但它们是一种好药。如果有一个工具,您只需执行它并找到任何类型的错误并为您修复它,将花费数百万美元。
我认识的一些程序员发誓 IBM Rational PurifyPlus 非常棒,但他们认为我只使用了 2-3 次工具。
但永远记住编程逻辑错误的基本原则之一是最难发现和修复,因此长时间的调试是不可避免的。一个好的代码分析器结合单元测试可能会创造奇迹。
PS。我倾向于在 C# 中产生比在 C++ 中少得多的错误,有人可能会说我错了,但是虽然我使用 c++ 的年头比 c# 多,但我发现 C# 的“编码它,我会处理它”的 gc 方法比 c++ 容易得多特别是对于您急于在时间限制/截止日期完成的项目,每个项目都像现在这样......