Cpplint是一个python脚本,Google使用它作为自己的C++代码规范检查工具。

假设你所在的公司也使用Google C++代码规范,那么你有必要了解下Cpplint。

以下说一下Cpplint在windows下的简单使用:

1.      从http://google-styleguide.googlecode.com/svn/trunk/cpplint/cpplint.py  下载cpplint.py源代码。并将其存放到D:\soft\Cpplint\cpplint.py中;

2.      从https://www.python.org/ 下载python-2.7.10.msi;

3.      安装python,并将D:\ProgramFiles\Python27 加入到系统环境变量Path中;

4.      写一个測试文件E:/tmp/test.cpp。内容例如以下:

#include <iostream>

using namespace std;

int main()
{
cout<<"hello !"<<endl; return 0;
}

5.      打开命令提示符,例如以下,会发现一共同拥有9个错误:

6.      依照错误提示,对test.cpp文件进行改动,改动后的文件为test1.cpp。内容例如以下:

/*
# Copyright (c) 2015 Bingchun Feng. All rights reserved.
*/ #include <iostream> int main() {
std::cout << "hello !" << std::endl; return 0;
}

7.      运行。例如以下。发现所有错误所有清理掉了:

8.      cpplint.py默认支持的文件格式包含(见cpplint.py文件第502行):.cc、.h、.cpp、.cu、.cuh,默认不支持.hpp文件,如test3.hpp,运行会报错:

/*
# Copyright (c) 2015 Bingchun Feng. All rights reserved.
*/
#ifndef CPP_LINT_TEST_HPP_
#define CPP_LINT_TEST_HPP_ class A {
public:
int add(int a, int b);
int mul(int a, int b); private:
int m_a, m_b;
} #endif // CPP_LINT_TEST_HPP_

9.      将cpplint.py文件第502行后改为以下就可以支持.hpp文件:

_valid_extensions = set([‘cc’, ‘h’, ‘cpp’, ‘cu’, ‘cuh’, ‘hpp’])

10.  其他相关选项说明:

(1)、对于发现的每一个问题,cpplint都会给出一个位于区间[1, 5]之间的置信度评分,分数越高就代表问题越肯定,能够通过verbose选项控制输出哪些级别。例如以下。置信度评分为1、2的将不会再输出:

E:\tmp>python D:/soft/Cpplint/cpplint.py --verbose=3 test.cpp

(2)、假设代码中有些部分不希望被检查,或者觉得是cpplint产生的误报。仅仅须要在对应代码行尾加入凝视”// NOLINT”就可以,cpplint就会跳过这些行。如:

return 0; // NOLINT

(3)、假设须要让cpplint支持其他文件扩展,又不想改动源代码。则能够通过extensions选项如:

E:\tmp>python D:/soft/Cpplint/cpplint.py --extensions=hpp test.cpp

(4)、能够指定错误信息输出格式,支持两种格式,默认是emacs格式。还支持Visual Studio格式,能够通过output选项指定。如:

E:\tmp>python D:/soft/Cpplint/cpplint.py --output test.cpp 2>log.txt

(5)、能够通过filter选项。依照自己的须要过滤掉特定的警告,”-FOO”表示不输出带有FOO的警告,”+FOO”表示输出带有FOO的警告,如:

E:\tmp>python D:/soft/Cpplint/cpplint.py --filter=-whitespace/tab,+whitespace/ending_newline  test.cpp

(6)、能够通过counting选项。来显示每种Category有多少个错误,如:

 E:\tmp>pythonD:/soft/Cpplint/cpplint.py --counting=detailed test.cpp

(7)、能够通过linelength选项。来控制每行的最长长度,默认是80字符。假设同意每行最长长度为120,则为:

E:\tmp>python D:/soft/Cpplint/cpplint.py --linelength=120 test.cpp

选项的更具体说明信息请參考cpplint.py。

