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语言
    +关注

    关注

    180

    文章

    7633

    浏览量

    142532
  • 代码
    +关注

    关注

    30

    文章

    4907

    浏览量

    71247
  • MDK
    MDK
    +关注

    关注

    4

    文章

    211

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    CPU\GPU引领,国产AI PC进阶

    AI PC面向信创 Canalys分析表示,当前,政府及教育部门所采购的产品,搭载清单所列CPU的产品仅占总出货量5%,这表明信创市场仍有至少20倍的发展空间。 龙迈科技总经理张晗此前接受媒体采访时表示,到2027年全国信创建设所需要的信创电脑市场总数将达到9000万台
    的头像 发表于 09-01 02:15 ?5786次阅读
    CPU\GPU引领,国产AI <b class='flag-5'>PC</b>进阶

    PC985/PC989/PC993微功耗推挽输出差分比较器中文手册

    PC985、PC989和PC993分别是单通道、双通道和四通道推挽输出比较器电路,具有快速响应低功耗、轨到轨输入、低偏移电压和高输出驱动电流等特性,可应用于检测设备、测试和测量、高速采样系统等。
    发表于 05-22 18:17 ?0次下载

    PC1405/PC1407/PC1410高精度电压基准数据手册

    支持高达 10mA?的双向负载电流。 PC1405/PC1407/PC1410 采用专利电路技术以及电阻微调,可实现最大 3ppm/℃?的极低温漂特性。
    发表于 05-08 14:57 ?0次下载

    RFID技术在PC组件供应链管理的应用

    岳冉基于RFID技术的PC组件供应链管理解决方案,该方案通过为PC组件粘贴RFID标签,并利用RFID读写器进行信息读取和传输,实现了对PC组件从生产、仓储、物流到销售等供应链各个环节的实时监控和管理。
    的头像 发表于 02-06 15:48 ?529次阅读
    RFID技术在<b class='flag-5'>PC</b>组件供应链管理<b class='flag-5'>中</b>的应用

    中科创达旗下创通联达推出四款AI Mini PC参考设计

    G1 IoT以及AI Mini PC G1 IoT Fanless,旨在助力行业客户快速打造面向个人AI PC消费市场和工业场景的创新性产品。
    的头像 发表于 01-06 10:33 ?1539次阅读

    简述Arm PC生态新进展

    2024 年对于 PC 行业而言,是意义非凡的一年。AI PC 的快速崛起激发了新一代笔记本电脑解决方案性能与效率的显著飞跃,这推动了 PC 行业的复苏与增长。AI PC 是一种具备人
    的头像 发表于 12-23 09:17 ?938次阅读

    英诺达推出两款全新静态验证EDA工具

    (2024年12月5日,四川成都)英诺达(成都)电子科技有限公司隆重推出两款全新的静态验证EDA工具:EnAltiusCDC跨域检查工具Lint RTL代码检查工具。这两款
    的头像 发表于 12-05 10:13 ?1194次阅读
    英诺达推出两款全新静态验证EDA<b class='flag-5'>工具</b>

    AI PC的崛起

    看到PC“超级周期”的开始。AI PC具有专门的SoC,每秒能够提供40至60兆次操作(TOPS)的神经处理单元(NPU),有望带来技术创新的巨大变化。与依赖CPU和GPU的传统PC不同,AI
    的头像 发表于 11-14 11:06 ?897次阅读

    移远通信亮相骁龙AI PC生态科技日,以领先的5G及Wi-Fi产品革新PC用户体验

    PC作为人们学习、办公、娱乐的重要工具,已经深度融入我们的工作和生活。随着物联网技术的快速发展,以及人们对PC性能要求的逐步提高,AI PC
    发表于 11-08 11:26 ?364次阅读
    移远通信亮相骁龙AI <b class='flag-5'>PC</b>生态科技日,以领先的5G及Wi-Fi产品革新<b class='flag-5'>PC</b>用户体验

    移远通信亮相骁龙AI PC生态科技日,以领先的5G及Wi-Fi产品革新PC用户体验

    PC作为人们学习、办公、娱乐的重要工具,已经深度融入我们的工作和生活。随着物联网技术的快速发展,以及人们对PC性能要求的逐步提高,AIPC成为了行业发展的重要趋势。11月7-8日,骁龙
    的头像 发表于 11-08 01:06 ?752次阅读
    移远通信亮相骁龙AI <b class='flag-5'>PC</b>生态科技日,以领先的5G及Wi-Fi产品革新<b class='flag-5'>PC</b>用户体验

    Gartner预测:2025年全球AI PC出货量将占比PC总出货量43%

    。   Gartner对AI PC的定义为搭载了嵌入式神经处理单元(NPU)的个人电脑,并基于这一定义进行了相关预测。AI PC的范围涵盖了在Windows on Arm、macOS on Arm以及x86 on Wind
    的头像 发表于 10-15 15:23 ?1952次阅读

    PC示波器:电子测试与测量的革命性工具

    这一领域带来了革命性的变化。 PC示波器通过将多个测试仪器集成在一个小型装置,实现了前所未有的轻便与便携。与传统示波器相比,PC示波器不仅重量更轻、体积更小,而且当与笔记本电脑配合使用时,它几乎成为了一个随身携带的完整
    的头像 发表于 10-09 10:46 ?758次阅读

    2026年AI PC市场将占Windows PC半壁江山

     根据最新市场研究机构Canalys的权威预测,人工智能(AI)个人电脑(PC)在Windows PC市场的渗透率正经历前所未有的飞跃。该机构预计,从当前的不足10%起步,AI PC的市场份额将在
    的头像 发表于 09-06 16:09 ?1305次阅读

    Lint静态验证工具如何助力IC设计

    近年来IC设计的规模和复杂度不断增大,产品的迭代周期越来越短,传统的验证方式已经难以满足设计团队的要求。在“设计左移”这一理念的趋势下,设计流程和方法学不断进行创新和优化,其中,具备“设计左移”思想的静态验证方法实现了将原本在仿真、综合、布局布线阶段出现的问题移动到RTL阶段进行检测和分析,帮助IC设计者在早期发现和诊断设计缺陷,缩短芯片整体开发周期,降低成本。
    的头像 发表于 09-03 10:15 ?1976次阅读
    <b class='flag-5'>Lint</b>静态验证<b class='flag-5'>工具</b>如何助力IC设计