一文详细解析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的下载安装与使用。

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于Spring封装一个websocket工具类使用事件发布进行解耦和管理

最近工作中,需要将原先的Http请求换成WebSocket,故此需要使用到WebSocket与前端交互。故此这边需要研究一下WebSocket到底有何优点和不可替代性: WebSocket优点: WebSocket 协议提供了一种在客户端和服务器之间进行全双工通信的…

高质量英文文献应该如何查找并且阅读?

1. 查找 使用谷歌学术进行论文关键字检索,查找高度匹配的论文。这里我们可以选择年限等信息进行筛选。作为研究者我们一般选择近三年的文章进行阅读。这里谷歌学术需要科学上网,请大家自行解决。 https://scholar.google.com/ 2. 查看期刊等级 我们查…

Go Gin使用JWT实现认证机制

什么是JWT JWT是JSON Web Token的缩写,是一种跨域认证的解决方案。 使用JWT解决什么问题 传统的登录认证的实现,依赖客户端浏览器的cookie和服务器的session,这种实现登录的方式有很大的局限性。 对于部署在单台服务器的应用来说,使用cookie+session登录认证的方案尚…

Apache2.4和PHP8的量子纠缠

Apache不建议你用,PHP建议使用

二进制部署k8s---下篇

一 master02 节点部署 1 先在master01 添加映射master02 对master02进行环境初始化 3 从 master01 节点上拷贝证书文件、各master组件的配置文件和服务管理文件到 master02 节点 scp -r /opt/etcd/ root192.168.11.12:/opt/ scp -r /opt/kubernetes/ root192.168.11.12:/opt…

scanf读取标准输入

内容 scanf函数的原理 多种数据类型混合输入 常用的数据输入/输出函数 程序员可以给程序输入数据,程序处理后会返回一个输出。C语言通过函数库读取标准输入,然后通过对应函数处理将结果打印到屏幕上,printf函数可以将结果打印到屏幕上。下…

中国品牌日 | 紫光展锐以科技创新驱动品牌价值 提升全球竞争力

5月10日至5月14日,以“中国品牌,世界共享;国货潮牌,品筑未来”为主题的第八届中国品牌日活动在上海世博展览馆举行。该活动由国家发展改革委联合国务院国资委、市场监管总局、国家知识产权局共同主办,聚焦新经济新消费…

高通QCS6490开发(一): 广翼智联FV01 AI板卡简介

《高通QCS6490开发》是一系列AIoT应用开发文章,我们将会在系列文章中陆续介绍基于QCS6490平台上的AIoT应用开发,在文章中,我们选择了广翼智联(FAIOT)公司的FV01产品作为开发板,介绍如何从底层的硬件板卡接线…

JETBRAINS IDES 分享一个2099通用试用码!PhpStorm 2024 版 ,支持一键升级

文章目录 废话不多说上教程:(动画教程 图文教程)一、动画教程激活 与 升级(至最新版本) 二、图文教程 (推荐)Stage 1.下载安装 toolbox-app(全家桶管理工具)Stage 2 : 下…

软考一年只能考一次吗?24软考各科目考试时间一览表

软考考试次数: 软考高级【系统分析师】及【系统架构设计师】是一年考两次的。 此外,软考中级【软件设计师】和【网络工程师】也是一年考两次的。 其他科目一年都只开考一次,或者上半年开考,或者下半年开考,具体考试…

PCIE V3.0物理层协议学习笔记

一、说明 PCI-Express(peripheral component interconnect express)是一种高速串行计算机扩展总线标准,它原来的名称为“3GIO”,是由英特尔在2001年提出的,旨在替代旧的PCI,PCI-X和AGP总线标准。 PCIe属于高速串行点对点双通道高…

私活更好用:SpringBoot开源项目!!【送源码】

今天分享一款非常香的SpringBoot大屏开源项目,非常适合接私活用。 这是一款基于SpringBoot代码生成器的快速开发平台!采用前后端分离架构:SpringBoot,Mybatis,Shiro,JWT,Vue&Ant Design。强…

【永洪BI】资源导出

路径:管理系统>资源部署>资源导出 1.页面介绍 选择左侧面板中的管理系统,点击资源部署,选择资源导出,进入资源导出页面。 【名称】导出的 jar 文件的名称,必填项。 【描述】导出的 jar 文件中包含的描述信息…

Maven依赖管理项目构建

Maven依赖管理项目构建工具 目录 文章目录 Maven依赖管理项目构建工具目录一、Maven简介1、为什么学习Maven1.1、Maven是一个依赖管理工具1.2、Maven是一个构建工具1.3、结论 2. Maven介绍3. Maven软件工作原理模型图(了解) 二、Maven安装和配置1. Mave…

TCP(1)

传输层的两大协议是TCP 和 UDP ,他们在传输数据的时候起到了不可替代的作用。那么什么是TCP呢? 首先TCP是一个网络传输协议,这个协议保证了可靠的数据传输。TCP是面向字节流的,全双工的(也就是通信双方互相发消息&…

【Qt】Qt组件设置背景图片

1. 方法1(paintEvent方式) 使用paintEvent()实现 1. .h文件中添加虚函数 protected:void paintEvent(QPaintEvent *event) override;添加虚函数方法: 选中父类,点击鼠标右键点击重构点击 Insert Virtual Funtion of Base Class…

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

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

MaxKB创建本地知识库

上节已经可以通过MaxKB创建简单的问答系统了,这节开始做自己的知识库,实际上就是把一些本地文件上传到大模型中,让大模型学会这些文件内容,你在问他问题的时候可以通过此文件的内容来回答你,尤其是在针对特定场景或者特…

MyBatis-Plus简介

一、简介 官网:https://baomidou.com/ MyBatis-Plus(简称 MP)是一个 MyBatis的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。 二、特性 无侵入:只做增强不做改变,引…

潮玩与游戏的结合点——潮玩宇宙App与链游

本文主要介绍了潮玩宇宙App的开发过程及其链游的开发,探讨了潮玩与游戏的结合点,分析了其市场前景和潜在风险,并提出了相应的建议。 一、潮玩宇宙App的开发背景 随着互联网的普及和人们对娱乐方式的多样化需求,潮玩市场逐渐崛起…