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