首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >“深度”报头依赖分析

“深度”报头依赖分析
EN

Stack Overflow用户
提问于 2011-05-05 02:48:05
回答 1查看 6.2K关注 0票数 23

我从事一个中等规模的C/C++项目,我已经在该项目中应用了Doxygen+Graphviz。它的头图很有用,但它们只显示基于#include的关系。我感兴趣的是找到一种(最好是基于linux的)工具,它不仅可以根据#include分析文件依赖关系,还可以根据实际的符号使用情况分析文件依赖关系。例如,这样的工具不仅显示a.cpp包含b.h,而且显示a.cpp使用b.h包含的c.h中声明的SomeClass。它还可以建议可以修剪的报头包含。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-05-05 03:11:23

我以前用过Include What You Use,效果很好。它使用Clang来解析C++代码,并建议添加转发声明和删除头文件。

一个缺点是它对你的代码的布局做了假设-基本上是Google编码标准。因此,如果您有一个名为SomeClass.cpp的文件,它只会查看SomeFile.h。此外,建议包括使用项目根目录的完整路径(因此使用#include "src/SomeClass.h"而不是#include "SomeClass.h")。最后,我将我的代码改成了这个约定,因为它避免了歧义,但它需要一个提醒,以防您尝试它。

通常,您只需设置CC=include-what-you-use并重新构建即可获得结果-它使用所有的clang机制来解析-I包含参数。有一个python程序使用结果自动更新你的#include行。

编辑:

另一个不那么复杂的工具是deheader,它设置起来更简单,并且可以建议删除#include。它的工作方式是将C++文件复制到临时位置,删除#include并重新编译。如果重新编译工作正常,则可以安全地删除该头文件。它不会做的是建议转发声明或任何花哨的东西,但它可以减少实现文件中不必要的include行。

票数 22
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5888398

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档