我最近发现自己正在使用一个需要更好组织的大型,不熟悉的,多部门的C++代码库.我想找到一种方法来映射哪些符号被哪些源文件用于任何给定的头文件.这是希望如果只有一个部门使用给定的功能,那么它可以移出共享区域并进入该部门的区域.
我的第一个想法是使用符号表:即.编译项目并转储每个目标文件的符号.从那里我想我可以简单地编写一个脚本来检查我的头文件中的符号是否被使用.虽然这种方法似乎可行,但它需要我从标题中创建一个我正在寻找的符号列表.由于我的知识有限,我不确定如何自动执行这样的过程,并且要测试数百个头文件,手动执行它是不可能的.
此外,在使用Linux时,大多数开发团队仅在Windows环境中工作.我可以在两个平台上使用哪些实用程序?
非常感谢任何和所有的帮助.
当我需要清理 API 时,我有时会使用来自callcatcher的信息。它基本上在编译时构建所有符号的数据库,并允许您确定某些构建产品中使用哪些符号。
我有时也会使用DXR(github 上的代码,示例安装)来浏览定义的代码在哪里使用如何。与使用 DXR 的 callcatcher 相比,您可以深入了解更精细的细节。设置 DXR 是相当繁重的任务,但如果您有足够的代码可以使用,那么这可能是值得的。
另一方面,还有像cscope这样的工具。尽管它不能很好地与 C++ 代码一起工作,但它仍然非常有用。如果你处理的重量超过 100kloc,你很快就会感到受到限制。
如果我只能选择其中一种工具并且要处理大型代码库 (>1Mloc),我肯定会选择 DXR。