2010-08-10 4 views
11

레일 프로젝트에 나의 현재 루비 rcov (특히, relevance rcov를 통해 테스트를 수행, 우리는 우리가 < 95 %의 코드 커버리지가 있다면 우리가 빌드 실패 (꽤 높은 수준이)와.Rcov 범위 변경 크게 -xrefs

.

우리는이를 테스트하려면 다음 명령을 사용 : 나는 rcov 보고서 홈 에버에서 녹색 (가진 실행)를 등록하는 몇 가지 코드를 발견

rcov_cmd = "rcov --rails --text-summary \ 
      --include #{included_dirs} \ 
      --exclude #{excluded_dirs} \ 
      --aggregate #{coverage_dir}/coverage.data \ 
      --output #{coverage_dir} \ 

오늘은 내가 인상 (이 코드 실행을받지 것을 증명할 수 함수의 시작 부분에서 예외가 발생하고 유닛 테스트가 통과 함)

나는 약간의 연구를했고 rcov에 대해 --xrefs 플래그를 발견했다. 이것은 rcov 보고서의 각 행에 대해 모든 호출자를 추가한다고 생각했다. (추가 --xrefs 플래그를 통지)

rcov_cmd = "rcov --rails --text-summary --xrefs \ 
     --include #{included_dirs} \ 
     --exclude #{excluded_dirs} \ 
     --aggregate #{coverage_dir}/coverage.data \ 
     --output #{coverage_dir} \ 

:

나는에 rcov 명령을 변경했습니다.

추가 호출 사이트 정보 대신, 필자는 테스트 범위를 96 %에서 48 %로 변경했습니다.

--xrefs는 rcov가 수행하는 분석의 종류를 변경합니까? (나는 그것이 단지 콜 사이트 정보를 수집 할 것이라고 생각했다). 첫 번째 명령과 어떻게 다릅니 까? 는 (실패한 단위 테스트가 있다면 내가 단위 테스트 범위 드롭을 보았다, 나는 실행에 오류가 있는지 커버리지 비율이 떨어질 수 있다는 것을 알고 있지만, 나에게 좋아 보인다) rcov manual에서

+0

'--callsites'와'--xrefs'를 사용하여 실제로 그 차이를 일으키는 호출 정보가 포함되어 있는지 확인한 적이 있습니까? 문제를 조금 좁힐 수 있습니다. – Shadwell

+0

--xrefs와 --callsites를 바꿔서 테스트 커버리지에서 같은 하락을 보았습니다. – RyanWilcox

답변

1

:

--[no-]callsites 
    Show callsites in generated XHTML report. (somewhat slower; disabled by default) 
--[no-]xrefs 
    Generate fully cross-referenced report. (includes --callsites) 

A CallSiteAnalyzer can be used to obtain information about: 

    * where a method is defined ("defsite") 
    * where a method was called from ("callsite") 

Rcov CallSiteAnalyzer Class에서이 더 이상 실행 비용보다 정확한 커버리지 정보를 제공 할 수 rcov을 분석 가졌어요.