2010-07-02 5 views
8

두 개의 타겟으로 컴파일되는 동일한 소스 파일 (C 및 Obj-C) : 유닛 테스트 실행 파일과 실제 제품 (그러면 통합 테스트가 수행됩니다). 두 대상은 서로 다른 위치에 빌드되므로 개체 파일, .gcno 및 .gcda 파일은 별도입니다. 모든 소스 파일이 단위 테스트로 컴파일되는 것은 아니므로 모든 오브젝트가 존재하지는 않습니다. 모든 소스 파일은 제품 빌드로 컴파일됩니다.gcov를 사용하면 .gcda 파일을 병합 할 수 있습니까?

두 세트의 .gcda 파일을 결합하여 단위 테스트 및 통합 테스트 (제품 빌드에서 실행될 때)의 총 적용 범위를 얻는 방법이 있습니까?

저는 lcov를 사용하고 있습니다.

맥 OS X 10.6, GCC 4.0

감사합니다!

답변

4

lcov를 사용하고 있으므로 gcov .gcda 파일을 lcov 파일로 변환하고 lcov --add-tracefile과 병합 할 수 있어야합니다.

맨 페이지에서 : tracefile의 내용을 추가하십시오. -a 스위치를 사용하여 여러 개의 추적 파일을 지정하여 일치하는 테스트 및 파일 이름 조합에 대한 실행 횟수를 합하여이 파일에 포함 된 커버리지 데이터를 결합합니다.

5

마지막으로 나는 lcov를 통해 문제를 해결할 수있었습니다.

  • 각 노드에 응용 프로그램의 복사본을 배포 플래그 -fprofile-arcs -ftest-coverage --coverage
  • 와 응용 프로그램을 컴파일 : 내가 한 기본적으로 무엇을

    는 다음과 같습니다.

  • 각 노드에서 병렬로 응용 프로그램을 실행하십시오.
    • genhtml -o coverage_reports/ coverage_reports/app.info
  • :
    • lcov --directory src/ --capture --output-file coverage_reports/app.info
  • 는 HTML 출력을 생성 :
  • 하자 그의 작품을 lcov (이 단계는 액세스 호스트의 응용 프로그램 디렉토리에 커버리지 정보를 생성)

누군가에게 도움이되기를 바랍니다.

+0

와우, 답장을 보내 주셔서 감사합니다. 그 질문을하는 것과 지금은 묻는 것 사이에 아주 다른 두 가지 직업이 있습니다. 나는 이것이 누군가를 돕기를 바랍니다. – Joe

0

아래와 같이 lcov multi -d 매개 변수로 병합합니다. 그것은 작동합니다.

lcov -c -d ./tmp/ -d ./tmp1/ -o ./tmp/coverage.info