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


相关文章
|
11月前
|
SQL 存储 弹性计算
Redis性能高30%,阿里云倚天ECS性能摸底和迁移实践
Redis在倚天ECS环境下与同规格的基于 x86 的 ECS 实例相比,Redis 部署在基于 Yitian 710 的 ECS 上可获得高达 30% 的吞吐量优势。成本方面基于倚天710的G8y实例售价比G7实例低23%,总性价比提高50%;按照相同算法,相对G8a,性价比为1.4倍左右。
|
Linux iOS开发 MacOS
typora下载和破解(仅供学习)
Typora 一款 Markdown 编辑器和阅读器 风格极简 / 多种主题 / 支持 macOS,Windows 及 Linux 实时预览 / 图片与文字 / 代码块 / 数学公式 / 图表 目录大纲 / 文件管理 / 导入与导出 ……
137063 8
typora下载和破解(仅供学习)
|
9月前
|
SQL 存储 分布式计算
AnalyticDB MySQL带你深入浅出SQL优化器原理
SQL优化器是数据库、数据仓库、大数据等相关领域中最复杂的内核模块之一,它是影响查询性能的关键因素。比如大家熟知的开源产品 MySQL、PostgreSQL、Greenplum DB、Hive、Spark、Presto,都有自己的优化器。本文将由浅入深地带读者了解其中技术原理。
|
Web App开发 域名解析 缓存
如何在 Ubuntu 20.04 上安装 Node.js 和 npm
本文我们主要为大家介绍在 Ubuntu 20.04 上安装 Node.js 和 npm 的三种不同的方式。
120503 7
如何在 Ubuntu 20.04 上安装 Node.js 和 npm
|
11月前
|
XML 安全 Linux
C++代码审查工具Cppcheck和TscanCode
C++代码审查工具Cppcheck和TscanCode
|
Linux 数据安全/隐私保护 Windows
更换(Pypi)pip源到国内镜像
pip国内的一些镜像 阿里云 http://mirrors.aliyun.com/pypi/simple/ 中国科技大学 https://pypi.mirrors.
216740 2
|
9月前
|
SQL 存储 Oracle
【SQL应知应会】表分区(四)• MySQL版
【SQL应知应会】表分区(四)• MySQL版
259 0
|
9月前
|
存储 SQL 设计模式
【SQL应知应会】表分区(一)• MySQL版
【SQL应知应会】表分区(一)• MySQL版
251 0
|
9月前
|
算法 编译器 C++
【C++】SonarQube C++ 静态代码检视规则
SonarQube 静态代码检视相关的规则整理
1469 0
|
11月前
|
C++
VS2019 + Qt5.12 配置完成后,无法打开 Qt 源文件解决方案(非常实用)
VS2019 + Qt5.12 配置完成后,无法打开 Qt 源文件解决方案(非常实用)