在一个项目中,我在三个不同的可执行文件上运行测试用例,使用不同的选项进行编译.根据选项,可以使用或不使用某些代码路径.现在,我只使用一个可执行文件的覆盖数据.
我正在使用gcovr生成一个XML,然后由Sonar解析:
gcovr -x -b -r . --object-directory=debug/test > coverage_report.xml
Run Code Online (Sandbox Code Playgroud)
我有三套gcda和gcno文件,但我不知道如何生成它们的全局报告.
有没有办法做到这一点?
因此,Xcode 7中的热门新功能是集成在XCode中的代码覆盖 - yaaay!这一新功能也带来了Apple的新代码覆盖格式.profdata.
我们需要在Cobertura报告中显示代码覆盖率报告(在Jenkins中加载).目前没有办法转换.profdata为Cobertura XML报告(但它正在路上).
在那之前,我们需要依靠"旧"的gcov.由于某些未知原因,XCode 7生成.gcno和.gcda,但是当您gcovr创建Cobertura报告时,它显示所有文件的0%覆盖率(我们肯定有一些覆盖率).
我们试图回到XCode 6.4,生成的gcov文件在运行时显示正确的覆盖范围gcovr.
有人遇到过同样的问题吗?任何可能的解决方
我有c ++/c应用程序,有很多单元测试.我想得到每个测试的整体覆盖率和个人覆盖率,条件是每个测试只能运行一次.覆盖格式必须是xml(cobertura xml),以便jenkins cobertura插件处理.
到目前为止,我在编译时生成gcno文件,在使用source时生成gcda文件.然后调用gcovr获取xml文件.
我想创建每个单元测试的覆盖范围(从而为每个单元测试创建覆盖xml),然后将这些xml文件合并到一个xml文件中.
谢谢!
我正在使用gcov来衡量我所贡献的c ++库的测试覆盖率.出于某种原因,gcov没有将许多文件中的行识别为可执行文件.在给定文件中的160行中,它会说其中40行是可执行的.例如:
-: 0:Source:../evo/NK.h
-: 0:Graph:test_driver.gcno
-: 0:Data:test_driver.gcda
-: 0:Runs:1
-: 0:Programs:1
-: 1:// This file is part of Empirical, https://github.com/devosoft/Empirical
-: 2:// Copyright (C) Michigan State University, 2016.
-: 3:// Released under the MIT Software license; see doc/LICENSE
-: 4://
-: 5://
-: 6:// This file provides code to build NK-based algorithms.
-: 7:
-: 8:#ifndef EMP_EVO_NK_H
-: 9:#define EMP_EVO_NK_H
-: 10:
-: 11:#include <array>
-: 12:
-: 13:#include "../tools/BitVector.h"
-: 14:#include "../tools/const_utils.h"
-: 15:#include "../tools/Random.h"
-: 16:#include "../tools/vector.h" …Run Code Online (Sandbox Code Playgroud) 我想用Cobertura设置我的Jenkins来跟踪代码覆盖率.不幸的是我无法生成有效的xml.
我正在使用:
我的项目正确生成代码覆盖文件,但使用gcovr创建的报告没有用.
我用来生成报告的命令是:
gcovr -r /Users/Shared/Jenkins/Home/jobs/CodeCoverage/workspace
--object-directory /Users/Shared/Jenkins/Home/Library/Developer/Xcode/DerivedData/myProject-aooceqwwovrizceerghqvhflcfty//Build/Intermediates/myProject.build/Development/myProject.build/Objects-normal/x86_64
--exclude '.*Developer.*'
--exclude '.*Tests.*'
--xml
Run Code Online (Sandbox Code Playgroud)
这将创建我的输出:
<?xml version="1.0" ?>
<!DOCTYPE coverage SYSTEM 'http://cobertura.sourceforge.net/xml/coverage-03.dtd'>
<coverage branch-rate="0.0" line-rate="0.0" timestamp="1364322914" version="gcovr 2.5-prerelease (r2774)">
<sources>
<source>
/Users/Shared/Jenkins/Home/jobs/CodeCoverage/workspace/Project/myProject/
</source>
</sources>
<packages/>
</coverage>
Run Code Online (Sandbox Code Playgroud)
其他信息:
如果我删除--object-directory和-r然后我从派生数据目录执行命令,则会生成一个有效的报告.此报告可以从cobertura中读取,但不能显示有关源文件的任何详细信息.
我在Jenkins上设置了gcov代码覆盖工具.
这工作正常,但我在处理输出颜色代码时遇到了麻烦.每条线的'命中数'是核心,但是当其他线为红色时,某些线是绿色的,我不知道为什么.
示例:

