LCOV 코드 커버리지 보고서를 하나 또는 두 개의 디렉토리에 집중시키는 방법이 있습니까?

StackOverflow https://stackoverflow.com/questions/837639

  •  10-07-2019
  •  | 
  •  

문제

최근에 LCOV를 사용하여 코드 범위를 시각화하기 시작했습니다. 훌륭한 도구입니다.

내가 주목하는 한 가지는 관심이없는 파일을 포함하여 내가 사용하는 모든 파일에 대한 코드 커버리지 보고서를 생성한다는 것입니다. 예를 들어, Boost 및 MySQL ++ 파일에 대한 코드 커버리지 보고서가 제공됩니다.

LCOV가 특정 파일에 대한 적용 범위 보고서 만 생성하도록 강요하는 쉬운 방법이 있습니까?

-K 매개 변수를 사용하려고 시도했습니다.

/usr/bin/lcov -q -c -i -b . -d .obj -k src/ -k include/ -o app_base.info

{run unit tests now}

/usr/bin/lcov -q -c -b . -d .obj -k src/ -k include/ -o app_test.info
/usr/bin/lcov -q -a app_base.info -a app_test.info -o app_total.info
/usr/bin/genhtml -q -o lcov_output_directory app_total.info

( "포함"및 "SRC"디렉토리에 대한 커버리지 파일 만 원한다는 의미입니다.)

그러나 이것은 작동하지 않는 것 같습니다. 이 보고서는 여전히 모든 외부 파일을 보여줍니다. 모든 제안은 대단히 감사합니다. 감사!

도움이 되었습니까?

해결책

LCOV 명령 줄 인수를 지원합니다 --제거하다 당신이 요구하는 일을 정확히 수행합니다.

다른 팁

나는 그것을 사용했다 --no-external 깃발과 함께 --directory 원치 않는 파일을 제외하기 위해 플래그.

남자의 외부 정의 :

외부 소스 파일은-디렉토리 또는-베이스-디렉토리로 지정된 디렉토리 중 하나에없는 파일입니다.

그래서 내 명령은 다음과 같습니다.

$ lcov  --directory src -c -o report.info --no-external
Capturing coverage data from src
Found gcov version: 4.2.1
Scanning src for .gcda files ...
Found 4 data files in src
Processing src/C####.gcda
  ignoring data for external file /usr/include/c++/4.2.1/bits/allocator.h

가능한 접근 방식은 커버리지 플래그 (-fprofile-arcs -ftest 커버리지)로 컴파일되는 파일을 제한하는 것입니다. 테스트 계측으로 구축 된 파일에 대해 선택적으로 메이크 파일 시스템을 엔지니어링하지 않으려면 다음과 같은 트릭이 효과가있을 수 있습니다.

  • 계측없이 응용 프로그램을 구축하십시오.
  • 기기가 원하는 소스에 대한 .O 파일을 제거하십시오.
  • 계측 및 재건을 켜십시오. 삭제 된 객체 파일 만 계측으로 재건됩니다.
  • LCOV를 실행하십시오

이로 인해 LCOV 스크립트에 의해 맹목적으로 소비되는 GCOV 아티팩트를 방출하는 대상 영역 만 발생해야합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top