2014-01-28 6 views
3

두 시스템 (Windows 7, cygwin, Lcov 1.10)에서 LCOV로 C 코드를 분석합니다. 하나 개의 시스템에 나는 결코 문제가 있었다, 그러나 동일한 코드와 다른 한편으로 내가 얻을 : 두 시스템 폴더 및 파일에LCOV 보고서 : 'geninfo : Negative length'

$ lcov --directory CMakeFiles/UnitTest.dir/main --capture --output-file lcov.log 
Capturing coverage data from CMakeFiles/UnitTest.dir/main 
Found gcov version: 4.8.2 
Scanning CMakeFiles/UnitTest.dir/main for .gcda files ... 
Found 59 data files in CMakeFiles/UnitTest.dir/main 
Processing analyze/analyze.c.gcda 
[..] 
Processing measure/measur.c.gcda 
geninfo: Negative length at /usr/bin/geninfo line 2413. 

가 (Subversion을 개정 관리를 통해) 동일합니다. 어쩌면 일부 경로에 문제가있을 수 있습니다. 누군가이 사실을 알고 있습니다. 감사, 주도

부록 : 내가 somecimes 프로젝트를 완전히 청소 (모든 CMakeFiles 및 CMakeCache 삭제) 및 lcov 명령을 다시 실행하는 데 도움이 알게되었습니다.

답변

6

이전에 적용 범위 정보가 캡처 된 일부 블록이 더 이상 오브젝트 파일에 존재하지 않는 경우 이런 현상이 발생합니다. 문제는 .gcno 파일이 여전히 그러한 블록에 대한 적용 범위 정보를 저장한다는 것입니다.

문제를 해결하려면 .gcno 파일을 제거하고 단위 테스트를 다시 작성하면 충분합니다.

예를 들어,이 같은 오류가 발생했습니다 :

는 "CMakeFiles/UnitTest.dir/수학/Vectors.cpp.gcno"파일을 삭제 한 후 다시 작성하기에 충분했다이 경우
[...] 
Processing CMakeFiles/UnitTest.dir/main.cpp.gcda 
[...] 
Processing CMakeFiles/UnitTest.dir/Math/BoundingBox.cpp.gcda 
geninfo: Negative length at /usr/bin/geninfo line 2413. 
Processing CMakeFiles/UnitTest.dir/Math/Vectors.cpp.gcda 
make[3]: *** [source/CMakeFiles/] Error 255 

"UnitTest"프로젝트.