Keil使用PC-Lint

Keil使用PC-Lint

  随着项目的推进与迭代,一个Project的代码量往往会不知不觉增长,当项目代码达到数万行,迭代经历较长时间后,仅靠开发人员自身的代码质量已不能满足对整体质量的把控。难以避免会出现一些潜在的逻辑错误与非逻辑错误。这种情况下,定期code review是不错的选择,但是在开发人员数量较少,开发模式趋于敏捷开发的今天,快速迭代,开发人员技术参差不齐,即便选择code review也不能发现大多数潜在风险。如果自己进行全盘代码的review,其难度不亚于将项目重构,此时引入工具就变得迫在眉睫。

  在进行Web开发时,尤其进行js开发时,开发工具会包含‘csslint’,‘eslint’等一些代码质量检测工具,打包过程中会给出一些很有意义的Warning,解决大多数非逻辑性错误造成的功能异常问题。在单片机开发过程中,也有一个代码质量检测神器---‘PC-Lint’,下面来介绍如何在Keil中使用PC-Lint!

  • 项目构成:项目代码 + FreeRTOS10.0.1 + STM32FXX_StdPeriph_Driver
  • Keil版本:MDK-ARM Plus Version5.24.1
  • PC-Lint版本:PC-lint for C/C++ (NT) Vers. 9.00L (https://files.cnblogs.com/files/godan/Gimpel_PC_Lint_9.rar) 免费可用版本~~

  1.安装PC-Lint

  下载好PC-Lint后,需要再去官网下载最新的patch包。PC-Lint安装完毕后,将patch包放在PC-Lint安装路径下,打开cmd,先查看当前pc-lint版本:

  

  打path的方法也很简单,只需按照官网提示输入lpath.exe patch_file_name即可。

  2.在Keil中添加PC-Lint

  

  点击图中按钮,弹出以下配置窗口:

  

  根据图中所示,选择好PC-Lint的安装路径,Keil自带的LNT配置文件后点击OK,配置完成。之后就可以点击“Lint all C/C++ Source Files”,愉快地使用PC-Lint神器啦,是不是很简单~~~

  由于C语言的项目中很多时候会用到枚举,goto,指针转换,等类型、方法,所以个人认为提示的好多Warning只供参考,未必需要消除所有PC-Lint提示的Warning,最主要是检查在类型的隐式转换时,变量类型发生精度丢失会不会造成功能异常等一些奇葩问题。

  一般PC-Lint给出的信息会很多,我目前的项目给出的提示信息近5000条,可以先把输出信息拷贝到notepad++中,分别搜索'Info',‘Warning’,'Error',逐一查看,提高效率! 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/405192.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

我的网页设计(网页页面制作二)

嵌入网页页面制作出自个人的爱好,利用代码的编写融入产生web网页页面的应用效果,来进行页面的选择、搜索。这样可以大大的提高了参考者、浏览者的个人不同需要,从而也了解了对网页页面制作扩大范围和空间。也可以转换对网页页面字体产生文字体…

警告warning: strncpy specified bound XX equals destination size

1、问题 用strncpy字符串拷贝时,出现警告:warning: strncpy specified bound 32 equals destination size [-Wstringop-truncation]。 2、解决:strncpy不拷贝最后一个字节,手动给它赋值\0。 例子: #define SIZE 20…

ShellExecute 函数的用法和实例

From: http://blog.sina.com.cn/s/blog_49364213010003d8.html 今天帮同学做毕业设计时,用到了ShellExecute 函数,在这写一下。关于ShellExecute函数:在ShellAPI单元中,ShellExecute函数的定义为:HINSTANCE ShellExec…

[React]你有用过哪些React的表单库吗?说说它们的优缺点

[React]你有用过哪些React的表单库吗?说说它们的优缺点 redux-formreact-jsonschema-formformikunform 个人简介 我是歌谣,欢迎和大家一起交流前后端知识。放弃很容易, 但坚持一定很酷。欢迎大家一起讨论 主目录 与歌谣一起通关前端面试题…

嵌入式产品开发流程

嵌入式产品,与普通电子产品一样,开发过程都需要遵循一些基本的流程,都是一个从需求分析到总体设计,详细设计到最后产品完成的过程。但是,与普通电子产品相比,嵌入式产品的开发流程又有其特殊之处。它包含嵌…

Codeforces 478B 6thweek contest_B

Random teams 题意: 有n个选手和m个队伍,让你分配,条件是每个队伍至少要有1个选手。分配完之后,每队伍里2个人可以组成一组,求分配完之后最多的组数和最少的组数 分析: 1. 最多的情况就是,先每…

apache代理IIS的80端口实现共存

IIS与apache共用80端口方法: 一:如何有多的公网IP。可在一个网卡上绑定多个IP来实现。 IIS6,多IP下共存,IIS为192.168.0.1,apache为192.168.0.2 原文地址到2003的CD下的 support/tools/Support.cab。解压出httpcfg.exe…

[react] 你有使用过formik库吗?说说它的优缺点

[react] 你有使用过formik库吗?说说它的优缺点 Formik提供了便捷的表单操作, 如获取表单数据,表单校验,提交事件等 结合yup来设置表单校验规则非常方便 Formik is a small library that helps you with the 3 most annoying par…

Linux 多线程开发-线程创建pthread_creat

1、函数原型 int pthread_creat(pthread_t *pid, const pthread_attr_t *attr,void *(*start_routine)(void *),void *arg); pid:返回创建成功后的线程ID,unsigned int型变量;attr:设置线程属性,为NULL则为默认属性&…

Eclipse的maven插件最新地址

最新地址:http://download.eclipse.org/technology/m2e/releases 原先:http://m2eclipse.sonatype.org/sites/m2e转载于:https://www.cnblogs.com/binarysheep/p/4752793.html

USB大全

http://www.crifan.com/files/doc/docbook/usb_basic/release/html/usb_basic.html

[react] 怎样动态导入组件?

[react] 怎样动态导入组件? 自己使用 import 和 async/await 实现的异步组件React.lazy开源库 react-loadable 库/react-lazyload 库babel 动态导入(Dynamic Import) 个人简介 我是歌谣,欢迎和大家一起交流前后端知识。放弃很容…

/dev/fb0入门练习

From: http://sunnyshineboy.blog.163.com/blog/static/20281511820124121118700/ 大家都知道Unix/Linux系统是由命令驱动的。那么最基本的系统是命令行的(就是想DOS一样的界面)。X-Window-System是Unix/Linux上的图形系统&…

Linux 多线程开发-等待线程结束pthread_join

1、函数原型 int pthread_join(pthread_t pid, void **value_ptr); pid:所等待的线程ID;value_ptr:通常设置为NULL,如果不为NULL,pthread_join将复制一份线程退出值到一个内存区域,并让*value_ptr指向该内…

SQL常用语句|创建表,设置主键......

新建表 create table [表名]([自动编号字段] int IDENTITY (1,1) PRIMARY KEY ,[字段1] nVarChar(50) default \默认值\ null ,[字段2] ntext null ,[字段3] datetime,[字段4] money null ,[字段5] int default 0,[字段6] Decimal (12,4) default 0,[字段7] image null ,) 删除…

如何Keil官网下载器件支持包Software Packs

步骤1:百度一下Keil,在搜索结果中点击打开官网 步骤2:在官网的搜索栏输入Software Packs,点击Go 步骤3:点击打开MDK Software Packs 步骤4:往下拉,找到自己需要的Pack 步骤5:以下载s…

为文档快速插入页眉和页脚

专业的文档往往需要配以漂亮的页眉、页脚等修饰性元素才会更加完美。在Word 2010中您不必再为设计漂亮页眉和页脚而大费周折,内置的“页眉样式库”和“页脚样式库”为您提供了丰富的选择余地。 (1)打开Word 2010文档,在“插入”选…

基于海思开发板的屏幕截图程序(一)

一直以来从事基于海思开发板的开发&#xff0c;但是每次想到“屏幕截图"&#xff0c;真的让人非常惭愧&#xff01; 参考网上的代码修改了下&#xff1a; #include <stdio.h> #include <stdlib.h> #include <sys/ioctl.h> #include <unistd.h> #…

[react] 如何给非控组件设置默认的值?

[react] 如何给非控组件设置默认的值&#xff1f; 表单元素依赖于状态(state)&#xff0c;表单元素需要默认值实时映射到状态的时候&#xff0c;就是受控组件 <input name"username" type"text" value{this.state.username} onChange{this.handleChan…

Linux 多线程开发-线程的属性-分离detached和连接joinable

1、描述 linux的POSIX线程分离状态决定一个线程以什么方式来终止。默认的分离状态是可连接态&#xff08;joinable&#xff09;&#xff0c;创建线程是参数设置为NULL&#xff0c;就是默认连接态&#xff0c;可以被pthread_join。 Linux的POSIX线程要么分离要么连接分别用一下…