[英]Benefits of static code analysis
在源代码上进行静态代码分析有什么好处? 我正在玩FxCop,我想知道除了确保你遵循编码标准之外是否有任何好处。
有各种好处:
许多类的内存泄漏和常见的逻辑错误也可以静态捕获。 您还可以查看圈复杂度等,这可能是您提到的“编码标准”的一部分,但可能是您用来评估代码的算法“清洁度”的单独度量。
在任何情况下,只有明智的分析(动态或运行时分析)和静态分析/ linting组合才能确保一致,可靠的代码库。 哦,那个,还有点运气;-)
这是一种权衡。 对于想要提高对框架和指南的理解的个人开发人员,我肯定会鼓励它。 FxCop会产生很多噪音/误报,但我也发现了以下好处:
它检测到错误(例如,关于未使用的参数的警告可能表示您在方法体中使用了错误的参数)。
理解FxCop遵循的指导方针可以帮助您成为更好的开发人员。
然而,对于混合能力团队而言,FxCop可能会产生太多误报而无用。 初级开发人员很难理解FxCop抛出的一些更深奥的违规行为是否会引起他们的关注,或者只是噪音。
底线:
如果您正在开发可重用的类库,例如内部框架,请确保您拥有优秀的开发人员并使用FxCop。
对于混合能力团队的日常应用程序开发,可能不太可行。
实际上,fxcop并不特别帮助您遵循编码标准。 它帮助你的是设计一个经过深思熟虑的框架/ API。 确实,编码标准的一部分(例如公共成员的外壳)将被FxCop捕获,但编码标准不是焦点。
可以使用stylecop检查编码标准,它会像fxcop一样检查源代码而不是MSIL。
它可以捕获实际的错误,比如忘记Dispose IDisposables。
取决于规则,但可以避免许多细微的缺陷,可以清除代码,可以检测潜在的性能问题等。
换一种方式......如果它便宜或免费(时间和财务成本)并且不会破坏任何东西,为什么不使用它呢?
设计警告
支持.NET Framework设计指南中指定的正确库设计的警告。
全球化警告
支持世界级库和应用程序的警告。
互操作性警告
支持与COM客户端交互的警告。
命名警告
警告支持遵守.NET Framework设计指南的命名约定。
性能警告
支持高性能库和应用程序的警告。
安全警告
支持更安全的库和应用程序的警告。
根据您的应用程序,某些领域可能不是很有趣,但如果您需要COM互操作性,那么测试可以真正帮助您避免陷阱。
其他静态检查工具可以帮助您检测错误,如不处理IDisposable ,内存泄漏和其他微妙的错误。 对于极端情况,请参阅尚未发布的NStatic工具。
NStatic用于跟踪冗余参数,评估常量的表达式,无限循环和许多其他指标。
我将尝试描述主要的:
在源代码上进行静态代码分析有什么好处?
好处取决于执行的静态代码分析的类型。 静态代码分析的范围可以从简单到复杂的技术。 例如,生成有关源代码的指标以识别容易出错的代码是一种技术。 其他技术会主动尝试查找代码中的错误。 复杂的技术使用正式的方法来证明您的代码没有错误。
因此,好处取决于所使用的静态代码分析的类型。 如果该技术产生度量(例如代码复杂性等),则可以在代码审查期间使用这些度量来识别容易出错的代码。 如果该技术检测到错误,那么好处是开发人员可以在单元测试之前识别错误。 如果使用基于形式方法的技术来证明代码不包含错误,那么好处是可以使用此信息向QA部门(或证书颁发机构)证明代码没有某些类型的错误。
有关技术和优势的更详细说明, 请参见此页面: www.mathworks.com/static-analysis
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.