C++ 从源代码项目中提取所有函数的工具

C++ 从源代码项目中提取所有函数的工具,c++,c,parsing,C++,C,Parsing,我试图建立一个可用工具列表,用于解析完整的源代码包,并将所有函数/方法提取为单独的部分。我的目标是运行一个工具或脚本,立即知道包中有多少函数,并根据需要逐个轻松检查完整的分段函数集 现在我正在使用NiCad克隆检测工具,它包括一个用TXL(一种树转换语言)编写的提取脚本。每个函数都被拉出并作为一个唯一的实体存储在XML文档中,因此处理函数列表非常方便。NiCad包括用于C、Java和Python的提取工具。我最关心的是C语言,但它也很高兴有剩余的可用。我们还没有设置一个C++解析器,这很方便。

我试图建立一个可用工具列表,用于解析完整的源代码包,并将所有函数/方法提取为单独的部分。我的目标是运行一个工具或脚本,立即知道包中有多少函数,并根据需要逐个轻松检查完整的分段函数集

现在我正在使用NiCad克隆检测工具,它包括一个用TXL(一种树转换语言)编写的提取脚本。每个函数都被拉出并作为一个唯一的实体存储在XML文档中,因此处理函数列表非常方便。NiCad包括用于C、Java和Python的提取工具。我最关心的是C语言,但它也很高兴有剩余的可用。我们还没有设置一个C++解析器,这很方便。 我还使用了Doxygen,它具有识别调用图的附加功能。不过,这些文件中有很多标记,因此要解析Doxygen的输出,将它们放入一个简单的函数列表中,需要做一些额外的工作

是否有人使用过提取全套函数/方法的工具?你有什么建议或警告吗?如果你自己写的,在什么地方可以找到吗


谢谢

您可以使用linux的nm工具。“nm用于列出对象文件中的符号”。有关更多详细信息,请参阅nm手册页;此处复制样品nm供您参考

void fun1() {
    return;
}

void fun() {
     fun1();
}
int main()
{
     fun();
     return 0;
}
运行“Nm a.out | grep T”的上述程序的Nm


在我的拙见中,在一个写得很好的C或C++代码库中,你应该能够通过检查头文件来了解这个项目和其他有关项目如何工作的相关信息。我在这个问题中引用了DoxGEN,而且它确实很好。我对其他可用的选项感兴趣。例如,我想知道是否有解析器允许我选择包含/排除注释。如果我能列出这些工具,那将非常有帮助。谢谢Libblang看起来真的很有用,我来看看。Wug,似乎不是所有的开发人员都一直遵循良好的实践。即使项目组织得不那么整齐,拥有能够工作的工具也是很有用的。您是否只需要函数声明列表(我的意思是没有实体)?然后考虑<代码> CTAGs…<代码> GCCSXML/COMM>也可以为您工作,虽然它是多余的。它支持C++。对不起,但我认为这不是解决问题的方法。我想要的不仅仅是基本的符号。
08048470 T __libc_csu_fini
08048400 T __libc_csu_init
080484ac T _fini
080482b8 T _init
08048320 T _start
080483d9 T fun
080483d4 T fun1
080483e3 T main