当前位置: 首页 > news >正文

Qt静态扫描(命令行操作)

Qt静态扫描(命令行操作)

前沿:

静态代码分析是指无需运行被测代码,通过词法分析、语法分析、控制流、数据流分析等技术对程序代码进行扫描,找出代码隐藏的错误和缺陷,如参数不匹配,有歧义的嵌套语句,错误的递归,非法计算,可能出现的空指针引用等等。统计证明,在整个软件开发生命周期中,30% 至 70% 的代码逻辑设计和编码缺陷是可以通过静态代码分析来发现和修复的在C++项目开发过程中,因为其为编译执行语言,语言规则要求较高,开发团队往往要花费大量的时间和精力发现并修改代码缺陷。所以C++ 静态代码分析工具能够帮助开发人员快速、有效的定位代码缺陷并及时纠正这些问题,从而极大地提高软件可靠性并节省开发成本。

静态代码分析工具的优势 :

1. 自动执行静态代码分析,快速定位代码隐藏错误和缺陷。
2. 帮助代码设计人员更专注于分析和解决代码设计缺陷。
3. 减少在代码人工检查上花费的时间,提高软件可靠性并节省开发成本。

扫描工具(clang)

  • clang-tidy

      c/c++ 等语言通用
    
  • clazy-standalone

      clazy 是一个编译器插件,它允许 clang 理解 Qt 语义。您会收到 50 多个与 Qt 相关的编译器警告,范围从不需要的内存分配到 API 的滥用,包括用于自动重构的修复。其实就是clang 只能检测c++的语法, 并不能检测出Qt的一些特有语法, clazy 是在clang 的基础上做了改进, 兼容了Qt 的语法
    

命令行使用:(后期搭建自动化集成使用)

  • 生成compile_commands.json 文件(通过Qt 或者命令都可以)

  • 在这里插入图片描述

  • 在这里插入图片描述

  • 检测文件

      clazy-standalone.exe  -p  .\compile_commands.json  ..\mainwindow.cpp
    
  • 过滤Qt 依赖导致的警告:

      clazy-standalone.exe	-p	 .\compile_commands.json  --ignore-dirs=D:/DeveTool/Qt/		 ..\mainwindow.cpp
    
  • 检测箱展示

      clazy-standalone.exe -p .\compile_commands.json  --ignore-dirs=D:/DeveTool/Qt/ --list-checks ..\mainwindow.cpp
    
  • 检测等级设置:

      clazy-standalone.exe -p .\compile_commands.json  --ignore-dirs=D:/DeveTool/Qt/ --checks=level0,level1,level2 		..\mainwindow.cpp
    
  • 将检测内容输出到yaml 文件:

      clazy-standalone.exe -p .\compile_commands.json  --ignore-dirs=D:/DeveTool/Qt/ --checks=level0,level1,level2  --export-fixes=fixes.yaml ..\mainwindow.cpp
    
  • 自动修改检测的内容:

      clang-apply-replacements.exe ./ 
    

学习视频地址:

Running clazy and clang-tidy from the Command Line

http://www.lryc.cn/news/38449.html

相关文章:

  • 【Hadoop】配置文件
  • python进程池
  • 笔记本固态盘数据丢失怎么办?笔记本固态盘怎么恢复数据
  • 堆的结构与实现
  • Pandas快速入门
  • LVGL学习笔记18 - 表Table
  • 嵌入式安防监控项目——html框架分析和环境信息刷新到网页
  • centos安装docker详细步骤
  • 初识HTML、W3C标准、如何利用IDEA创建HTML项目、HTML基本结构、网页基本信息
  • 为什么程序员喜欢这些键盘?
  • JS中数组去重的几种方法
  • Nginx 配置实例-负载均衡
  • 引出生命周期、生命周期_挂载流程、生命周期_更新流程、生命周期_销毁流程、生命周期_总结——Vue
  • C++ STL学习之【vector的使用】
  • 方差分析与单因素方差分析
  • 分布式链路追踪组件skywalking介绍
  • SUBMIT的用法
  • 网页基本标签、图像标签、链接标签、块内元素和块元素、列表标签、表格标签
  • RxJava操作符变换过程
  • 开放平台订单接口
  • CDN相关知识点
  • 【论文阅读】注意力机制与二维 TSP 问题
  • [深入理解SSD系列 闪存实战2.1.7] NAND FLASH基本编程(写)操作及原理_NAND FLASH Program Operation 源码实现
  • PMP项目管理项目资源管理
  • 程序的编译和链接
  • Win11的两个实用技巧系列之无法联网怎么办、耳机没声音的多种解决办法
  • 【微信小程序】-- 自定义组件 - 数据监听器 - 案例 (三十五)
  • Linux - 第7节 - 进程间通信
  • # 数据完整性算法在shell及python中的实践
  • QEMU启动x86-Linux内核