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。内容例如以下:
#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的使用的更多相关文章
- 好代码是管出来的——.Net中的代码规范工具及使用
上一篇文章介绍了编码标准中一些常用的工具,本篇就具体来介绍如何使用它们来完成代码管理. 本文主要内容有: Roslyn简介 开发基于Roslyn的代码分析器 常用的基于Roslyn的代码分析器 在.N ...
- Net中的代码规范工具及使用
Net中的代码规范工具及使用 https://www.cnblogs.com/selimsong/p/9209254.html 上一篇文章介绍了编码标准中一些常用的工具,本篇就具体来介绍如何使用它们来 ...
- Eclipse代码规范工具-Checkstyle安装和使用
您首先可以参考这里:http://www.ibm.com/developerworks/cn/java/j-ap01117/index.html 那么首先您应该下载CheStyle: http://s ...
- c/c++编码规范(3)--google代码规范检测工具cpplint.py
cpplint.py是来自google开源项目风格错误检测工具.它是一个python脚本,和google开源项目风格指南一同发布.下载地址:https://github.com/google/styl ...
- Google代码规范
文件名 文件名须全部小写,下划线(_)和短横线(-) 源文件采用 UTF-8 编码. 非空代码块:K&R 风格 左花括号不另起新行 左花括号后紧跟换行 右花括号前需要换行 如果右花括号结束了语 ...
- 阅读Google的C++代码规范有感
李开复曾在微博上说过,Google的C++代码规范是全球最好的一份C++代码规范,没有之一.最近花了点时间看了下这份代码规范,收获确实很大,在编程过程中一些乱七八糟的坏习惯也该改一改了.最新的英文版见 ...
- [转]Google的C++代码规范
转自:https://blog.csdn.net/freeking101/article/details/78930381 英文版:http://google-styleguide.googlecod ...
- Google的C++代码规范
英文版:http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml 中文版:http://zh-google-styleguide ...
- vim php代码规范
vim 代码规范工具php-cs-fixer.phar (參考https://github.com/FriendsOfPHP/PHP-CS-Fixer) INSTALL curl http://get ...
随机推荐
- 微信支付报ip错,怀疑是因为不能正确获取$_Server[addr])ip导致的
报如下错误,应该是本地测试环境不能正确获取客户ip导致的错误 果然 放到服务器上在测试就好了
- MyBatis学习总结(4)——解决字段名与实体类属性名不相同的冲突
一.准备演示需要使用的表和数据 CREATE TABLE orders( order_id INT PRIMARY KEY AUTO_INCREMENT, order_no VARCHAR(20), ...
- 2 怎样解析XML文件或字符串
1 引用XML文件 2 使用XMLReader解析文本字符串 3 使用XMLReader方法读取XML数据 详细代码实现例如以下: //初始化一个XML字符串 String xmlString = @ ...
- bzoj3295: [Cqoi2011]动态逆序对(cdq分治+树状数组)
3295: [Cqoi2011]动态逆序对 题目:传送门 题解: 刚学完cdq分治,想起来之前有一道是树套树的题目可以用cdq分治来做...尝试一波 还是太弱了...想到了要做两次cdq...然后伏地 ...
- 服务器共享session的方式
服务器共享session的方式 简介 1. 基于NFS的Session共享 NFS是Net FileSystem的简称,最早由Sun公司为解决Unix网络主机间的目录共享而研发.这个方案实现最为简单, ...
- javascript系列-class10.DOM(下)
1.node节点(更详细的获取(设置)页面中所有的内容) 根据 W3C 的 HTML DOM 标准,HTML 文档中的所有内容都是节点: 元素是节点的别称,节点包含元素当然节点还有 ...
- systemd服务管理---systemctl命令列出所有服务
1.列出系统所有服务 #systemctl list-units --all --type=service
- [ZJOJ2014] 力 解题报告 (FFT)
题目链接: https://www.luogu.org/problemnew/show/P3338 题目: 给出$n$个数$q_i$,令$F_j=\sum_{i<j}\frac{q_iq_j}{ ...
- C#调用GPG命令进行加密解密文件操作
public void GPG() { string password = "1234567890"; System.Diagnostics.ProcessStartInfo ps ...
- web语义化理解
含义: Web语义化是指使用语义恰当的标签,使页面有良好的结构,页面元素有含义,能够让人和搜索引擎都容易理解. 为什么要web语义化?如今互联网都到了web2.0的时代了,HTML语言在不断的进化并发 ...