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