发现C++源中的问题,即开发大型代码库。

cppclean的Python项目详细描述


Build status

目标

CppCurn试图在C++源中发现发展缓慢的问题 在大型代码库中,例如各种形式的未使用代码。 未使用的代码可以是未使用的函数、方法、数据成员、类型等 包含不必要的指令。不必要的包含可能导致 大量额外的编译增加了编辑编译运行周期。

这是原始cppclean项目的一个分支。原项目所在地 不再包含代码的页位于https://code.google.com/p/cppclean/

功能

cppclean找到以下内容:

  • 具有虚方法、无虚析构函数和无基的类
  • 使用线程时可能出现问题的全局/静态数据
  • 已声明但未定义的函数
  • 不必要的前向类声明
  • 不必要的函数声明
  • 未声明的函数定义
  • 不必要的包含在头文件中
    • 没有直接引用标题中的任何内容
    • 如果类是前向声明的,则不需要头
  • includes中的大小写不一致(foo.hFoo.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以外的任何代码)

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何使用Spring和JSF向客户端授予临时权限   java除了Array/ArrayList之外,还有其他保存矩阵元素的方法吗   java BeanValidation不适用于单选按钮   通过java程序连接到配置单元数据库时出错   java如何使用maven解决二级依赖关系   JfreeChart/Java中带有图例的数据表   合并数组时发生java运行时错误   安全性如何在JavaEE中保护WebSocket端点?   java有没有一种方法可以使用insert方法为树插入值   java编程“静态”的另一种方式:代码可以吗?   java阅读文本文件时如何跳过3行   %04X在C中的含义以及如何在java中编写   java我如何验证一个方法不是仅在一个测试范围内对模拟调用的?   java如何在mac中使用启动appium desktop 1.6.1。球棒   仅匹配最多10位小数的java正则表达式