一文详细解析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.mzph.cn/web/12893.shtml

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

相关文章

数据结构(C):树的概念和二叉树初见

目录 🍺0.前言 1.树概念及结构 2.认识一棵树 3.树的表示 3.1树在实际中的运用(表示文件系统的目录树结构) 4.二叉树 4.1特殊的二叉树 4.2二叉树的性质 💎5.结束语 🍺0.前言 言C之言,聊C之识&…

卷积模型的剪枝、蒸馏---蒸馏篇--NST特征蒸馏(以deeplabv3+为例)

本文使用NST特征蒸馏实现deeplabv3+模型对剪枝后模型的蒸馏过程; 一、NST特征蒸馏简介 下面是两张叠加了热力图(heat map)的图片,从图中很容易看出这两个神经元具有很强的选择性:左图的神经元对猴子的脸部非常敏感,右侧的神经元对字符非常敏感。这种激活实际上意味着神经…

程序员绩效管理-序言

开辟一个新专栏专门讨论程序员绩效管理。作为软件开发企业,公司的命脉掌握在程序员手中。程序员的绩效管理是个超级难题。小张和老王专栏介绍了两个典型的人员。但是这是两个虚拟的极端人员,大部分开发人员没有那么容易分辨。1个任务,应该1天…

LabVIEW软件开发工程师需要具备哪些能力与素质?

成为一名优秀的LabVIEW软件开发工程师,需要具备以下能力与素质: 技术能力 LabVIEW编程技能: 精通LabVIEW编程,能够熟练使用其图形化编程界面。熟悉LabVIEW中的各种功能模块和工具包,如数据采集(DAQ&#x…

如何配置Nacos的健康检查参数?

在微服务架构中,服务注册与发现以及健康检查是至关重要的组件。Nacos,作为阿里巴巴开源的一个更易于构建云原生应用的动态服务发现、配置和服务管理平台,广泛应用于微服务架构中。在Nacos中,服务的健康检查是一个核心功能&#xf…

【Python】使用MySQL综合案例

数据说明: 一月份各省销售数据:csv格式 二月份各省销售数据:json格式 实现要求:将两个文件中的数据存储到数据库中,并反向从数据库中读取数据存储为json格式文件 本文提供数据 完成案例所需基础 【Python】基础知识(函数与数…

C++ 日志库 log4cpp 编译、压测及其范例代码 [全流程手工实践]

文章目录 一、 log4cpp官网二、下载三、编译1.目录结构如下2.configure 编译3.cmake 编译 四、测试五、压测源码及结果1.运行环境信息2.压测源码3.压测结果 文章内容:包含了对其linux上的完整使用流程,下载、编译、安装、测试用例尝试、以及一份自己写好…

Qt | QTimer 类(计时器)

01、相关知识回顾 Qt C++ | QTimer经验总结Qt | QDateTimeEdit、QDateEdit类和QTimeEdit类02、QTimer 类 1、QTimer 类是 QObejct 的直接子类,该类用于实现计时器,QTimer 类未继承自 QW

IT革新狂潮:引领未来的技术趋势

方向一:技术革新与行业应用 当前现状: 量子计算:量子计算的研究正在加速,尽管目前仍处于初级阶段,但其在药物研发、加密技术和材料科学等领域的应用潜力已被广泛认可。 虚拟现实(VR)与增强现实…

湖南大学OS-2018期末考试(不含解析)

前言 不知道哪里翻出来的一张,看着确实像期末考卷,暂且放一下。或许做过,或许没做过。 总之答案不记得了。做完可以评论区发一下或者找我发出来。 共6道大题。 一、(30%) 1. (6%) 进程间通信的两种方法分别是什么&…

完成所有任务的最少时间 - (LeetCode)

前言 今天也是很无精打采的一天,早上看到这道题,都有点懵逼,开始也不懂如何入手,既然自己搞不定,就顺便测试了一下AI吧,测试了通义千问和文心一言,把题目拿去那里问,可以把解题思路…

DRF 跨域问题

【一】说明 CORS(跨来源资源共享,Cross-Origin Resource Sharing)是一种浏览器技术的规范,旨在解决浏览器同源策略(Same-Origin Policy)的限制,使得Web服务可以从不同的网域(源&…

error Error: certificate has expired

用yarn命令安装依赖的时候遇到报错: 原因:可能是开了服务器代理访问导致ssl安全证书失效 解决方法: 在终端输入 yarn config set "strict-ssl" false -g yarn config set "strict-ssl" false -g 然后再安装依赖就不…

RS2227XN功能和参数介绍及PDF资料

RS2227XN是一款模拟开关/多路复用器 品牌: RUNIC(润石) 封装: MSOP-10 描述: USB2.0高速模拟开关 开关电路: 双刀双掷(DPDT) 通道数: 2 工作电压: 1.8V~5.5V 导通电阻(RonVCC): 10Ω 功能:模拟开关/多路复用器 USB2.0高速模拟开关 工作电压范围:1.8V ~ 5…

Linux运行级别介绍

unlevel 运行级别 cat /etc/inittab 0 - halt (Do NOT set initdefault to this) --关机 1 - Single user mode --单用户(进入单用户不需要帐号与密码) 2 - Multiuser, without NFS (The same as 3, if you do not have networking) 多用户(没有网络) 3…

Java基础篇常见面试问题总结

文章目录 1. 你是怎样理解 OOP面向对象?2. 重载与重写区别3. 接口与抽象类的区别4. 深拷贝与浅拷贝的理解5. 什么是自动拆装箱? int和 Integer有什么区别6. 和 equals()区别7. String类 能被继承吗为什么用 final修饰8. final、finally、finalize区别 1. 你是怎样理…

【C语言】6.C语言VS实用调试技巧(1)

文章目录 1.什么是 bug2.什么是调试(debug)?3.Debug 和 Release4.VS调试快捷键4.1 环境准备4.2 调试快捷键 5.监视和内存观察5.1 监视5.2 内存 1.什么是 bug bug现在一般是指在电脑系统或程序中,隐藏着的一些未被发现的缺陷或问题…

Git使用(3):版本管理

一、查看历史 编写一个java类进行测试 选择Git -> Show Git Log查看日志。 第一次修改推送到远程仓库了,所以有origin(远程仓库地址),第二次修改只提交到本地仓库所以没有。 二、版本回退 1、本地回退 在要回退的版本上右键&a…

XLSX文件删除了怎么找回?8个恢复方法,太实用了!

U盘作为一种便携的存储设备,随之而来的数据丢失问题也让人头疼。尤其是当U盘中的XLSX文件(Excel 2007及以后版本的默认文件格式)被误删除或丢失时,如何高效找回这些数据成为了许多人关注的焦点。 本文将从XLSX文件的特性、U盘格式…

C++set关联式容器

Cset 1. 关联式容器 vector、list、deque、forward_list(C11)等STL容器,其底层为线性序列的数据结构,里面存储的是元素本身,这样的容器被统称为序列式容器。而map、set是一种关联式容器,关联式容器也是用来存储数据的&#xff0…