一文详细解析Google编码规范工具cpplint的下载安装与使用

目录

一、什么是cpplint

二、cpplint能实现的功能

三、cpplint的下载与使用

1、配置python环境

2、安装cpplint

四、cpplint常用命令讲解

1、常用命令查看

2、常用命令详解

3、命令使用方式

五、 cpplint的实用技巧

1、集成cpplint

1.1、修改调用接口.

1.2、直接把cpplint集成到IDE工具里

1.2.1、打开VS,选择工具-外部工具

1.2.2、选择添加,进行配置 

1.2.3、运行检测

 2、修改cpplint实现自定义编码规范


一、什么是cpplint

cpplint是一个用于检查C++代码风格的工具,它可以帮助我们自动化地检查代码,发现潜在的编码问题,确保代码风格的一致性和规范性,提高代码质量。cpplint遵循Google的C++编码规范,通过静态分析代码来检查潜在的问题,如命名规范、格式、内存管理等。

二、cpplint能实现的功能

注意cpplint仅仅只是给出基于google的编码规范建议,需要我们针对建议去一个个修改:

1、检查代码缩进是否正确。
2、检查变量、函数、类命名是否符合规范。
3、检查代码注释是否符合规范。
4、检查代码行长度是否符合规范。
5、检查头文件包含顺序是否正确。        
6、检查代码中潜在的错误和不良习惯。

三、cpplint的下载与使用

下载安装这一块,我看网上不少教程都是让去github仓库下载,但是我尝试了一下发现可以直接pip下载,会更加简单快捷。

由于该工具是基于python脚本,所以必须保证先有python环境

1、配置python环境

去官网下载python文件,一定记得勾选自动添加到环境变量中,

https://www.python.org/downloads/windows/

cmd验证:出现版本号说明环境配置好了,注意是-V(大写)

python -V

 2、安装cpplint

此时直接执行命令:pip install cpplint 

执行安装程序,看到出现Successfully installed cpplint-1.6.1说明安装成功

安装成功后就可以开始使用,具体的使用方法:

2.1、在需要检查的文件夹下cmd打开终端

2、输入命令:

python xxx\cpplint.py  需要的命令  需要检测的文件

这里xxx就是cpplint.py的文件路径,如果觉得麻烦也可以先添加到环境变量里面去

3、此时cpplint就会分析代码并给出结果

四、cpplint常用命令讲解

来看看cpplint.py的常用命令

1、常用命令查看

打开终端执行命令

python xxx\cpplint.py --help

再次提醒这里xxx就是cpplint.py的文件路径,如果觉得麻烦也可以先添加到环境变量里面去

 2、常用命令详解

我们先来看几个常用的:

1、--verbose=#: 这个选项用于设置详细程度。

对于发现的每个问题,cpplint都会给出一个位于区间[1,5]之间的置信度评分,分数越高就代表问题越肯定,可以通过verbose选项控制输出哪些级别,置信度评分为1、2的将不会再输出。通过指定#的值,可以控制输出的详细程度

2、--output=emacs|eclipse|vs7|junit|sed|gsed: 该选项用于指定输出的格式。

可以选择不同的输出格式,如emacs、eclipse、vs7、junit、sed或gsed。 默认是emacs,vs7是Visual Studio输出的兼容格式

3、--filter=-x,+y,...: 用于过滤特定的错误或警告。

通过指定-x来排除特定的错误或+y来包含特定的警告,-表示不输出,+表示输出

4、--counting=total|toplevel|detailed: 该选项用于设置错误计数的方式。

可以选择计算总数、仅计算顶层错误或者详细计数。

示例:

--counting=total

输出:Total errors found: 121 

命令数不少,就不再一一详细列举,大家可自行查阅参考:

序号命令解释
1--root=subdir:指定根目录。可以将指定的子目录作为根目录进行检查。
2--repository=path:指定存储库路径。可以指定代码存储库的路径。
3--linelength=digits:设置每行的字符数限制。通过指定digits的值来设置每行的字符数限制。google cpplint默认是80字符
4--headers=x,y,...:指定头文件。可以指定要检查的头文件。
5--recursive:递归检查子目录。通过添加此选项,可以递归地检查子目录中的文件。
6--exclude=path:排除特定路径。可以指定要排除检查的特定路径。
7--extensions=hpp,cpp,...:指定文件扩展名。可以指定要检查的文件扩展名,如hpp、cpp等。
8--includeorder=default|standardcfirst:指定包含文件的顺序。可以选择默认顺序或将标准C头文件放在首位。
9--quiet:静默模式。通过添加此选项,可以使输出更加简洁,减少冗余信息。        
10--version:显示版本信息。通过添加此选项,可以查看cpplint.py的版本信息。

3、命令使用方式

python xxx\cpplint.py  命令  需要检测的文件 

五、 cpplint的实用技巧

1、集成cpplint

虽然cpplint是谷歌公开 C++编码规范 号称是全球最好,但是也仅仅是给出建议,我们需要对应文件去一个个修改,其实还是非常不方便的,针对这个问题常用的两种解决办法。

1.1、修改调用接口.

直接把错误信息当成注释一次性放入源文件中,然后打开一次源文件,依次修改即可

参考文章:

c++代码静态检查工具——cpplint使用技巧_cpplint 指出来的问题怎么改-CSDN博客

1.2、直接把cpplint集成到IDE工具里

