关于PC-lint,以及如何在MDK中添加PC-lint工具

发布者:theta18最新更新时间:2021-02-01 来源: eefocus关键字:PC-lint  MDK 手机看文章 扫描二维码
随时随地手机看文章

    有人问:代码中类似 /*lint !e750... */代表什么意思?

    回答这个问题,就要牵涉到本文说的PC-Lint这个工具。


1写在前面

可能有一定编程经验的朋友,应该在一些地方都看到过类似  /*lint !e750... */ 这种“注释”。


但,有多少人去分析过它的含义呢?


比如:在FreeRTOS的tasks.c源码中有如下一行语句:

#undef MPU_WRAPPERS_INCLUDED_FROM_API_FILE /*lint !e961 !e750. */

后面 /*lint !e961 !e750. */ 作用就是:在使用PC-Lint工具进行静态分析时,隐藏本行宏定义未被调用的“错误”。


换种方式理解:编译时,这条语句不出现警告信息(注意:这里是比喻为编译,其实是PC-Lint静态分析)。


2关于PC-Lint

PC-Lint 是GIMPEL SOFTWARE公司开发的C/C++软件代码静态分析工具,它的全称是PC-Lint/FlexeLint for C/C++。


你可以把它看作是一种更加严格的编译器。它除了可以检查出一般的语法错误外,还可以检查出那些虽然符合语法要求,但很可能是潜在的、不易发现的错误。

图片


C语言的灵活性带来了代码效率的提升,但相应带来了代码编写的随意性,另外C编译器不进行强制类型检查,也带来了代码编写的隐患。


PC-Lint识别并报告C语言中的编程陷阱和格式缺陷的发生。它进行程序的全局分析,能识别没有被适当检验的数组下标,报告未被初始化的变量,警告使用空指针,冗余的代码等。


软件除错是软件项目开发成本和延误的主要因素,PC-lint能够帮你在程序动态测试之前发现编码错误,这样消除错误的成本更低。


错误号

PC-Lint 能够检查出很多语法错误和语法上正确的逻辑错误,PC-Lint 为大部分错误消息都分配了一个错误号:

图片


这些错误号在文档中有详细说明:

图片


命令格式:

图片


更多相关内容可以参考官网:

www.gimpel.com


3Keil支持PC-Lint说明

在Keil官网有这样一段信息:

X PC-lint is a powerful static analysis tool that will check your C/C++ source code and find bugs, glitches, inconsistencies, non-portable constructs, redundant code, and much more. It looks across multiple modules, and so, enjoys a perspective your compiler does not have.


A C compiler cannot always detect each and every potential problem in your source files.

This is where PC-Lint comes in.


  • Supports K&R C, ANSI C, and ANSI/ISO C++ standards

  • Explicit support for MISRA C and MISRA C++ (Motor Industry Software Reliability Association) standards

  • Value tracking of auto and static variables detects subtle initialization and value misuse problems

  • Inter-function Value Tracking - powerful inter-statement value tracking crosses function boundaries

  • Optional strong type checking (typedef-based) with a rich option set to detect nominal type differences

  • User-defined semantic checking for function arguments and return values


Each of the Keil development tools, ARM, C51, C251, and C166, support Gimpel Software's PC-Lint. Configuration files are included in the Keil development tools which enable you to quickly and easily begin using PC-Lint in your application development and testing.

http://www.keil.com/pclint


大概意思就是Keil(ARM, C51, C251, and C166)支持PC-Lint,配置文件包含在Keil开发工具中,使您能够在应用程序开发和测试中快速轻松地开始使用PC-Lint。


还提供了一个例子:

示例代码:

图片


C51编译输出结果:

图片


执行PC-Lint输出:

图片


示例程序列表(错误以突出显示),C51编译器输出和PC-Lint输出。当PC-Lint检测到并报告26个错误和警告时,C51编译器会检测并报告12个错误和警告。


4MDK中添加PC-Lint

要使用PC-Lint,大概需要以下两步:

  • 安装PC-Lint

  • MDK添加PC-Lint


1.安装PC-Lint

PC-Lint是一款收费的工具,大家可以网上搜索相关po解版本,相关安装很简单,这里不说明。


2.MDK添加PC-Lint

在MDK的帮助文档中,有相关添加和配置说明,我这里也简单说下。

图片


A.菜单Tools -> Set-up PC-lint 进入配置界面(如上图)


B.添加lint-nt.exe

前提需要安装PC-Lint,指向安装路径下的lint-nt.exe。点击“...”即可添加(标记1)。


C.添加co-ARMCC-5.lnt

这个路径是MDK安装目录下面,可参看上图(标记2)。


D.MISRA 规则配置

这里参看帮助文档,选择MISRA_C_2012_Config (标记3)。


E.增加PC-Lint命令

例如,要禁止PC-lint输出的info 714消息,可以在此对话框中输入-e714 (标记4)。


当然,本文重点在于引导大家了解PC-Lint这个工具,想要运用PC-lint这个工具,还需要掌握更多相关规则、配置。


关键字:PC-lint  MDK 引用地址:关于PC-lint,以及如何在MDK中添加PC-lint工具

上一篇:SPCE061A使用时基,实现从8Hz到1024Hz的定时器
下一篇:STM8学习笔记四——STM8的GPIO基础知识

推荐阅读最新更新时间:2024-11-10 01:36