请注意,setYear方法全部为绿色,并且调用了13次(ctor + setDateAAMMJJ中的12次,如屏幕截图所示)
mkdir -p /tmp/build &&
cd /tmp/build &&
mkdir -p /tmp/src &&
echo "int main(){return 0;}" > /tmp/src/prog.c &&
gcc --coverage -o prog /tmp/src/prog.c &&
./prog &&
gcovr -v -r .
Run Code Online (Sandbox Code Playgroud)
将输出一个空报告。
Scanning directory . for gcda/gcno files...
Found 2 files (and will process 1)
Processing file: /tmp/build/prog.gcda
Running gcov: 'gcov /tmp/build/prog.gcda --branch-counts --branch-probabilities --preserve-paths --object-directory /tmp/build' in '/tmp/build'
Finding source file corresponding to a gcov data file
currdir /tmp/build
gcov_fname #tmp#src#prog.c.gcov
[' -', ' 0', 'Source', '/tmp/src/prog.c\n']
source_fname /tmp/build/prog.gcda
root …Run Code Online (Sandbox Code Playgroud) 我正在使用 gcov 来测量我的 C++ 代码中的覆盖率。我希望能够标记某些源代码行,以便在使用 gcovr 时将它们排除在覆盖率报告之外。我知道它们存在,因为我曾经偶然发现过它们,但现在我找不到在哪里看到它们了。
我没有使用 lcov 来报告覆盖率,所以对这些标记的引用对我没有好处。
谁能指出我正确的地方?
我正在使用 gcov 和 gcovr 来生成我的代码测试覆盖率(测试是用 google test++ 完成的)。因此,我使用 -ftest-coverage -fprofile-arcs 选项进行编译,然后运行 gcovr(它本身运行 gcov)。但是,在我的输出中,我有 cpp 文件,覆盖率为 100%,还有 .h 文件,即使它们没有可执行代码,因此它们的覆盖率为 0%。
这个 0% 没有任何意义,因此,我想从覆盖率输出中删除 .h 文件。我找不到任何关于它的东西...
我已经尝试添加: -e "*.h" 到 govr 选项,以排除扩展名为 .h 的文件,但它不起作用(它实际上排除了所有内容......)。
有人有想法吗?
谢谢 !!
我在同一个文件夹中有两个文件夹,如下所示:-
1.src(它包含我的 cpp 文件)
2.linux(我在其中运行 g++ 并执行 o 文件)
现在我正在运行如下命令
cd linux
g++ --coverage ../src/example1.cpp -o example1
./example1
cd ..
/opt/gcovr-3.2//scripts/gcovr -v -r .
Run Code Online (Sandbox Code Playgroud)
我得到的输出为,覆盖率为 0%
扫描目录。对于 gcda/gcno 文件...
找到 2 个文件(并将处理 1 个)正在
运行 gcov:'gcov /opt/gcovr-3.2/doc/examples/example1/linux/example1.gcda --branch-counts --branch-probabilities --preserve-paths --object-directory /opt/gcovr-3.2/doc/examples/example1/linux' in '/opt/gcovr-3.2/doc/examples/example1/linux'
解析文件/opt/的覆盖数据gcovr-3.2/doc/examples/src/example1.cpp
过滤文件 /opt/gcovr-3.2/doc/examples/src/example1.cpp 的
覆盖数据 收集了 0 个文件的覆盖数据
为了进一步调试,我转到“linux”文件夹,按照以下命令运行
gcov /opt/gcovr-3.2/doc/examples/example1/linux/example1.gcno --branch-counts --branch-probabilities --preserve-paths --object-directory /opt/gcovr-3.2/doc/examples/example1/linux
Run Code Online (Sandbox Code Playgroud)
我得到输出为,有效覆盖
/opt/gcovr-3.2/doc/examples/example1/linux
文件 '../src/example1.cpp'
执行的行数:7 个
分支的85.71%执行:2 个的 100.00%
至少执行一次:2 个
调用的50.00% :100.00% of 1
../src/example1.cpp:creating '..#src#example1.cpp.gcov'
现在我想知道我做错了什么?我的项目很复杂,所以我不想将所有 cpp 文件从相应的“src”文件夹复制到相应的“linux”文件夹。我尝试了 …
我在一个非源构建上运行 gcovr (3.3),例如:
gcovr --root=/path/to/source --object-directory=/path/to/build
现在我想从报告中排除两个不同的内容:
1) 任何.cpp名称中包含“Test”的文件
--exclude='.*Test.*' 似乎不起作用
2)目录中的所有源文件(比如/path/to/source/MyModule/)
--exclude='/path/to/source/MyModule/.*' 似乎不起作用。
--exclude-directories='/path/to/source/MyModule' 似乎也不起作用。
我的问题
a)什么是--exclude-directories因为看起来你(应该)能够排除一个传递给正确正则表达式的目录--exclude?
b) 关于为什么--excludes 不能按预期工作的任何建议?也许这些不是正确的正则表达式类型/风格?
我最近升级到了新版本的 gcc/g++/gcov,现在 gcov 的行为很奇怪。新版本声称未涵盖旧版本中涵盖的某些代码行。我设法将我的代码减少到这个最小的示例。
#include <memory>
using namespace std;
struct S {};
int main() {
unique_ptr<S> s;
s = make_unique<S>();
}
Run Code Online (Sandbox Code Playgroud)
然后我使用 编译此文件g++ -O0 -Wall -Wextra -Werror --std=c++17 --coverage,运行结果a.out,然后运行gcov。
生成的.gcov文件包含:
-: 0:Runs:1
-: 1:#include <memory>
-: 2:using namespace std;
-: 3:struct S {};
-: 4:
1: 5:int main() {
#####: 6: unique_ptr<S> s;
1: 7: s = make_unique<S>();
1: 8:}
Run Code Online (Sandbox Code Playgroud)
这与 gcov 的旧版本不同,旧版本声称第 6 行被命中了 2 次。
为什么 gcov 认为第 6 行没有被覆盖?难道我做错了什么? …
gcovr ×13
code-coverage ×10
gcov ×9
c++ ×5
cobertura ×3
g++ ×2
jenkins ×2
macos ×1
objective-c ×1
profiling ×1
testing ×1
unit-testing ×1
xcode7 ×1