软件质量之道:PCLint之中的一个-程序员宅基地

故天将降大任于斯人也,必先苦其心志,劳其筋骨,饿其体肤,空乏其身,行拂乱其所为,所以动心忍性,增益其所不能。

孟子

 

1 引子

今天听老韩一席话,当真是感慨万千啊。心怀斗志昂扬。奋斗十年,到头来。却看到身边的人一个个贪图安逸,没有独当一面的才干,让人颓然失望。可以说这几年来,我也曾怀着这种期盼。希望身边的朋友们可以借我一把力,共同奋斗,创造一些奇迹,可是每次也都是失望。失望,还是失望。

尽管前人们都说,在这个时代。没有独行者。可是,茫茫人海之中,想要找一个志同道合者。太难。

而且,没有一个共同的目标,也非常难找到志同道合者。所以,在这段日子。还是做一个默默地独行者更好。省却了若干烦心事。

可是。总不能由于别人,就失去了对自己的信心。自己能力有限是正确的,从小老爸就告诉我,要知道自己能吃几碗干饭。正如孟子所言,既然知道自己的能力,那就动心忍性,努力去学习,提高自身能力。

所以,尽管我能够理解这样的心情,可是原谅我不能允许这样的能力有限的结果。

以铜为鉴,可正衣冠;以古为鉴,可知兴替。以人为鉴。可明得失。

每次员工大会。都颇有收获,实在是听君一席话,胜读十年书的感觉。

小韩所谓C++的一万个小时,自以为还是远远不够的。如果平均每天工作学习十个小时,那么须要一千天。大概为三年时间。自从20122月份实习到现在。大概也有2年半的时间了,基本上每天都保持看书学习以及工作的习惯,可是却越加认为C++之深厚,要想真正精通。还须要2年半的时间吧。

或许2年半后,又认为再须要5年时间吧,嘛,太极之意,忘记全部。便是大成之时吧。

又跑题了,開始今天的主题,PCLint,自觉这部分至少能够分为两篇文章。假设要深入解说,足以涵盖《Effective C++》,《More Effective C++》等书的内容。所以还是仅仅介绍使用方法。要想知道的很多其它。那就Google一下吧!

第一部分内容,主要介绍PCLint的功能以及怎样安装。

第二部分内容则解说PCLint怎样使用(临时这么计划的。或许会突发奇想出来第三部分第四部分,那就请继续关注吧)。

 

2 PCLint简单介绍

首先。提供一下PCLint的相关链接:

官网:http://www.gimpel.com/html/index.htm

最新9.0L安装包:http://download.csdn.net/detail/winking324/8162819

接下来,简介一下PCLint究竟是一个什么样的工具。

PCLintGIMPELSOFTWARE公司研发的C/C++软件代码静态分析工具,能够说,PCLint是一种更加严格的编译器。其主要分为PCLintFlexeLintPCLint主要应用于Windows平台,以二进制可运行文件提供,而FlexeLint应用于其它平台,比如Linux。以源码形式公布。

PCLint在全球拥有广泛的客户群,很多大型的软件研发组织都把PCLint检查作为代码走查的第一道工序,比如说华为(感谢华为,让我学习到如此强大的工具)。PCLint不但可以对程式进行全局分析,识别没有被适当检验的数组下标。报告未被初始化的变量,警告使用空指针连同冗余的代码,还可以有效地提出很多程序在空间利用、执行效率上的改进点。

总结下来。PCLint就是不通过运行程序进行代码分析,发现代码中潜在的Bug。通过个人实践来看。PCLint能够发现非逻辑上的80%左右的Bug。绝对是C++开发以及測试人员一个强大的助手(爸爸妈妈再也不用操心我写错代码了)。

既然PCLint如此强大。那么问题来了。

 

3 PCLint安装及初步配置

安装主要依据上面的最新9.0L安装包进行解说。20141016日更新,本人亲自打包。并添加自己主动更新脚本,方便一步操作(资源1分就当赞助费了,谢谢,假设没有分数下载。请留言邮箱)。

安装包主要包括例如以下两部分(原谅我的小广告。请支持2345.com):


第一个Update为升级包,第二个Gimpel_PC_Lint_9.zipPCLint的安装包。

1. 解压PCLint的安装包。并进行安装,直接Next到最后一步。选择运行配置程序,并点击Finish。假设这里没有选择运行配置程序。能够通过运行安装文件夹下的CONFIG.exe来运行配置程序。


2. 接下来弹出PCLint的配置程序,点击下一步開始配置。


3. 说明运行完PCLint配置后。会生成运行脚本以及PCLint的配置文件(*.lnt),继续下一步。


4. 选择生成路径。安装路径就可以,以及文件名,然后下一步。


