静态代码分析的好处

时间:2008-09-19 18:12:56

标签: code-analysis

对源代码进行静态代码分析有什么好处?我正在玩FxCop,我想知道除了确保你遵循编码标准之外是否有任何好处。

10 个答案:

答案 0 :(得分:10)

有各种好处:

  1. 如果您的代码中存在反模式,则可以向您发出警告。
  2. 有某些指标(例如McCabe的Cyclomatic Complexity) 告诉我们有关源代码的有用信息。
  3. 您还可以获得诸如调用图和类图等优秀内容 来自静态分析。如果你正在攻击一个,这些都很棒 新的代码库。
  4. 查看SourceMonitor

答案 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)

的FxCop

有一个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)

我将尝试描述主要的:

  • 静态代码分析可识别早期程序中的检测,从而降低修复成本的成本。
  • 它可以检测程序输入和输出中的缺陷,这些缺陷是通过动态测试无法看到的。
  • 它会自动扫描未编译的代码并识别漏洞。
  • 我在处理checkmarx时所知道的是,静态代码分析可以在一个点上修复多个漏洞,这为开发人员节省了大量时间。