如何构建静态代码分析工具?

时间:2010-12-17 06:37:57

标签: static-analysis

我正在为大公司的专有语言理解和构建静态代码分析工具。这样做的原因,我必须检查一个相当大的代码库,静态代码分析会有很多帮助,到目前为止他们还没有这个代码。

我想知道如何构建静态代码分析工具,例如C的Lint或SpLint

任何书籍,文章,博客,网站......都会有所帮助。

感谢。

4 个答案:

答案 0 :(得分:4)

我知道这是一个老帖子,但答案看起来并不那么令人满意。 This article对静态分析工具背后的技术进行了很好的介绍,并提供了几个示例链接。

一本好书是Brian Chest和Jacob West的“使用静态分析进行安全编程”。

答案 1 :(得分:3)

您需要良好的基础架构,例如解析器,树构建器,树分析器,符号表构建器,流分析器,然后继续执行您需要的特定任务,以针对您感兴趣的特定问题进行特定检查,使用所有的基础设施机制。

构建所有基础机械实际上非常困难,它无助于您完成特定任务。人们不会为他们编写的每个应用程序编写操作系统;为什么要建立所有基础设施?像操作系统一样,如果您只是获得良好的基础设施,那就更好了。

人们会告诉你lex和yacc。这有点像建议你使用操作系统的实时keneral部分;有用,但远离你真正需要的所有基础设施。

我们的DMS Software Reengineering Toolkit提供了所有必要的连接。它已被用于定义many language front ends以及 这些语言many tools

此类基础设施允许您相对快速地定义特定的非标准语言,然后继续执行编写特殊检查的任务。

答案 2 :(得分:1)

DeepSource 的博客涵盖了了解静态代码分析所需的一切知识,并为您提供基本理论和正确的工具,以便您可以自己编写分析器。

这是链接:https://deepsource.io/blog/introduction-static-code-analysis/

答案 3 :(得分:0)

  1. 显然你需要一个语言解析器。一个好的高水平AST是有用的。
  2. 您需要在语言中列举一组“错误”。如果不了解有关语言的更多信息,我们在这里无能为力。示例:C中的未分配指针等
  3. 将AST与#2中的错误结合起来。