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。