2017-10-04 1 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])を含める必要があります。次に、特定の問題を解決することができます。 [ask]も読んでください。 –

+0

申し訳ありませんが、私は本当にそれを取得していません。ここでどのようなコードを見たいですか? cppcheckの使用法に関する一般的な質問です。私はコマンドラインからcppcheckを実行する方法を知っていますが、makefileで設定したすべてのソースをチェックしてそこにある同じインクルードディレクトリを使用する方法をビルドプロセスに統合する方法がわかりません。ソースコードはなく、私が示している例はありません。これはcppcheckの使用法に関する質問です。 – incognito

+0

あなたが問題を抱えているのは明らかではありません - 提案された 'check'ルールを持つ小さな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] $^ 
関連する問題