5. 选择编译器,VisualStudio如今最高仅仅有2008,所以仅仅好选择这个了,选择后点击下一步。


6. 选择平台,依据自己的须要,选择相应的平台,这里选择32bit,点击下一步。


7. 选择依赖的库,对于VisualStudio开发来说。主要包含Active Template Library(ATL)Microsoft FoundationClass LibraryStandard Template LibraryWindows 32-bit这四部分。选择后下一步。


8. 选择一些特殊的优化建议。比如说代码安全性和效率上的。这里依照最大原则进行选择。有:Scott Meyers(Effective C++ More Effective C++ and Effective C++ 3rdEdition)Dan SaksMISRA 2004。然后下一步(PSEffective C++这两本巨作真心的给力。C++入门必读经典)。


9. 指定当前使用库的头文件所在位置,选择Create –i options。并下一步,否则运行PCLint时会由于找不到头文件而失败。


10.选择头文件路径,以分号或者换行(Ctrl + Enter)区分,这里仅加入Visual Studio的标准头文件。因为不同的公司或者组织,其文件组织方式可能不一样。又或者包括了其它的各种库,所以有须要能够在这里进行加入,或者运行PCLint时出现错误,改动*.lnt文件加入就可以。


11.提示是否打开新的配置,选择否。


12.创建OPTIONS.LNT文件。就是简单几个问题,因为我这边显示内容不全,所以选择No,然后下一步,假设显示全的话能够分别看一下,就是一些实例代码。然后选择一下就可以。


13.选择相应的开发环境,这里最高仅仅有VC9。所以相应选择这个就可以。


14.加入PCLint到系统环境变量中。


15.经过漫长的配置设定,总算完毕了。



4 PCLint更新

经过上面复杂的安装及配置后,接着就须要更新一下PCLint程序,使其支持很多其它的C++检查项等。

1. 解压压缩包中Update文件夹下全部文件到PCLint的安装路径,比如我的PCLint安装在D盘。则相应文件路径应该为:

D:\lint\l9-a-b.lp

D:\lint\lpatch.exe

D:\lint\Update.bat

2. 双击Update.bat。进行PCLint的更新,更新成功后的结果如图。


最后一行,版本应该为9.00L。假设不对,请进行路径或者文件是否正确的检查。

另外。说明一下更新的方法,首先,要确定当前PCLint的版本,方法为使用cmd定位在PCLint的安装路径下,运行lint-nt.exe–v就可以。其次。去官网上下载最新的更新程序lpatch.exe以及更新包(比如l9-a-b.lp等)。将其复制到安装路径下,运行命令lpatch.exe l9-a-b.lp就可以。

 

5 进一步思考

可惜不是周末,也不是周五,不能一口气写完。同学们就先尝试一下安装和升级方法吧,假设已经熟练掌握了,能够通过Google等查看怎样进行C++代码的检查。或者查看一下PCLint的手冊,绝对能够大涨姿势,学习到非常多C++编程中的注意项。假设能写出一把连PCLint都没有一个Warning或者Error的代码,那么恭喜你,你已经成为一个C++的牛人了!

昨天看到一句不错的话。时间,抓起了就是黄金,虚度了就是流水;书。看了就是知识,没看就是废纸;理想。努力了才叫梦想。放弃了那仅仅是妄想。努力,尽管未必会收获,但放弃,就一定一无所获。

想起李科分享的一句话,对于产品人员,最重要的就是好奇心。

我想说的是,对于开发者,最重要的就是尝试心!是是非非,对对错错。只是就是一个Hello World

 

转载于:https://www.cnblogs.com/lytwajue/p/7168352.html

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_30530523/article/details/99112840

智能推荐

人机交互在计算机科学中的作用,人机交互技术-程序员宅基地

文章浏览阅读909次。《人机交互技术》课程介绍人机交互(Human-Computer Interaction, HCI):是研究人、计算机以及它们间相互影响,通过计算机输入、输出设备,以有效的方式实现人与计算机对话的技术;用户界面是人与计算机之间传递、交换信息的媒介和对话接口,是计算机系统的重要组成部分。人机交互与用户界面是两个有着紧密联系而又不尽相同的概念。人机交互强调的是技术和模型,用户界面是计算机的关键组成部分。..._人机交互方式的作用

第3节 DOS命令详解_dos管道命令详解-程序员宅基地

文章浏览阅读3.2k次,点赞2次,收藏16次。在初步学习网络安全时,暂时了解DOS命令系统及常用命令,以形成一定的框架体系,后续学习中如需要再继续强化。_dos管道命令详解

视频教程-VB管理信息系统开发实战-其他-程序员宅基地

文章浏览阅读219次。VB管理信息系统开发实战 大学计算机科学与技术专业毕业,从事教育培训两年,程..._管理系统vb教学

