首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >静态分析API的?

静态分析API的?
EN

Stack Overflow用户
提问于 2010-08-06 04:11:42
回答 3查看 1.4K关注 0票数 4

我对那里的静态分析工具很感兴趣。或者更确切地说,支持API,允许我使用这些API编写自己的工具。多年来,我在我目前的工作岗位上写了几十篇文章,仔细研究了我们的源代码(C++)中的各种内容。但我想知道的一件事是,是否还有其他静态分析API可用。所以

我的问题是

  1. 您使用什么静态分析API?
  2. 你为什么要用它?
  3. 说出你用它写的一件事?

至于我,我的答案是:

内容:我使用API来理解4 c++。

为什么:我用它是因为:

  1. 它的C API是一个头文件(非常小)
  2. C几乎不需要内存管理。
  3. 我为它编写了一个托管包装器,这样我就可以在其中使用c#了!
  4. API非常小,但在查找各种东西方面非常强大。

有一个工具:上周,我编写了一个工具,用于在基类上获取一个虚拟函数,然后更改它的可访问性以及派生类上的所有虚拟重写。这要花我一个星期的时间才能手工完成。使用这个工具,我花了很短的时间来写,只需一按一个按钮,我就能修改近1000个文件。凉爽的

注意:我还使用了Visual中可用的C++代码模型,并成功地编写了相应的宏。

谢谢,我期待着您的任何答复。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-08-06 07:51:17

我们的DMS软件重组工具包是商用的通用机器,用于分析/分析/转换多种语言的源代码,包括C、C++、C#、Java、COBOL、.

它使用显式的语言定义(例如BNF)来驱动解析机制直接构建AST;DMS支持某些语言的多种方言。有内置的分析器,以支持符号表的构造,控制和数据流分析,点对点分析,符号范围分析.

对于C、Java和COBOL,内置分析机制与语言定义绑定在一起,因此您可以使用这些分析器作为您可能希望构建的自定义分析的基础。C++确实有符号表,但还没有绑定到其他内部分析器,但机器在那里。

DMS还提供了基于分析结果的过程转换和源到源转换;修改后的AST可以打印出来,以便与原始注释完整地重新生成可编译的源。

你的三个问题:

1.您使用什么静态分析API?

  • DMS +我前面描述的API。
  • 您可以使用转换方面来进行动态分析。

2.你为什么要用它?

  • 主要支持定制工具的构建。令人惊讶的是,人们对代码有这么多不同的问题,以及他们想要重塑一个大应用程序的方式有多少。

3.说出你用它写的一件事?

  • B-2隐形轰炸机欢乐到C翻译(认真的,见网站)。
  • IBM大型机应用程序体系结构提取。
  • 自动化的C++组件重组。
  • 克隆检测。
  • 测试覆盖范围和分析器
  • 智能差分器
  • (更长的详细列表见网站)
票数 2
EN

Stack Overflow用户

发布于 2010-09-17 01:39:17

我们的工具叫做CodeSonar,是一个商用的C/C++程序的高级静态分析工具。它提供了几个API,可以用来扩展其功能。请注意,它是为进行分析而设计的,而不是用于执行程序转换。

有一些API(在C和Scheme中)允许访问程序的AST(包括符号表)、每个子程序的CFG、整个程序调用图、编译单元、包含文件等。所有这些表示都与位置信息交叉关联,因此有可能回到负责的代码行。

分析引擎访问所有这些数据结构,用户可以通过指定要在访问期间调用的回调来编写检查器。

CodeSonar是一个路径敏感的分析工具.路径探索是很困难的,因为有些路径是不可行的,排除那些不考虑的路径需要付出一定的努力。重要的是排除不可行的路径,以保持低的假阳性率。CodeSonar允许用户重新进行路径探索,再次使用访问者模式,这允许用户编写路径敏感的检查器,而不必自己实现可行的路径探索。

这种机制已经被用来实现一个检查器,它发现偏离了一个相当复杂的错误报告习语。

另一种编写检查的方法是使用不同的专用API,它的目的不是要执行,而是要教育分析引擎了解程序的属性。粗略地说,您可以使用这个API来编写类似于为动态检查属性而编写的代码,但是这些代码由符号执行引擎“解释”。您可以用调用这个API来修饰您自己的代码,或者将其保持在一边。

许多CodeSonar内置的API使用检查程序都是这样指定的。

写支票只是战斗的一半。一旦您在生产中有了一个检查器,您就需要一种方法来管理它找到的东西。上面描述的所有机制都生成填充数据库的报告,并且有一个基于web客户端的UI,用于查看结果、附加注释、与其他工具集成等等。

我希望这能帮到你!

票数 4
EN

Stack Overflow用户

发布于 2010-09-04 09:58:03

NDepend是一个.NET静态分析器,它附带一个完整的NDepend.API来编写您自己的静态分析器。

  • NDepend.API概述
  • NDepend.API简介
  • NDepend.API入门

免责声明:我是该工具的开发人员之一

NDepend.API是LINQ友好的。提出了比200码规则更多的方法。它们基于NDepend.API上的LINQ查询,我们称之为CQLinq。这些代码规则涵盖了广泛的需求(API、进化/差异、命名、体系结构/设计、代码度量/质量、死代码、代码覆盖率、OOP.)你可以使它们适应你自己的需求,并创造出你自己的需求。

提出了基于NDepend.API的电动工具开源方案。电动工具实际上是自定义静态分析器。在这里,您也可以调整或创建您自己的。如果下载$NDependInstallPath$\NDepend.PowerTools.SourceCode\NDepend.PowerTools.sln位,这些电动工具的代码来源在VisualStudio解决方案中:VisualStudio

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3420948

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档