我想在cmake的帮助下测试一个复杂的共享库(cxsc)。经过大量的尝试和错误之后,我成功地创建了一个html覆盖报告,但是我测试的行,连同boost测试框架,仍然是红色的。
这是我用来创建覆盖率报告的脚本:
rm -fr build_coverage
mkdir build_coverage
cd build_coverage
cmake \
-DCMAKE_BUILD_TYPE=Coverage \
..
make
cd ../tests
make clean
make
cd ../build_coverage
make cxsc_coverage
创建覆盖报告的cmake
我想使用gcov和lcov生成覆盖报告。
我到现在为止做了什么,:-
1. I compiled my code using --fprofile-arcs and -fprofile-coverage in
g++.
2. I have linked using lcov.
3. I have .gcno files with th e.o location.
4. When I execute binary, it is resulting into .gcda files.
我要做什么 :-
我必须使用这些数据文件(.gcda),并希望使用lcov创建一个干净的报告。
问题 :-
我试图从主目录中使用lcov生成代码覆盖率报告。使用-coverage选项编译Sorce代码,以便在编译时生成覆盖信息(创建gcno文件)。然后我将可执行文件和gcno文件复制到主目录中,我正在尝试检查home目录中的by ./exe是否可以生成覆盖报告,我在/home中运行可执行文件并显示测试用例通过了,但发现.gcda文件没有创建。
I add the following CPP flag:
-fprofile-dir= “/home”
and hence run the executable but still .gcda is not created .
我需要指定路径,以便从主目
我正在尝试使用cygwin和bash在本地Windows计算机上安装lcov。我安装了从这里下载的最新版本的lcov:。
当我调用特定的gcda文件时,就会得到一个输出。呼叫是:lcov -c -d FileName.gcda -o outputfile.info
就我通常所读的内容而言,lcov应该能够在一个文件夹中遍历所有gcda文件。我要求对所有gcda文件进行轮换的呼吁是:
lcov -c -d . -o outputfile.info
通过上面的代码,我得到了以下输出:
Capturing coverage data from .
Found gcov version 6.4.0
S
我试着做代码覆盖gcc的源代码,为一套2000套程序。我构建了带有--enable-coverage编译器选项的编译器,这样它就可以在编译示例程序时生成覆盖文件。
运行以下命令:
path/to/bin/lcov -c -d path/to/*.gcda/files/ -o info.info
我犯了错误,因为:
Capturing coverage data from .
Found gcov version: 6.3.0
Scanning . for .gcda files ...
Found 460 data files in .
Processing i386.gcda
geninf
我试图在一个c++项目中使用Gitlab实现CI。首先,我添加了一个简单的c++ hello程序,它在我的PC和Gitlab中编译和运行。
当我试图为相同的命令生成覆盖报告时,它在PC上工作,但在Gitlab CI中不起作用。
这是我的gitlab-ci.yml
# use the official gcc image, based on debian
# can use verions as well, like gcc:5.2
# see https://hub.docker.com/_/gcc/
image: gcc
build:
stage: build
# instead
我正在学习gcov来生成覆盖报告。这些代码如下:A.H. #include <stdio.h>
int A(int a); a.c #include "a.h"
int A(int a)
{
int b = a * a * a * a;
return b;
} main.c #include <stdio.h>
#include "a.h"
int main()
{
int a1 = A(33);
printf("a1 = %d\n", a1);
我将相同的源文件(C和Obj-C)编译成两个目标:单元测试可执行文件和实际产品(然后进行集成测试)。这两个目标构建到不同的位置,因此对象文件、.gcno和.gcda文件是分开的。不是所有的源文件都编译到单元测试中,因此不是所有的对象都存在于单元测试中。所有源文件都被编译到产品版本中。
有没有一种方法可以组合这两组.gcda文件以获得单元测试和集成测试的总覆盖率(因为它们在产品构建上运行)?
我用的是lcov。
Mac OS X 10.6,GCC 4.0
谢谢!