Google代码规范工具Cpplint的使用的更多相关文章

  1. 好代码是管出来的——.Net中的代码规范工具及使用

    上一篇文章介绍了编码标准中一些常用的工具,本篇就具体来介绍如何使用它们来完成代码管理. 本文主要内容有: Roslyn简介 开发基于Roslyn的代码分析器 常用的基于Roslyn的代码分析器 在.N ...

  2. Net中的代码规范工具及使用

    Net中的代码规范工具及使用 https://www.cnblogs.com/selimsong/p/9209254.html 上一篇文章介绍了编码标准中一些常用的工具,本篇就具体来介绍如何使用它们来 ...

  3. Eclipse代码规范工具-Checkstyle安装和使用

    您首先可以参考这里:http://www.ibm.com/developerworks/cn/java/j-ap01117/index.html 那么首先您应该下载CheStyle: http://s ...

  4. c/c++编码规范(3)--google代码规范检测工具cpplint.py

    cpplint.py是来自google开源项目风格错误检测工具.它是一个python脚本,和google开源项目风格指南一同发布.下载地址:https://github.com/google/styl ...

  5. Google代码规范

    文件名 文件名须全部小写,下划线(_)和短横线(-) 源文件采用 UTF-8 编码. 非空代码块:K&R 风格 左花括号不另起新行 左花括号后紧跟换行 右花括号前需要换行 如果右花括号结束了语 ...

  6. 阅读Google的C++代码规范有感

    李开复曾在微博上说过,Google的C++代码规范是全球最好的一份C++代码规范,没有之一.最近花了点时间看了下这份代码规范,收获确实很大,在编程过程中一些乱七八糟的坏习惯也该改一改了.最新的英文版见 ...

  7. [转]Google的C++代码规范

    转自:https://blog.csdn.net/freeking101/article/details/78930381 英文版:http://google-styleguide.googlecod ...

  8. Google的C++代码规范

      英文版:http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml 中文版:http://zh-google-styleguide ...

  9. vim php代码规范

    vim 代码规范工具php-cs-fixer.phar (參考https://github.com/FriendsOfPHP/PHP-CS-Fixer) INSTALL curl http://get ...

随机推荐

  1. 表单标签 fieldset legent

    书写表单时可以提供简单样式的标签 <fieldset> <legent></legent> <input type="text" > ...

  2. Linux学习总结(17)——Linux新手必须学会的12个命令

    今天的用户可以根据自己的意愿选择是否使用作为Linux象征的命令行,确切的证明了Linux已经有了很大的发展.现在很多Linux发行版的图形用户界面已经非常强大,不再需要命令行. 但是命令行在Linu ...

  3. Java 学习(10):java 异常处理

    java 异常处理 异常发生的原因有很多,通常包含以下几大类: 用户输入了非法数据. 要打开的文件不存在. 网络通信时连接中断,或者JVM内存溢出. 三种类型的异常: 检查性异常: 最具代表的检查性异 ...

  4. MySQL 创建表时,设置时间字段自己主动插入当前时间

    MySQL 创建表时,设置时间字段自己主动插入当前时间 DROP TABLE IF EXISTS `CONTENT`; CREATE TABLE `CONTENT` ( `ID` char(20) N ...

  5. [Angular + Unit Testing] Mock HTTP Requests made with Angular’s HttpClient in Unit Tests

    In a proper unit test we want to isolate external dependencies as much as possible to guarantee a re ...

  6. HDOJ 2189 悼念512汶川大地震遇难同胞——来生一起走 【母函数】

    题意:非常清楚不解释. 策略:如题. 就是个简单的母函数的改变. 这道题做了好久,才明确是那有毛病,还是理解的不够深刻. AC代码: #include<stdio.h> #include& ...

  7. JavaScript进阶练习

    题目:编写如下页面 当用户点击”统计“按钮时,在窗口中弹出文本框中出现次数最多的字符并显示其出现的次数 点击统计按钮时效果如图所示: 实现代码: <!DOCTYPE html> <h ...

  8. 当一个元素被浮动后,它的display是否会被默认指定为block?

    css 浮动后的元素不论是什么display的都默认是block就是设置inline也是block IE/6出现双边框的原因 出现双边距的条件是当浮动元素的浮动方向和margin的方向一致时才会出现. ...

  9. HDU 2120 Ice_cream's world I【并查集】

    解题思路:给出n对点的关系,求构成多少个环,如果对于点x和点y,它们本身就有一堵墙,即为它们本身就相连,如果find(x)=find(y),说明它们的根节点相同,它们之间肯定有直接或间接的相连,即形成 ...

  10. tigergao

    互联网从业 6 年.前码农&DBA,现运维&电商创业者,也在做自媒体.终生学习者. 运营微信公众号:高哥咋么看 感兴趣的朋友们可以订阅.