问题标签 [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.

0 投票
2 回答
6696 浏览

ios - 如何通过 lcov 和代码覆盖率比较处理不同目录中的 .gcda 和 .gcno 文件

我可以通过 lcov 在同一目录中使用 .gcda 文件和 .gcno 文件生成 .info 文件,但是如何在不同位置使用 .gcda 文件和 .gcno 文件生成代码覆盖率?

例如,

/Users/swd/Library/Developer/Xcode/DerivedData/test1aaeyiowcssrymfbwtudrqqakuvr/Build/Intermediates/test1.build/Cov/test1.build/Objects-normal/x86_64/AppDelegate.gcno

/Volumes/Data/test1/test1/AppDelegate.gcda

我尝试了 --add-tracefile 但失败了,并输出 'lcov: ERROR: no valid records found in trace file'

我的第二个问题是 lcov 是否有一些命令可以将我的旧版本覆盖率 html 与我的新版本进行比较,以便我找到不同之处。

有任何想法吗?谢谢

0 投票
1 回答
1942 浏览

c - 如何使用 gcov/lcov 为 fork() 的孩子生成覆盖率报告?

我在为我的一个项目生成覆盖率报告时遇到了麻烦——似乎在分叉之后的子进程中的行从未被击中,尽管它们显然是现实的。

这是fork部分的工作服报告(结果与lcov+genhtml相同),以及构建日志

该项目使用带有 libtool 的 autotools 进行构建,并将所有内容打包为静态库。(configure.ac库 makefile.am测试 makefile.am

我尝试将覆盖率标志添加到测试和--coverageCFLAGS 中,但无济于事。

最让我烦恼的是,我试图在一个简单的 C 文件上重现该行为,如下所示:

使用以下 shell 会话:

...但生成的报告宣布 100% 的覆盖率。

怎么了 ?我的构建是否损坏?

0 投票
0 回答
378 浏览

xcode - LCov - 发现无法识别的记录格式错误

我正在寻找与基于 XCode 6.1 的项目一起使用的 HTML 代码覆盖率报告。我的解决方案“部分有效”,但是在运行 lcov 时我得到了很多跳过的文件:


关于我的设置的更多细节:

  1. 通过这些说明(步骤 1+2)创建了 XCode“覆盖”配置: https ://developer.apple.com/library/ios/qa/qa1514/_index.html

  2. 使用此配置通过xcodebuild.

这似乎成功地为我的每个源文件生成GCNO文件和GCDA文件。到目前为止,一切都很好。

  1. 运行lcov(v1.11) 以生成 HTML 报告。我正在使用的命令如下所示:

    /li>

由于ignore-errors参数,这也成功了。但是,我收到很多跳过的 gcno 文件,并出现以下错误:

当我通过 生成我的 HTML 报告时genhtml,这些文件不显示任何覆盖范围。

有没有办法解决这个问题?也许是一组不同的clang标志,或者是lcov? 我短暂地尝试过gcovr,但我无法让它工作。

0 投票
1 回答
1063 浏览

node.js - (Node) 将 lcov 文件转换为 cobertura XML 的 JS Utility 函数

我正在使用 Blanket.JS 进行代码覆盖,不幸的是它只支持生成除 JSON 和 HTML 之外的 lcov 字符串。但我希望 Jenkins 使用相同的报告,但它似乎支持 Cobertura。

我正在寻找将此.lcov报告转换为 Cobertura XML 的方法。目前这是我迄今为止发现的流行工具http://eriwen.github.io/lcov-to-cobertura-xml/。但我还没有准备好使用它,因为它是依赖于 Python 的工具。

有人请建议我一种转换lcovCobertura.

0 投票
1 回答
10309 浏览

javascript - Sonarqube 未从 LCOV 检索我的 JavaScript 覆盖范围

我有一个具有以下结构的应用程序:

我创建了pom.xml唯一运行 SonarQube 分析的程序。否则,所有任务都由 Grunt 运行(测试使用 Karma 运行)。

的内容pom.xml如下:

当我运行时grunt test,它会创建一个build/karma/coverage/lcov.info包含以下信息的:

在 SonarQube 分析之后,仪表板显示 0% 的代码覆盖率。

我怀疑 中的路径SF:是错误的根源。因此,我更改了sonar.javascript.lcov.reportPath属性以使用另一个属性来lcov.info测试不同的值:app.js, ./app.js, app/scripts/app.js, ./app/scripts/app.js, 但没有一个起作用,将覆盖率保持为 0%。

我错过了什么?

以防万一,我的配置中有以下配置karma.conf.js

ps:声纳版本是3.7.2,不过我也试过4.3,结果一样……


编辑:我已经更新了我的配置以直接使用 Sonar-runner,我使用的是最新版本的 Sonar(5.0.1)和 JS 插件(2.3)。我还手动修改了lcov.info具有“良好”格式(至少一种与 Sonar repo 示例匹配的格式):

sonar-project.properties看起来像:

而且,0% 的覆盖率 :(

0 投票
1 回答
618 浏览

python - 将js覆盖率lcov文件转换为cobertura XML时如何排除特定文件

我正在使用 python 脚本将 lcov 文件转换为 cobertura 格式,以便我可以使用 Jenkins 插件在作业中显示报告。我需要排除几个包和一些文件,python 脚本只提供排除包的选项。还有其他解决方法吗?

https://github.com/eriwen/lcov-to-cobertura-xml

排除整个包,python lcov_cobertura.py lcov.info --excludes sources.modules.web.services.transport -o coverage1.xml

我想排除传输包下的“BundleService.js”,(这不起作用) python lcov_cobertura.py lcov.info --excludes sources.modules.web.services.transport.BundleService -o coverage2.xml

尝试了多个正则表达式,仍然没有运气。

0 投票
1 回答
7948 浏览

javascript - 如何更改 Karma 执行的 LCOV 报告的格式?

我已将 Karma 配置为报告我的 JavaScript 代码的覆盖率。这是karma.conf.js文件中配置的一部分:

我的lcov.info文件具有以下格式:

不幸的是,Sonarqube JavaScript 插件只考虑以SF:,DA:BRDA:(cf LCOVParser ) 开头的行。

因此,LCOV HTML 报告(由伊斯坦布尔制作)在相同数据上为我提供了比 Sonar 更高的代码覆盖率。

有没有办法改变lcov.info生成的格式?


如果我查看伊斯坦布尔代码,我可以想象不同标签的含义:

  • BRF, BRH,BRDA用于分支
  • FN, FNF, FNH,FNDA用于函数
  • LN, LF,LH用于线
  • *F是总数,而*H是覆盖信息。

伊斯坦布尔和声纳覆盖范围之间的差异似乎是由于后者完全忽略了功能和分支覆盖范围。

有什么办法解决这个问题吗?

0 投票
2 回答
360 浏览

unit-testing - 将 GCOV 与 Bjam 集成

我正在创建 boost 单元测试用例,我需要获得相同的代码覆盖率。我打算使用 GCOV 和 LCOV 来获得代码覆盖率。有人可以帮我在 Jamfile 中获取 GCOV 和 LCOV 与 bjam 集成的配置吗?

0 投票
3 回答
9641 浏览

javascript - 如何根据 Jasmine 的 SpecRunner.html 生成 LCOV 报告?

我们使用 Jasmine 进行 JavaScript 单元测试。我们有一个SpecRunner.html文件来运行测试。是否存在一个工具,我可以将路径SpecRunner.html和路径传递到 JavaScript(不是规范)文件的目录,它会生成一个 LCOV 报告。例如,像这样:

0 投票
1 回答
8172 浏览

cmake - 在 CMake 项目中使用 GCOV/LCOV 的 C++

我正在一个 C++ 项目中工作,其结构类似于以下内容:

我确实需要控制测试的覆盖率,为此我以这种方式使用 GCOV 和 LCOV:

  1. 在所有 CMakeLists.txt 中启用覆盖标志以生成 .gcno 文件。

    /li>
  2. 运行测试,生成相应的.gcda文件。

    此时,文件 gcno 和 gcda 与对应.o文件位于同一目录下。我无法移动这些文件,因为如果我这样做,报告覆盖率生成将不起作用。

  3. 从文件所在的目录中,.gcno.gcda执行以下操作:

    /li>
  4. 使用以下命令生成 HTML 报告:

    /li>

当我编译我的项目时,我有重复.gcno的文件,因为在编译测试时他们需要重新编译它们的依赖项(comms,utils,...),因为我不为这些依赖项生成库。如果我不使用库,我认为没有办法避免这种情况。

但是,当我尝试index.html为全球项目生成(覆盖率报告)时,它不起作用。

我使用一个 Shell 脚本来创建与我的项目相同的文件夹结构,并将每个文件夹结构复制.gcno.gcda相应的目录中。我执行命令lcovgenhtmlindex.html 包括所有项目覆盖范围。

我将不胜感激任何帮助。