2017-10-04 52 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] $^