使用 kcov 时如何从代码覆盖中排除测试函数?
How do I exclude test functions from code coverage when using kcov?
默认情况下,kcov 在其代码覆盖率结果中包含所有源文件,包括测试函数。这扭曲了报告的覆盖率。我如何告诉 kcov 排除测试函数?
例如:
#[test]
fn foo() {
...
}
kcov 报告 foo
的覆盖率数据,但我想将其排除。
将您的测试代码放在不同的文件中并使用 kcov
参数 --exclude-path=./test
(用于集成测试)或 --exclude-pattern=_test.rs
(如果您将所有测试移动到 foo.rs 到 foo_test.rs).
另一种方法是使用 kcov
参数 --exclude-region='#[cfg(test)]:#[cfg(testkcovstopmarker)]'
并确保每个文件要么在末尾只有测试并且后面没有非测试代码,要么添加停止标记 #[cfg(testkcovstopmarker)]
后面加上必要的未使用定义,以使 rustc
满意。 (kcov
查找一行中任意位置的区域的开始和结束字符串。)
(也可以根据包含的字符串排除行,但这不适用于排除 Rust 中的测试。)
默认情况下,kcov 在其代码覆盖率结果中包含所有源文件,包括测试函数。这扭曲了报告的覆盖率。我如何告诉 kcov 排除测试函数?
例如:
#[test]
fn foo() {
...
}
kcov 报告 foo
的覆盖率数据,但我想将其排除。
将您的测试代码放在不同的文件中并使用 kcov
参数 --exclude-path=./test
(用于集成测试)或 --exclude-pattern=_test.rs
(如果您将所有测试移动到 foo.rs 到 foo_test.rs).
另一种方法是使用 kcov
参数 --exclude-region='#[cfg(test)]:#[cfg(testkcovstopmarker)]'
并确保每个文件要么在末尾只有测试并且后面没有非测试代码,要么添加停止标记 #[cfg(testkcovstopmarker)]
后面加上必要的未使用定义,以使 rustc
满意。 (kcov
查找一行中任意位置的区域的开始和结束字符串。)
(也可以根据包含的字符串排除行,但这不适用于排除 Rust 中的测试。)