问题标签 [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.
bash - 使用 kcov/shunit2 测量执行的 shell 脚本的代码覆盖率
是否可以测量执行的 shell 脚本而不是源代码的代码覆盖率?
我有一个带有几个开关和选项的 shell 脚本。我添加了一些测试,我想测量测试套件的覆盖率。
资料来源:
如您所见,它tests.sh
执行 shell 脚本,而不是在同一个 shell 中调用它的函数。这样我就无法kcov
测量脚本的覆盖率。我只能测量文件的覆盖率tests.sh
。
是否有可能以某种方式强制kcov
测量主脚本的覆盖范围?
这个命令是我能做到的最好的:
在结果中我只看到关于shunit2
and的覆盖率报告tests.sh
,但在调试输出中我也看到了对的引用misspell_fixer.sh
。所以我怀疑它是否可行。
rust - 为什么 kcov 会为 Rust 程序计算错误的代码覆盖率统计信息?
我尝试使用kcov来获取 Rust 库的代码覆盖率。我已按照本教程构建和使用 kcov。覆盖率似乎有效,但我面临着一个奇怪的高覆盖率。项目中的某些文件获得 100% 的覆盖率,即使它们实际上根本没有被覆盖!
这是一个重现问题的最小项目:
货运.toml
src/lib.rs
src/subm.rs
有两个相同的函数,一个在 crate 的根中,另一个在子模块中。唯一的区别是第一个测试刺激了一个功能,而另一个则什么都不做。在这种情况下,我希望覆盖率不超过 50%。
然而kcov
报告这个:
的覆盖范围lib.rs
是正确的:
但是覆盖范围subm.rs
是错误的!请注意,该函数是公共的,因此无法从库中优化:
在这里我们可以验证它kcov
是否正常工作,因为它能够计算一个文件的代码覆盖率,但它无法看到第二个文件根本没有被覆盖。
这里有什么问题?也许测试二进制文件去掉了未使用的函数而 kcov 看不到它们?
rust - rustdoc 会生成可运行的二进制文件吗?
我正在尝试在 Rust 项目上运行kcov 。这对于通常的测试非常有效,但我无法弄清楚如何让它找到文档测试。
是否rustdoc
创建任何我可以传递kcov
给运行覆盖的二进制文件?
rust - 使用 kcov 时如何将测试函数排除在代码覆盖范围之外?
默认情况下,kcov 在其代码覆盖结果中包含所有源文件,包括测试函数。这会扭曲报告的覆盖率。如何告诉 kcov 排除测试功能?
例如:
kcov 报告 的覆盖率数据foo
,但我想排除它。
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 但是没有帮助。
code-coverage - kcov vs lcov vs 原始性能?
谁能给我一些关于在以下条件下运行的代码的相对性能的信息,
- 刚刚编译
- 编译
--coverage
- 跑下
kcov
如果我集成了像gcov
or这样的代码覆盖工具,我是否需要两倍的时间来运行我的测试套件kcov
?
code-coverage - kcov 没有显示任何代码覆盖率
我试图在我的可执行文件上运行 kcov,每当我运行它时,我只能获得标准 c++ 代码(如 iostream)的代码覆盖率。如果我排除它,那么我会得到执行 0 行的“代码覆盖:NaN%”。
我正在尝试通过使用在 linux 上运行
${kcovExe} --exclude-path=${gcclibs} ${outputDir} ${myExe} ${args}
我查看了git 页面并尝试使用 --include-path 指向我的源代码,但我似乎无法让它工作。
我需要做什么才能让我的代码显示在覆盖率报告中?
编辑:为澄清起见,我正在一个环境中构建并在另一个环境中运行。
c++ - 如果我使用 gtest 库,为什么 kcov 会显示 0% 的代码被覆盖?
这是我的 cmake 文件,它创建了只有单元测试的二进制文件:
在测试cpp中:
我使用 cmake 使用单元测试构建项目,然后使用 kcov 实用程序:
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 输出”
然而,当我浏览文物时,我什么也没找到