我目前正在研究基于C++ Qt的大型项目,该项目即将在其公共API的重要因素下进行,如果有一个工具可以生成一个报告,该报告已经添加或删除了哪些方法,那将会很不错.构建以构建.
我知道Java有一个工具可以做到这一点,我认为可能有一个用于.NET的工具,但经过一些搜索,我找不到任何适合C++的东西.
是否存在.跨平台会很好,或者只在Linux中也可以.
spr*_*aff 12
如果您使用Doxygen或类似的工具来记录您的API,那么您可以diff
使用目录.
private
和public
.检查商业列表底部的apidiff,我认为这将是最接近的匹配.
使用'nm'的建议并不错,你可以运行
nm <binary_or_lib> | c++filt
Run Code Online (Sandbox Code Playgroud)
它会产生一个不错的快照,需要大量的后期处理.
有很多方法可以在这个方面推出自己的方法:
Doxygen可以生成一个XML文件,其中包含您可以用来构建类树的所有类/成员/方法信息.那就是比较树木的问题.一些有用的后处理脚本/实用程序可以在http://www.doxygen.nl/helpers.html找到
如果您正在使用gcc进行编译,那么埃及是一种使用中间RTL生成调用依赖图的新方法- 似乎使用类似方法生成基本API信息并不困难.
GCC-XML将生成编译代码的XML表示,比Doxygen更低级,因为它提供了编写包装器代码的机制.
cppHeaderParser,一个python模块将生成标题的漂亮的python对象表示,提供生成API映射的简单方法.
ctags生成一个可能被处理的标签数据库.但它有C++命名空间的问题.
一些商业解决方案
scitool的理解在绘制软件方面做得很好,并且有一个用于查询其数据库的perl API.
MagicDraw是一种以UML为中心的重量级工具,但它可以对现有的C++代码库进行逆向工程并生成元信息.
apidiff似乎是一个非常实惠的工具,并且鉴于标准(跨平台,C++)可能是最接近的匹配.