首页 > 其他分享 >Pclint的适配以及使用方法

Pclint的适配以及使用方法

时间:2022-08-28 23:14:55浏览次数:82  
标签:文件 Pclint 适配 lint 指令 uefi pclint lnt 方法

Pclint的适配以及使用方法

一. 简介

  C/C++语言的语法拥有其它语言所没有的灵活性,这种灵活性带来了代码效率的提升,但相应也使得代码编写具有很大的随意性,另外C/C++编译器不进行强制类型检查,也不做任何边界检查,这就增加了代码中存在隐患的可能性。如果能够在代码提交测试之前发现这些潜在的错误,就能够极大地减轻测试人员的压力,减少软件项目的除错成本,可是传统的C/C++编译器对此已经无能为力,这个任务只能由专用的代码检查工具完成。有很多C/C++静态代码检查工具,其中Logiscope RuleChecker和PC-Lint 是应用比较广泛的两个工具。

  更加详细的介绍,可以参加百度百科:PC-lint_百度百科 (baidu.com)

 二. Pclint在SourceInsight上的配置

  正常的公司内网中已经存在pclint的工程文件,若是在本地不存在pclint的工程文件,在网上下载即可。下载以及安装完成的pclint工程文件如下所示:

          其中最重要是的标记为黄色的三个文件:CONFIG.exe表示的是具体pclint安装时候的配置程序;PC-lint.pdf文档中记录了各种pclint的规则以及错误的类别,对于修改pclint缺陷是很重要的;lint-nt.exe是具体的需要执行的程序,会在使用的时候被调用。

       明确一个原理:在SourceInsight上集成pclint操作,实际就是通过SourceInsight调用cmd命令来执行pclint的可执行文件CONFIG.exe

       下面来看一下在SourceInsight上集成新的指令的步骤:

(1)      在SourceInsight下面点击Tools命令

       点击Custom Commands进行新指令的添加。

(2)      子菜单点击Add进行指令的添加

       点击Add按钮,可以添加新的指令。

(3)      添加什么样子的指令

   选择Add按钮后,可以添加需要的指令名字,这里定义的文件名字是pclint。主要需要勾选的位置如图中的显示。

  在“Run”的选项上,需要填写具体需要执行的指令。在“Dir”的选项上,填写需要的目录。

  这里针对自定义的“pclint”指令,填写的指令分别是:

Run:

D:\3_pclint\pclint\lint\lint-nt.exe –iD:\3_pclint\pclint\uefi_lnt –u D:\3_pclint\pclint\uefi_lnt\std.lnt env-si.lnt D:\3_pclint\pclint\uefi_lnt\std_proj.lnt

Dir:

D:\3_pclint\pclint\uefi_lnt

       这里需要解释一下各个参数的意义。参数“D:\3_pclint\pclint\lint\lint-nt.exe”表示的是可执行程序,带有目录的去执行,只有这样在cmd下面才能被找到; “-i”表示指定配置参数文件所在的目录,这个目录下面的文件就是我们上传到git上的所有文件,也就是目录“D:\3_pclint\pclint\uefi_lnt”;“-u”选项后面跟随的是pclint最基础的配置文件,也就是“D:\3_pclint\pclint\uefi_lnt\std.lnt”,文件“env-si.lnt”是pclint的环境配置相关的配置文件。由于前面的第一个配置文件已经指明了路径,后面的配置文件可以默认不带路径信息,当然带上路径信息也没有关系。

       “D:\3_pclint\pclint\uefi_lnt\std_proj.lnt”参数指定了需要进行pclint检测的所有文件。

配置文件文件“env-si.lnt”是否一定要跟上,答案是“是的”。在不指定这个配置文件的时候,运行出来的pclint也能正常检测,但是无法进行跳转,如下:

        正常的pclint检测结果,如下所示:

         进行单个文件检测的pclint配置:

