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

2023-11-06

系列文章目录
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文档去学习一些规则。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

  • Pyinstaller PyQt5 QFontDatabase: Cannot find font directory

    在解决了上一篇的 no module named pyqt5 sip问题以后 这是打包以后的第二个问题 在ubuntu 执行源码的时候字体可以正常显示 python3 main py 但是通过pyinstaller打包以后就找不到字体了 大
  • 根据数字二进制下1的数目排序

    LeetCode 根据数字二进制下1的数目排序 给你一个整数数组 arr 请你将数组中的元素按照其二进制表示中数字 1 的数目升序排序 如果存在多个数字二进制中 1 的数目相同 则必须将它们按照数值大小升序排列 请你返回排序后的数组 示例

随机推荐

  • 【Vivado使用误区与进阶】XDC约束技巧——时钟篇

    Xilinx 的新一代设计套件Vivado中引入了全新的约束文件XDC 在很多规则和技巧上都跟上一代产品ISE中支持的UCF大不相同 给使用者带来许多额外挑战 Xilinx工具专家告诉你 其实用好XDC很容易 只需掌握几点核心技巧 并且时刻
  • 第二十二讲:神州路由器OSPF单区域路由的配置

    实验拓扑图如下所示 设备 端口 IP 子网掩码 网关 Router A F0 0 172 16 1 1 255 255 255 0 无 F0 3 172 16 0 1 255 255 255 0 无 Router B F0 0 172 16
  • 【MySQL笔记】MySQL数据库分库分表解读

    目录 一 为什么要分库分表 1 IO瓶颈 2 CPU瓶颈 二 分库分表的拆分方法 1 垂直拆分 1 1 数据库垂直拆分 1 2表垂直拆分 根据业务去拆分表 如把user表拆分成user base表和user info表 use base负责
  • Android adb 输出指定app 错误日志

    查看错误日志 adb logcat E 按照时间查看日志 adb logcat v time
  • VMware16安装Linux CentOS7完整教程(附国内镜像链接)

    一 准备工作 1 安装VMware Workstation Pro 16 1 百度网盘下载地址 链接 https pan baidu com s 1jv0kQ26TLMt9MzofImRzgA pwd s0m1 提取码 s0m1 2 VMw
  • SLAM方法汇总

    原文 http blog csdn net smartxxyx article details 53068855 目录 SLAM概述 SLAM一般处理流程包括track和map两部分 所谓的track是用来估计相机的位姿 也叫front e
  • 在Windows远程桌面的不同会话之间,如何实现程序的互斥?

    问题 1 场景一 我是使用CreateMutex来实现限制只能运行程序的一个实例的 由于程序是放在服务器上运行 所以维护人员经常使用Windows的远程登录功能维护服务器 我发现在远程桌面不同会话之间 CreateMutex是不起作用的 即
  • Parallels desktop 安装 Centos7 root 默认密码

    parallels desktop下载的centos7 默认用户名是parallels 密码是需要设置的 软件没有自动设置 密码必须大于8位 并且无法进行su命令 提示 Authentication failure 这个问题产生的原因是由于
  • Xcode登录apple id 提示 This action could not be completed

    问题描述 打开xcode 运行工程时 xcode提示输入公司开发者账号密码 惊讶 之前没出现过的 按照要求输入密码 但又提示账号过期或密码可能被修改 但是网上登录苹果开发者 密码又是正常的 百度了下 把xcode偏好设置里面的过期账号 所有
  • 动态规划之二维数组系列——01背包,不同的子序列

    01背包问题 题目描述 小明有一个容量为 V 的背包 这天他去商场购物 商场一共有 N 件物品 第 i 件物品的体积为 wi 价值为 vi 小明想知道在购买的物品总体积不超过 V 的情况下所能获得的最大价值为多少 解题思路 现假设 V 为
  • 【深入理解C++】隐式构造与explicit

    文章目录 1 隐式构造 1 1 情况一 1 2 情况二 1 3 情况三 2 explicit 1 隐式构造 C 中存在隐式构造的现象 即在某些情况下 会隐式调用单参数的构造函数 1 1 情况一 include
  • Latex语法学习02:文本悬挂缩进

    目录 1 简单文本缩进案例 2 算法表格中的缩进案例 3 完整代码 1 简单文本缩进案例 解决方案 将要缩进的文本定义在minipage环境下 勾股定理 begin minipage t linewidth 直角三角形的直角边的平方求和等于
  • C# WinForm控件美化扩展系列之ListView(2)

    前面的一篇文章C WinForm控件美化扩展系列之ListView实现了隔行不同颜色和对列表头进行了美化 但遗憾的是对列表的最后的不包含列头的部分没有进行重绘 主要原因是上次没时间处理 因为处理那一部分是比较困难的 需要花不少时间 今天总算
  • Spark MLlib 源码学习---朴素贝叶斯模型(Naive Bayes)

    朴素贝叶斯是机器学习中比较常用的一种模型 尤其在文本分类的问题上是比较常用的baseline 朴素贝叶斯本身训练速度快 具有可并行化程度高 可解释性好的优点 但由于其对特征之间的独立性假设不是很符合某些需求场景 因此在实际的使用过程中往往需
  • MySQL运维篇之Mycat分片规则

    3 5 3 Mycat分片规则 3 5 3 1 范围分片 根据指定的字段及其配置的范围与数据节点的对应情况 来决定该数据属于哪一个分片 示例 可以通过修改autopartition long txt自定义分片范围 注意 范围分片针对于数字类
  • 宋浩概率论与数理统计-第一章-笔记

    概率论与数理统计 引言 1 1 1 随机事件 1 1 2 样本空间与事件的集合表示 1 1 3 事件间的关系 包含 并 和 交 积 差 互不相容事件 对立事件 完备事件组 运算律 事件的概率 1 2 1 概率的初等描述 1 2 2 古典概型
  • Elasticsearch学习笔记

    第1章 Elasticsearch概述 01 开篇 结构化数据 非结构化数据 半结构化数据含义 结构化数据 结构化数据是按照预定义的模式和格式进行组织的数据 它通常以表格 关系数据库或者类似的数据存储形式存在 具有固定的字段和数据类型 结构
  • node中为什么会出现这个问题UnhandledPromiseRejectionWarning

    大哥不想看详细的就直接看最后 在使用validate js规则验证时把所有字段都加入值后结果报这个问题UnhandledPromiseRejectionWarning 在服务层使用validate js规则验证 进行测试 终于发现设置的时间
  • Docker 学习笔记之基础命令

    1 Docker search image name搜索镜像 2 Docker pull image name下载镜像 3 Docker images 查看镜像 4 Docker run 启动容器 5 Docker ps 查看容器 6 Do
  • 【KEIL-MDK】系列——如何使用PC-Lint代码检查工具

    系列文章目录 01 KEIL MDK 系列 主题配色 文章目录 前言 一 PC Lint 是什么 二 在 KEIL MDK 中集成 PC Lint 工具 1 安装 PC Lint 工具 2 打开 KEIL MDK 进行简单设置 三 使用 P