软件质量之道:PCLint之中的一个

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

孟子

1引子

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

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

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

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

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

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

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

小韩所谓C++的一万个小时,自以为还是远远不够的。如果平均每天工作学习十个小时,那么须要一千天。大概为三年时间。自从2012年2月份实习到现在。大概也有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究竟是一个什么样的工具。

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

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

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

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

3 PCLint安装及初步配置

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

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

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZmVuZ19tYV9uaXU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" >

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

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

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

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZmVuZ19tYV9uaXU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" >

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

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

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

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

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZmVuZ19tYV9uaXU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" >

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

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZmVuZ19tYV9uaXU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" >

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

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

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

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

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

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

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZmVuZ19tYV9uaXU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" >

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

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZmVuZ19tYV9uaXU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" >

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!

时间: 2024-10-29 19:07:46

软件质量之道:PCLint之中的一个的相关文章

软件质量之道:PCLint之二

圆规为什么可以画圆?因为脚在走,心不变.你为什么不能圆梦?因为心不定,脚不动. 1 灯塔与方向 时间过得可真快,仍记得樱桃红芭蕉绿的时节,转眼已入深秋.我爱大自然,其次就是艺术.高纳德老先生的著作<The Art of Computer Programming>至今仍尘封在书堆之中,实在是没有胆量拿起这份重量. 今天真是美好的一天,不知道是不是已经看到灯塔的光芒了,突然射过来的光芒,好刺眼,好心慌.兴奋的心情难以平复,感觉人生再也不会有如此复杂的心情了,突然看到希望的那一天,真是人生最大的幸福

软件质量之道:PCLint之一

故天将降大任于斯人也,必先苦其心志,劳其筋骨,饿其体肤,空乏其身,行拂乱其所为,所以动心忍性,增益其所不能. 孟子 1引子 今天听老韩一席话,当真是感慨万千啊.心怀斗志昂扬,奋斗十年,到头来,却看到身边的人一个个贪图安逸,没有独当一面的才能,让人颓然失望.可以说这几年来,我也曾怀着这样的期盼,希望身边的朋友们能够借我一把力,共同奋斗,创造一些"奇迹",但是每次也都是失望,失望,还是失望. 虽然前人们都说,在这个时代,没有独行者.但是,茫茫人海之中,想要找一个志同道合者,太难.并且,没有

实战Java虚拟机之中的一个“堆溢出处理”

从今天開始.我会发5个关于java虚拟机的小系列: 实战Java虚拟机之中的一个"堆溢出处理" 实战Java虚拟机之二"虚拟机的工作模式" 实战Java虚拟机之三"G1的新生代GC" 实战Java虚拟机之四"禁用System.gc()" 实战Java虚拟机之五"开启JIT编译" 以下说说[实战Java虚拟机之中的一个"堆溢出处理"] 在Java程序的执行过程中,假设堆空间不足.则有可能抛

使用Jquery+EasyUI进行框架项目开发案例解说之中的一个---员工管理源代码分享

使用Jquery+EasyUI 进行框架项目开发案例解说之中的一个 员工管理源代码分享 在開始解说之前,我们先来看一下什么是Jquery EasyUI?jQuery EasyUI是一组基于jQuery的UI插件集合,而jQuery EasyUI的目标就是帮助web开发人员更轻松的打造出功能丰富而且美观的UI界面.开发人员不须要编写复杂的javascript,也不须要对css样式有深入的了解,开发人员须要了解的仅仅有一些简单的html标签.jQuery EasyUI为我们提供了大多数UI控件的使用

【美妙的Python之中的一个】Python简单介绍及环境搭建

美妙的Python之Python简单介绍及安装         简而言之: Python 是能你无限惊喜的语言,与众不同.             1.Python:          Python英文意思为蟒蛇,故又称为蟒蛇语言,在图标设计上有所体现,贵铎·范·罗萨姆(Guido van Rossum)于1989年创立.Python的特质,简单,优雅,健壮,继承传统编程语言的强大性与通用性,同一时候兼具简单脚本的简单性.         Python的哲学:仅仅用一种方法,最好是仅仅有一种方法

【iOS与EV3混合机器人编程系列之四】iOS_WiFi_EV3_Library 剖析之中的一个:WiFi UDP和TCP

在上一篇文章中.我们通过编写EV3 Port Viewer项目实现了iOS监測EV3的实时端口数据. 程序最核心的部分就是我们的开源码库iOS_WiFi_EV3_Library. 那么,在本文中,我们将具体介绍我们这个库的编写.为了完毕这个库,本人參考了网上许多资料,主要包括EV3的源码,win版本号的代码库以及Monobrick相关以及网上的各种资料,在此就不一一列举了. 因为水平有限,本代码库还存在各种问题,望使用的读者见谅. 大家也能够在这个基础之上自己进行改造完好. 为了具体说明代码库的

netty深入学习之中的一个: 入门篇

netty深入学习之中的一个: 入门篇 本文代码下载: http://download.csdn.net/detail/cheungmine/8497549 1)Netty是什么 Netty是Java NIO之上的网络库(API).Netty 提供异步的.事件驱动的网络应用程序框架和工具,用以高速开发高性能.高可靠性的网络服务器和客户端程序. 2)Netty的特性 统一的API.适用于不同的协议(堵塞和非堵塞).基于灵活.可扩展的事件驱动模型.高度可定制的线程模型.可靠的无连接数据Socket支

使用Cloudsim实现基于多维QoS的资源调度算法之中的一个:配置Cloudsim环境

Cloudsim是一款开源的云计算仿真软件,它继承了网格计算仿真软件Gridsim的编程模型,支持云计算的研究和开发.它是一个自足的支持数据中心.服务代理人.调度和分配策略的平台,支持大型云计算的基础设施的建模与仿真,而且能够在Windows和Linux上跨平台执行. 本文介绍的是利用Cloudsim云仿真平台对资源调度算法进行仿真.当中包含Cloudsim环境的配置,资源调度算法的嵌入和仿真结果的分析. 1.首先介绍Cloudsim环境的配置 1.1.Cloudsim的执行须要Java环境,所

mybatis学习笔记(14)-查询缓存之中的一个级缓存

mybatis学习笔记(14)-查询缓存之中的一个级缓存 mybatis学习笔记14-查询缓存之中的一个级缓存 查询缓存 一级缓存 一级缓存工作原理 一级缓存測试 一级缓存应用 本文主要讲mybatis的一级缓存.一级缓存是SqlSession级别的缓存. 查询缓存 mybatis提供查询缓存.用于减轻数据压力,提高数据库性能. mybaits提供一级缓存,和二级缓存. 一级缓存是SqlSession级别的缓存.在操作数据库时须要构造sqlSession对象,在对象中有一个数据结构(HashMa