【问题标题】:How to properly integrate the pvs-studio into the kernel module makefile?如何将 pvs-studio 正确集成到内核模块 makefile 中?
【发布时间】:2018-02-18 06:25:24
【问题描述】:

我将使用 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

...

因此,我收到了许多与内核头文件相关的没有此类文件或目录的错误消息。

我的 .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

我做错了什么?如何正确操作?

【问题讨论】:

    标签: pvs-studio


    【解决方案1】:

    要检查项目,可以在构建系统中直接使用 pvs-studio-analyzer 实用程序或 intergarte 分析器 (pvs-studio),但不能使用两个选项同时。

    1. pvs-studio-analyzer

    未找到编译单元

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

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

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

    1. 在集成到 Makefile 中时,分析器还需要有关编译器的信息。

    默认情况下,编译器取自环境变量 CC/CXX。如我所见,在给定的示例中,它们没有被声明。

    如果有些头文件没有找到,需要在--cl-params参数中添加路径。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-05
      • 2020-03-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多