静态分析 Qt Ceator 组织的工程代码

分析

注: 大多数会给出优化建议, 不排除有错误的提示,自己分辨后优化修改。
在这里插入图片描述
静态分析代码工具

Missing reference in range-for with non trivial type (QString) [clazy-range-loop]

for 循环范围中(QString)[clazy range loop]的的范围中缺少引用
在这里插入图片描述
本质 QString imagePath 是个临时变量,每次for都要申请内存再销毁是没有必要的

//改后
void TextureLibrary::generateTexture(const QList<QString> &imagePathList)
{
    if (!m_glTextureList.isEmpty()){
        this->clearTexture();
    }
    for (auto &imagePath : imagePathList){
        this->appendGlTexture(imagePath);
    }
}

Slots named on_foo_bar are error prone [clazy-connect-by-name]

.ui 默认生成的槽就会报,不用管它

Call to virtual method ‘FlowLayout::takeAt’ during destruction bypasses virtual dispatch [clang-analyzer-optin.cplusplus.VirtualCall]

在类的构造和虚构中调用虚函数需要加类名
在这里插入图片描述

//改后
FlowLayout::~FlowLayout()
{
    QLayoutItem *item;
    while ((item = FlowLayout::takeAt(0)))
        delete item;
}

non-POD static (QString) [clazy-non-pod-global-static]

在这里插入图片描述

《Effective C++》
条款02 对于单纯常量,最好以const对象或enum替换#define;对于形似函数的宏,最好改用inline函数替换#define

Qt 中建议 Q_GLOBAL_STATIC , 我个人喜欢写到类的静态成员变量中

class A{
public:
	static QString _path;
};
QString A::_path = "xxx";

Use multi-arg instead [-Wclazy-qstring-arg]

告警: QString(“%1, %2, %3”).arg(QString).arg(QString).arg(int);
消除: QString(“%1, %2, %3”).arg(QString,QString).arg(int);

inclusion of deprecated C++ header ‘assert.h’; consider using ‘cassert’ instead [modernize-deprecated-headers]

告警: #include <assert.h>
消除: #include //可以看出很多标准库都不推荐直接include.h, 而是使用跳转文件Qt本身也是如此

use range-based for loop instead [modernize-loop-convert]

告警: for(int i=0; i<list.size(); ++i){}
消除: for(auto & i : list) 或 foreach(auto & i , list)

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值