有一个基于C ++构建的专有API。所以它使用C ++的所有功能,然后有自己的API。有一些API的功能与C ++ API完全相同(就像有了Stalloc的malloc),这些API是出于性能原因而提供的。
虽然有很多可用于C ++的静态代码分析器,但我们不能使用它们中的任何一种。需要有一个静态代码分析器,可以使用专有API在代码上运行。
我想知道如何开始开发代码分析器。它可能不需要像C ++那样面向功能。我想从报告未使用的变量,缓冲区溢出,内存泄漏等基本内容开始。
任何指导都将不胜感激。
[更新]我发现了以下问题,这就是我所寻找的,唯一的区别是,我不关心Java,而是关注专有API。到目前为止,我有很多好的答案,但我真的希望从经历过这种发展的人那里了解更多。
答案 0 :(得分:2)
我很困惑:
这是一种基于C ++的语言实现还是仅仅是一组基于C ++的API?
如果是后者,任何普通的C ++探查器都会捕获内存泄漏和溢出等内容。
答案 1 :(得分:2)
像Coverity和Klocwork这样的解决方案有一个可扩展的规则集,您可以在其中编写自己的规则。您还可以配置该工具,以便其标准内存检查了解自定义内存分配器。但是有一些限制。
使用这些工具很有用,因为这样您就可以借用相同的工作流程。同样,这取决于你的代码是什么以及你想要做什么。
答案 2 :(得分:1)
不要试图从头开始写这个。众所周知,C ++很难解析,我认为你不会在这条路上走得太远。
您应该使用可扩展的C ++静态分析器,以便您可以编写自己的插件来分析库调用。在我的头顶,我建议:
最好的答案可能是铿锵有力。
答案 3 :(得分:1)
在实践中解析C ++非常困难。如果你有一个C ++扩展方言,你需要一个完全的C ++解析器,它“容易”弯曲到你的方言,并且有办法构建分析工具。
DMS Software Reengineering Toolkit是完全可定制的通用分析和转换基础架构,提供一般解析,树构建,符号表构建和流分析功能。它用于构建完全自定义的分析仪。
它有C++ Front End处理C ++的几种标准方言,并且可以自定义以处理其他扩展。 C ++前端具有完整的预处理器功能,解析和构建AST,并进行完整的C ++名称和类型分析。