2014-02-20 23 views
0

我想要使用gcc 4.8.2和lcov 1.10来测试html覆盖率。我确信我的源代码,对象和gcov文件在同一个地方,并且我从运行编译器的目录运行lcov。lcov无法正常工作覆盖范围

,我发现了以下错误:

$ lcov --capture --directory "objs/i386/MinGW/Os_SingleCore_SC3 
/IocTest_tests_SingleCore_SC3" --output-file coverage.info 
Capturing coverage data from objs/i386/MinGW/Os_SingleCore_SC3/IocTest_tests_SingleCore_SC3 
Found gcov version: 4.8.2 
Scanning objs/i386/MinGW/Os_SingleCore_SC3/IocTest_tests_SingleCore_SC3 for .gcda files ... 
Found 3 data files in objs/i386/MinGW/Os_SingleCore_SC3/IocTest_tests_SingleCore_SC3 
Processing IocTest_tests_SingleCore_SC3/IocTest.gcda 
geninfo: WARNING: cannot find an entry for objs#i386#MinGW#Os_SingleCore_SC3#IocTest_tests_SingleCore_SC3#IocTest.c.gcov in .gcno file, skipping file! 
geninfo: WARNING: no data found for /cygdrive/e/testRepo/WinPort-Os-cd354a27d1d9/WinPort/Os/Tests/OS_REQ/objs\i386\MinGW\Os_SingleCore_SC3\IocTest_tests_SingleCore_SC3\IocTest.c 
Processing IocTest_tests_SingleCore_SC3/OS_REQ.gcda 
geninfo: WARNING: cannot find an entry for objs#i386#MinGW#Os_SingleCore_SC3#IocTest_tests_SingleCore_SC3#OS_REQ.c.gcov in .gcno file, skipping file! 
geninfo: WARNING: no data found for /cygdrive/e/testRepo/WinPort-Os-cd354a27d1d9/WinPort/Os/Tests/OS_REQ/objs\i386\MinGW\Os_SingleCore_SC3\IocTest_tests_SingleCore_SC3\OS_REQ.c 
Processing IocTest_tests_SingleCore_SC3/TestMain.gcda 
geninfo: WARNING: cannot find an entry for objs#i386#MinGW#Os_SingleCore_SC3#IocTest_tests_SingleCore_SC3#TestMain.c.gcov in .gcno file, skipping file! 
geninfo: WARNING: no data found for /cygdrive/e/testRepo/WinPort-Os-cd354a27d1d9/WinPort/Os/Tests/OS_REQ/objs\i386\MinGW\Os_SingleCore_SC3\IocTest_tests_SingleCore_SC3\TestMain.c 
Finished .info-file creation 

回答

0

首先,我会建议检查是否gcov的返回正确的覆盖数据。 意味着需要运行gcov工具并检查* .gcov文件的实际结果。如果它返回任何覆盖范围。

其次,你可以使用--base目录,例如

$ lcov --base-directory . --directory . -c -o gcov/lcov.info 
0

我发现这些步骤的工作:https://codeflu.blog/2014/12/26/using-gcov-and-lcov-to-generate-beautiful-c-code-coverage-statistics/

你先编译-g -O0--coverage标志?您是否将build目录中的.gcno文件复制到.gcda文件所在的目录中?

您是否尝试过添加选项--ignore-errors gcov,source,graph?它可能实际上是从一些文件工作,这将确保lcov继续运行通过任何问题文件。如果你找到可以工作的文件,那么你可以退后一步,找出为什么上面的文件不适用于lcov。也许他们错过了相应的.gcno文件。