Cpplint是一个python脚本,Google使用它做为本身的C++代码规范检查工具。python
假设你所在的公司也使用Google C++代码规范,那么你有必要了解下Cpplint。ios
如下说一下Cpplint在windows下的简单使用:windows
1. 从http://google-styleguide.googlecode.com/svn/trunk/cpplint/cpplint.py 下载cpplint.py源代码。并将其存放到D:\soft\Cpplint\cpplint.py中;ide
2. 从https://www.python.org/ 下载python-2.7.10.msi;svn
3. 安装python,并将D:\ProgramFiles\Python27 加入到系统环境变量Path中;工具
4. 写一个測试文件E:/tmp/test.cpp。内容例如如下:post
#include <iostream> using namespace std; int main() { cout<<"hello !"<<endl; return 0; }5. 打开命令提示符,例如如下,会发现一共同拥有9个错误:
6. 依照错误提示,对test.cpp文件进行改动,改动后的文件为test1.cpp。内容例如如下:ui
/* # 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,运行会报错:google
/* # 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文件:spa
_valid_extensions = set([‘cc’, ‘h’, ‘cpp’, ‘cu’, ‘cuh’, ‘hpp’])
(1)、对于发现的每个问题,cpplint都会给出一个位于区间[1, 5]之间的置信度评分,分数越高就表明问题越确定,可以经过verbose选项控制输出哪些级别。例如如下。置信度评分为一、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。