如何正确地将pvs-studio集成到内核模块makefile中?

时间:2017-09-09 14:04:24

标签: pvs-studio

我将使用pvc-studio检查简单的开源驱动程序,到目前为止它还没有用完。我的系统是Debian 4.6.0-amd64。我使用的是原生的x86_64 gcc编译器。

使用命令

运行
pvs-studio-analyzer trace -- make; pvs-studio-analyzer analyze -o ./app.log

打印出No compilation units found

我尝试将调用嵌入到makefile中,如下所示:

CURRENT = $(shell uname -r)
KDIR = /lib/modules/$(CURRENT)/build
PWD = $(shell pwd)
DEST = /lib/modules/$(CURRENT)/misc

PARAMS = -I/usr/src/linux-headers-4.6.0-1-common/include -I/usr/src/linux-headers-4.6.0-1-amd64/include

TARGET1 = file1
TARGET2 = file2

obj-m   := $(TARGET1).o $(TARGET2).o

all: default clean
default: file1.c file2.c
    pvs-studio --cfg ~/pvs.cfg --source-file $< --cl-params $(CFLAGS) $(PARAMS) $<
    $(MAKE) -C $(KDIR) M=$(PWD) modules

...

因此,我收到许多错误消息,其风格为No such file或与内核头文件相关的目录。

我的.cfg文件:

exclude-path = /usr/include/
exclude-path = /usr/src/linux-headers-4.6.0-1-amd64/include
exclude-path = /usr/src/linux-headers-4.6.0-1-common/include
platform = linux64
preprocessor = gcc
analysis-mode=4
language = C

我做错了什么?如何正确地做到这一点?

1 个答案:

答案 0 :(得分:1)

要检查项目,可以将 pvs-studio-analyzer 实用程序或intergarte analyzer( pvs-studio )直接用于构建系统,但不能选择两个选项同时进行。

  1. PVS-工作室分析器
  2.   

    找不到编译单元

    跟踪命令后,在当前目录中创建strace_out文件。您必须确保在此文件中有文件编译命令。如果找到了必要的命令,并且编译器名称具有异常标题,则可以使用参数--compiler指出:

    pvs-studio-analyzer analyze ... --compiler COMPILER_NAME ...
    

    如果用于跟踪的文件不包含编译命令,则需要检查是否正在执行项目编译。也许,首先需要执行命令make clean

    1. 当集成到Makefile中时,分析器还需要有关编译器的信息。
    2. 默认情况下,编译器取自环境变量CC / CXX。在给定的例子中,我没有声明它们。

      如果找不到某些头文件,则需要将路径添加到--cl-params参数。

      配置文件排列正确。尝试考虑我的建议并再次运行分析。

      完整文档可通过链接获取:“How to run PVS-Studio on Linux”。