什么是动态代码分析?

Ada*_*vis 22 code-analysis dynamic-analysis

什么是动态代码分析?

它与静态代码分析有什么不同(即,它能捕获哪些不能被静态捕获)?

我听说过检查和记忆分析 - 这些是什么?

使用动态分析检查哪些其他内容?

-亚当

Mar*_*iar 31

简而言之,静态分析基于源代码收集信息,动态分析基于系统执行,通常使用仪器.

动态分析的优点

  • 能够检测静态分析中无法检测的依赖关系.例如:使用反射,依赖注入,多态的动态依赖.
  • 可以收集时间信息.
  • 处理实际输入数据.在静态分析期间,很难不知道哪些文件将作为输入传递,哪些WEB请求将来,用户将点击什么等.

动态分析的缺点

  • 可能会对应用程序的性能产生负面影响.
  • 无法保证源代码的完整覆盖,因为它的运行基于用户交互或自动测试.

资源

市场上有许多动态分析工具,调试器是最臭名昭着的工具.另一方面,它仍然是一个学术研究领域.有许多研究人员在研究如何使用动态分析来更好地理解软件系统.每年都有一个专门讨论依赖性分析的研讨会.


Dav*_*gle 5

基本上,您可以检测代码以在软件运行(动态)时对其进行分析,而不仅仅是在不运行(静态)的情况下分析软件。另请参阅比较两者的 JavaOne 演示文稿Valgrind是 C 的一个示例动态分析工具。您还可以使用CoberturaEMMA等代码覆盖工具进行 Java 分析。

来自维基百科对动态程序分析定义

动态程序分析是通过在真实或虚拟处理器上执行从该软件构建的程序来执行的计算机软件分析(在不执行程序的情况下执行的分析称为静态代码分析)。动态程序分析工具可能需要加载特殊库,甚至需要重新编译程序代码。