React-StepPitGuide《React踩坑指南》- React基础知识-程序员宅基地

文章浏览阅读91次。React-StepPitGuide《React踩坑指南》十行代码九个警告八个错误竟然敢说七日精通六天学会五湖四海也不见如此三心二意之项目经理简直一等下流。自己总结的关于React学习心得,欢迎大家与我交流ReactGithub:TYRMarsgitbook经常出问题,所以迁到自建的站点了。React 基础知识React 版本..._react踩坑指南

常用的机器学习与深度学习算法简介_机器学习和深度学习算法-程序员宅基地

文章浏览阅读5.5k次,点赞7次,收藏63次。常用的机器学习与深度学习算法简介1、机器学习1.1 决策树与随机森林1.2 支持向量机(SVM)1.3 k-最近邻算法1.4 朴素贝叶斯分类器2、深度学习2.1 人工神经网络2.2 深度神经网络2.3 卷积神经网络2.4 循环神经网络2.5 自编码器1、机器学习1.1 决策树与随机森林决策树(Decision Tree)是一种将决策流程以树状结构清晰表示的机器学习方法,本质上是通过一系列规则对数据进行分类的过程。图1-决策树随机森林(Random Forest)是通过构建多个决策树对样本进行训_机器学习和深度学习算法

简述SpringAop以及拦截器和过滤器-程序员宅基地

文章浏览阅读95次。简述AOP是面向切面编程(Aspect-Oriented Programming)的简称。它不是一项技术,和平常说的OOP(Object-Oriented Programming)一样,它是一种编程思想。这里不再做更多的名词解释。上图:从这个丑陋的图中可以看出,利用AOP后,OOP的Objects 都可以只专注于自己的事情,而不需要去管用户是否登录以及记录本次操作日志的事情了。 而且关..._adaptinterceptor(

随便推点

docker容器Exited(137)状态,用docker exec无法直接进_docker 137-程序员宅基地

文章浏览阅读733次。Exited(137),docker exec -it 容器名 /bin/bash 无法进入_docker 137

Iterator迭代器_iterator迭代器详解-程序员宅基地

文章浏览阅读2.3k次,点赞4次,收藏27次。java迭代器Iterator讲解_iterator迭代器详解

微信分享链接网页下载的无法打开解决方案,微信跳转外部浏览器_微信转网页下载的文件打不开-程序员宅基地

文章浏览阅读1k次。由于微信引流具备快速性和高效的二次传播性,故众多商家纷纷选择微信推广为主要的推广方式。但在使用微信分享链接和营销方案的过程中经常会遇到分享链接在微信内被拦截从而无法打开或者打开后无法下载文件的情况,导致引流来的用户由于无法打开网页而选择流失。更过分的是,由于都是新用户,故用户即使知道链接无法打开也不会选择反馈,导致问题处理的不及时,错失很多流量。问题分析那么当我们在微信内遇到被拦截的问..._微信转网页下载的文件打不开

前端工程化-husky+commitizen+ 自定义cz-customizable适配器 git 提交代码规范化-程序员宅基地

文章浏览阅读4.1k次。1、使用husky添加git hooks(基于husky新版6.0.0进行git hooks)1、npm install -D husky2、创建.husky/目录并指定该目录为git hooks所在的目录3、在package.json中添加prepare脚本4、执行npm run prepare,本地会创建.husky目录5、添加git hooks创建一条 pre-commit hooknpx husky add .husky/pre-commit "npm run test"会在._cz-customizable

is_numeric漏洞分析-程序员宅基地

文章浏览阅读1.7k次。2014年,PHP中is_numeric函数十六进制绕过漏洞引发了一次安全问题接下来,我们来分析一下这个漏洞的原理函数介绍:is_numeric — 检测变量是否为数字或数字字符串。函数原型:bool is_numeric ( mixed $var )如果 var 是数字或数字字符串则返回 TRUE,否则返回 FALSE。举例说明:例程1:<?php$v = is_numeric ('586..._is_numeric漏洞

Shiro安全框架——【快速入门、登录拦截、用户认证、请求授权】-程序员宅基地

文章浏览阅读568次,点赞23次,收藏24次。做任何事情都要用心,要非常关注细节。看起来不起眼的、繁琐的工作做透了会有意想不到的价值。当然要想成为一个技术大牛也需要一定的思想格局,思想决定未来你要往哪个方向去走, 建议多看一些人生规划方面的书籍,多学习名人的思想格局,未来你的路会走的更远。更多的技术点思维导图我已经做了一个整理,涵盖了当下互联网最流行99%的技术点,在这里我将这份导图分享出来,以及为金九银十准备的一整套面试体系,上到集合,下到分布式微服务《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》