关于 keil mdk lpc2100 启动文件的思考
;/*****************************************************************************/ ;/* STARTUP.S: Startup file for Philips LPC2000 */ ;/*****************************************************************************/ ;/* Use Configuration Wizard in Context Menu */ ;/************************
[单片机]
Keil C51 之LST文件,类似MDK.map文件
展开 Keil C51编译器在编译程序时,会生成一个扩展名为LST的列表文件,也被称为listing file。 这个文件包含了有关编译过程的丰富信息,该文件由多个段组成,其中Symbol Listing 和 Module Information两个段对于用户分析调试程序尤其有用,下面按照各个段在 listing file中出现的先后顺序加以说明: 一、页头段(Page Header) 每个lst文件都有一个包含了编译器版本号、源文件名称、日期、时间、页号的头部。示例: C51 COMPILER V7.20 MEASURE 10/01/2004 14:05:05 PAGE 1 二、命令段
[单片机]
Keil MDK环境下使用printf函数的解决方法
printf()函数可以直接向窗口格式化输出,给我们调试程序带来很大的方便,然而在Keil MDK环境下直接使用printf()函数就会陷入软件中断,导致死循环的产生;因而不能进入main()函数。 单步调试程序时会发现程序指针一直在 SWI_Handler B SWI_Handler 打转; 解决方法: 工程选择NXP的LPC21XX器件。 1.首先在Keil安装目录下面ARM——Startup找到Retarget.c文件将其复制到你的工程文件夹下面;并将其加入到工程中; 2. 在Keil安装目录下面ARM——Examples——Hello找到Serial.c文件将其复制到你的工程文件夹下面;并将其加入到工程中; 3.
[单片机]
案例说明stm32官方库函数使用方法 (库版本v3.5, Keil MDK 5)
stm32的官方库非常方便,但是里面的使用手册是英文的,而且也没有很详细的使用说明,对新手来说入门比较困难,而且网上现存的教程要么是针对v2.x的库的,要么是针对keil 4.x的,这两个东西更新后差别都蛮大。有新的可用为何不用最新的呢? 一: 用keil 5构建模板工程。在keil顶部选Project- New uVision Project, 输入工程名称,进入device选择界面。注意,因为keil 5变成了在线安装Package的模式(即刚安装好软件并不附带各种芯片的包,用哪个下哪个),如果你已经安装了ST的Package,不要用那个Package!!Keil 5暂时不兼容官方库,如果用了的话编译会报错。解决方案:1.
[单片机]
stm32 MDK5软件仿真之查看io口输出
第一步,编译程序,查看编译输出窗口,没有报错,也没有警告,再点击调试按钮 第二步,设置要查看的引脚端口,点击Setup 第三步,点击插入 第四步,输入要查看的引脚,例如GPIOA_Pin_0引脚,则输入PORTA.0,注意,A后面有一个小数点,而且都是大写,不能是小写 \ 此刻会出现一个错误,软件无法识别我们设置的端口引脚 点击图中所示的按钮,设置工程 点击Debug标签,转到设置Debug界面,修改里面的文本 修改为如图所示文本,其中两个方框需要根据实际使用的微控制器型号而改动 设置完成后点击OK重新设置要查看的端口引脚,点击空白部分,设置完成后,点击Close
[单片机]
stm32 <font color='red'>MDK</font>5软件仿真之查看io口输出
keil5和keil5 mdk有什么区别?
从Keil C51都Keil5 MDK,不知不觉已经用了Keil十几年。 虽然现在新增了一些开发环境,不过keil对于老工程师来说,应该是最亲切的了… Keil出过很多个版本,很多人最熟悉的是Keil C51和Keil5 MDK。 我们在做STM32程序开发编译的时候,基本上都是用keil5这个软件。 Keil5和Keil5 MDK(Microcontroller Development Kit)是 同一个软件的不同版本 。 Keil5是Keil公司推出的一款嵌入式开发工具,包括了MDK、DS-MDK和MDK-Lite三个版本,其中MDK是最全面的版本,支持最多的器件和功能。 Keil5提供了一个完整的开发环境,包括编辑器、编
[单片机]
C51和MDK的ROM大小及变量绝对地址初始化
#1. C51的ROM大小 Keil编译完之后,显示的Program Size: data=9.0 xdata=8 const=15 code=180,则 The Total ROM(const + code + code-gap + const-gap) is 199BYTE 实际生成的bin文件大小: 在.MAP中的C O D E M E M O R Y 中 code-gap为0,cosnt-gap为4,则const + code + const-gap=15 + 180 + 4 = 199,刚好和实际生成的bin文件大小一致。 #2. C51的ROM大小优化 如果实际编译显示的const + code远小于实际的Bi
[单片机]
C51和<font color='red'>MDK</font>的ROM大小及变量绝对地址初始化
使用MDK创建stm32 库函数工程简单教程
一. 需要准备的资料及环境: 1.STM32固件库,我们使用的固件库为STM32F10x_StdPeriph_Lib_V3.5.0,可在st官方下载 2.MDK开发环境(我们使用的版本为MDK4.7A)。 二. 新建工程 1.打开MDK ,然后选择菜单 Project- Close Project,关掉已存在的工程!这样整个MDK就是一个空的了,接下来我们将建立工程。 2.在建立工程之前,建议用户在电脑的某个目录下面建立一个文件夹,后面所建立的工程都可以放在这个文件夹下面,这里我们建立一个文件夹为: STM32_IAP.在该文件夹下再创建CORE、OBJ、STM32F10x_FWLib、USER等文件夹,USER用
[单片机]
使用<font color='red'>MDK</font>创建stm32 库函数工程简单教程
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved