软件质量之道:PCLint之二
2014-11-16 00:25
141 查看
圆规为什么可以画圆?因为脚在走,心不变。你为什么不能圆梦?因为心不定,脚不动。
今天真是美好的一天,不知道是不是已经看到灯塔的光芒了,突然射过来的光芒,好刺眼,好心慌。兴奋的心情难以平复,感觉人生再也不会有如此复杂的心情了,突然看到希望的那一天,真是人生最大的幸福吧!
继续说软件质量之道的第二员大将,PCLint,上一篇文章中主要介绍了PCLint的安装配置以及升级,这篇文章着重介绍如何将PCLint作为一个工具添加到常用开发环境中去,成为我们开发过程中的左肩右膀。
注,上篇文章中PCLint工具进行了更新,请小伙伴们注意重新下载,主要有两方面的原因。第一,原工具应该是有问题的一个版本,升级后,不能正确的解析Visual Studio的工程文件,在这上面,整整花费了我一个多星期的时间来调查,是导致这篇文章难产的主要凶手。第二,增加了Visual Studio 2010, 2012,
2013等版本的配置文件,方便大家的使用。
lint options file1 [ file2 file3... ]
既然将PCLint可以当做一个编译器,则options即为编译选项,file即为要编译的文件,对于C++来说,主要是*.cpp文件,由于*.h作为包含文件,是不会进行单独进行编译的,所以这一点需要注意。
如果对一个工程的文件进行检查时,则需要生成文件列表来进行,类似于Makefile文件,所以需要注意一下。
接下来是各个工具的具体配置方法,具体详细的各个参数的信息,还请查阅安装目录下的手册。
1. 选择工具,然后创建外部扩展工具。
![](https://img-blog.csdn.net/20141116001930529?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZmVuZ19tYV9uaXU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
2. 新建一个外部扩展工具,名称PCLintCreation。
![](https://img-blog.csdn.net/20141116002005083?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZmVuZ19tYV9uaXU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
参数如下:
Title:PCLintCreation
Command:安装路径\lint-nt.exe
Arguments:-v-os("$(TargetName).lnt") "$(ProjectFileName)"
Initial directory: $(ProjectDir)
3. 同样,可以根据前文SourceMonitor配置时,进行快捷键的分配。
![](https://img-blog.csdn.net/20141116002106390?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZmVuZ19tYV9uaXU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
4. 执行添加的PCLintCreation,会在对应的工程文件路径下,生成一个对应的*.lnt文件,内容如下:
![](https://img-blog.csdn.net/20141116002108684?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZmVuZ19tYV9uaXU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
5. 需要注意的是,当该工程下文件发生变化时,需要重新执行此任务,保证文件列表的正确性。
1. 选择工具,然后创建外部扩展工具,这个跟上部分的第一步相同。
2. 新建外部工具,名称PCLintCheck。
![](https://img-blog.csdn.net/20141116002204453?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZmVuZ19tYV9uaXU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
参数如下:
Title:PCLintCheck
Command:D:\lint\lint-nt.exe
Arguments:-i"D:\lint"std.lnt env-vc12.lnt "$(TargetName).lnt"
Initial directory:$(ProjectDir)
需要注意的有几点,第一,由于PCLint对于C++11的支持可能没有Visual Studio 2013支持的那么广泛,所以会检测失败,所以不建议在Visual Studio 2013及以上版本进行使用。第二,第一个lint文件,std.lnt即为上篇文章中配置生成的文件,env-vc12.lnt为VC12(Visual Studio 2013)对应的配置文件,"$(TargetName).lnt"为上一步对工程扫描的文件列表。第三,如果提示缺少*.lnt文件,则将对应的文件拷贝到PCLint安装路径下即可。
3. 执行PCLint,会在Output窗口中输出对应的Info,Warn,Error和Fatal等信息,这样根据信息查看对应的代码,并进行改正。
![](https://img-blog.csdn.net/20141116002231890?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZmVuZ19tYV9uaXU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
1. 选择工具,然后创建外部扩展工具,这个跟前面相同。
2. 新建外部工具,名称PCLintCheckItem。
![](https://img-blog.csdn.net/20141116002234687?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZmVuZ19tYV9uaXU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
参数如下:
Title:PCLintCheckItem
Command:D:\lint\lint-nt.exe
Arguments:-i"D:\lint"std.lnt env-vc12.lnt "$(ItemFileName)$(ItemExt)"
Initial directory:$(ItemDir)
3. 执行PCLint,会对当前文件进行检查,并输出结果到Output窗口中,例如:
![](https://img-blog.csdn.net/20141116002305138?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZmVuZ19tYV9uaXU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
当然,由于使用的是Visual Studio 2013作为实例,导致执行失败。这个在Visual Studio 2012上执行是没有问题的。
当然,工具只是一部分,万万不要将所有一切压在工具身上。实际上,只要遵守良好的代码规范,犯错误的机会将会减到最低,PCLint也仅仅是一个指导作用而已,这也是我对这个工具的理解。
还是宁愿做一个苦行僧,适应了艰苦卓绝的环境,在回来看看这些Warning,Error或者Fatal,简直是贻笑大方,建议大家有时间读一下Matthew Wilson的《Inperfect C++》一书,相信您也会赞同我的观点,即作者的观点。当然,正如作者所言,假设您已经对《Effective C++》和《Exceptional C++》系列有一定的了解,也已经有TCPL圣经在手,另外对模板有了一定的了解,那这本书不会让你失望。嗯,至少我读了此书之后,再看看我写的Perfect C++,额,不忍直视。
激动的心情还是不能平静下来,打算把这几篇文章移除《Perfect C++》的系列,放到QA系列之内,也算是一个总结吧。
另外,最近对自然语言处理有了一定的研究和成果,虽然大部分都是参考前人的观点,但是也想对自己这部分研究进行总结分享一下,借此机会加深对这部分知识的理解,也希望各路大神能够互相讨论学习,共同提升!
1 灯塔与方向
时间过得可真快,仍记得樱桃红芭蕉绿的时节,转眼已入深秋。我爱大自然,其次就是艺术。高纳德老先生的著作《The Art of Computer Programming》至今仍尘封在书堆之中,实在是没有胆量拿起这份重量。今天真是美好的一天,不知道是不是已经看到灯塔的光芒了,突然射过来的光芒,好刺眼,好心慌。兴奋的心情难以平复,感觉人生再也不会有如此复杂的心情了,突然看到希望的那一天,真是人生最大的幸福吧!
继续说软件质量之道的第二员大将,PCLint,上一篇文章中主要介绍了PCLint的安装配置以及升级,这篇文章着重介绍如何将PCLint作为一个工具添加到常用开发环境中去,成为我们开发过程中的左肩右膀。
注,上篇文章中PCLint工具进行了更新,请小伙伴们注意重新下载,主要有两方面的原因。第一,原工具应该是有问题的一个版本,升级后,不能正确的解析Visual Studio的工程文件,在这上面,整整花费了我一个多星期的时间来调查,是导致这篇文章难产的主要凶手。第二,增加了Visual Studio 2010, 2012,
2013等版本的配置文件,方便大家的使用。
2 PCLint的命令行
PCLint主要使用命令行模式来进行文件的解析,这个GCC的编译器过程非常相似。其命令行格式为:lint options file1 [ file2 file3... ]
既然将PCLint可以当做一个编译器,则options即为编译选项,file即为要编译的文件,对于C++来说,主要是*.cpp文件,由于*.h作为包含文件,是不会进行单独进行编译的,所以这一点需要注意。
如果对一个工程的文件进行检查时,则需要生成文件列表来进行,类似于Makefile文件,所以需要注意一下。
接下来是各个工具的具体配置方法,具体详细的各个参数的信息,还请查阅安装目录下的手册。
3 VisualStudio配置
3.1 扫描并创建cpp文件列表
这个过程就是上面说到的生成文件列表,在Visual Studio中,主要按照工程(或目录)来进行创建。1. 选择工具,然后创建外部扩展工具。
2. 新建一个外部扩展工具,名称PCLintCreation。
参数如下:
Title:PCLintCreation
Command:安装路径\lint-nt.exe
Arguments:-v-os("$(TargetName).lnt") "$(ProjectFileName)"
Initial directory: $(ProjectDir)
3. 同样,可以根据前文SourceMonitor配置时,进行快捷键的分配。
4. 执行添加的PCLintCreation,会在对应的工程文件路径下,生成一个对应的*.lnt文件,内容如下:
5. 需要注意的是,当该工程下文件发生变化时,需要重新执行此任务,保证文件列表的正确性。
3.2 对工程下所有文件进行检查
根据上一步扫描的文件,进行PCLint检查。1. 选择工具,然后创建外部扩展工具,这个跟上部分的第一步相同。
2. 新建外部工具,名称PCLintCheck。
参数如下:
Title:PCLintCheck
Command:D:\lint\lint-nt.exe
Arguments:-i"D:\lint"std.lnt env-vc12.lnt "$(TargetName).lnt"
Initial directory:$(ProjectDir)
需要注意的有几点,第一,由于PCLint对于C++11的支持可能没有Visual Studio 2013支持的那么广泛,所以会检测失败,所以不建议在Visual Studio 2013及以上版本进行使用。第二,第一个lint文件,std.lnt即为上篇文章中配置生成的文件,env-vc12.lnt为VC12(Visual Studio 2013)对应的配置文件,"$(TargetName).lnt"为上一步对工程扫描的文件列表。第三,如果提示缺少*.lnt文件,则将对应的文件拷贝到PCLint安装路径下即可。
3. 执行PCLint,会在Output窗口中输出对应的Info,Warn,Error和Fatal等信息,这样根据信息查看对应的代码,并进行改正。
3.3 对单个文件进行检查
如果仅仅是对单个文件进行检查,则不需要配置前两步即可,但这个步骤仅对于单个文件执行检查是有效的,不方便配置到Ant任务中。但是相对于整个工程的检查,效率比较高,所以适合快速检查文件,并修改问题,具体配置如下。1. 选择工具,然后创建外部扩展工具,这个跟前面相同。
2. 新建外部工具,名称PCLintCheckItem。
参数如下:
Title:PCLintCheckItem
Command:D:\lint\lint-nt.exe
Arguments:-i"D:\lint"std.lnt env-vc12.lnt "$(ItemFileName)$(ItemExt)"
Initial directory:$(ItemDir)
3. 执行PCLint,会对当前文件进行检查,并输出结果到Output窗口中,例如:
当然,由于使用的是Visual Studio 2013作为实例,导致执行失败。这个在Visual Studio 2012上执行是没有问题的。
4 进一步思考
写到最后,却发现这篇文章写得有点潦草了,实在是不应该。可惜PCLint跟不上C++ 11的脚步,也跟不上Visual Studio的发展脚步。愿PCLint的开发商更加进一步,不断更新这个优秀的工具。当然,工具只是一部分,万万不要将所有一切压在工具身上。实际上,只要遵守良好的代码规范,犯错误的机会将会减到最低,PCLint也仅仅是一个指导作用而已,这也是我对这个工具的理解。
还是宁愿做一个苦行僧,适应了艰苦卓绝的环境,在回来看看这些Warning,Error或者Fatal,简直是贻笑大方,建议大家有时间读一下Matthew Wilson的《Inperfect C++》一书,相信您也会赞同我的观点,即作者的观点。当然,正如作者所言,假设您已经对《Effective C++》和《Exceptional C++》系列有一定的了解,也已经有TCPL圣经在手,另外对模板有了一定的了解,那这本书不会让你失望。嗯,至少我读了此书之后,再看看我写的Perfect C++,额,不忍直视。
激动的心情还是不能平静下来,打算把这几篇文章移除《Perfect C++》的系列,放到QA系列之内,也算是一个总结吧。
另外,最近对自然语言处理有了一定的研究和成果,虽然大部分都是参考前人的观点,但是也想对自己这部分研究进行总结分享一下,借此机会加深对这部分知识的理解,也希望各路大神能够互相讨论学习,共同提升!
相关文章推荐
- 软件质量之道:PCLint之中的一个
- 软件质量之道:PCLint之一
- 小组里水平第二菜的程序员决定了软件开发小组的质量(Eric)
- Synopsys发布Coverity 8.5 支持网络和移动应用(Android Security)、增强软件质量与可靠性
- 基于 Docker EE 的 CI/CD 研讨会,看技术大神如何提高软件交付质量和速度
- 组策略部署软件之二:制作和部署MST程序包(转)
- 如何评价软件的质量
- 论软件项目质量管理
- JMP软件在质量管理中的应用简述
- 浅析如何提升软件测试质量
- 书评--提升软件质量的必经之路
- 软件质量的“奥秘”(一)——虚伪的质量
- 软件质量模型的6大特性和27个子特性
- 软件本地化的质量不容乐观
- 第29回 软件质量度量
- 如何提高软件的质量
- 构建之法-软件测试+质量保障+稳定和发布阶段+IT行业的创新+人、绩效和职业道德
- 软件质量模型
- 软件开发质量管理的一些思考
- 软件本地化的质量不容乐观