C++ 코드를 Travis CI + Coveralls로 커버리지 생성

3539 단어 C++CoverallsTravisCI
요 전날 Coveralls이라는 서비스를 알았습니다. public인 리포지토리라면, 이 녀석이 무료로 커버리지 가시화에 사용할 수 있어 편리할 것 같습니다.
본고에서는 C++ 의 코드에 대한 커버리지의 publish 까지의 작업을 힘들게 써 갑니다만, 문서 를 보는 한 다른 몇개의 언어에도 대응하고 있을 것 같습니다.

본인은 다음과 같이 Travis CI에 의한 CI 대응 및 커버리지 생성과 Coveralls에의 커버리지를 publish 했습니다.

배경


  • 이 논문은 졸작의 취미 제품, Apache Traffic Server 플러그인 ts_mruby
  • googletest + googlemock을 사용한 테스트 코드를 (아직 소량이지만 ... ) 쓰여졌습니다
  • 이 문서를 보지 않고 README을 보면 대부분의 흐름을 알 수 있습니다.

    1. 우선 커버리지를 gcov로 출력할 수 있도록 한다



    Coveralls 는 gcov 형식의 커버리지 파일을 요구하므로, 이것을 출력할 수 있도록(듯이) 합니다.
    컴파일 시 옵션에 -coverage를 부여하면 커버리지 수집을 위한 파일이 출력됩니다.
    그런 다음 테스트를 실행하고 커버리지를 수집하려는 대상으로 좁히고 *.gcov 파일을 수집합니다.

    덧붙여서 자신은 항상 커버리지 파일의 출력이 되는 것을 회피하기 위해 configure.ac-coverage
    AC_MSG_CHECKING([coverage option])
    # --enable-coverage フラグを生やす
    AC_ARG_ENABLE([coverage],
                  [AS_HELP_STRING([--enable-coverage],[generate coverage files])],
                  [],
                  [enable_coverage=no]
    )
    AC_MSG_RESULT([$enable_coverage])
    
    # CXXFLAGS にオプション追加するか判別
    if test "${enable_coverage}" = "yes"; then
      CXXFLAGS="$CXXFLAGS -coverage"
    fi
    

    2. Coveralls에 리포지토리 등록



    htps : // 코ゔぇ라 ls. 이오/ 로 이동하여 GitHub 계정으로 sign up 합니다. 로그인 후 "ADD REPOS"메뉴에서 커버리지 수집 대상 리포지토리를 등록합니다.

    3. cpp_coveralls 도입



    Coveralls에 바삭바삭하고 *.gcov를 업로드하는 편리한 명령을 소개합니다. pip에서 도입 가능합니다.
    $ pip install cpp-coveralls
    

    4. coveralls 명령 시도


    *.gcov 출력처나 소스 파일의 배치처 디렉토리의 편리함, coveralls 명령의 옵션을 배려할 필요가 나옵니다.
    동작 확인을 위한 번거로움을 고려하여 Travis CI가 아닌 손 환경에서 --verbose 또는 --dryrun 를 붙여 coveralls 명령을 실행해 보면 좋을 것 같습니다.
    또한 실제로 Coveralls 에 publish 하고 싶은 경우는 -t <token> 필요합니다.

    5. .travis.yml에 coveralls 명령에 대한 설명을 부여합니다.



    README에 따라 after_success:에서 실행하는 것이 좋습니다. cpp_coveralls의 도입도 잊지 마세요!

    6. Ikanji에 Coveralls에서 커버리지를 확인하십시오!



    여기까지 오면 Coveralls에서 커버리지를 확인할 수 있게 될 것입니다. 자신이 한 예라면 아래와 같은 마무리가 되었습니다.
    (거짓말・・・나의 커버리지, 너무 낮다!??)


    htps : // 코ゔぇ라 ls. 이오/부이 lds/7007837

    또한 PullRequest Build도 달려 주므로 그곳에서 확인하도록 해도 좋을지도 모릅니다.

  • 좋은 웹페이지 즐겨찾기