I'm going to check the simple open-source driver using pvc-studio and so far it does not work out. My system is Debian 4.6.0-amd64. I'm use native x86_64 gcc compiler.
Running with the commands
pvs-studio-analyzer trace -- make; pvs-studio-analyzer analyze -o ./app.log
prints out No compilation units found
.
I tried to embed the call in the makefile as follows:
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
...
As a result, I received many error messages in the style of No such file or directory related to the kernel header files.
My .cfg file:
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
What I do wrong? How to do it correctly?
To check the project it is possible to use pvs-studio-analyzer utility or intergarte analyzer (pvs-studio) directly into a build system, but not two options simultaneously.
After the tracing command a
strace_out
file is created in the current directory. You have to make sure that in this file there are commands of file compilation. If you found the necessary command, and the compiler name has the unusual title, it can be pointed using parameter--compiler
:If a file for tracing doesn't contain compilation commands, if it is necessary to check if the project compilation is being performed. Perhaps, it is needed to firstly perform a command
make clean
.By default the compiler is taken from environment variables CC/CXX. In the given example they are not declared, as I see.
If some header files are not found, it is needed to add paths to them to the
--cl-params
parameter.Configuration file is arranged right. Try to take into account my recommendations and run the analysis one more time.
Full documentation is available by link: "How to run PVS-Studio on Linux".