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

时间:2012-07-19 18:31:01

标签: c++ c parsing

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

现在我正在使用NiCad克隆检测工具,其中包括用TXL(树转换语言)编写的提取脚本。每个函数都被拉出并作为唯一实体存储在XML文档中,因此处理函数列表非常方便。 NiCad包括用于C,Java和Python的提取工具。我最关心的是C,但其余的可用也很好。我们还没有设置C ++解析器 - 这将非常方便。

我还使用了Doxygen,它还具有识别调用图的额外好处。这些文件中有很多标记,所以解析Doxygen的输出以使它们进入一个简单的函数列表是一项额外的工作。

有没有人使用过提取全套功能/方法的工具?你有建议或警告吗?如果你自己写的,可以在某个地方使用吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

你可以使用linux的nm工具。 “nm用于列出目标文件中的符号”。请参阅nm的手册页以获取更多详细信息;此处复制样本nm供您参考。

void fun1() {
    return;
}

void fun() {
     fun1();
}
int main()
{
     fun();
     return 0;
}

运行“nm a.out | grep T”的上述程序的Nm

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