0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

黄工的嵌入式技术圈 来源:黄工的嵌入式技术圈 2020-03-04 09:31 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

有人问:代码中类似/*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

3

Keil支持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个错误和警告。

4

MDK中添加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这个工具,还需要掌握更多相关规则、配置。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • C语言
    +关注

    关注

    183

    文章

    7649

    浏览量

    146401
  • 代码
    +关注

    关注

    30

    文章

    4983

    浏览量

    74534
  • MDK
    MDK
    +关注

    关注

    4

    文章

    211

    浏览量

    33771
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    Vector PC-lint Plus工具的IDE插件集成

    PC-lint Plus支持以插件(Plug-in)形式集成到主流代码编辑器和集成开发环境(IDE)。通过IDE插件,工程师可在编码过程实时对单个源文件执行静态分析,即时获取诊断结果并快速定位
    的头像 发表于 05-22 09:31 193次阅读
    Vector <b class='flag-5'>PC-lint</b> Plus<b class='flag-5'>工具</b>的IDE插件集成

    PC行业EMC经验分享

    一前言PC行业产品可分为核心计算设备、配套外设和软件系统三大类,覆盖硬件到软件的完整使用场景。而核心计算设备是PC行业的基础,主要提供计算和数据处理能力,常见形态包括:(1)台式计算机
    的头像 发表于 05-19 11:32 94次阅读
    <b class='flag-5'>PC</b>行业EMC经验分享

    Vector PC-lint Plus工具支持可视化配置分析

    PC-lint Plus的核心分析引擎以命令行方式运行,专注于高效的静态代码测试。为提升用户体验与团队协作效率,Vector为其配套提供了两款可视化工具PC-lint Plus
    的头像 发表于 05-18 14:25 217次阅读
    Vector <b class='flag-5'>PC-lint</b> Plus<b class='flag-5'>工具</b>支持可视化配置分析

    Vector PC-lint Plus新增项目级静态函数调用图输出功能

    从2025SP1版本起,PC-lint Plus新增项目级静态函数调用图(Static Function Call Graph)输出功能。
    的头像 发表于 05-08 16:00 199次阅读
    Vector <b class='flag-5'>PC-lint</b> Plus新增项目级静态函数调用图输出功能

    智能体PC时代来临,英特尔亮出哪些硬核实力

    端云协同的混合AI正在成为智能体PC规模化落地的核心方向。在轻薄本、AI Box、Mini PC等多元硬件领域,正推动新型PC从专业工具向大众消费市场。英特尔如
    的头像 发表于 04-22 21:08 1.7w次阅读
    智能体<b class='flag-5'>PC</b>时代来临,英特尔亮出哪些硬核实力

    每台智能体PC,都是AI时代的新入口

    AI对个人计算的变革,正从“工具增强”迈入“智能伙伴”的新阶段。依托于英特尔® 酷睿™ Ultra和英特尔® 酷睿™ 处理器提供的强大本地AI算力,现在,用户仅通过单台设备即可融合云端与本地智能
    的头像 发表于 04-21 22:23 9392次阅读
    每台智能体<b class='flag-5'>PC</b>,都是AI时代的新入口

    何在 S32 配置工具添加 ADC 并在 Simulink 中使用?

    对于 S32K3,如何在 S32 配置工具添加 ADC 并在 Simulink 中使用?
    发表于 04-07 07:09

    PC2909 数据手册

    PC2909 是一款实现真均方根值计算的芯片。该芯片能够精确计算包含交流和直流分量的任何复杂输入波形的真均方根值。为确保高精度测量,PC2909 即使在波峰因子高达 7 的情况下,仍能保证测量误差不
    发表于 03-23 15:03 0次下载

    国产连接器如何抓住AI PC赛道红利?

    当大模型推理从云端降落到桌面,AI PC成为了科技硬件的“流量主角”。英伟达的算力、英特尔的芯片、联想的整机,无一不被置于聚光灯下。但在这些动辄千亿产值的巨头身后,一场关于硬件底层架构的革命正悄然
    的头像 发表于 03-04 10:03 457次阅读
    国产连接器如何抓住AI <b class='flag-5'>PC</b>赛道红利?

    pc817光耦主要参数表

    在电子设计领域,没有一个元件是微不足道的。即使在最普通的开关电源,那些看似不起眼的光电耦合器,也承担着确保安全、减少干扰的重任。今天聊聊一款经典的光耦器件——PC817。无论你是电源工程师
    的头像 发表于 01-03 09:07 2273次阅读
    <b class='flag-5'>pc</b>817光耦主要参数表

    TL431 与 PC817 应用

    TL431 与 PC817 应用
    的头像 发表于 12-17 08:02 1715次阅读

    为什么单片机很少使用malloc,而PC程序频繁使用呢?

    ,因此,开发者倾向于使用更为简单的内存管理方式,这样可以减少调试和测试的工作量,提高系统的可靠性。 PCPC上的程序开发往往有更强的开发框架和工具支持,开发者可以更加灵活地使用动态内存分配来简化代码结构。操作系统提供的内存管理
    发表于 11-20 06:55

    PC电源管理芯片 KA3511英文资料

    PC电源管理芯片 KA3511资料 PWM IC KA3511
    发表于 09-03 16:28 0次下载

    AIWA P20 PC20 维修手册

    AIWA P20 PC20 维修手册
    发表于 06-09 15:06 6次下载

    AI PC内存升级,这颗DDR5 PMIC一马当先

    电子发烧友网报道(文/黄晶晶)根据IDC预计,AI PC的出货量将从当前的约5000万台,增长至2027年的超过1.67亿台。届时,AI PC在全球PC总出货量的占比将达到约60%。
    的头像 发表于 05-29 09:11 8863次阅读
    AI <b class='flag-5'>PC</b>内存升级,这颗DDR5 PMIC一马当先