Linux平台下QtCreator集成代码静态分析工具clang-tidy和Clazy
Linux平台下QtCreator集成代码静态分析工具clang-tidy和Clazy
原文连接:
https://blog.csdn.net/wsj18808050/article/details/79824619
内容:
QtCreator在前几天发布了4.6.0的版本,增加了两个非常棒的新功能,分别是Clang-Tidy和Clazy
官方的blog链接:
Qt Creator 4.6.0 released
这些功能能够帮助我们更好的检查C++代码,甚至是一键纠正,具体的特性和好处不在累述,网上太多了,有兴趣可以自行搜索。
所有的代码检查配置,因人而异,请根据自己需求,做调整。检查项不是越多越好
代码检查会略微拖慢QtCreator的运行速度,但是我觉得这是值得的
安装QtCreator4.6.0
目前4.6.0的QtCreator还没有整合在任何一个Qt的安装包里,所以需要自行下载,链接如下:
Index of /official_releases/qtcreator/4.6/4.6.0
开启这些功能
打开ClangCodeModel
Windows & Linux:顶部菜单帮助 -> 关于插件 -> 勾选
macOS:顶部菜栏左侧Qt Creator -> 关于插件 -> 勾选
这里写图片描述
设置Clang-Tidy
Windows & Linux:顶部菜单工具 -> 选项 -> C++ -> Code Model
macOS:顶部菜栏左侧Qt Creator -> 偏好设置 -> C++ -> Code Model
默认的Configuration是不能修改的,所以点击右边的“Copy…”按钮复制一个,然后进行自定义,我的配置如下,只开启了4个:
这里写图片描述
现在clang-tidy实现有100+个check,请查看list列表。根据check不同种类(从check名字的前缀就能知道哪一类),分为如下几大类:
boost 检测boost库API使用问题
cert 检测CERT的代码规范
cpp-core-guidelines 检测是否违反cpp-core-guidelines
google 检测是否违反google code style
llvm 检测是否违反llvm code style
readability 检测代码上相关问题,但又不明确属于任何代码规范的
misc 其它一些零碎的check
mpi 检测MPI API问题
modernize 把C++03代码转换成C++11代码,使用C++11新特性
performance 检测performance相关问题
设置Clazy
我调整到了Level 1,如下:
这里写图片描述
设置好后最好是重启一下QtCreator
使用
我随便找了一个以前写的C++代码,一下子就查出一堆问题,如下:
这里写图片描述
其中代码右侧有电灯泡icon的,是可以一键自动修改的,点击电灯泡后可以看到这里有两个建议:
这里写图片描述
一键修复后代码如下:
这里写图片描述
总结
Clang-Tidy和Clazy都是很好的静态代码分析工具,一方面能够规范代码质量,让开发者准守标准,使代码更加严谨。另外一方面,很多问题能够及时的通过代码检查暴露出来,在运行,甚至是编译之前就提示开发者进行修复。小部分情况下还能够在很多地方给出性能优化的建议。总之是一举多得,开发必备良品。
检查项目代码
点击 clang static analyzer
在项目debug页面就能看到输出
相关文章:

JAVA swing初级教程(四)
附加的swing小部件(下) JOptionPane JOptionPane 是在 Swing 中类似“快捷方式”的东西。通常,作为 UI 开发人员,您需要向用户呈现快速信息,让用户了解错误和信息。甚至可能想得到一些快速数据,例如名称或数字。在 Swing 中&#…

Akka源码分析-Remote-发消息
上一篇博客我们介绍了remote模式下Actor的创建,其实与local的创建并没有太大区别,一般情况下还是使用LocalActorRef创建了Actor。那么发消息是否意味着也是相同的呢? 既然actorOf还是委托给了LocalActorRef,那么在本地创建的Actor…

用sed 给文本文件加行号
看例子: [rootlocalhost tmp]# sed test.txt 1 tsttst tsttsttst 2 west gao 3 west abces [rootlocalhost tmp]# sed test.txt | sed N;s/\n/\t/ 1 tsttst tsttsttst 2 west gao 3 west abces [rootlocalhost tmp]# N的解释: N&am…

Qt 编译一直死循环问题
Qt 编译一直死循环问题 有时候Qt编译项目时, 一直编不过,查看一下编译窗口,发现一直在循环 输出如下: C:\soft\Qt5.11\5.11.1\mingw53_32\bin\qmake.exe -o Makefile ..\..\..\..\PalmQtLib\PalmQtLib\PalmQtLib.pro -spec win32-g "…

