我正在为大公司的专有语言理解和构建静态代码分析工具。这样做的原因,我必须检查一个相当大的代码库,静态代码分析会有很多帮助,到目前为止他们还没有这个代码。
我想知道如何构建静态代码分析工具,例如C的Lint或SpLint
任何书籍,文章,博客,网站......都会有所帮助。
感谢。
答案 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)