Rust 不会为任何项目生成 .profraw 文件

问题描述 投票:0回答:2

我正在尝试遵循此指南,以便能够覆盖 Rust 项目的源代码。

我做了以下事情:

  1. 已安装grcov
     cargo install grcov
  1. 添加了 llvm-tools-preview
     rustup component add llvm-tools-preview
  1. 将我的 RUSTFLAGS 变量设置为 “-Zinstrument-coverage”
     set RUSTFLAGS="-Zinstrument-coverage"
  1. 我构建我的项目
    cargo build
  1. 将我的
    LLVM_PROFILE_FILE
    变量设置为:
    "test-%p-%m.profraw"
    set LLVM_PROFILE_FILE="test-%p-%m.profraw"
  1. 运行我的测试
    cargo test

但是没有出现.profraw文件,我只有以下内容:

file tree

我是否缺少一些额外的配置?

这是我的环境信息: 货物 1.57.0 (b2e52d7ca 2021-10-21) 发布:1.57.0 主机:x86_64-pc-windows-msvc 操作系统:Windows 10.0.18363(Windows 10 Enterprise)[64位]

预先感谢您的帮助。

rust llvm code-coverage rust-cargo
2个回答
3
投票

我在 Windows 上的 Rust 1.61 nightly 中看到了类似的行为。 我注意到警告消息指出无法写入

""test-%p-%m.profraw""
。 就我而言,解决方法是更改设置
LLVM_PROFILE_FILE
环境变量的方式。 如果我将其设置为:

set LLVM_PROFILE_FILE=test-%p-%m.profraw
不带引号并重新运行我的测试,会生成 .profraw 文件。

您的里程可能会有所不同。 我对

RUSTFLAGS
环境变量也有同样的问题,我必须删除引号才能编译。

我在 1.61 中遇到的另一件值得注意的事情是警告称

-Zinstrument-coverage
已被弃用,取而代之的是
-Cinstrument-coverage


0
投票

我在Windows上尝试了ardouglas的答案,但没有成功。但以下内容在 PowerShell 中有效:

$env:RUSTFLAGS="-Cinstrument-coverage"
cargo build
$env:LLVM_PROFILE="test-%p-%m.profraw"
cargo test

谢天谢地,它成功了。 我以为我要疯了。事实证明我只是对 PowerShell 理解不够好。

© www.soinside.com 2019 - 2024. All rights reserved.