![]() |
1
2
我们的 DMS Software Reengineering Toolkit 是商用的,用于解析/分析/转换多种语言的源代码的通用机器,包括C、C++、C语言、Java、COBOL、… 它使用显式的语言定义(例如,bnf)来驱动解析机制来直接构建AST;DMS支持某些语言的多种方言。内置分析仪支持符号表的构建、控制和数据流分析、点分析、符号范围分析… 对于C、Java和COBOL,内置的分析机器与语言定义绑定在一起,这样您就可以使用这些分析器作为您希望构建的自定义分析的基础。C++确实有符号表,但还没有与其他内部分析器联系在一起,但是机器在那里。 DMS还提供了程序化和源到源的转换,这些转换受分析结果的制约;修改后的AST可以预先打印,以重新生成可编译源,并完成原始注释。 你的三个问题: 1.您使用什么静态分析API?
2.你为什么要用它?
3.说出你用它写的一件事?
|
![]() |
2
6
clang
试图为它所支持的语言的静态分析提供一组有用的库。
为什么要用它呢?它是一个完整的编译器,所以你可以 满的 对您正在使用的代码的可见性。API(至少大部分)是很好的C++设计。 我还没有写过什么特别严肃的东西。我目前正在开发一个使用 Index library 查找包含但从未引用过的头,但尚未完成(可能永远不会完成——我只是想把它作为进行一些探索的借口,而不是真正有用的工具)。 |
![]() |
3
4
我们的工具,命名 CodeSonar 是一个商用先进的C/C++程序静态分析工具。它提供了几个可用于扩展其功能的API。请注意,它是为进行分析而设计的,而不是为进行程序转换而设计的。 有一些API(在C和Scheme中)允许访问程序的ASTS(包括符号表)、每个子程序的CFG、整个程序调用图、编译单元、包含文件等。所有这些表示都与位置信息交叉关联,因此可以返回到负责的代码行。 分析引擎访问所有这些数据结构,用户可以通过指定访问期间要调用的回调来编写检查器。 编码声纳是一种路径敏感的分析工具。由于某些路径是不可行的,因此很难进行路径探索,因此将这些路径排除在考虑范围之外需要付出一定的努力。重要的是要排除不可行的路径,以保持低误报。编码声纳允许用户使用它的路径探索,再次使用访问者模式,这允许他们编写路径敏感的检查程序,而不必自己实现可行的路径探索。 此机制已用于实现一个检查程序,该检查程序查找与相当复杂的错误报告习惯用法的偏差。 编写检查的另一种方法是使用另一种特殊用途的API,该API的目的不是执行,而是向分析引擎介绍程序的属性。大致来说,您可以使用此API来编写类似于为动态检查属性而编写的代码,但符号执行引擎会“解释”这些代码。您可以用对这个API的调用来修饰自己的代码,或者将其放在一边。 许多编码声纳内置的API使用检查程序就是这样指定的。 写支票只是战斗的一半。一旦在生产中有了一个检查器,您就需要一种方法来管理它所发现的内容。上面描述的所有机制都会生成填充数据库的报告,并且有一个基于Web客户机的UI,用于查看结果、附加注释、与其他工具集成等。 希望这有帮助! |
![]() |
4
2
ndepend是一个.NET静态分析器,附带完整的ndepend.api来编写自己的静态分析器。
免责声明:我是该工具的开发人员之一 ndepend.api是linq友好的。超过 200个代码规则 是建议的。它们基于对ndepend.api的linq查询,我们称之为 cqlinq 。这些代码规则涵盖了广泛的需求(API、Evolution/Diff、命名、体系结构/设计、代码度量/质量、死代码、代码覆盖率、OOP…)您可以使它们适应您自己的需求并创建自己的需求。
14 power tools open source base on ndepend.api are proposed. 电动工具实际上是定制静态分析仪。在这里,你也可以调整它们或者创建你自己的。如果下载ndepend位,则这些 power tools的代码源位于VisualStudio解决方案中: >$ndependInstallPath$\ndepend.power tools.sourceCode\ndepend.power tools.sln
免责声明:我是该工具的开发人员之一 ndepend.api是linq友好的。不止 200 code rules 提出。它们基于对ndepend.api的linq查询,我们称之为 CQLinq . 这些代码规则涵盖了广泛的需求(API、演进/差异、命名、体系结构/设计、代码度量/质量、死代码、代码覆盖率、OOP…),您可以根据自己的需求进行调整并创建自己的需求。 十四 电动工具 提出了基于ndepend.api的开放源码技术。 电动工具 实际上是 自定义静态分析器 . 在这里,你也可以调整它们或者创建你自己的。如果您下载ndepend位,这些位的代码源 电动工具 在VisualStudio解决方案中: $ndependInstallPath$\ndepend.powertools.sourceCode\ndepend.powertools.sln
|
![]() |
rookie · 检查函数模板的所有参数包参数是否属于int 1 年前 |
![]() |
ivaigult · -W转换和隐式字符串到布尔类型转换 1 年前 |
![]() |
rainer · 后台插入程序的初始化 1 年前 |
![]() |
Community wiki · 以理智、安全和高效的方式复制文件 1 年前 |
|
Shefali Kanaujia · 对C中向量的向量进行排序++ 1 年前 |
|
Ma Joonyoung · 粗粒度和细粒度链表的时间比较 1 年前 |