CppCheck的使用

简介: CppCheck的使用

一、 实验要求

明白CppCheck的配置及原理,并使用CppCheck进行代码缺陷的检查,进行总结。

1

二、 CppCheck的原理介绍

1、Cppcheck先是分析拆解代码,将每个有效字符作为一个token(token是抽象代码中所有字符的

类,包含字符的字符串,类型等),提供tokenlist,规则实现者通过匹配需要的字符找到感兴趣的代

码,然后通过计算查找bug注意点:其中Cppcheck会做预处理和简化代码的操作,比如include头文件,

展开宏,在每一个token直接用一个空格分隔等。


2. 开发中使用主要的类有:

(1)Tokenizer类: 代码token化, 计划代码

(2)SymbolDatabase类:符号数据库,生成和存储各种符号:scope,function, variable等

(3)Scope类: 各种代码block。最常用的有functionScopes, classAndStructScopes等

(4)Token类: 里面有str(), next(), previous(), tokAt(), link(),Match()等常用函数

(5)Variable类:getTypeString()  

(6)Function类:可以找到实现的scope

(7)Value类: token可以通过getValue()得到可能的值


3. 作为编译器的一种补充检查,cppcheck对产品的源代码执行严格的逻辑检查。 执行的检查包括:

(1)自动变量检查

(2)数组的边界检查

(3)class类检查

(4)过期的函数,废弃函数调用检查

(5)异常内存使用,释放检查

(6)内存泄漏检查,主要是通过内存引用指针

(7)操作系统资源释放检查,中断,文件描述符等

(8)异常STL 函数使用检查

(9)代码格式错误,以及性能因素检查



三、 CppCheck的使用

1. 自动变量检查

微信图片_20230701154227.png



2. 数组的边界检查

微信图片_20230701154225.png



3. Class类检查

微信图片_20230701154222.png



4. 过期的函数,废弃函数调用检查


微信图片_20230701154219.png


5. 异常内存使用,释放检查


微信图片_20230701154203.png


6. 内存泄漏检查


微信图片_20230701154159.png


7. 操作系统资源释放检查

微信图片_20230701154145.png


8. 异常STL函数使用检查

微信图片_20230701154013.png


9.代码格式错误检查


微信图片_20230701153957.png


四、 心得体会

经过一段时间的学习,对CppCheck进行了了解和学习,并且使用它进行了各种对应的测试,在这个过程中,自己的一些方面有了进步,比如软件的安装配置,软件的使用,代码的编写等,每一个不同的实验都能带来不同的成长,感谢老师在课堂上大量的提问的方式,同样使我学到了很多,对软件测试有了一些自己的想法,并且通过紧张的提问,很容易的就记住了这门课的知识,对做实验有所帮助。


相关文章
|
XML 安全 IDE
【C/C++ 实用工具】CppCheck:静态代码检测工具,让你的代码更安全
【C/C++ 实用工具】CppCheck:静态代码检测工具,让你的代码更安全
3696 2
|
IDE Linux 开发工具
内存泄漏检测工具Valgrind:C++代码问题检测的利器(一)
内存泄漏检测工具Valgrind:C++代码问题检测的利器
3481 0
|
5月前
|
机器学习/深度学习 数据可视化 数据挖掘
香烟品牌识别和规格识别设计思路
基于YOLOv8实现香烟品牌与规格(条装/单盒装)识别,采用“品牌+规格”组合为60类的复合类别方案,结合充足标注数据(每类300-500张)、数据增强与反例优化,进行端到端联合训练,提升模型在复杂场景下的检测与分类精度。
|
Ubuntu Linux 虚拟化
LinuxUbuntu安装VMware tools Segmentation fault (core dumped)怎么解决
更新操作系统和内核:使用apt-get或apt命令更新你的Ubuntu操作系统和内核。运行以下命令更新软件包:
2271 0
|
Linux 开发工具 Android开发
FFmpeg开发笔记(六十)使用国产的ijkplayer播放器观看网络视频
ijkplayer是由Bilibili基于FFmpeg3.4研发并开源的播放器,适用于Android和iOS,支持本地视频及网络流媒体播放。本文详细介绍如何在新版Android Studio中导入并使用ijkplayer库,包括Gradle版本及配置更新、导入编译好的so文件以及添加直播链接播放代码等步骤,帮助开发者顺利进行App调试与开发。更多FFmpeg开发知识可参考《FFmpeg开发实战:从零基础到短视频上线》。
1525 2
FFmpeg开发笔记(六十)使用国产的ijkplayer播放器观看网络视频
|
Linux 应用服务中间件 nginx
Linux下权限设置之suid、sgid、sticky
Linux下权限设置之suid、sgid、sticky
|
调度
【浅入浅出】Qt多线程机制解析:提升程序响应性与并发处理能力
在学习QT线程的时候我们首先要知道的是QT的主线程,也叫GUI线程,意如其名,也就是我们程序的最主要的一个线程,主要负责初始化界面并监听事件循环,并根据事件处理做出界面上的反馈。但是当我们只限于在一个主线程上书写逻辑时碰到了需要一直等待的事件该怎么办?它的加载必定会带着主界面的卡顿,这时候我们就要去使用多线程。
525 6
|
机器学习/深度学习 编解码 自然语言处理
视频字幕生成案例
8月更文挑战第3天
991 0
|
XML Java Android开发
Android控件之基础控件——进度条类的view——TextView、Checkbox复选控件、RadioButton单选控件、ToggleButton开关、SeekBar拖动条、menu、弹窗
Android控件之基础控件——进度条类的view——TextView、Checkbox复选控件、RadioButton单选控件、ToggleButton开关、SeekBar拖动条、menu、弹窗
1350 1
|
XML 算法 C语言
【C/C++ 静态代码检查工具 Cppcheck 】Cppcheck 检测器列表和检查规则大全一览
【C/C++ 静态代码检查工具 Cppcheck 】Cppcheck 检测器列表和检查规则大全一览
2157 0