gpt4 book ai didi

c++ - "Deep"头部依赖分析

转载 作者:IT老高 更新时间:2023-10-28 21:42:16 29 4
gpt4 key购买 nike

我从事一个中型 C/C++ 项目,我已经应用了 Doxygen+Graphviz。它的标题图很有用,但它们仅显示基于 #include 的关系。 .我有兴趣找到一个(最好是基于 linux 的)工具来分析文件依赖关系,而不仅仅是基于 #include。 ,但根据实际符号使用情况。例如,这样的工具不仅会显示 a.cpp包括b.h , 但是那个 a.cpp使用 SomeClassc.h 中声明被 b.h 收录.它还可以建议可以修剪的 header 包含。

最佳答案

我用过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 行。

编辑:

另一个不那么复杂但设置更简单并且可以建议删除 #include 的工具是 deheader .它通过将您的 C++ 文件复制到临时位置、删除 #include 并重新编译来工作。如果重新编译有效,那么删除该头文件是安全的。它不会建议前向声明或任何花哨的东西,但它可以减少实现文件中不必要的包含行。

关于c++ - "Deep"头部依赖分析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5888398/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com