问题标签 [lcov]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c - clang -coverage 将函数签名标记为未覆盖
我正在尝试使用clang -coverage
为我的 C 项目生成覆盖信息,但是当我希望它们根本不被检测时,所有函数签名都被标记为未覆盖。
小例子——这个文件是hello.c
:
在这个例子中,我希望第 4 行和第 5 行被标记为可执行,但不是第 3 行。我运行clang -coverage
并lcov
喜欢这样来获得初始覆盖:
生成的覆盖率文件如下所示:
我希望这DA:3,0
条线不在那里——或者至少,如果它在那里,我希望它会在最终的覆盖率报告中被标记出来。当我继续运行a.out
并再次运行 lcov 以生成完整的覆盖率报告时,如下所示:
coverage.total
看起来像这样:
我最终得到 66.7% 的覆盖率而不是 100%。我究竟做错了什么?
我在 OS X Yosemite 上使用系统叮当声:
用 gcc 尝试同样的事情(用 4.8.2 试过),该行仍然被标记为可执行,但最终的覆盖率报告已经被执行。
javascript - 使用 lcov 和 istanbul 时如何忽略 Javascript 代码覆盖率中的某些语句?
如何让 sonarqube 考虑代码注释中的指令?伊斯坦布尔上有一个页面描述了如何使用这样的评论忽略一些分支
(见https://github.com/gotwarlost/istanbul/blob/master/ignoring-code-for-coverage.md)
它适用于伊斯坦布尔生成的 HTML 报告,但不适用于 Sonarqube。
makefile - lcov 似乎在单个进程中处理 .gcda 文件。我有很多内核,我想将它们用于此处理。如何?
如果我运行:
它似乎一次处理每个 .gcda 文件,而不是利用我所有的内核。是否可以重写此步骤,以便我可以coverage_all.info
在使用所有内核的同时生成文件?
我正在考虑将某些内容放入 make 文件中并使用该-j
选项运行 make ,以便生成多个作业,每个作业将其结果记录在不同的文件中。然后,当所有工作完成后,我会将它们合并在一起,也许使用该lcov --add-tracefile
选项。
有谁知道如何做这样的事情?
sonar-runner - 声纳运行器 lcov 报告差异
SonarQube 社区,
在对 Node/JS 项目进行分析时,通过 istanbul 报告的覆盖率值与我们的 SonarQube 服务器上报告和显示的值大不相同。我们的 SonarQube 服务器是 4.5.4 我们的 sonar-runner 版本是 2.4 该项目生成了以下报告:
所有文件的代码覆盖率报告
语句:67.65% (1520 / 2247) 分支:49.76% (418 / 840) 函数:65.13% (269 / 413) 行:68.31% (1481 / 2168) 忽略:无
文件语句分支函数行
类/ 94.4% (118 / 125) 70% (7 / 10) 100% (9 / 9) 94.35% (117 / 124) 助手/ 84% (126 / 150) 75.44% (43 / 57 ) 86.67% (26 / 30) 84.25% (123 / 146) 服务/ 82.64% (976 / 1181) 66.67% (272 / 408) 81.63% (160 / 196) 83.26% (955 / 1147) view_controllers/ 37.93% ( 300 / 791) 26.3% (96 / 365) 41.57% (74 / 178) 38.08% (286 / 751) 由伊斯坦布尔在 2015 年 9 月 15 日星期二 17:01:21 GMT+0000 (UTC) 生成
SonarQube 4.5.4 向下钻取中显示的覆盖率值与其他报告显示的有很大不同:(我很抱歉无法发布图像,但我还没有足够高的声誉来执行此操作。)
技术债务 64d
问题 5,707
Blocker 0
严重 3
主要 3,922
次要 696
信息 1,086
单元测试覆盖率 28.6% 线路覆盖率 25.6%
条件覆盖率 49.8%
SQALE 评级 A
技术债务比率 1.0% 该项目对以下质量门条件有警告: 覆盖率 28.6% < 70.0% 关键问题 3 > 0 cd-services-test-Indexing web client cd-services-test-RECORDS-IDX-indexing-web-客户端配置文件:声纳方式(JavaScript)
质量门:SonarWayWithFindbugsForNFSWithBuildBreaker - java(默认)
代码行数 104,320
JavaScript
文件 426
目录 109
行 120,238
功能 6,726
类 4
语句 32,377 访问器
0 无用代码 18,260 18,260 行重复 41.5% 行 49,923
块 10,915
文件 89 复杂性 4.9 /function 4.5 /class 29.5 /file 总计:12,588
如果您需要实际的 lcov.info 文件,或者您希望上述数据的 png 文件更好地分析此问题,我可以通过电子邮件将它们直接发送给您。
你会建议我做些什么来尝试追查为什么会有这样的差异?
任何关于如何继续获取正确数据记录的想法将不胜感激。
道格
relative-path - lcov 绝对路径与相对路径
lcov 如何决定何时使用绝对路径和相对路径?
我有一个app
目录,其中包含我产品的每个共享库的子目录和几个二进制文件的子目录。像这样的东西:
但是,当通过lcov
and运行时genhtml
,目录如下所示:
换句话说,我的一个共享库目录中的所有内容都使用相对路径,而其他所有内容都使用绝对路径。 为什么?
我对lcov
andgenhtml
的调用非常简单:
triggers - 使用 GNU 库 GCOV、LCOV for SystemC 的代码覆盖率触发点?
我在 SystemC 中使用 GNU Libs GCOV 和 LCOV 进行代码覆盖率分析。一切正常,但我想知道是否有可能有触发点?就像示波器有一个触发选项,它可以捕获触发点的状态。我想在该特定情况下捕获覆盖率报告,如果这是正确的术语,更像是一个足迹。
或者,如果不可能,是否有可能在特定时间获得覆盖率报告?
谢谢。
ios - 使用 getcov 和 lcov 的 xcode7 代码覆盖率
使用最新的 Xcode,我们现在可以查看本地构建或集成的代码覆盖率。我想导出覆盖结果来构建对这些数据的一些分析。
项目https://github.com/jonreid/XcodeCoverage似乎是一种将报告数据导出为 xml 或 html 的简单方法,我可以用它来构建其他东西。但我遇到了一些困难。
设置相当简单。
- 从存储库中拉取。
- 在我的项目中添加 XcodeCovearage。
- 添加构建阶段脚本以运行 exporting.sh
- 运行我的测试。
- 执行 getcov 查看数据。
当我运行 getcov 时,我得到以下输出:
似乎缺少有关 lcov 或 getcov 脚本版本的一些信息,并且无法构建 coverage.info
有没有人尝试使用 Xcode7
有人知道从 Xcode 导出覆盖数据的其他有用工具吗?
谢谢,
python - 如何直接从共享库初始化 llvm 覆盖?
我正在测试一个 C/C++ 共享库,我在其中编译了带有标志的库并与-fprofile-arcs -ftest-coverage -pg
标志链接-fprofile-arcs -ftest-coverage
。
我正在通过 ctypes python 例程在 Python 中加载和测试共享库。
Gcda 文件不会从 python 生成,因为我的 python 二进制文件没有与-fprofile-arcs -ftest-coverage
标志链接。
如果我从中运行 python,lldb/gdb
则会生成 gcda 文件,这些文件是lldb/gdb
使用适当的覆盖标志编译的。
是否可以在调用我的共享库中的函数之前调用适当的覆盖函数来初始化配置文件弧和测试覆盖,然后调用适当的覆盖关闭例程?
我在我的库上做了一个 nm 并注意到以下例程,但不知道如何调用它们。
似乎 llvm_gcov_init 需要参数,所以我不能直接从 python 调用它。
我想直接初始化代码覆盖率,而不需要重新编译覆盖多台机器的python。
c - Hiding C sources when using lcov with a language transpiled to C
I'm experimenting with a language (ooc) that transpiles into C and is then compiled using gcc
. I want to check code coverage for a project written in this language and display it using lcov
and genhtml
. The C code has #line
references throughout the file pointing to the corresponding file in the original source.
So far so good, I have it setup and working. But lcov
seems to generate results for both the orignal source and the generated C code, which bloats the output.
How can I hide results for the C code?
c++ - 库单元测试的错误覆盖率数据
我想在 cmake 的帮助下测试一个复杂的共享库(cxsc)。经过大量的试验和错误后,我设法创建了一个 html 覆盖率报告,但是我使用 boost 测试框架测试的行仍然是红色的。
这是我用来创建覆盖率报告的脚本:
创建覆盖率报告的 cmake 部分:
测试二进制文件的 Makefile(我认为这是错误所在):
这就是发生的事情:
cmake -DCMAKE_BUILD_TYPE=Coverage ..
build_coverage 目录被创建,其中包含一个target.dir
目录和 *.gcno 文件cd tests && make
测试可执行文件被创建并链接到目录中的共享库build_coverage
(也许这是我的错误)make coverage
收集覆盖数据并执行测试
编辑:
为了澄清我的问题,这里涵盖了一些行,但只有全局常量或一个经常使用的辅助函数。但不是我在测试中调用的函数/方法。
中的文件build_coverage/CMakeFiles/cxsc.dir/src/
:
- 之后
cmake -DC...
:一些 *.cmake 和 *.make 文件 - 在dir: *.gcno 文件
make
之后build_coverage
- 之后
lcov -c -i ...
:仍然是 *.gcno 文件 - 运行测试后:*.gcda 和 *.gcno 文件
- 之后
lcov -c ...
:目录中有很多移动,但文件名仍然相同