文章目录[隐藏]
系列文章目录
01.【KEIL-MDK】系列——主题配色
前言
当我们在做一些代码编辑工作时,经常会因为不小心粗心大意而造成一些不容易发现的错误(潜意识认为没问题、编译器编译没报错(一些除了语法等外更其他问题)),至此有专门的 代码检测工具 ,尽可能的为我们指出错误。
本文将介绍如何安装和配置PC-Lint代码检查工具以及如何将PC-Lint与常见的代码编辑软件集成。
一、PC-Lint 是什么?
PC-Lint 是 GIMPEL 公司针对于C/C++开发的一款 静态代码检测工具。
静态代码检查:即代码未运行前,编写好后 进行检查
C/C++语言的语法拥有其它语言所没有的灵活性,这种灵活性带来了代码效率的提升,但相应增加了代码中存在隐患的可能性。
静态代码检查工具 PC-Lint 它能够发现代码中潜在的错误,比如 数组访问越界、内存泄漏、越界、使用未初始化变量等。
一句话概括: PC-Lint是 更加严格规范的编译器
二、在 KEIL-MDK 中集成 PC-Lint 工具
1. 安装 PC-Lint 工具
next next安装即可
注:
这个选项是 创建相关配置 我们不需要(keil-mdk中集成了相关配置文件)
2. 打开 KEIL-MDK 进行简单设置
安装完PC-Lint后在KEIL 直接可以看到设置选项:
1.选择 菜单 TOOLS——> Set up PC-Lint
2.在弹出的界面中 进行相应配置
最后一栏 pc lint 命令参数可以不用填 后需介绍
这样配置完 就可以使用啦 一些细节后续介绍
三、使用 PC-Lint 工具
四、PC-Lint 检查结果分析
一个编译器检测 0错误0警告的工程
在我们这样设置下 pc-lint 会检测出一大堆错误 如图所示
错误很多截取了一部分
可以看到明显的错误说明 红色标出的说没定义 我们添加头文件路径试试
还是会报同样的错误 可能是我工程文件目录路径太长 及存在中文的缘故吧
这个问题我们先不纠结了 可以看出要用这个工具要对 PC-Lint 的检测规则 命令参数 配置规则有一定了解
五、PC-Lint 一些规则介绍
错误号类别
PC-Lint 为大部分错误都分配了一个错误号,编号小于1000的错误号是分配给C 语言的,编号大于1000的错误号则用来说明C++的错误
每个错误号 都有具体含义 具体看查后面列出的文档
PC-Lint 提供了和许多编译器类似的告警级别设置选项-wLevel,它的告警级别分为以下几个级别:
例子:配置只报告致命的错误
可以看到错误信息就剩这些了
屏蔽某类错误信息
例子:-e72 屏蔽错误码72的错误 我这里试啦没用不知道为什么
结果输出指定目录文件
举例:-os(./result.txt) 输出到当前工程目录下
还有很多规则用法 具体的就去查看
具体信息查看 安装路径下的 《 PC-lint.pdf 》
六、PC-Lint 使用举例
检查一些编译器无法检查出的错误
访问越界
//编译器本身编译 0错误 0警告
typedef struct data {
int a;
int b;
} data_t;
typedef struct sum {
data_t s;
int c;
} sum_t;
data_t data1;
data1.a = 1;
data1.b = 2;
sum_t sum1;
sum1.s = data1;
sum1.c = 3;
memset(&sum1, 0, 100);
CP-Lint 检查后结果分析:
"*** LINT: ..\source\main.c(153) Warning 419: Apparent data overrun for function 'memset()', argument 3 (size=100) exceeds argument 1 (size=12) [Reference: file..\source\main.c: line 153] [MISRA 2012 Rule 1.3, required
"警告419:函数“memset()”的参数3(大小=100)明显超出参数1(大小=12)[参考:文件..\source\main。c:第153行][MISRA 2012规则1.3,必填]
还有很多详细说明 看查pc lint文档
PC-Lint 工具下载地址
总结
PC-Lint代码检查工具的作用还有不容小觑的,但是想要用好它,还得去看查PC-Lint文档去学习一些规则。
版权声明:本文为CSDN博主「揪住小尾巴」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_43822014/article/details/122387168
暂无评论