• PC-lint静态检测工具集成到SourceInsight配置步骤


    (一)、安装的话从网上找一下安装包,例如PC-lint9之类的版本。。。
    安装解压后按照步骤一步一步配置就行,具体选什么编译器,生成什么文件这个不是重点;
    (二)、安装好后的配置步骤
    一、其实主要用到的是config和Gimpel_PC_Lint_9两个文件夹(不需要点击Gimpel_PC_Lint_9文件夹内pclint9setup.exe进行安装,这里不要参照网上,易误导);
    将PCLint压缩包解压缩后放在“D:\”,路径如下:
    D:\PCLint\config
    D:\PCLint\Gimpel_PC_Lint_9
    建议不要更改存放目录,否则与Source Insight集成时,需要修改以下3处配置(如果没存放到D盘,那么你存放到那个盘,下面几个配置文件要修改为相应的绝对路径)
    如果PCLint文件解压到其他路径,需要对应修改config文件夹中Lin_si_unit.bat、Lin_si_pjt.bat、StartPlugin.bat批处理文件,修改下面红色粗体部分:
    例如:Lin_si_unit.bat
    “d:\PCLint\Gimpel_PC_Lint_9\DOS-ins\lint-nt.exe” -u +v -i"d:\PCLint\config" std_si_unit.lnt %1 %2 %3 %4 %5 %6 %7 %8 %9
    @echo off
    echo
    二、规则文件介绍
    std_si_unit.lnt和std_si_prj.lnt文件嵌套所需的所有lnt文件,用于静态编译一个C文件。内容如下请检查设置是否正确:
    env-si.lnt // source insight 环境文件
    options_A.lnt //检测规则文件
    include.lnt //sourceinsight工程中涉及的所有头文件的所在路径(后续跑PC-lint的时候报错找不到相应头文件,需要添加路径到该文件)
    AllSource.lnt //sourceinsight工程中涉及的所有c文件的所在路径(工程涉及到是所有.c源文件可能有几十个)
    下面两个文件需要手动修改,添加keil或者ccs编译器的头文件路径:
    std_si_unit.lnt //
    std_si_prj.lnt //
    例如,默认已经添加如下,路径不正确请自行修改:
    -i"C:\Keil\ARM\RV31\INC" // Keil编译器头文件
    -i"C:\Keil\ARM\CMSIS\Include" // Keil编译器头文件
    (这块不是很清楚目的,是要调用Keil的编译器???我这边安装有keil4和keil5所以任选其一的编译器吧,主要是看keil的路径和上面一致否)

    三、与Source Insight环境集成
    在Source Insight 中的设置方法:
    1、StartPlugin插件集成(这个可以上网自己找找,具体作用如下)
    StartPlugin用途:自动提取Source Insight当前工程目录下的所有c文件和h文件的存储路径,默认存储在如下位置:
    D:\PCLint\config\ include.lnt
    D:\PCLint\config\ AllSource.lnt
    1)选择菜单Options –> Custom Commands…
    2)点击“Add…”
    3)在编辑框中任意输入一个命令名称,例如“StartPlugin”,点击“OK”
    4)在Run 右边的编辑框中输入:D:\PCLint\config\StartPlugin.bat %f 如下图所示:

    (成功后这里会有个图标)也可以自己手动加相应的头文件和源文件到include.lnt和AllSource.lnt;所以这个插件安装成功与否不影响PC-lint正常功能使用;
    2、对于单个文件检查设置
    1)选择菜单Options –> Custom Commands…
    2)点击“Add…”
    3)在编辑框中任意输入一个命令名称,例如“PC-lint unit check”,点击“OK”
    4)在Run 右边的编辑框中输入:d:\PCLint\config\Lin_si_unit.bat %f(注意%f前有空格)
    5)在Pattern右边的编辑框中输入:([ ]*) ([0-9]+)
    6)勾选下面的选项 Output\Control\Source Links in Output,如图所示:

    3、对整个工程检查设置
    1)选择菜单Options ->Custom Commands…Add“PC-lint project check”命令。
    2)在Run 右边的编辑框中输入:d:\PCLint\config\Lin_si_pjt.bat %f(注意%f前有空格)
    3)在Pattern右边的编辑框中输入:([ ]*) ([0-9]+)
    4)勾选下面的选项 Output\Control\Source Links in Output,如图所示:

    4、将上述命令添加到快捷菜单
    1)选择菜单Options ->Custom Commands,点击“Menu…”
    2)在Command 中选择你要添加的命令:如“PC-lint unit check”,Menu选择Work。
    3)在Menu Contents 下选择,点击“Insert”。如下所示:

    4)重复第2)步,依次将“StartPlugin”和“PC-lint project check”命令添加都Work菜单。全部完成后,点击“OK”退出。
    例如我insert到help工具栏中

    四、在Source Insight 中运行PClint
    1、对于单个文件的检视
    1)Source Insight中打开需要检视的*.C文件(点击开你要PC-lint的文件)
    2)选择菜单 Work-> PC-lint unit check后,PC-Lint开始执行静态编译。
    3)在弹出PC-lint unit check 窗口,可以看到分为三个等级的静态编译结果(Error\Warning\Info)
    需要修改错误或警告时,支持直接跳转到告警代码行。

    2、对整个工程的检视
    1) 首次打开Source Insight工程时,需要启动StartPlugin插件,按如下操作:

    不用理会下面弹出窗口,直接点击Cancel:

    Source Insight中间左侧菜单栏将多出一个图标,说明插件运行成功,如下所示:

    2)插件使用方法:
    (1)首先请确认 PCLint工具存储位置,如默认存放在“D:\”,则直接进入下一步。否则,按如下操作:点击下方标签栏左侧的下拉按钮选择“更改存储位置”,找到PCLint目录的config文件夹下,如“d:\PCLint\config\”。

    (2)右击右侧工程列表,在弹出菜单上选择“Copy List”。【必须先执行这一步后,才能进入下一步操作】

    (3)最后点击下方标签栏左侧的“导出文件”按钮:如果Source Insight 工程的文件为绝对路径,则会直接提示“提取成功”,点击“确定”后退出。

    如果Source Insight的工程右侧工程列表显示为相对路径,则会提示“浏览文件夹”,需要手动选择实际工程文件夹的存储位置。选择后将直接提示“提取成功”,点击“确定”后退出。提取的source insight工程.h和.c路径信息默认覆盖保存在下面两个文件中:
    D:\PCLint\config\ include.lnt
    D:\PCLint\config\ AllSource.lnt
    相对路径应用举例:Source Insight的工程文件路径为:” D:\test”,该工程中的所有文件实际位置在“D:\123 \AA”下面。AA为实际工程文件夹,用户选择时必须选择到AA文件夹。如下图:

    4)选择PC-lint project check命令,执行整个工程检视。
    五、注意事项:
    1、 建议将PCLint工具文件放在“D:\”根目录,避免多处需要重新配置。
    2、 正确的路径设置,是PCLINT正常运行的前提。
    3、 遇到PCLINT窗口不弹出时,可以close整个工程,然后重新载入工程。
    4、 首次打开Source Insight工程后,需要启动运行StartPlugin插件。
    5、 关闭StartPlugin插件后,若需重新运行插件,需要重启Source Insight工程。
    6、 新打开一个Source Insight工程后,需要先执行“CopyList”,再执行“导出文件”操作后,最后执行运行pclint检查命令。
    7、 注意PCLINT窗口已经打开,但可能淹没在多个窗口中。
    8、 一些涉及头文件的Error没有消除之前,不会继续检查新的问题,也无法一次生成完整的问题报告,需要重复执行PC-lint几次,确保所有问题都被清除(单个文件的PC-lint一定要把Error给消除掉,整个工程的PC-lint有些头文件确实没用到的可在int文件路径内适当屏蔽掉)。
    9、 原始工程的目录文件夹名中不能出现空格。
    10、检查前,务必查看std_si_prj.lnt或者std_si_unit.lnt文件,确认编译器文件和库函数文件路径,按本地实际设置。
    11、重复故障较多时,确认是否有问题,若确认不影响逻辑功能,则可在文件options_prj.lnt文档中添加-e#故障,不检测此故障,并做说明。

    整体感觉
    尽量还是依赖编码过程中的其他编译环境检验语法执行结果(例如keil,VC++,VS等),使用PC-lint只是最后辅助精炼一下,不能为主;

  • 相关阅读:
    03.模块一 前端基础html、css、js
    华云数据蝉联中国大数据50强 入选《2022数字化转型生态建设百佳案例》
    函数有返回类型,但函数体未返回类型,程序崩溃问题记录
    分布式前修课:Zookeeper锁实现方式
    Week 7 - Distributional Representations(分布表示)
    学生管理系统(半成品)
    2022.11.10 英语背诵
    设计模式——5. 原型模式
    06 装饰(Decorator)模式
    MyBatis原理分析手写持久层框架
  • 原文地址:https://blog.csdn.net/SUR0608/article/details/126279478