keil 屏蔽代码 反而多_PCLint代码检查工具在KEIL5中使用

论坛 期权论坛 编程之家     
选择匿名的用户   2021-6-2 20:05   1616   0
0e19c6a81811f05cbee38922a08816a0.gif

点击上方蓝字关注我哦~

01

前言

大家平时调试程序的时候会遇到一些异常现象,花了大量的时间Debug发现是访问越界,变量未初始化等写代码时大意造成的。如果我们严格遵循代码规范,能尽可能的避免这类情况发生,实际情况往往是虽然大家都知道优秀的代码规范是怎样的,但在具体写代码的过程中,却执行的差强人意,很多情况是认识上不够重视,造成后续调试的麻烦,今天就来介绍专用的代码检查工具PC-LINT和PC-LINT在KEIL5中的使用。尽可能的减少此类问题。

02

PC-LINT介绍

C语言的语法拥有其它语言所没有的灵活性,这种灵活性带来了代码效率的提升,但相应也使得代码编写具有很大的随意性,另外C编译器不进行 强制类型检查,也不做任何边界检查,这就增加了代码中存在隐患的可能性。如果能够在代码提交测试之前发现这些潜在的错误,就能够极大地减轻测试人员的压力,减少软件项目的除错成本,可是传统的C编译器对此已经无能为力,这个任务只能由专用的代码检查工具完成。PC-Lint偏重 于代码的逻辑分析一种代码检查工具,它能够发现代码中潜在的错误,比如数组访问越界、内存泄漏、使用未初始化变量等。

PC-Lint是GIMPEL SOFTWARE公司开发的C/C++软件代码静态分析工具,它的全称是PC-Lint/FlexeLint for C/C++,PC-Lint能够在Windows、MS-DOS和OS/2平台上使用,以二进制可执行文件的形式发布,而FlexeLint 运行于其它平台,以源代码的形式发布。PC-lint在全球拥有广泛的客户群,许多大型的软件开发组织都把PC-Lint检查作为代码走查的第一道工序。PC-Lint不仅能够对程序进行全局分析,识别没有被适当检验的数组下标,报告未被初始化的变量,警告使用空指针以及冗余的代码,还能够有效地帮你提出 许多程序在空间利用、运行效率上的改进点。

PC-lint的代码检查功能

PC-Lint能够检查出很多语法错误和语法上正确的逻辑错误,PC-Lint为大部分错误消息都分配了一个错误号,编号小于1000的错误号是分配给C 语言的,编号大于1000的错误号则用来说明C++的错误消息。下表列出了PC-Lint告警消息的详细分类。

969e5ec7d0fc1ad3b2b81a9239206afc.png

以C语言为例,其中的编号1-199指的是一般编译器也会产生的语法错误;编号200-299是PC-Lint程序 内部的错误,这类错误不会出现在代码中的;编号300-399指的是由于内存限制等导致的系统致命错误。编号400-999中出现的提示信息,是根据隐藏 代码问题的可能性进行分类的:其中编号400-699指的是被检查代码中很可能存在问题而产生的告警信息;编号700-899中出现的信息,产生错误的可 能性相比告警信息来说级别要低,但仍然可能是因为代码问题导致的问题。编号900-999是可选信息,他们不会被默认检查,除非你在选项中指定检查他们。

03

Keil中如何配置pc-lint

下载安装pc-lint,网上有很多资源。正常安装即可。

配置PC-lint

keil MDK中已经给出了pc-lint的配置文件,打开keil工程,tools--setupPC-lints。如下图弹窗,按照如下配置

  1. 先选择pc-lint执行文件。

  2. 选择keil安装下的配置文件ARM/BIN/CO-RV.LINT。

  3. 选择头文件和库文件的包含路径否则编译找不依赖,可以拷贝工程中的编译选项配置。点击OK退出。

17a5a978bf32d0a2d09741db49add59c.png

配置完成打开tools可以看到如下图选项,第一个检查当前打开的源文件,第二个编译所有的源文件。

08c08ffc60a377de87f25597432d0adf.png

编译后输出信息在output窗口中,如下图。

a5398a42529828ee969183c6e82a6a19.png

04

END

借用网上一句话总结:能通过pc-lint检验的程序不一定没有问题,但通过了pc-lint检验的程序,质量的提高也是不言而喻的。

公众号回复 "lint" 获取pc-lint官方文档(英文版)

相关阅读

巧用map文件查找越界问题

嵌入式软件程序HardFault异常的查找方法

单片机系统EMC测试和故障排除

835a9098cb544c523467b2922f47836d.gif

扫码关注我们

看更多嵌入式案例

f0fafe01232c1f4cf313366164a993d2.png

喜欢本篇内容请给我们点个在看

68036b7b2c55cd8f3780fdabb81ec3ba.png
分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP