【KEIL-MDK】系列——如何使用PC-Lint代码检查工具

系列文章目录
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 工具下载地址

百度网盘 提取码:7777
CSDN下载


总结

PC-Lint代码检查工具的作用还有不容小觑的,但是想要用好它,还得去看查PC-Lint文档去学习一些规则。

  • 39
    点赞
  • 101
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: Keil-MDK是一种嵌入式软件开发工具,可以兼容STM32F4系列芯片的支持库。 STM32F4系列芯片是意法半导体推出的一款高性能微控制器系列,内含ARM Cortex-M4内核。这些芯片广泛应用于各种领域的嵌入式系统开发。Keil-MDK中的支持库为开发者提供了简化开发流程、减少编程工作量的便利。 Keil-MDK中的支持库可以帮助开发者通过抽象的接口,快速访问STM32F4系列芯片的功能和外设。通过这些支持库,开发者可以方便地使用芯片上的GPIO口、定时器、USART、ADC等外设,而无需深入了解底层硬件细节。支持库还提供了一些高级功能,如中断控制、DMA等,可加快开发进度。 Keil-MDK中的支持库具有高度可移植性,支持不同型号的STM32F4芯片。通过简单的配置,开发者可以轻松选择合适的芯片型号,并利用相同的代码在不同的芯片上进行开发。这种可移植性大大简化了嵌入式系统的开发过程,提高了开发效率。 总之,Keil-MDK中的STM32F4系列芯片支持库为开发者提供了通用的接口和功能,简化了嵌入式系统的开发流程,提高了开发效率。开发者可以轻松地利用这些库进行芯片的驱动开发和应用程序的编写。 ### 回答2: Keil MDK是一款开发软件,适用于基于ARM Cortex-M内核的微控制器。在Keil MDK中,有一个支持库可以帮助开发者更加方便地使用STM32F4系列芯片。 STM32F4系列芯片是由STMicroelectronics开发的一款微控制器,该系列芯片采用了ARM Cortex-M4内核,具有强大的处理能力和丰富的外设资源。而Keil MDK中的支持库,专门针对STM32F4系列芯片进行了优化和适配。 通过使用Keil MDK中的STM32F4系列支持库,开发者可以方便地访问芯片的各种外设,如GPIO、USART、SPI、I2C等,并进行相关配置和控制。此外,支持库还提供了丰富的API函数,大大简化了开发过程,使开发者可以更加高效地编写代码Keil MDK中的STM32F4系列支持库还提供了相应的驱动程序,可以帮助开发者快速启动项目并进行调试。同时,支持库还包含了一些实用工具和示例代码,可以帮助开发者更好地理解和应用芯片的功能。 总之,Keil MDK中的STM32F4系列支持库为开发者提供了丰富的工具和资源,使他们能够更加轻松地开发基于STM32F4系列芯片的应用程序。无论是初学者还是有经验的开发者,都可以通过使用这个支持库,快速、高效地实现自己的项目。 ### 回答3: Keil MDKKeil公司开发的嵌入式软件开发工具,主要用于ARM处理器的软件开发。STM32F4系列是意法半导体公司推出的一款高性能的32位微控制器系列,它们在Keil MDK中具备完整的支持库。 在Keil MDK中,STM32F4系列芯片支持库提供了丰富的软件资源,以帮助开发人员进行STM32F4系列芯片的开发工作。这些支持库包括了各种驱动程序、函数库和例程,以支持各种外设的操作和功能实现。 首先,STM32F4系列芯片支持库提供了标准外设驱动程序,包括GPIO、USART、SPI、I2C、ADC等,这些驱动程序简化了对外设的配置和控制,使开发者可以更加方便地使用这些外设,并且提高了开发效率。 其次,STM32F4系列芯片支持库中还包括了各种函数库,例如操作系统(RTOS)支持库、射频(RF)支持库、USB支持库等。这些函数库提供了丰富的功能接口,使开发者可以直接调用这些接口来实现相应的功能,从而避免了重复编写代码的工作。 另外,STM32F4系列芯片支持库中还提供了大量的应用实例和示例代码,这些代码可以帮助开发者更好地理解和使用STM32F4系列芯片的各种功能。通过参考这些示例代码,开发者可以快速上手,减少开发周期。 总之,Keil MDK中的STM32F4系列芯片支持库为开发者提供了丰富的软件资源,使得开发者能够更加便捷地进行STM32F4系列芯片的软件开发工作。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值