Run:

  D:\3_pclint\pclint\lint\lint-nt.exe –iD:\3_pclint\pclint\uefi_lnt –u D:\3_pclint\pclint\uefi_lnt\std.lnt env-si.lnt %f

Dir:

  D:\3_pclint\pclint\uefi_lnt

       与进行整体检测唯一的不同就是将“D:\3_pclint\pclint\uefi_lnt\std_proj.lnt”换成“%f”

(4)      将指令放在指定的位置

  完成指令的编辑后,点击Menu按钮:

 

       在下拉菜单上选择需要将新的指令存放的位置:

 

       选择号菜单后,按下Insert按键,完成指令的放置

 

三. Pclint问题的排查

  对于Pclint文件,所有的配置文件,最基础的就是std.lnt这个文件。

 

       对于要整个工程文件中需要包含的其他配置文件,可以在这里直接被只用。需要用的头文件使用-i加上文件路径,需要屏蔽到的缺陷使用-e将错误号(具体可以在options.lnt文件中进行添加)。

       当检测到pclint问题,可以直接跳转到问题的位置,对于不知道的问题,直接查找PC-lint.pdf文档即可。

标签:文件,Pclint,适配,lint,指令,uefi,pclint,lnt,方法
From: https://www.cnblogs.com/free-1122/p/16634374.html

相关文章

  • js数据类型检测的几种方法
    1.typeof2.instanceof判断一个对象的正确类型可以用'instanceof',它通过原型链来判断根据原型链进行搜寻,在对象obj1的原型链上,如果存在另一个对象obj2的原型属性,则......
  • 5-主机侧日志抓取方法
    1.     optionRom日志抓取方法        UEFI是在主机侧运行,排查UEFI的问题,尤其是驱动的问题,不仅需要会获取ioc侧的日志,也需要获取主机侧的日志,也就是UEFI程......
  • Map遍历 key-value 的4种方法
    四种方法先用keySet()取出所有key值,再取出对应value——增强for循环遍历先用keySet()取出所有key值,再取出对应value——使用迭代器遍历通过entrySet来获取key-value—......
  • PHP 中的 9 个魔术方法
    PHP中的9个魔术方法-OSCHINA-中文开源技术交流社区 https://www.oschina.net/translate/9-magic-methods-in-php这个标题有点牵强因为php有不只9种魔术方法, ......
  • PHP 重载方法 __call()
    PHP重载方法__call()_PHP基础教程-我爱开发网 http://www.5idev.com/p-php_method_overloading.shtml__call()方法用于监视错误的方法调用。__call()(Methodove......
  • 向日葵 C1Pro 远程开机插座 智能插座 一直连接不上Wifi 连接失败 解决方法
    绑定不了一般是wifi模式不兼容,路由器背面通常会有一个管理地址,输入到电脑浏览器上回车访问进去修改一下呢1、仅支持2.4G的WIFI频段,把双频合一或5G优选关闭;2、不支持连接......
  • 如果给Array.prototype.fill()方法传入1个引用类型的填充对象
    先来看下fill方法的介绍Array.prototype.fill()fill()方法用一个固定值填充一个数组中从起始索引到终止索引内的全部元素(不包括终止索引)。 再来看下该方法的入参细节......
  • 【PHP】【Mysql】【thinkphp】,Thinkphp save()方法执行update操作的返回值问题
    用Thinkphp的Save()方法执行update操作$res=M('erp_goods')->where(array('goods_id'=>$goods_id,'attr'=>$goods_attr))->save($data);if($res===false......
  • 软件测试方法与过程
    软件测试方法与过程静态测试 以人工为主,测试者通过阅读代码和文档,分析其正确性、一致性及逻辑结构的正确性,从而找出软件中的错误或缺陷。对自动化工具依赖性较小,发挥人......
  • php中设置session过期时间方法
    php中设置session过期时间方法-php手册-PHP中文网 https://www.php.cn/php-notebook-45754.html在apache与php的环境中默认过期时间是20分钟左右,那么我们要怎么设置ses......