常见的比如Visual Studio、Visual Studio Code等,我们这里以VS为例,可以实现在VS的输出窗口输出编码建议,点击对应建议可跳转到对应代码位置

1.2.1、打开VS,选择工具-外部工具

1.2.2、选择添加,进行配置 

注意这里命令和参数里都需要输入具体的文件路径,

参数里选择output为vs7,默认是emacs,vs7是Visual Studio输出的兼容格式 

1.2.3、运行检测

配置完成后,随便打开某一个cpp文件,点击工具-cpplint.py,即可运行检测

此时我们工具里已经多了cpplint.py,对任意一个文件均可使用该工具,点击对应建议会跳转到对应代码处。

2、修改cpplint实现自定义编码规范 

虽然google的c++编码规范已经很不错了,但是肯定不会完全适用,幸好cpplint还支持规则制定

可以通过修改cpplint的配置文件来自定义检查规则。这样我们就可以根据团队或项目的需求,定制适合自己的代码规范检查规则。进而定制出一套团队的编码规范并长期使用。

当然,这个我还没试过,大家感兴趣可以自己先尝试尝试。


综上,我们就完成了cpplint的下载安装与使用。

都看到这里了,点个赞再走呗朋友~

加油吧,预祝大家变得更强!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/705449.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

传输层协议——TCP协议

TCP协议又叫传输控制协议,TCP/IP协议是计算机通信网络中目前使用最多的协议,同时也融入了生活的方方面面,不管是浏览网页使用的http/https协议、物联网设备使用的MQTT/MQTTS协议与下载文件使用的ftp协议、工业以太网中使用的Modbus TCP协议等…

学习笔记-C++

目录 1、何为常量 2、关键字 3、实型 4、水平制表符 5、string字符串 6、C中的三目运算符 7、随机数种子 8、结构体 9、各的区 10、引用 11、函数默认参数 12、函数占位参数 13、函数重载 14、私有属性 15、让另一个类作为本类的成员 16、声明和实现的文件…

【智能算法】最优捕食算法(OFA)原理及实现

目录 1.背景2.算法原理2.1算法思想2.2算法过程 3.结果展示4.参考文献5.代码获取 1.背景 2017年,GY Zhu受到动物行为生态学理论启发,提出了最优捕食算法(Optimal Foraging Algorithm, OFA)。 2.算法原理 2.1算法思想 OFA灵感来源…

压力测试及常用的压测工具!

前言 压力测试是一种评估系统性能的方法,通过模拟大量用户同时访问系统或执行特定操作,以测试系统的负载能力和稳定性。 压力测试可以帮助发现系统在高负载情况下的性能瓶颈、错误或故障,从而提前进行优化和改进。在进行压力测试时&#xf…

多线程-线程安全

目录 线程安全问题 加锁(synchronized) synchronized 使用方法 synchronized的其他使用方法 synchronized 重要特性(可重入的) 死锁的问题 对 2> 提出问题 对 3> 提出问题 解决死锁 对 2> 进行解答 对4> 进行解答 volatile 关键字 wait 和 notify (重要…

如何管理测试计划?测试计划管理都使用哪些在线工具?YesDev

3.2 测试计划 测试计划Testing plan,描述了要进行的测试活动的范围、方法、资源和进度的文档;是对整个信息系统应用软件组装测试和确认测试。 3.2.1 管理测试计划 在测试计划,可以查看、管理和维护全部测试计划。 测试计划列表 点击【测…

Python送你小花花

快到520了,准备好送上你的爱意了吗? 还记得去年从网上模仿了一篇python使用turtle画的小花花程序,当时还没有转行到程序员行业,刚刚入门学习编程,还在纠结是学习python、Java还是C#的时候。 总会被一些猎奇的内容吸引&…

怎么做私域?先来了解私域运营模式!

现在,很多企业都在做私域,但仍旧有很多人会问:我的私域到底要怎么做? 关于这个问题,不同产品无论在消费频次与客单价上,还是在决策链路的长度和复杂度上,都有巨大的差异,消费者需要…

docker-java 操作docker

部署docker 10分钟学会Docker的安装和使用_docker安装-CSDN博客文章浏览阅读2.5w次,点赞44次,收藏279次。文章目录Docker简介Docker安装Windows安装Linux安装CentOS安装Ubuntu安装最近花了些时间学习docker技术相关,在此做一些总结&#xff0…

Spring Security实现用户认证二:前后端分离时自定义返回Json内容

Spring Security实现用户认证二:前后端分离时自定义返回Json内容 1 前后端分离2 准备工作依赖WebSecurityConfig配置类 2 自定义登录页面2.1 Spring Security的默认登录页面2.2 自定义配置formLogin 3 自定义登录成功处理器4 自定义登录失败处理器5 自定义登出处理器…

org.springframework.jdbc.BadSqlGrammarException

Cause: java.sql.SQLSyntaxErrorException: Table ‘web.emp’ doesn’t exist 产生原因:web表找不到,所以可能数据库配置错误 spring.datasource.urljdbc:mysql://localhost:3306/web02 更改完成后运行成功

slugify,slug格式转换工具

目录 前言 安装 特性 基本功能 生成简单的Slug 处理特殊字符 Unicode支持 高级功能 自定义替换规则 过滤停用词 使用不同的分隔符 处理多种语言 实际应用场景 网站和博客的SEO优化 电子商务平台的产品链接 数据清洗和预处理 总结 前言 在Web开发中,生成易于…