2009-05-08 9 views
21

최근 lcov를 사용하여 코드 적용 범위를 시각화했습니다. 훌륭한 도구입니다.하나 또는 두 개의 디렉터리에 lcov 코드 범위 보고서를 집중시키는 방법이 있습니까?

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

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

은 내가 -k 매개 변수과 같이 사용하여 시도했다 : (. 난 단지 "포함"와 "SRC"디렉토리에 대한 커버리지 파일을 원하는 의미)

 
/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 

그러나,이 아무튼를 효과가없는 것 같습니다. 그 보고서는 나에게 여전히 관계없는 모든 파일들을 보여줍니다. 어떤 제안이라도 대단히 감사합니다. 감사!

답변

25

lcov은 명령 줄 인수 - 사용자가 요구하는 것을 정확히 수행 할 수 있도록 제거합니다. -을 지원합니다.

+9

은'--extract' 옵션이 더 유용 할 수 있습니다. 모든 것을 가진 tracefile을 생성하고, 관심있는 디렉토리 만 두 번째 tracefile에 추출하십시오. – Dan

+1

매우 도움이되는 [이 페이지] (http://qiaomuf.wordpress.com/2011/05/26/use-gcov-and-lcov-to-know-your-test-coverage/)를보십시오. --remove 사용 예제. –

2

가능한 접근법은 어떤 파일이 커버 리 플래그 (-fprofile-arcs -ftest-coverage)와 함께 컴파일되는지를 제한하는 것이다. 테스트 용 계측기로 어떤 파일이 빌드되는지에 대해 파일 시스템을 선택적으로 만들지 않으려면 다음과 같은 트릭이 필요합니다.

  • 계측없이 응용 프로그램을 빌드하십시오.
  • 계측 할 소스의 .o 파일을 제거하십시오.
  • 계기를 켜고 재구성하십시오. 삭제 된 오브젝트 파일 만 계측 기능으로 재구성됩니다.
  • 실행 맹목적으로 lcov 스크립트에 의해 소비되는 gcov의 아티팩트를, 발광만을 대상 지역에

이 될해야을 lcov.

27

원치 않는 파일을 제외하기 위해 --directory와 함께 --no-external 플래그를 사용했습니다.

사람에서 외부의 정의 :

외부 소스 파일 --directory 또는 --base 디렉토리에 의해 지정된 디렉토리 중 하나에없는 파일입니다.

그래서 내 명령은 다음과 같이 보았다 :

$ 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 
+0

그건'lcov' 1.10에있어, 안 그래? – jackyalcine

+0

맞습니다. 1.10에 추가되었습니다. http://ltp.sourceforge.net/coverage/lcov/changes.php – peetasan

+0

그래, 우분투 사용자에게는 짜증나.'raring'이나'saucy'에 대한 저장소에 아직 없습니다. 나는'--extract' 메쏘드를 사용하고 있었지만 이것은 인생을 훨씬 쉽게 만들어 줄 것입니다. – jackyalcine