我正在寻找一种工具来帮助检测大型c ++代码库中不必要的头包含。关于这个主题的其他stackoverflow问题都建议cppclean。所以我已经安装了cppclean并且我试图使用它,但即使是在一些错误的例子上它也没有给出任何结果。
例如,这就是我试图清理的内容。源文件:
// foo.cpp
#include "bar.h"
void main() { };
头文件:
// bar.h
class bar {
};
我跑:
cppclean foo.cpp
但它没有打印任何内容并返回0。
我做错了吗?有关如何使用此工具的任何教程吗?
答案 0 :(得分:0)
在 cpp 和头文件所在的工作目录中运行cppclean .
。
您需要向Cppclean提供所有源代码,以便它可以解析它们并查找问题。
要包含多个目录,请参阅JavaScript's arithmetic rules。
答案 1 :(得分:0)
cppclean 同时更新(2019 年 6 月),现在包括:
具有虚方法、没有虚析构函数和基类的类
使用线程时潜在问题的全局/静态数据
已声明但未定义的函数
不必要的前向类声明
不必要的函数声明
未声明的函数定义
头文件中不必要的#includes
仍然不可用:
(计划中)源文件中不必要的#includes
(计划中)不直接#included 引用头文件的源文件,即文件 依赖于另一个标头的传递 #include
(计划中)未使用的成员(私有、受保护和公共)方法和数据
(计划中)在头文件中使用命名空间 std
(计划中的)方法 已声明但未定义
总结:
cppclean .
现在应该做还是另一种选择:
cppclean <path>
答案 2 :(得分:-4)
The cppclean documentation明确指出,就在首页上,&#34;功能&#34;:
- 查找并打印C ++语言结构:类,方法,函数等。
- 使用虚方法查找类,没有虚拟析构函数,也没有基础
- 查找使用线程时潜在问题的全局/静态数据
- 不必要的前瞻性声明
- 不必要的功能声明
- 未声明的功能定义
- (已计划)查找不必要的标头文件#included
- 无法直接引用标题中的任何内容
- 如果要转发类
,则不需要标头- (计划)不直接引用标题的源文件#included,即依赖于&gt;的文件。 - 来自另一个标题的传递#include
- (计划)未使用的成员(私有,受保护和公共)方法和数据
- (计划)将AST存储在SQL数据库中,以便查询关系
&#34;计划&#34;意味着它是他们计划在未来添加的功能。它还没有。