前言:

网上关于PClint和SI的结合文档很多,但是都没有很好的结合到大型的代码开发实际中去。这篇文章将这个详细的介绍了如何正确的配置PClint,使能在大型的代码开发中使用静态检视代码

一:文档编写的目的

在编写C/C++代码的时候,针对代码的静态检视工作在紧张工作时候变得极为重要。调试了多种的静态检视工具,最终还是觉得PClint+SI的静态检视工作,对于代码的检视将会大大的减少编译时检测不到问题,大大的减少了很多隐藏的bug。节省开发成本和研发的投入。

二:Pclint的安装

2.1:使用的背景

关于PClint的安装,网上有很多的blog和文档。但是更多只是一些浮于表面的介绍,这里会做一些更为针对性的介绍。

在使用PClint的时候,需要明白自己使用的是什么编译器,同时要有编译器的环境。因为大多数的开发者目前使用的都是在WIN+SI,而编译的环境却在UNIX下进行的。所以在安装PClint,选择编译器和创建STD.lint,options.lint,include.lnt的时候,在大型的工程时候会成为一个很严重的问题。

2.2 PClint安装前的装备

下载一个PClint的版本,这里使用的是PClint_v9.0.

解压之后如下:

我们选择pclint9Setup.exe去安装文件。默认的时候是将安装在C:/LINT下的,安装的时候,可以参照网上的一些安装文档。关于安装的时候,将安装配置的。里面的编译器选择GCC字段的。安装配置完,可以在C盘下看到如下的文件:

上图标注的四个是最为重要的分别为:co-gcc.lnt,选择的编译器,env-si.lint是你将要在那种的IDE中使用这个PClint。Lint-exe是PClint的应用程序。Std.lnt是整个PClint所要使用的运行时环境变量。

2.3 std.ln文件的配置

通过上面的安装我们得到了一个关于PClint和我们编译环境相结合的一个配置文件,这里将进一步的介绍这个配置文件,这将是使用PClint的关键。

看一下我的std.lnt的文件内容如下:

对于这个文件,在上面都有标注了。里面第一个是编译者的建议,这个是在安装的时候选择的。第二个是在配置的时候选择的编译器的类型,第三个就是统一平台的库文件lnt文件。而最为重要的就是options.lnt和include.lnt文件。这两个文件都是在后来自己添加在lnt目录下的,我们先来看下options的内容:

这个options里面的内容,其实是针对需要屏蔽的pclint的检视代码的意见。因为如果全部按照pclint的检查标准,大概目前我们写的代码都将是体无完肤的操作了。如果你想屏蔽掉哪个报错,可以在这里面添加-e#(#就是你要屏蔽的号段)。

下面我们来看下include的文件。

这个include的文件其实包含主要的两部分,一部分就是编译器的部分。如上面的第一个红框。这个编译就是你在unix的编译器,这个其实可以在你编译环境下找到。第二个就是你大型项目的代码头文件的路径。需要你自己一个个的添加。如果需要屏蔽文件,也可以在这个文件里合理添加就可以了。

这里介绍一下,这个路径的如果正确的选择。我是将编译器的环境代码拷贝到了本地,选择了相应的头文件包含,并将项目的代码在在服务器上用git建了一个仓库,然后将每次编译过的代码git到本地,包含相应的路径。

其实合理的安排是在一个服务器上安装samba的服务,将编译器和代码路径映射到本地,在包含的时候将非常的方便多人同时使用。如下图所示:

这样针对一个项目或者一个公司的配置就可以只配置一个lint文件,更新也只需要更新这个一个文件,这样大大节省了这个检视的投入。

三:PClint 和SI的结合

关于PCLint和SI的融合其实网上文章也很多,这里只针对性的提一下:

结合选择custom command,配置如下:

里面可以看到第一个是包含你的lint-nt.exe 的应用程序,相当于是命令。而-i包产的是pclint的一些配置文件路径, 配置文件是 std.lnt env-si.lnt。 %f是只检测当前的文件。其他的没有什么太多的解释。

四:结束语

按照以上的合理按配置,最终这边对代码的检视结果如下:

这个结果还是我在屏蔽了一些操作之后,检查的结果。针对的就是以前的一些代码检视。可以发现即使这样还存在n多的问题。所以这个对于在编译之前的检测将会进一步的提高我们的代码质量和减少开发的周期。

    最后还是要强调的是在配置的时候,要明白你的编译器,并找到你的编译环境,同时要明白你所包含的库文件的include,是你编译的include和你大型项目下的include的路径。这个理解了和会使用了,pclint也就会了。

相关的软件工具和文档,可以从我的下载资源里面下载。

