我正在寻找一个能够提取所有函数和方法及其签名的c++解析器。有这样的东西吗?
我看了一下gccxml,但它无法使用命名空间,并且只有头文件时也不好用。
我正在寻找一个能够提取所有函数和方法及其签名的c++解析器。有这样的东西吗?
我看了一下gccxml,但它无法使用命名空间,并且只有头文件时也不好用。
最明显的选项:
这是GCC手册的一个示例:
-fdump-noaddr -fdump-unnumbered -fdump-translation-unit[-n] -fdump-class-hierarchy[-n] -fdump-ipa-all -fdump-ipa-cgraph -fdump-ipa-inline
-fdump-statistics -fdump-tree-all -fdump-tree-original[-n] -fdump-tree-optimized[-n] -fdump-tree-cfg -fdump-tree-vcg -fdump-tree-alias -fdump-tree-ch -fdump-tree-ssa[-n] -fdump-tree-pre[-n] -fdump-tree-ccp[-n] -fdump-tree-dce[-n]
-fdump-tree-gimple[-raw] -fdump-tree-mudflap[-n] -fdump-tree-dom[-n] -fdump-tree-dse[-n] -fdump-tree-phiopt[-n] -fdump-tree-forwprop[-n] -fdump-tree-copyrename[-n] -fdump-tree-nrv -fdump-tree-vect -fdump-tree-sink -fdump-tree-sra[-n]
-fdump-tree-fre[-n] -fdump-tree-vrp
如果我没记错的话,Clang编译器显然具有执行此操作的功能,甚至还有一个API可以访问解析器生成的代码树。
ConsumerAST
基类来访问它。 - Matthieu M.您可以使用abi-compliance-checker工具的-dump
选项来解析您的头文件中函数和方法的签名:
abi-compliance-checker -lib NAME -dump DESC.xml -headers-only -stdout > api.dump
XML描述符(DESC.xml
)如下:
<version>
VERSION
</version>
<headers>
/path(s)/to/headers/
</headers>
该工具的工作原理如下:
-I...
选项调用GCC
;GCC
生成的AST dump;-xml
选项)。bzlib.h
头文件中int BZ2_bzRead(int *bzerror, BZFILE *b, void *buf, int len)
函数的示例签名如下:
save-temps
标志来编译你的代码,这将使gcc输出带有宏展开和完整签名的文件。这些文件是.ii文件。