问题标签 [kcov]

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 投票
1 回答
2997 浏览

bash - 使用 kcov/shunit2 测量执行的 shell 脚本的代码覆盖率

是否可以测量执行的 shell 脚本而不是源代码的代码覆盖率?

我有一个带有几个开关和选项的 shell 脚本。我添加了一些测试,我想测量测试套件的覆盖率。

资料来源:

剧本。

及其测试。

如您所见,它tests.sh执行 shell 脚本,而不是在同一个 shell 中调用它的函数。这样我就无法kcov测量脚本的覆盖率。我只能测量文件的覆盖率tests.sh

是否有可能以某种方式强制kcov测量主脚本的覆盖范围?

这个命令是我能做到的最好的:

在结果中我只看到关于shunit2and的覆盖率报告tests.sh,但在调试输出中我也看到了对的引用misspell_fixer.sh。所以我怀疑它是否可行。

0 投票
2 回答
1666 浏览

rust - 为什么 kcov 会为 Rust 程序计算错误的代码覆盖率统计信息?

我尝试使用kcov来获取 Rust 库的代码覆盖率。我已按照本教程构建和使用 kcov。覆盖率似乎有效,但我面临着一个奇怪的高覆盖率。项目中的某些文件获得 100% 的覆盖率,即使它们实际上根本没有被覆盖!

这是一个重现问题的最小项目:

货运.toml

src/lib.rs

src/subm.rs

有两个相同的函数,一个在 crate 的根中,另一个在子模块中。唯一的区别是第一个测试刺激了一个功能,而另一个则什么都不做。在这种情况下,我希望覆盖率不超过 50%。

然而kcov报告这个:

报道摘要

的覆盖范围lib.rs是正确的:

覆盖范围1

但是覆盖范围subm.rs是错误的!请注意,该函数是公共的,因此无法从库中优化:

覆盖范围2

在这里我们可以验证它kcov是否正常工作,因为它能够计算一个文件的代码覆盖率,但它无法看到第二个文件根本没有被覆盖。

这里有什么问题?也许测试二进制文件去掉了未使用的函数而 kcov 看不到它们?

0 投票
1 回答
604 浏览

rust - rustdoc 会生成可运行的二进制文件吗?

我正在尝试在 Rust 项目上运行kcov 。这对于通常的测试非常有效,但我无法弄清楚如何让它找到文档测试。

是否rustdoc创建任何我可以传递kcov给运行覆盖的二进制文件?

0 投票
1 回答
882 浏览

rust - 使用 kcov 时如何将测试函数排除在代码覆盖范围之外?

默认情况下,kcov 在其代码覆盖结果中包含所有源文件,包括测试函数。这会扭曲报告的覆盖率。如何告诉 kcov 排除测试功能?

例如:

kcov 报告 的覆盖率数据foo,但我想排除它。

0 投票
1 回答
256 浏览

rust - 即使未涵盖某些方法,Kcov 仍报告 Rust lib 100%

我正在尝试将代码覆盖率添加到我的 rust 库中。它报告它被 100% 覆盖,但是当我查看报告时,很多行都没有计算在内:https://codecov.io/gh/JelteF/defaultmap/src/c878e108c61f270718c909e1500c4c2e865a33d1/src/lib.rs#L93。 ..106

这是什么原因,是否有可能解决这个问题?我已经尝试按照此答案中的建议将 RUSTFLAGS 设置为“-C link-dead-code”:https ://stackoverflow.com/a/38371687/2570866 但是没有帮助。

0 投票
1 回答
606 浏览

code-coverage - kcov vs lcov vs 原始性能?

谁能给我一些关于在以下条件下运行的代码的相对性能的信息,

  1. 刚刚编译
  2. 编译--coverage
  3. 跑下kcov

如果我集成了像gcovor这样的代码覆盖工具,我是否需要两倍的时间来运行我的测试套件kcov

0 投票
1 回答
260 浏览

code-coverage - kcov 没有显示任何代码覆盖率

我试图在我的可执行文件上运行 kcov,每当我运行它时,我只能获得标准 c++ 代码(如 iostream)的代码覆盖率。如果我排除它,那么我会得到执行 0 行的“代码覆盖:NaN%”。

我正在尝试通过使用在 linux 上运行

${kcovExe} --exclude-path=${gcclibs} ${outputDir} ${myExe} ${args}

我查看了git 页面并尝试使用 --include-path 指向我的源代码,但我似乎无法让它工作。

我需要做什么才能让我的代码显示在覆盖率报告中?

编辑:为澄清起见,我正在一个环境中构建并在另一个环境中运行。

0 投票
0 回答
122 浏览

c++ - 如果我使用 gtest 库,为什么 kcov 会显示 0% 的代码被覆盖?

这是我的 cmake 文件,它创建了只有单元测试的二进制文件:

在测试cpp中:

我使用 cmake 使用单元测试构建项目,然后使用 kcov 实用程序:

它向我展示了 0.0% 的覆盖率覆盖报告

当我使用此实用程序https://github.com/SimonKagstrom/kcov时,我做错了什么 ?

0 投票
1 回答
817 浏览

rust - 使用 kcov 的 Rust 覆盖似乎不正确

当我使用 codecov.io 记录我的 Rust 项目的代码覆盖率时,覆盖率似乎不正确。

  1. 函数和unwrap()结束括号不包括

    展开和结束支架未覆盖

  2. 函数声明不包括在内

    未涵盖函数声明

这很奇怪。


我无法提供完整的复制项目。

我正在使用 Rust 的标准 TravisCI 配置。这是我的 .travis.yml:

0 投票
1 回答
125 浏览

docker - 为什么我的 kcov 命令的 outdir 总是空的?

所以,我需要将 kcov 集成到我的 gitlab-ci 中,以查看测试可执行文件的代码覆盖率。kcov 的文档指出我需要运行“kcov /path/to/outdir ./myexec”以在 html 文件中生成报告。但是,即使命令成功,/path/to/outdir 仍然是空的,我不知道为什么,因为测试通过并且 kcov 没有返回错误

这是.gitlab-ci.yml:

我的测试执行程序是滥用测试,它是通过 cmake->make 生成的,位于名为 TP3->build->test->abuse-test 的文件夹中

ci 中控制台的输出如下:

kcov 文档指出:“/path/to/outdir 将包含应用程序运行时连续生成的 lcov 样式的 HTML 输出”

然而,当我浏览文物时,我什么也没找到