i007.cc

i007.cc

优先队列-降维打击

Google代码规范工具Cpplint的使用

Google代码规范工具Cpplint的使用

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,内容如下:

[cpp] view plain copy

  1. #include <iostream>
  2. using namespace std;
  3. int main()
  4. {
  5.     cout<<“hello !”<<endl;
  6.     return 0;
  7. }

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

6.      按照错误提示,对test.cpp文件进行修改,修改后的文件为test1.cpp,内容如下:

[cpp] view plain copy

  1. /*
  2. # Copyright (c) 2015 Bingchun Feng. All rights reserved.
  3. */
  4. #include <iostream>
  5. int main() {
  6.     std::cout << “hello !” << std::endl;
  7.     return 0;
  8. }

7.      执行,如下,发现所有错误全部清理掉了:

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

[cpp] view plain copy

  1. /*
  2. # Copyright (c) 2015 Bingchun Feng. All rights reserved.
  3. */
  4. #ifndef CPP_LINT_TEST_HPP_
  5. #define CPP_LINT_TEST_HPP_
  6. class A {
  7.  public:
  8.     int add(int a, int b);
  9.     int mul(int a, int b);
  10.  private:
  11.     int m_a, m_b;
  12. }
  13. #endif  // CPP_LINT_TEST_HPP_

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

[python] view plain copy

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

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

[plain] view plain copy

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

(2)、如果代码中有些部分不希望被检查,或者认为是cpplint产生的误报,只需要在相应代码行尾添加注释”// NOLINT”即可,cpplint就会跳过这些行,如:

[cpp] view plain copy

  1. return 0; // NOLINT

(3)、如果需要让cpplint支持其它文件扩展,又不想修改源码,则可以通过extensions选项如:

[plain] view plain copy

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

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

[plain] view plain copy

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

(5)、可以通过filter选项,按照自己的需要过滤掉特定的警告,”-FOO”表示不输出带有FOO的警告,”+FOO”表示输出带有FOO的警告,如:

[plain] view plain copy

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

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

[plain] view plain copy

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

(7)、可以通过linelength选项,来控制每行的最长长度,默认是80字符,如果允许每行最长长度为120,则为:

[plain] view plain copy

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

选项的更详细说明信息请参考cpplint.py。 

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/fengbingchun/article/details/47341765
个人分类: C/C++/C++11

发表回复