静态分析API?

C J*_*son 4 c++ api static-analysis

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

我的问题是

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

至于我,我的答案是:

什么:我使用API​​来理解4 c ++.

原因:我使用它是因为:

  1. 它的C API是一个头文件(非常小)
  2. C API几乎不需要内存管理
  3. 我在它周围写了一个托管包装器,所以我可以使用c#!
  4. API非常小,但在查找各种内容时非常强大.

一个工具:好吧,上周我写了一个工具,在基类上获取虚函数,然后更改它的可访问性和派生类的所有虚拟覆盖.这需要一个星期的时间来手工完成.使用我花了很短时间写的工具我只需按一下按钮就可以改变几乎一千个文件.凉

注意:我还使用了Visual Studio提供的C++代码模型,并成功编写了宏来定位它.

谢谢,我期待您的任何答案.

Jer*_*fin 6

clang尝试提供一组有用的库,用于静态分析它支持的语言.不幸的是,虽然它的C支持非常好,但它的C++支持目前还不完整.(Clang C++支持现已成熟,甚至许多C++ 11功能都在运行)

为什么要用它?它是一个完整的编译器,因此您可以完全了解您正在使用的代码.API(至少大部分)是非常精心设计的C++.

我还没有写任何特别严肃的东西.我目前正在开发一个工具,使用索引库来查找包含但从未引用的标题,但它还没有完成(可能永远不会 - 我只是真的打算作为一个探索的借口,而不是真的一个有用的工具).


Ira*_*ter 3

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

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

对于 C、Java 和 COBOL,内置分析机制与语言定义相关联,以便您可以使用这些分析器作为您可能想要构建的自定义分析的基础。C++ 确实有符号表,但尚未与其他内部分析器绑定,但机制已经存在。

除此之外,DMS 还提供程序和源到源转换,以分析结果为条件;可以对修改后的 AST 进行漂亮打印,以重新生成包含原始注释的可编译源。

你的三个问题:

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

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

2.你为什么使用它?

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

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

  • B-2 隐形轰炸机 JOVIAL 到 C 的转换器(说真的,请参见网站)。
  • IBM 大型机应用程序架构提取。
  • 自动 C++ 组件重组。
  • 克隆检测。
  • 测试覆盖率和分析器
  • 智能差分器
  • (请参阅网站以获取更长更详细的列表)