我在Linux和Windows上使用 eclipse-cpp-luna-SR1 ,工具链 gcc 4.9.1
代码分为两个项目:
Properties|C/C++ Build|Settings|Debugging|Generate gcov information (-ftest-coverage -fprofile-arcs)
Generate gcov information
已启用使用
从可执行项目运行程序
Profiling Tools|Profile Code Coverage
工作正常,结果显示在gcov
选项卡中,覆盖信息(Coverage %)
来自可执行项目中的所有源代码文件以及静态库项目。
检查可执行项目中的源文件时,颜色突出显示工作正常,但对于驻留在静态库项目中的源文件完全没有 - 即根本没有突出显示!
我已尝试过Linux和Windows:相同的行为
在以前版本的eclipse-cpp中,如Juno(4.2)和Kepler(4.3),突出显示适用于静态库中的源文件。
任何线索?
答案 0 :(得分:1)
对此有一个日食错误https://bugs.eclipse.org/bugs/show_bug.cgi?id=439260。我在Mars
和Neon
中也看到了这个问题。
如果有帮助,我尝试使用lcov
和genhtml
作为eclipse可视化的替代方法。
答案 1 :(得分:0)
也许这会有所帮助: 如果源代码通过链接文件夹包含在项目中(但实际上位于procjet的根目录之外),使用gcov的代码覆盖不会突出显示任何代码,尽管覆盖信息是正确的。
在切换到Luna SR1时,也许您已经完成了与库代码相同或类似的事情,因为之前的eclipse版本(据我所知)不支持那种相关文件夹链接..?
答案 2 :(得分:0)
我尝试使用Link中的lcov
和genhtml
(在cygwin环境下)
该过程生成一个名为ex_test.info的文件。
如user3567678所述,如果文件位于非项目路径中,则代码覆盖将失败。
但是,编辑ex_test.info时,我已经看到“冲突”文件是由这样的路径确定的。
SF:/cygdrive/e/.../project_folder/E:/..../other_path/conflicting_file.c
所以我重命名为:
SF:/cygdrive/e/..../other_path/conflicting_file.c
并再次尝试了genhtml。并且该过程生成没有问题的html摘要。
因此,我认为eclipse集成的代码覆盖率工具不是问题,而是其下的工具。
答案 3 :(得分:0)
我通过将可执行文件复制到 .a 文件旁边的静态库项目输出文件夹(例如调试 - 我正在使用托管构建)来使其工作。现在双击静态库中源文件的 .gcda 文件,然后选择复制的二进制文件,选择所有覆盖范围,瞧,gcov 突出显示现在显示在编辑器中。