路由器运行python脚本_写个Python脚本来登录小米路由器
这个脚本写起来难度并不是很大,博主还是一步步的分析下,这样思路会比较清晰,下次遇到类似系统脚本写起来也更快速。好了,一起来分析分析。首先看下小米路由器的登录界面可以看到只需要输入密码即可登录,博主这里为了演…

PHP定时执行任务的实现
2019独角兽企业重金招聘Python工程师标准>>> ignore_user_abort();//关掉浏览器,PHP脚本也可以继续执行. set_time_limit(0);// 通过set_time_limit(0)可以让程序无限制的执行下去 $interval60*30;// 每隔半小时运行 do{//这里是你要执行的代码 sleep($i…

Spring事务管理 与 SpringAOP
1,Spring事务的核心接口 Spring事务管理的实现有许多细节,如果对整个接口框架有个大体了解会非常有利于我们理解事务,下面通过讲解Spring的事务接口来了解Spring实现事务的具体策略。 Spring事务管理涉及的接口的联系如下: 1.…

iso镜像文件烧写到U盘
iso镜像文件烧写到U盘 windows rufus-3.1.exe 百度云盘链接:https://pan.baidu.com/s/16p1O4lXMVTUltTvCm0DnHA 提取码:inzj 文件格式一般选择默认的就行,如果起不来,就换一个, linux 1、dd命令 2、系统自带 usb-creator-gtk工具 命令行输入&#x…

webgl 游戏_30个令人惊叹的WebGL示例和演示
WebGl仍在增长,尽管大多数现代浏览器都支持它,但它也可能需要在旧的浏览器上工作。在本文中,我遇到了很多WebGL的示例和演示,它们可以增进您对这项新技术的理解。因此,请坐下来放松身心,使用最新的浏览器&a…

IE8下的VML显示问题解决方案
最近在维护一个使用VML画曲线的网站,在不同的IE下浏览效果不一样,特别是在IE8下,出现莫名其妙的样式显示问题: 1.曲线不可见!在IE9或IE7下,曲线正常绘制,但是在IE8下,不见坐标轴和曲…

创新工场有哪些失败项目?不要只看着成功
创新工场有哪些失败项目?不要只看着成功 李开复 ,创新工场CEO回答:失败或碰到挑战的项目也不少。这里不点名,不谈细节,但是谈谈碰到什么挑战(有些已经失败,有些还在努力):…

彻底解决Linux索引节点(inode)占用率高的告警
今天邮箱里发现有一封某服务器inode使用率发生告警的邮件 登录到服务器上df -i查看,发现/路径下91%,磁盘使用率却不高,猜测可能是某个目录下的小文件过多,进而造成inode占用率过高,但不清楚根路径下各文件夹里的文件数…

镜像打包工具clonezilla
镜像打包工具clonezilla clonezilla 百度云盘链接:https://pan.baidu.com/s/1LOEPqNE9O0Z4QJmNExlgeA 提取码:zlso 使用方法: 1、将镜像直接烧入U盘 2、U盘启动

python数据分析设置_Python 数据分析系列之如何安装和设置 Python
由于人们用 Python 所做的事情不同,所以没有一个普适的 Python 及其插件包的安装方案,接下来我将详细介绍各个操作系统上 Python 科学计算环境部署。我推荐免费的 Anaconda 安装包,Anaconda 提供 Python 2.7 和 3.6 两个版本,以后…

javamail gmail
http://www.programfan.com/club/showpost.asp?id27614转载于:https://www.cnblogs.com/yqskj/archive/2013/01/11/2855715.html

robots.txt文件的解析及过滤
什么是robots.txt文件? robots.txt(统一小写)是一种存放于网站根目录下的ASCII编码的文本文件,它通常告诉网络搜索引擎的漫游器(又称网络蜘蛛),此网站中的哪些内容是不能被搜索引擎的漫游器获取的…

CF949C Data Center Maintenance(建图+强联通分量)
题意 有 n 个信息中心,第 i 个信息中心要在第 ti 个小时维护,维护期间信息不能被获得。 每个用户的数据都有两份备份,第 i 个用户的数据放在信息中心 c(i,1) 和 c(i,2)。 现在要挑选一个尽量小的信息中心集合,使得将这个集合的维护…

