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

时间:2017-02-24 13:43:34

标签: rust kcov

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

例如:

#[test]
fn foo() {
    ...
}

kcov报告foo的覆盖率数据,但我想将其排除。

1 个答案:

答案 0 :(得分:6)

将测试代码放在不同的文件中并使用kcov参数--exclude-path=./test(用于集成测试)或--exclude-pattern=_test.rs(如果将foo.rs的所有测试移动到foo_test中)。 RS)。

另一种方法是使用kcov参数--exclude-region='#[cfg(test)]:#[cfg(testkcovstopmarker)]'并确保每个文件最后只有测试,后面没有非测试代码或添加停止标记{{1}使用必要的未使用定义使#[cfg(testkcovstopmarker)]满意。 (rustc在一行中的任何位置查找区域的开始和结束字符串。)

(也可以根据它们包含的字符串排除行,但这不适用于在Rust中排除测试。)