QtCreator 可以通过 Clang-Tidy 和 CLazy 对你的代码进行静态检查
QtCreator 可以通过 Clang-Tidy 和 CLazy 对你的代码进行静态检查
打开你的工程,点击Analyze -> Clang-Tidy and CLazy
选择你想分析的 cpp, 然后可以点下方 Filter 旁边的 Apply Fixits 按钮修复

这里并不想对 static analyze 展开太多,想具体了解的可以看别人的文章,比如
Qt:在QtCreator中使用Clang-Tidy和Clazy检查C++代码质量 - Jason’s home - CSDN博客blog.csdn.net
今天想通过静态检查来谈谈如何提高 Qt 代码质量
① Use multi-arg instead
【不要使用一连串的 arg().arg().arg() 了】
QString("%1 %2").arg(a).arg(b); // Bad
QString("%1 %2").arg(a, b); // one less temporary heap allocation
② parameter 'list' is passed by value and only copied once; consider moving it to avoid unnecessary copies
【多使用右值引用,可以通过 std::move 将参数转化为右值引用】
ChartWidget::ChartWidget(QWidget *parent,QList<int> list) : QWidget(parent), l(list), delt(1.0)
{
} // Bad
ChartWidget::ChartWidget(QWidget *parent,QList<int> list) : QWidget(parent), l(std::move(list)), delt(1.0)
{
} // performance unnecessary value param
③ the parameter 'table_string' is copied for each invocation but only used as a const reference; consider making it a const reference
【定义函数时,多使用 const &】
void LogData::setupMatrixCam2Veh(QString table_string) // Bad
void LogData::setupMatrixCam2Veh(const QString& table_string)
// performance unnecessary value param
④ constructor does not initialize these fields
【不要忘记初始化类的变量,在头文件的变量旁添加 {} 就可以了】
QToolButton *resetButton; // Bad
QToolButton *resetButton{}; // cppcoreguidelines pro type member init
⑤ use auto when initializing with new to avoid duplicating the type name
【多用auto关键字,尽量使用更现代化的方式来 new】
QHBoxLayout *hl = new QHBoxLayout; // Bad
auto hl = new QHBoxLayout; // modernize use auto
⑥ to be continued...
https://zhuanlan.zhihu.com/p/51791350
QtCreator 可以通过 Clang-Tidy 和 CLazy 对你的代码进行静态检查的更多相关文章
- Objective-C学习备忘录:Clang编译器编译运行Objective-C代码
我们都知道可以通过Apple公司的Xcode工具来学习Objective-C编程语言,但是能不能脱离XCode这个IDE进行Objective-C学习呢?当然是可以的.首先作为计算机科班出身的程序员都 ...
- 静态代码检查工具 cppcheck 的使用
CppCheck是一个C/C++代码缺陷静态检查工具.不同于C/C++编译器及其它分析工具,CppCheck只检查编译器检查不出来的bug,不检查语法错误.所谓静态代码检查就是使用一个工具检查我们 ...
- 静态代码检查工具 cppcheck 的使用(可分别集成到VS和QT Creator里)
CppCheck是一个C/C++代码缺陷静态检查工具.不同于C/C++编译器及其它分析工具,CppCheck只检查编译器检查不出来的bug,不检查语法错误.所谓静态代码检查就是使用一个工具检查我们写的 ...
- iOS App稳定性指标及监测
一个App的稳定性,主要决定于整体的系统架构设计,同时也不可忽略编程的细节,正所谓"千里之堤,溃于蚁穴",一旦考虑不周,看似无关紧要的代码片段可能会带来整体软件系统的崩溃.尤其因为 ...
- 浅谈 block(1) – clang 改写后的 block 结构
这几天为了巩固知识,从 iOS 的各个知识点开始学习,希望自己对每一个知识理解的更加深入的了解.这次来分享一下 block 的学习笔记. block 简介 block 被当做扩展特性而被加入 GCC ...
- clang -rewrite-objc的使用点滴
➠更多技术干货请戳:听云博客 clang -rewrite-objc的作用是把oc代码转写成c/c++代码,我们常用它来窥探OC的一些秘密. 1.最简单的例子 main.m的代码如下: int mai ...
- [Linux]使用Clang实现代码静态分析
1.按下开关Clang sudo apt-get install Clang 2.编写测试程序 memleak.c #include<stdio.h> #include<stdli ...
- 打造基于Clang LibTooling的iOS自动打点系统CLAS(三)
1. 源码变换 第一章我们提到过,CLAS的本质是对源码做一次非常简单的变换(有些文章里称作变形),即Source-Source-Transformation,将打点代码精确地插入到目标函数的首部,保 ...
- 为QtCreator项目模板添加自动中文支持
每用QtCreator创建一个Qt项目时都要为它添加中文支持,比如qt4: 就要在main.cpp里添加 QTextCodec* codec = QTextCodec::codecForName(&q ...
随机推荐
- CM和CDH的安装-准备工作
估计要分开来两篇博客说明,因为截图较多. 1.三个节点cdh1(主节点),cdh2,cdh3 配置就用一张图来说明,因为资源有限 2.版本依赖说明: CDH-5.9.0-1.cdh5.9.0.p0.2 ...
- Nginx(七)-- 反向代理
1.概念 反向代理(Reverse Proxy)方式是指以代理服务器来接受Internet上的连接请求,然后将请求转发给内部网络上的服务器:并将从服务器上得到的结果返回给Internet上请求连接的 ...
- 使用 Selenium
Selenium 简介 Selenium 基本用法 Selenium 查找节点 Selenium 节点交互 Selenium 动作链 Selenium 执行 JavaScript Selenium 获 ...
- hadoop应用开发技术详解
<大 数据技术丛书:Hadoop应用开发技术详解>共12章.第1-2章详细地介绍了Hadoop的生态系统.关键技术以及安装和配置:第3章是 MapReduce的使用入门,让读者了解整个开发 ...
- 微信公众号access_token的获取与存储
如果是一个用户触发,那么只要将access_token放在数据库,文件,nosql就行,取时判断时间是否过期,过期重新去微信获取再放入. 如果是很多用户,多进程并发,特别是分布式那种架构呢?进程A判断 ...
- PHP文件包含漏洞攻防实战
本文对PHP文件包含漏洞的形成.利用技巧及防范进行了详细分析,并通过一个真实案例演示了如何利用PHP文件包含漏洞对目标网站进行渗透测试,最终成功获取到网站的WebShell. PHP是一种非常流行的W ...
- System.Web.Mvc.AJAX缺少程序集引用
今天在构建新项目的时候,出现这个错误,实际上这个出现过很多次了,但是每次都忘记之前怎么解决的,之前博客也不记得写过没有...
- java基础---->数组的基础使用(二)
这里对List(jdk 1.7)列表里面的一些方法做一些简单的分析,以避免有些函数的误用.手写瑶笺被雨淋,模糊点画费探寻,纵然灭却书中字,难灭情人一片心. List中注意的方法 一.Arrays.as ...
- c实现的list
// clist.cpp : 定义控制台应用程序的入口点.// #include "stdafx.h"#include <stdio.h>#include <ma ...
- sencha touch carousel 扩展 CardList 可绑定data/store
扩展代码: /* *扩展carousel *通过data,tpl,store配置数据 */ Ext.define('ux.CardList', { extend: 'Ext.carousel.Caro ...