2012-07-19 43 views
4

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

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

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

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

谢谢!

+4

约Doxygen的是什么? – 2012-07-19 18:34:28

+2

'libclang'怎么样? – 0xC0000022L 2012-07-19 18:35:27

+0

我认为,在一个写得很好的C或C++代码库中,通过检查头文件,你应该能够看到关于项目如何工作的所有其他相关信息。 – Wug 2012-07-19 18:35:29

回答

0

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

void fun1() { 
    return; 
} 

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

上述程序的牛上运行的 “纳米的a.out | grep的T”

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 
+0

对不起,但我不认为这是解决问题。我想要的不仅仅是基本的符号。 – swrittenb 2012-07-20 17:57:58

相关问题