2011-05-03 220 views
2

为什么我从来没有见过有静态代码分析和动态分析代码分析工具,因此检查他们两个?静态代码分析与动态代码分析工具?

一个侧面说明,FxCop的使用CIL解析和调用图分析来运行其检查。有谁知道它是否使用动态或静态调用图分析?

我承认,我已经限制了这些工具的知识,而且一直在做一些研究和似乎无法找到两人在一起......如果你知道的一些工具,两者都做,请列出它们。

谢谢!

回答

1

应当把它这两个结合:你显然希望静态分析,以检测真正问题(不只是似是而非问题)和举报。对于那些静态分析仪确定没有问题的地方,什么都不需要做或说。对于那些静态分析器无法解决的地方...您希望动态分析在运行时监视不良事件。

基本的答案是做静态分析的工具通常没有很好地提供给仪器应用程序代码,那些仪器没有很多静态分析支持。

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

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

一个结合了静态分析和动态分析的更复杂的例子是我们的CheckPointer工具,它可以检测出哪里产生指针错误(而不是下游损坏)。 CheckPointer结合了(在其生命早期)主要的动态分析来实现这种效果,再加上一些(和计划中的进一步的)静态分析,以尽可能多地消除动态检查。

0

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

例使用这些工具整合在一起:

  1. 使用静态分析,以帮助获得更好的代码覆盖率。例如。静态分析工具可以识别无法获得测试覆盖的死或无法访问的代码。
  2. 使用静态分析工具的范围分析来开发测试用例,然后可以在动态分析工具中使用这些测试用例。
  3. 使用静态分析工具(如MISRA或JSF ++)中的代码规则检查功能来开发更好的代码,从而生成具有更好覆盖率分析的软件。

如要进一步了解,这里是一个文章的链接描述如何将这些工具可以一起使用:http://www.vectorcast.com/blog/2011/04/25/combining-dynamic-testing-static-verification-part-1/