fabric 启动peer_编写 Fabric 链码的一般准则
我相信智能合约(链码)是 Hyperledger Fabric 区块链网络的核心。正确开发链码可以真正发挥一个安全区块链的优势,反之则会带来灾难性的后果。在这篇文章里我不打算探讨 Hyperledger Fabric 链码设计的特定模式的好与坏,而是希望分享我在开发若干 Hyperle…

Qt pro文件下跨平台宏的使用(windows/linux 以及x86 和 arm的区分)
#Qt pro文件下跨平台宏的使用(windows/linux 以及x86 和 arm的区分) 在pro文件中添加: #仅在linux 系统下, 硬件平台无关的内容 unix{HEADERS \SOURCES \Manager.cpp \ }#arm64 的编译宏 contains(QMAKE_HOST.arch, aarch64){…
数论(一)——素数,GCD,LCM
这是一个数论系列:) 一、素数 费马小定理 Theorem: 设 p 是一个素数,a 是一个整数且不是 p 的倍数,那么 很遗憾,费马小定理的逆定理是不成立的。对 a 2,满足的非素数 n 是存在的。 比如 n 341 11 31 对于整数 a,称满足的合数为以 a 为底的…

java自学 day1
1.数据类型 基本数据类型(存放数据本身) 分为数值型(int,double等) 字符型(char)布尔型(boolean) 引用数据类型(存放数据的地址)分为类࿰…

Qt下一行代码就可以使用的稳定易用的日志log类
Qt下一行代码就可以使用的稳定易用的日志类 此日志类是基于Qt 自带的 扩展的一个易用的日志类, 使用的是Qt自带的日志输出形式, 已长期运行在许多实际项目中,稳定可靠,而且跨平台, 在windows和linux 上都能稳定运行 …

apue读书笔记-第十二章
1 可重入,线程安全,异步信号安全之间的区别? 可重入:可以重复进入,不会引起问题(这个概念最宽) 线程安全:被多个线程使用时,不会出问题,也就是可以被多个进程…

取出url中的字符_如何在JavaScript中解析URL:例如主机名,路径名,查询,哈希?...
统一资源定位符(缩写URL)是对Web资源(网页,图像,文件)的引用。URL指定资源位置和检索资源的机制(http,ftp,mailto)。例如,这是此博客文章的URL&am…

SQL Server 2008中的Pivot和UnPivot
SQL Server 2008中SQL应用系列--目录索引 今天给新成员讲解PIVOT 和 UNPIVOT示例,顺便整理了一下其用法。这是自SQL Server 2005起提供的新功能。 官方示例:http://msdn.microsoft.com/zh-cn/library/ms177410%28vsql.105%29.aspx 首先看PIVOT示例&#…

leetcode python 032 识别最长合法括号
# 给定一个只包含字符(和)的字符串,# 找到最长的有效(格式良好)括号子字符串的长度。# 对于“(()”,最长的有效括号子串是“()”,其长…

Android窗口管理服务WindowManagerService计算Activity窗口大小的过程分析
在Android系统中,Activity窗口的大小是由WindowManagerService服务来计算的。WindowManagerService服务会根据屏幕及其装饰区的大小来决定Activity窗口的大小。一个Activity窗口只有知道自己的大小之后,才能对它里面的UI元素进行测量、布局以及绘制。本文…

pcl需要注意的编译问题
pcl需要注意的编译问题 不要在头文件里 using namespace pcl 这会导致编译错误,而且根本分析不到错误在哪 不要在编译选项 里加 -marchnative 这个是让编译器根据你当前的cpu类型进行特定的编译优化, 例如 set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -stdc11 -march…

linux python版本_linux下更新Python版本并修改默认版本
linux下更新Python版本并修改默认版本,有需要的朋友可以参考下。很多情况下拿到的服务器python版本很低,需要自己动手更改默认python版本1、从官网下载python安装包(这个版本可以是任意版本3.3 2.7 2.6等等)wget http://python.org/ftp/python/2.7/Pytho…

基于HTML5的Google水下搜索
这次愚人节的时候,Google推出了水下搜索,当然,这只是一个愚人的小把戏,不过效果非常不错,进入页面后,第一眼是一个水面的效果,水下的鲨鱼在游来游去,然后Google logo和搜索框从水面上…