前言:由于目前该工具比较新,网上找不到太多的可以参考的资料,这里总结一下简单的用法吧。
linux下工具下载地址:pclp1.3.5
一、前期准备
1.下载工具,解压后放到linux下。
2.官网申请一个三十天的许可证,需要填写邮箱。
3.linux下安装python及其相关的依赖模块,可以参考手册在DOC/目录下
(1)安装python
sudo apt-get install python or sudo apt-get install python3
sudo yum install python
(2) 安装第三方模块
python -m pip install regex
python -m pip install pyyaml
这两个模块安装可能会遇到问题,可能需要你先装PIP工具。大多数问题网上都能找到解决方法,是在自己的环境不行,就从别的地方把模块考过去用。
4.在linux下设置环境变量PATH,将可执行文件pclp64_linux添加到环境变量PATH中。
(1)Open ˜/.profile
(2)PATH="/home/book/pclp-1.3.5-linux-eval/linux/:$PATH" (当然这里是写自己的路径)
二、扫描步骤
1.找到自己的编译器,我这里使用的是gcc,找到gcc的安装目录。
命令:which gcc
我这里是/usr/bin/gcc
2.进入到config目录下执行:
pclp_config.py --compiler=gcc --compiler-bin=/usr/bin/gcc --config-output-lnt-file=co-gcc.lnt --config-output-header-file=co-gcc.h --generate-compiler-config
3.然后就可以使用生成的co-gcc.lnt扫描代码了,比如 pclp64_linux hello.c
三、扫描一个make工程
linux下大多情况下我们的代码都是一个make工程。怎么扫描整个工程这里写一下步骤:
1 首先进入工程下,添加一个环境变量:
export IMPOSTER_LOG=hello.commands //xxx.commands 自己起名字不想起就用这个也行
2 然后需要进入到config目录下,使用你的编译器将imposter.c文件编译成可执行文件,在返回到make工程中执行如下命令,会生成一个文件。可以查看该文件内容,自己理解
make -e CC=/home/book/pclp-1.3.5-linux-eval/linux/config/imposter AR=/home/book/pclp-1.3.5-linux-eval/linux/config/imposter
3 返回到config目录下,然后执行如下命令(前提是你又生成的co-gcc.h co-gcc.lnt,这在第二节中的第2步会生成):
./pclp_config.py --compiler=gcc --imposter-file=/xxxPATH/hello.commands --config-output-lnt-file=hello.lnt --generate-project-config
PATH目录自己加,这时会在该目录下生成你make工程的lnt文件,需要扫描的就是这个文件。hello.lnt
4 这时我一般会返回make工程(但是不去也行)目录下,将刚才生成的hello.lnt拷贝过来。执行扫描命令:
pclp64_linux co-gcc.lnt hello.lnt >> warning.c 将扫描信息重定位到一个文件中
注:
(1)这里再介绍一个参数-unit_check,加上这个参数不会报全局相关的错误,如果你的代码只是一个简单的模块,比如是作为一个库,应该加上这个参数
pclp64_linux co-gcc.lnt -unit_check hello.lnt >> warning.c
(2)还有一个就是工具中会有一个lnt目录,这个目录下会有各种规则的lnt。比如你想让你的代码符合MISRA标准,你就可以使用工具自带的lnt文件来扫描:
pclp64_linux co-gcc.lnt au-misra3.lnt -unit_check hello.lnt >> warning.c
(3)不过扫描出来的内容有点多,可以根据警告的标号在手册中搜索,都搜索出来是什么问题,及那个规则需要支持该问题。