PClint和SI的结合静态代码检视相关推荐

  1. 【代码质量】静态代码检测pc-lint, visual lint, cpp-check(pclint、cppcheck)

    [代码质量]静态代码检测pc-lint, visual lint, cpp-check(pclint.cppcheck)_bandaoyu的博客-CSDN博客 静态代码扫描工具汇总_ym & ...

  2. 【代码质量】静态代码检测pc-lint, visual lint, cpp-check(pclint、cppcheck、TscanCode)

    目录 引言 主流静态代码扫描工具概况 费用和活跃度 准确性对比 C/C++静态检测/静态分析|TscanCode|cppcheck TscanCode Windows下的安装与使用 Linux下的安装 ...

  3. 静态代码分析——字符串

    一.字符串在百度PS的地位 字符串在百度PS的地位自然不必多说,如果你有代码权限的话,在检索端任意模块的源码中grep一下strcpy就知道了.从用户输入的一个query到返回给用户的整个页面都是用字 ...

  4. 静态代码检查工具 cppcheck 的使用

    CppCheck是一个C/C++代码缺陷静态检查工具.不同于C/C++编译器及其它分析工具,CppCheck只检查编译器检查不出来的bug,不检查语法错误.所谓静态代码检查就是使用一个工具检查我们写的 ...

  5. 静态代码分析工具汇总

    静态代码扫描,借用一段网上的原文解释一下(这里叫静态检查):"静态测试包括代码检查.静态结构分析.代码质量度量等.它可以由人工进行,充分发挥人的逻辑思维优势,也可以借助软件工具自动进行.代码 ...

  6. 静态代码分析工具列表--常用静态代码分析工具介绍

    代码检测简介 本文是一个静态代码分析工具的清单,但是为公司产品需要付费使用.共有37个公司,有些公司包含多个工具.其中27个公司有多语言 工具,1个公司为PHP工具.2个公司为.NET工具.1个公司为 ...

  7. c/c++ 静态代码检查工具

    文章目录 道理呢大家都懂,但是需要时间消化,而且人还是易犯错误的动物 lint gcc 12 sonarqube 道理呢大家都懂,但是需要时间消化,而且人还是易犯错误的动物 所以才有了,这些个静态代码 ...

  8. C/C++静态代码检查工具

    如果能够在代码提交测试之前发现这些潜在的错误,就能够极大地减轻测试人员的压力,减少软件项目的除错成本,可是传统的C/C++编译器对此已经无能为力,这个任务只能由专用的代码检查工具完成.有很多C/C++ ...

  9. 【翻译】Google在构建静态代码分析工具方面的经验教训

    软件bug耗费开发者和软件公司大量的时间和金钱. 以2014年为例,被广泛使用的SSL协议实现中的一个("goto fail")bug导致可接受无效的SSL证书,另外一个与日期格式 ...

最新文章

  1. python使用matplotlib可视化堆叠的直方图(stacked histogram plot)、多个类别的数据在直方图区间层面累积堆叠起来
  2. Android 环境搭建的错误解决方案
  3. Linux安装及管理程序——RPM和yum学会装软件超简单
  4. Windows下在xampp中配置DVWA
  5. 用户关系表 存储_列式存储系列(一)CStore
  6. OpenHarmony开源项目
  7. Python 添加类型标注 | 散发着自由松散气息的代码
  8. 线性排序算法-堆排序 (2)
  9. KETTLE、spoon使用
  10. 幻立方解法之4阶,5阶,7阶
  11. 三款骨传导耳机性价比推荐-2023年最受欢迎的骨传导牌子
  12. 为网页中的图片添加水印的效果
  13. 图、邻接矩阵、广度与深度优先、生成树
  14. 遥感水文前景_我国“人才紧缺”的7大专业,就业前景好,快来看看
  15. IE8-下背景色半透明滤镜在jquery动画中失效问题记录
  16. oracle的left join和inner join的区别
  17. android gps 卫星数据格式,Gps开发实战——卫星数量获取
  18. 高中生写LOL外挂1年狂赚500万,落网前刚买百万保时捷...
  19. 10027---MySQL 5.6 for Windows 解压缩版配置安装
  20. Java 查缺补漏(1)

热门文章

  1. unity实现智能巡逻兵
  2. matlab10的阶层怎么输入,在Matlab中编写阶乘函数,并调用该函数来生成一个1!,......,10!的阶乘表...
  3. bmc remedy学习笔记
  4. 程序员工作不稳定?你以为的稳定工作,其实都是高风险职业
  5. 微信小程序禁止图片双击放大
  6. Shell 脚本之流程控制
  7. 2022-2028全球与中国社交聆听软件市场现状及未来发展趋势
  8. wordpress安装PHP Warning: Use of undefined constant DB_USER - assumed 'DB_USER' 问题解决
  9. 前端传输List集合数据问题
  10. 前端传过来集合,后端如何接