静态代码分析使用动态代码分析工具?

时间:2011-05-03 08:45:27

标签: code-analysis fxcop

为什么我从未见过一个同时具有静态代码分析和动态代码分析的分析工具,因此检查它们两者?

附注,FxCop使用CIL解析和调用图分析来运行其检查。有谁知道它是否使用动态或静态调用图分析?

我承认,我对这些工具知之甚少,但一直在做一些研究,似乎无法找到两者......如果你知道有两种工具可以同时进行,请列出它们。

谢谢!

2 个答案:

答案 0 :(得分:1)

将两者结合起来是有意义的:您显然希望静态分析能够检测真正的问题(而不仅仅是似乎合理的问题)并报告它们。对于那些静态分析仪确定没有问题的地方,不需要做任何事情。对于静态分析器无法解决的地方......您希望动态分析在运行时监视坏事件。

基本答案是,进行静态分析的工具通常没有很好地配置到仪器应用程序代码,而那些仪器对静态分析没有很多支持。

我们的DMS Software Reengineering Toolkit是一套基础设施,既有功能,又可用于构建此类工具。 DMS的核心是程序分析和转换系统。分析方解析代码并构建基于分析器的模型(AST,符号表,控制/数据流图等)。转换方可以修改AST(使用分析器确定要更改的内容)并使用任意更改吐出修改后的源代码;为了讨论的目的,使用了检测代码。

本文提供了有关DMS如何用于仪器代码(动态分析)的清晰概述:Branch Coverage for Arbitrary Languages Made Easy

结合静态和动态分析的更复杂的示例是我们的CheckPointer工具,它可以检测指针错误(与下游损坏相反)。 CheckPointer结合(在其生命的早期阶段)主要的动态分析来实现这种效果,再加上一些(并计划进一步的)静态分析,以消除尽可能多的动态检查。

答案 1 :(得分:0)

虽然我不知道有一个工具同时进行静态和动态分析,但工具供应商已经合作提供此功能。一个很好的例子是MathWorks的Polyspace静态分析工具和Vector Software的VectorCAST动态分析工具。

将这些工具一起使用的示例:

  1. 使用静态分析来帮助获得更好的代码覆盖率。例如。静态分析工具可以识别无法获得测试覆盖的无法或无法访问的代码。
  2. 使用静态分析工具中的范围分析来开发可以在动态分析工具中使用的测试用例。
  3. 使用静态分析工具中的代码规则检查功能(例如MISRA或JSF ++)来开发更好的代码,从而生成具有更好覆盖率分析的软件。
  4. 如需进一步阅读,请参阅文章链接,说明如何将这些工具结合使用:http://www.vectorcast.com/blog/2011/04/25/combining-dynamic-testing-static-verification-part-1/