我对那里的静态分析工具很感兴趣。或者更确切地说,支持API,允许我使用这些API编写自己的工具。多年来,我在我目前的工作岗位上写了几十篇文章,仔细研究了我们的源代码(C++)中的各种内容。但我想知道的一件事是,是否还有其他静态分析API可用。所以
我的问题是
至于我,我的答案是:
内容:我使用API来理解4 c++。
为什么:我用它是因为:
有一个工具:上周,我编写了一个工具,用于在基类上获取一个虚拟函数,然后更改它的可访问性以及派生类上的所有虚拟重写。这要花我一个星期的时间才能手工完成。使用这个工具,我花了很短的时间来写,只需一按一个按钮,我就能修改近1000个文件。凉爽的
注意:我还使用了Visual中可用的C++代码模型,并成功地编写了相应的宏。
谢谢,我期待着您的任何答复。
发布于 2010-08-06 07:51:17
我们的DMS软件重组工具包是商用的通用机器,用于分析/分析/转换多种语言的源代码,包括C、C++、C#、Java、COBOL、.
它使用显式的语言定义(例如BNF)来驱动解析机制直接构建AST;DMS支持某些语言的多种方言。有内置的分析器,以支持符号表的构造,控制和数据流分析,点对点分析,符号范围分析.
对于C、Java和COBOL,内置分析机制与语言定义绑定在一起,因此您可以使用这些分析器作为您可能希望构建的自定义分析的基础。C++确实有符号表,但还没有绑定到其他内部分析器,但机器在那里。
DMS还提供了基于分析结果的过程转换和源到源转换;修改后的AST可以打印出来,以便与原始注释完整地重新生成可编译的源。
你的三个问题:
1.您使用什么静态分析API?
2.你为什么要用它?
3.说出你用它写的一件事?
发布于 2010-09-17 01:39:17
我们的工具叫做CodeSonar,是一个商用的C/C++程序的高级静态分析工具。它提供了几个API,可以用来扩展其功能。请注意,它是为进行分析而设计的,而不是用于执行程序转换。
有一些API(在C和Scheme中)允许访问程序的AST(包括符号表)、每个子程序的CFG、整个程序调用图、编译单元、包含文件等。所有这些表示都与位置信息交叉关联,因此有可能回到负责的代码行。
分析引擎访问所有这些数据结构,用户可以通过指定要在访问期间调用的回调来编写检查器。
CodeSonar是一个路径敏感的分析工具.路径探索是很困难的,因为有些路径是不可行的,排除那些不考虑的路径需要付出一定的努力。重要的是排除不可行的路径,以保持低的假阳性率。CodeSonar允许用户重新进行路径探索,再次使用访问者模式,这允许用户编写路径敏感的检查器,而不必自己实现可行的路径探索。
这种机制已经被用来实现一个检查器,它发现偏离了一个相当复杂的错误报告习语。
另一种编写检查的方法是使用不同的专用API,它的目的不是要执行,而是要教育分析引擎了解程序的属性。粗略地说,您可以使用这个API来编写类似于为动态检查属性而编写的代码,但是这些代码由符号执行引擎“解释”。您可以用调用这个API来修饰您自己的代码,或者将其保持在一边。
许多CodeSonar内置的API使用检查程序都是这样指定的。
写支票只是战斗的一半。一旦您在生产中有了一个检查器,您就需要一种方法来管理它找到的东西。上面描述的所有机制都生成填充数据库的报告,并且有一个基于web客户端的UI,用于查看结果、附加注释、与其他工具集成等等。
我希望这能帮到你!
发布于 2010-09-04 09:58:03
NDepend是一个.NET静态分析器,它附带一个完整的NDepend.API来编写您自己的静态分析器。
免责声明:我是该工具的开发人员之一
NDepend.API是LINQ友好的。提出了比200码规则更多的方法。它们基于NDepend.API上的LINQ查询,我们称之为CQLinq。这些代码规则涵盖了广泛的需求(API、进化/差异、命名、体系结构/设计、代码度量/质量、死代码、代码覆盖率、OOP.)你可以使它们适应你自己的需求,并创造出你自己的需求。
提出了基于NDepend.API的电动工具开源方案。电动工具实际上是自定义静态分析器。在这里,您也可以调整或创建您自己的。如果下载$NDependInstallPath$\NDepend.PowerTools.SourceCode\NDepend.PowerTools.sln位,这些电动工具的代码来源在VisualStudio解决方案中:VisualStudio

https://stackoverflow.com/questions/3420948
复制相似问题