2
默認情況下,kcov在其代碼覆蓋率結果中包含所有源文件,包括測試函數。這扭曲了報道的覆蓋率。我如何告訴kcov排除測試功能?使用kcov時,如何從代碼覆蓋率中排除測試函數?
例如:
#[test]
fn foo() {
...
}
kcov報告覆蓋數據foo
,但我想將它排除在外。
默認情況下,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的信息。 –