发现C++源中的问题,即开发大型代码库。
cppclean的Python项目详细描述
目标
CppCurn试图在C++源中发现发展缓慢的问题 在大型代码库中,例如各种形式的未使用代码。 未使用的代码可以是未使用的函数、方法、数据成员、类型等 包含不必要的指令。不必要的包含可能导致 大量额外的编译增加了编辑编译运行周期。
这是原始cppclean项目的一个分支。原项目所在地 不再包含代码的页位于https://code.google.com/p/cppclean/。
功能
cppclean找到以下内容:
- 具有虚方法、无虚析构函数和无基的类
- 使用线程时可能出现问题的全局/静态数据
- 已声明但未定义的函数
- 不必要的前向类声明
- 不必要的函数声明
- 未声明的函数定义
- 不必要的包含在头文件中
- 没有直接引用标题中的任何内容
- 如果类是前向声明的,则不需要头
- includes中的大小写不一致(foo.h与Foo.h)
- (计划的)不必要的包括在源文件中
- (计划的)引用未直接包含的头的源文件, 即,依赖于另一个头中的可传递包含的文件
- (计划)未使用的成员(私有、受保护和公共)方法和数据
- (计划的)using namespace std在头文件中
- (计划的)已声明但未定义的方法
ast是抽象语法树,是解析源代码的表示 (https://en.wikipedia.org/wiki/Abstract_syntax_tree)。
安装
$ pip install --upgrade cppclean
运行
$ cppclean <path>
可以指定多个包含路径:
$ cppclean --include-path=directory1 --include-path=directory2 <path>
当前状态
这个解析器对于头文件非常有效,解析了大约99%的google文件 头文件。检查C++源文件结构的任何东西 工作得相当好。函数体不转换为ast, 但留下来作为象征。
非目标
- 解析所有有效的C++源 < >处理无效的C++源,优雅地
- 编译为机器代码(或AST以外的任何代码)