我正在为一家大公司的专有语言理解和构建一个静态代码分析工具。这样做的原因是,我必须审查相当大的代码库,静态代码分析会有很大帮助,但到目前为止,他们还没有针对该语言的代码分析。
我想知道如何为C语言构建静态代码分析工具,例如Lint或SpLint。
任何书籍、文章、博客、sites..etc都会有所帮助。
谢谢。
发布于 2014-01-30 22:36:42
我知道这是一个古老的帖子,但答案似乎并不那么令人满意。This article很好地介绍了静态分析工具背后的技术,并提供了几个指向示例的链接。
有一本好书是Brian West和Jacob West写的"Secure Programming with Static Analysis“。
发布于 2011-08-12 11:05:40
您需要良好的基础设施,例如解析器、树构建器、树分析器、符号表构建器、流分析器,然后为了继续执行您的特定任务,您需要使用所有的基础设施机械,针对您感兴趣的特定问题编写特定的检查代码。
构建所有的基础机器实际上是相当困难的,而且它不能帮助您完成特定的任务。人们不会为他们编写的每个应用程序编写操作系统;为什么要构建所有的基础设施?就像操作系统一样,如果你只是简单地获得良好的基础设施,那就更好了。
人们会告诉你lex和yacc。这有点像建议你使用操作系统的实时通用部分;很有用,但离你真正需要的所有基础设施还差得远。
我们的DMS Software Reengineering Toolkit提供了所有必要的基础设施。它已经被用来为这些语言定义many language front ends和many tools。
这样的基础设施将允许您相对快速地定义特定的非标准语言,然后继续编写特殊检查的代码。
发布于 2021-05-07 08:00:29
DeepSource有一个博客,它涵盖了人们需要知道的一切,以建立对静态代码分析的理解,并为您配备基本理论和正确的工具,以便您可以自己编写分析器。
这里有个链接:https://deepsource.io/blog/introduction-static-code-analysis/
https://stackoverflow.com/questions/4468309
复制相似问题