10 个版本
0.2.2 | 2024 年 8 月 13 日 |
---|---|
0.2.1 | 2024 年 8 月 8 日 |
0.2.0 | 2024 年 6 月 26 日 |
0.1.0 | 2023 年 12 月 3 日 |
0.0.2 | 2023 年 11 月 11 日 |
#206 in 神奇豆
674 每月下载
66KB
884 行
包含 (ELF exe/lib,81KB) tests/output/fibonacci,(ELF exe/lib,81KB) tests/output/fibonacci-cov,(ELF exe/lib,2KB) tests/output/fibonacci-expected.ll.o
Wasmcov
Wasmcov 包含一个 Rust 库和相关的二进制文件,为 WebAssembly (Wasm) 模块的覆盖分析提供了一系列工具。此工具使您能够在执行 Wasm 模块的同时收集和审查代码覆盖数据。Wasmcov 以其灵活性和与 Wasm 项目的无缝集成而突出,是提高您 Wasm 应用程序标准的有力工具。
如果您想将此方法应用于非 Rust WASM 二进制文件,请参阅我们的 通用指南。
安装
通过运行以下命令安装 cargo-wasmcov
命令:
cargo install wasmcov
用法
cargo-wasmcov
为您的 WASM 项目提供了多个子命令,用于构建、运行、测试和生成覆盖报告。
集成覆盖捕获
在使用 cargo-wasmcov
之前,您需要将覆盖捕获功能集成到您的 WebAssembly 项目中
-
在您的
Cargo.toml
中将wasmcov
添加为依赖项wasmcov = "0.2"
-
将以下函数添加到您的 WebAssembly 项目中
#[cfg(target_family = "wasm")] #[no_mangle] pub unsafe extern "C" fn capture_coverage() { const BINARY_NAME: &str = env!("CARGO_PKG_NAME"); let mut coverage = vec![]; wasmcov::minicov::capture_coverage(&mut coverage).unwrap(); // Invoke a function to preserve the coverage data or use `println!` for debugging. }
对于 NEAR 协议项目,在您的智能合约的
lib.rs
中使用此宏#[cfg(target_family = "wasm")] wasmcov::near::add_coverage!();
构建
使用 WASM 覆盖工具构建您的项目
cargo wasmcov build [-- <additional cargo arguments>]
示例
cargo wasmcov build -- --all --target wasm32-unknown-unknown --release
运行
使用 WASM 覆盖运行您的项目
cargo wasmcov run [--near <VERSION>] [-- <additional cargo arguments>]
如果需要,使用 --near
选项指定 NEAR 沙盒版本(例如,1.35.0)。对于 near 项目是必需的。
测试
使用 WASM 覆盖运行测试
cargo wasmcov test [--near <VERSION>] [-- <additional cargo arguments>]
如果需要,使用 --near
选项指定 NEAR 沙盒版本(例如,1.35.0)。对于 near 项目是必需的。
生成覆盖报告
生成覆盖报告
cargo wasmcov report [-- <additional llvm-cov arguments>]
此命令将处理所有收集到的覆盖率数据并为每个目标生成报告。
清理
清理覆盖率数据
cargo wasmcov clean [--all]
使用 --all
标志删除整个 wasmcov 目录内容。
注意
- 该工具使用每晚的 Rust 工具链进行构建和运行。
- 覆盖率报告使用 LLVM 覆盖率工具生成。
- 对于 NEAR 特定项目,您必须使用
--near
选项与run
和test
子命令指定 NEAR 沙盒版本。
许可
此存储库根据 Apache 许可协议(版本 2.0)分发。有关详细信息,请参阅LICENSE。
当单独使用 Wasmcov 的解决方案(将 llvm-ir 转换为 .o 文件以进行链接)时,需要注明来源。
维护者
此存储库目前由 Bartosz Barwikowski 管理,他来自 Hacken。它最初由 Noah Jelich 创建,该方法本身是与 Bartosz 共同创建的。请随时提出任何疑问或关注。
贡献
鼓励贡献!使用 cargo build
命令来构建项目。注意:在测试期间,使用 --test-threads=1
标志禁用并行性。这确保环境变量不会受到其他测试的影响。
为了方便起见,可以使用缩写 make build
和 make test
分别构建和测试项目。
依赖项
~0–1.7MB
~22K SLoC