2016-08-11 3 views
1

Travis-CI/Coverity 도구를 구성한 중간 크기 github 저장소가 있습니다. 약 한 달 전에 설치 프로그램이 잘 작동했습니다. Travis가 컴파일하고 응용 프로그램을 빌드 한 다음, Coverity 검사를 수행하여 내 Coverity 페이지에서 결과를 볼 수있었습니다.TravisCI/Coverity : 경고 - 파일이 생성되지 않았습니다.

그러나 최근에는 Coverity 분석이 중단되었습니다. 나는 트래비스 로그 파일을 통해보고하고 성공했고, 그게 내가 무엇을 발견 빌드 이전 로그에 비해 :

[:

로그의 끝에서, 실패한 버전은 다음 경고를 포함 경고] 파일이 방출되지 않았습니다. 이는 구성상의 문제점 또는 빌드 명령으로 실제로 컴파일 된 파일이 없기 때문일 수 있습니다.

컴파일에 실제로 사용 된 컴파일러를 구성했는지 확인하십시오. 자세한 내용은

에서 찾아보세요 : 0 파일 /home/travis/build/name/repo-name/build/cov-int/build-log.txt

추출 SCM 데이터 ...

...

그래서, 트래비스가 전달하는 빌드,하지만 아무것도는 커버 리티에 대해 생성되지 않습니다. 내 트래비스 구성 파일을 확인하고 Coverity 빌드가 성공했을 때 커밋과 동일합니다.

실험을 위해 프로젝트 저장소를 복제하고 빌드가 성공적으로 완료되면 버전으로 롤백하고 Travis/Coverity를 ​​설정했습니다. 그리고 어떻게 됐을 까? 같은 경고! 따라서 과거 (약 35 일 전)에 작동했던 동일한 설정이 더 이상 작동하지 않습니다. 그러므로 나는 결론을 내린다. 트래비스가 특정 파일을 생성하지 않기 때문에 뭔가가 바뀌었다.

누구든지이 문제가 발생했는지 궁금합니다. 그리고 그것이 무엇에 관한 것일 수 있습니까? 변경해야 할 Travis 설정이 있습니까?

몇 가지 추가 정보 : 저는 CMake를 사용하여 프로젝트를 빌드하고 두 가지 종속성이 있습니다 : Qt와 OpenSceneGraph (트래비스에 설치해야 함).

이 내 coverity_scan 분기에 내 .travis.yml의 대략적인 스크립트입니다

language: cpp 
os: linux 
compiler: gcc 
sudo: required 
dist: trusty 

addons: 
    apt: 
    packages: 
     - cmake 
     - g++-4.8 
    coverity_scan: 
    project: 
     name: "name/project" 
     description: "Build submitted via Travis CI" 
    notification_email: [email protected] 
    build_command: "make -j2 VERBOSE=1" 
    branch_pattern: coverity_scan 

env: 
    global: 
    - PROJECT_SOURCE=${TRAVIS_BUILD_DIR}/src/ 
    - PROJECT_BUILD=${TRAVIS_BUILD_DIR}/build/ 
    # The next declaration is the encrypted COVERITY_SCAN_TOKEN, created 
    # via the "travis encrypt" command using the project repo's public key 
    - secure: "...secure..." 

before_install: 
    # download Qt 
    # ... 
    # download OpenSceneGraph 
    # ... 
    # imitate x server 
    - export DISPLAY=:99.0 
    - /sbin/start-stop-daemon --start --quiet --pidfile /tmp/custom_xvfb_99.pid --make-pidfile --background --exec /usr/bin/Xvfb -- :99 -ac -screen 0 1280x1024x16 
    - sleep 3 

install: 
    # install Qt 
    - sudo apt-get --yes install qt55base qt55imageformats qt55svg 
    # compiler 
    - export CXX="g++-4.8" 
    - export CC="gcc-4.8" 
    # install OpenSceneGraph 
    # ... 

before_script: 
    # Qt location 
    # ... 
    # OpenSceneGraph variables 
    # ... 

    # create build folder 
    - mkdir $PROJECT_BUILD 
    - cd $PROJECT_BUILD 
    # cmake command 
    - cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH=/opt/qt54/lib/cmake -DProject_BUILD_TEST=ON -DProject_VERSION=0.0.0 $PROJECT_SOURCE 

script: 
    - if [[ "${COVERITY_SCAN_BRANCH}" == 1 ]]; 
    then 
     echo "Don't build on coverty_scan branch."; 
     exit 0; 
    fi 
    # compile everything, if not coverity branch 
    - make -j2 
    # run unit tests 
    # ... 

답변

1
몇 가지 조사 후

하고 기존 사례를 통해보고, 나는 마침내 작동했다. 따라서 경고를 수정하여 분석을 위해 파일을 내보내려면 명시 적으로 컴파일러 바이너리 (설명에 따라 업데이트 됨)를 지정해야합니다. 내 .travis.yml에서 나는 coverity_scan 부가 기능의 build_command 앞에 build_command_prepend을 추가해야했습니다. 해당 블록의 최종 모습의 예는 다음과 같습니다.

# ... 
coverity_scan: 
    project: 
     name: "name/project" 
     description: "Build submitted via Travis CI" 
    notification_email: [email protected] 

# ! have to specify the binary (updated, thanks to Caleb) 
    build_command_prepend: "cov-configure --comptype gcc --compiler gcc-4.8 --template" 

    build_command: "make VERBOSE=1" 
    branch_pattern: coverity_scan 

# ... 
+2

여기서의 문제점은 컴파일러 유형을 명시 적으로 지정해야하는 것이 아니라 컴파일러 바이너리 자체를 지정해야한다는 것입니다. 'cov-configure --gcc'는 바이너리의 이름이'gcc' 또는'g ++'로 가정합니다. '-m32' 나'-m64'와 같은 특정 인수를 사용하면 설정이 없기 때문에 컴파일이 실패합니다. 이것이 일어나지 않게하려면 cov-configure 명령 행에'--template'을 추가해야합니다. – Caleb

관련 문제