2017-10-04 123 views
-1

我想将cppcheck集成到我的项目中,以便在出现错误时自动生成构建失败。当然,这可能是CI工作的一部分,但目前我们遇到了一些技术问题。最简单的方法是将cppcheck集成到Makefile中。也可以使用为项目配置的头文件目录。将cppcheck集成到构建系统中

这是可能的和如何做到这一点?

CC=gcc 
CFLAGS=-I. 
DEPS = 
OBJ = main.o 

%.o: %.c $(DEPS) 
     $(CC) -c -o [email protected] $< $(CFLAGS) 

hellomake: $(OBJ) 
     gcc -o [email protected] $^ $(CFLAGS) 

我想在main.c执行静态分析:

#include <stdio.h> 

int main() 
{ 
    printf("hello\n"); 
    return 0; 
} 
+1

请[编辑]你的问题来显示[迄今为止的代码](http://whathaveyoutried.com)。你至少应该包括一个你遇到问题的代码大纲(但最好是[mcve]),然后我们可以尝试帮助解决具体问题。你还应该阅读[问]。 –

+0

对不起,我真的不明白。你想在这里看到什么样的代码?这是关于cppcheck用法的通用问题。我知道如何从命令行运行cppcheck,但是我不知道如何将它集成到构建过程中,以检查我在makefile中配置的所有源,并使用我在那里的相同包含目录。没有源代码,也没有我能展示的例子。这是一个关于cppcheck使用情况的问题。 – incognito

+0

目前还不清楚你遇到了哪些问题 - 也许一个小的Makefile和你提出的检查规则会有所帮助,并解释什么是失败的(或者什么成功应该失败)。 –

回答

0

最简单的方法就是让你的默认目标既对二进制和cppcheck的输出取决于:

SOURCES = main.cpp 
CPPCHECK = cppcheck 
CHECKFLAGS = -q --error-exitcode=1 

default: cppcheck.out.xml hellomake 
.PHONY: default clean 

cppcheck.out.xml: $(SOURCES) 
    $(CPPCHECK) $(CHECKFLAGS) $^ -xml >[email protected] 

hellomake: $(OBJ) 
    $(LINK.c) -o [email protected] $^