如何使用cppclean查找未使用的标头

时间:2014-12-08 01:58:16

标签: c++ header-files

我正在寻找一种工具来帮助检测大型c ++代码库中不必要的头包含。关于这个主题的其他stackoverflow问题都建议cppclean。所以我已经安装了cppclean并且我试图使用它,但即使是在一些错误的例子上它也没有给出任何结果。

例如,这就是我试图清理的内容。源文件:

// foo.cpp
#include "bar.h"

void main() { };

头文件:

// bar.h
class bar {
};

我跑:

cppclean foo.cpp

但它没有打印任何内容并返回0。

我做错了吗?有关如何使用此工具的任何教程吗?

3 个答案:

答案 0 :(得分:0)

cpp 头文件所在的工作目录中运行cppclean .。 您需要向Cppclean提供所有源代码,以便它可以解析它们并查找问题。

要包含多个目录,请参阅JavaScript's arithmetic rules

答案 1 :(得分:0)

cppclean 同时更新(2019 年 6 月),现在包括:

  • 具有虚方法、没有虚析构函数和基类的类

  • 使用线程时潜在问题的全局/静态数据

  • 已声明但未定义的函数

  • 不必要的前向类声明

  • 不必要的函数声明

  • 未声明的函数定义

  • 头文件中不必要的#includes

    • 没有直接参考 如果类是 改为向前声明
    • #includes 中的大小写不一致(foo.h 与 Foo.h)

仍然不可用:

  • (计划中)源文件中不必要的#includes

  • (计划中)不直接#included 引用头文件的源文件,即文件 依赖于另一个标头的传递 #include

  • (计划中)未使用的成员(私有、受保护和公共)方法和数据

  • (计划中)在头文件中使用命名空间 std

  • (计划中的)方法 已声明但未定义

总结:

cppclean .

现在应该做还是另一种选择:

cppclean <path>

Further Information and Source

答案 2 :(得分:-4)

The cppclean documentation明确指出,就在首页上,&#34;功能&#34;:

  
      
  • 查找并打印C ++语言结构:类,方法,函数等。
  •   
  • 使用虚方法查找类,没有虚拟析构函数,也没有基础
  •   
  • 查找使用线程时潜在问题的全局/静态数据
  •   
  • 不必要的前瞻性声明
  •   
  • 不必要的功能声明
  •   
  • 未声明的功能定义
  •   
  • (已计划)查找不必要的标头文件#included   
        
    • 无法直接引用标题中的任何内容
    •   
    • 如果要转发类
    • ,则不需要标头   
  •   
  • (计划)不直接引用标题的源文件#included,即依赖于&gt;的文件。 - 来自另一个标题的传递#include
  •   
  • (计划)未使用的成员(私有,受保护和公共)方法和数据
  •   
  • (计划)将AST存储在SQL数据库中,以便查询关系
  •   

&#34;计划&#34;意味着它是他们计划在未来添加的功能。它还没有。