【发布时间】:2008-09-19 18:12:55
【问题描述】:
对源代码进行静态代码分析有什么好处?我正在玩 FxCop,我想知道除了确保您遵循编码标准之外是否还有其他好处。
【问题讨论】:
标签: code-analysis
对源代码进行静态代码分析有什么好处?我正在玩 FxCop,我想知道除了确保您遵循编码标准之外是否还有其他好处。
【问题讨论】:
标签: code-analysis
有各种各样的好处:
【讨论】:
许多类的内存泄漏和常见的逻辑错误也可以静态捕获。您还可以查看圈复杂度等,这可能是您提到的“编码标准”的一部分,但可能是您用来评估代码的算法“清洁度”的单独指标。
在任何情况下,只有将分析(动态或运行时分析)和静态分析/linting 巧妙地结合起来才能确保代码库的一致性、可靠性。哦,那个,还有一点运气;-)
【讨论】:
这是一种权衡。对于想要提高对框架和指南的理解的个人开发人员,我肯定会鼓励它。 FxCop 会产生很多噪音/误报,但我还发现了以下好处:
它检测错误(例如,关于未使用参数的警告可能表明您在方法主体中使用了错误的参数)。
了解 FxCop 遵循的指导方针有助于您成为更好的开发人员。
但是,对于一个混合能力的团队,FxCop 很可能会产生太多的误报而无用。初级开发人员将难以理解 FxCop 提出的一些更深奥的违规行为是应该引起他们的关注还是只是噪音。
底线:
如果您正在开发可重用的类库,例如内部框架,请确保您有优秀的开发人员并使用 FxCop。
对于混合能力团队的日常应用程序开发,这可能不切实际。
【讨论】:
实际上,fxcop 并不能特别帮助您遵循编码标准。它确实可以帮助您设计一个经过深思熟虑的框架/API。 FxCop 确实会捕捉到部分编码标准(例如公共成员的大小写),但编码标准不是重点。
可以使用stylecop 检查编码标准,它检查源代码而不是像 fxcop 那样检查 MSIL。
【讨论】:
它可以捕获实际的错误,例如忘记 Dispose IDisposables。
【讨论】:
取决于规则,但可以避免许多细微的缺陷,可以清理代码,可以检测潜在的性能问题等。
换一种说法...如果它便宜或免费(在时间和财务成本方面)并且不会破坏任何东西,为什么不使用它?
【讨论】:
有一个all warnings in FxCop 的列表。可以看到有以下几个方面的警告:
设计警告
支持正确库的警告 .NET 指定的设计 框架设计指南。
全球化警告
支持世界就绪的警告 库和应用程序。
互操作性警告
支持交互的警告 COM 客户端。
命名警告
支持遵守 .NET 的命名约定 框架设计指南。
性能警告
支持高性能的警告 库和应用程序。
安全警告
支持更安全库的警告 和应用程序。
根据您的应用程序,其中一些领域可能不是很有趣,但如果您例如需要 COM 互操作性,测试确实可以帮助您避免陷阱。
其他静态检查工具可以帮助您检测错误,例如not disposing an IDisposable、内存泄漏和其他细微错误。对于极端情况,请参阅尚未发布的 NStatic 工具。
NStatic 用于跟踪诸如冗余参数、评估为常量的表达式、无限循环和许多其他指标等内容。
【讨论】:
好处是您可以在您的软件应用程序中自动find and quantify technical debt。
我发现静态代码分析工具在大型企业应用程序开发中必不可少,许多开发人员和测试人员在应用程序的生命周期中来来往往,但仍需要保持较高的代码质量并妥善管理技术债务。
【讨论】:
对源代码进行静态代码分析有什么好处?
好处取决于所执行的静态代码分析的类型。静态代码分析的范围可以从简单到复杂的技术。例如,生成有关源代码的指标以识别容易出错的代码是一种技术。其他技术积极尝试在您的代码中查找错误。复杂的技术使用正式的方法来证明您的代码没有错误。
因此,好处取决于所使用的静态代码分析的类型。如果该技术产生指标(例如代码复杂性等),那么好处是可以在代码审查期间使用这些指标来识别容易出错的代码。如果该技术检测到错误,那么好处是开发人员可以在单元测试之前识别错误。如果使用基于形式方法的技术来证明代码不包含错误,那么好处是可以使用此信息向 QA 部门(或认证机构)证明代码没有某些类型的错误。
更详细的技术和好处的描述也可以在这个页面上找到:www.mathworks.com/static-analysis
【讨论】:
我将尝试描述主要的:
【讨论】: