标签: kcov

我如何获得货物测试承保?

当我想测试 C++ 覆盖率时,我可以使用 构建我的程序-fprofile-arcs -ftest-coverage,运行所有测试,然后运行gcov以获得覆盖率。

然而,当谈到 Rust 时,我完全迷失了。我想要做的是运行以下测试(在我的 Mac 上),并覆盖路径中的所有 Rust 代码components/raftstore

cargo test --package tests --test failpoints cases::test_normal
cargo test --package tests --test failpoints cases::test_bootstrap
cargo test --package tests --test failpoints cases::test_compact_log
Run Code Online (Sandbox Code Playgroud)

这篇文章来看,它说先运行cargo test --no-run,然后运行kcov。然而,当我真正这样做时,kcov 会永远阻塞。

然后我找到了一个叫“谁提供”的东西 。但是,当我像我所做的那样运行时,我收到错误cargo kcov--testcargo kcov --test failpoints cases::test_normalcargo test

error: cargo subcommand failure
note: cargo test exited with code exit status: 101
error: no test target named `failpoints` …
Run Code Online (Sandbox Code Playgroud)

unit-testing code-coverage rust rust-cargo kcov

13
推荐指数
2
解决办法
6760
查看次数

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

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

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

Cargo.toml

[package]
name = "mypackage"
version = "0.1.0"
authors = ["mbrt"]
Run Code Online (Sandbox Code Playgroud)

SRC/lib.rs

pub mod subm;

pub fn coverage1(i : bool) -> bool {
    if i {
        true
    }
    else {
        false
    }
}

#[cfg(test)]
mod test {
    use super::coverage1;

    #[test]
    fn test_coverage1() {
        assert!(coverage1(true));
    }
}
Run Code Online (Sandbox Code Playgroud)

SRC/subm.rs

pub fn coverage2(i : bool) -> bool {
    if i {
        true
    }
    else {
        false
    }
}

#[cfg(test)]
mod test {
    #[test]
    fn test_coverage2() {
    } …
Run Code Online (Sandbox Code Playgroud)

code-coverage rust kcov

12
推荐指数
2
解决办法
1251
查看次数

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

我正在尝试在Rust项目上运行kcov.这对于通常的测试非常有效,但是我还没弄清楚如何让它找到doc测试.

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

code-coverage rust rust-cargo kcov

7
推荐指数
1
解决办法
416
查看次数

使用kcov进行防锈覆盖似乎不正确

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

  1. 所述unwrap()功能和端托架未覆盖

    展开和末端支架未盖住

  2. 函数声明不包括在内

    功能声明未涵盖

这很奇怪.


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

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

language: rust
cache: cargo
dist: trusty
sudo: required

rust:
  - stable
  - beta
  - nightly

matrix:
  allow_failures:
    - rust: nightly

script:
  - cargo build --verbose --all
  - cargo test --verbose --all

after_success: |
  wget https://github.com/SimonKagstrom/kcov/archive/master.tar.gz &&
  tar xzf master.tar.gz &&
  cd kcov-master &&
  mkdir build &&
  cd build &&
  cmake .. &&
  make &&
  make install DESTDIR=../../kcov-build &&
  cd ../.. &&
  rm -rf kcov-master &&
  for file in target/debug/myproject-*[^\.d]; do mkdir -p …
Run Code Online (Sandbox Code Playgroud)

rust kcov codecov

5
推荐指数
1
解决办法
392
查看次数

使用kcov / shunit2测量已执行的Shell脚本的代码覆盖率

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

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

资料来源:

剧本。

及其测试。

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

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

该命令是我可以实现的最佳命令:

/usr/local/bin/kcov --debug=31 coverage/ test/tests.sh
Run Code Online (Sandbox Code Playgroud)

在结果中,我仅看到有关shunit2和的覆盖率报告tests.sh,但是在调试输出中,我也看到了对它的引用misspell_fixer.sh。因此,我怀疑它是否可行。

testing bash shell unit-testing kcov

5
推荐指数
1
解决办法
1713
查看次数

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 但这没有帮助。

rust kcov

5
推荐指数
1
解决办法
298
查看次数

使用kcov时如何从代码覆盖中排除测试函数?

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

例如:

#[test]
fn foo() {
    ...
}
Run Code Online (Sandbox Code Playgroud)

kcov报告了覆盖率数据foo,但我想将其排除在外.

rust kcov

4
推荐指数
1
解决办法
390
查看次数

标签 统计

kcov ×7

rust ×6

code-coverage ×3

rust-cargo ×2

unit-testing ×2

bash ×1

codecov ×1

shell ×1

testing ×1