2017-04-23 34 views
4

我試圖代碼覆蓋率添加到我的生鏽庫。據報道,它被覆蓋100%,但當我看報告時,很多行不計算在內:https://codecov.io/gh/JelteF/defaultmap/src/c878e108c61f270718c909e1500c4c2e865a33d1/src/lib.rs#L93...106Kcov是報告100%生鏽lib目錄,儘管一些方法不包括

這是什麼原因,是否有可能解決這個問題?我已經嘗試設置RUSTFLAGS爲這個回答表明「-C鏈接死代碼」:https://stackoverflow.com/a/38371687/2570866 這並沒有幫助。然而。

回答

4

這是一個已知的問題(https://github.com/rust-lang/rust/issues/39293),沒有沒有實現的解決方案。 Rust中的泛型是similar to templates in C++,如果您不使用泛型函數,則根本不會生成任何代碼。事實上,這些功能是不存在的:

$ nm target/debug/defaultmap-2fd0c3085042f647 | grep DefaultHashMap | cargo demangle 
000000000002c350 t <defaultmap::hashmap::DefaultHashMap<K, V> as core::ops::Index<KB>>::index::h14fb5e24128b7e47 
000000000002c390 t <defaultmap::hashmap::DefaultHashMap<K, V> as core::ops::Index<KB>>::index::h5c00e602e45f6925 
000000000002c3d0 t <defaultmap::hashmap::DefaultHashMap<K, V> as core::ops::Index<KB>>::index::hc5dfb7b3478d945a 
000000000002c420 t <defaultmap::hashmap::DefaultHashMap<K, V> as core::ops::IndexMut<K>>::index_mut::h8b298bf16464a070 
000000000002c470 t <defaultmap::hashmap::DefaultHashMap<K, V> as core::ops::IndexMut<K>>::index_mut::hcc509def35f89759 
000000000002bfc0 t <defaultmap::hashmap::DefaultHashMap<K, V>>::get::h6a0f4cb5c61c67e8 
000000000002c060 t <defaultmap::hashmap::DefaultHashMap<K, V>>::get::ha5fdb528b5dd94a5 
000000000002c110 t <defaultmap::hashmap::DefaultHashMap<K, V>>::get::hc1a5643986209ba6 
000000000002c1b0 t <defaultmap::hashmap::DefaultHashMap<K, V>>::get_mut::h14f0ded6ba3206f3 
000000000002c2a0 t <defaultmap::hashmap::DefaultHashMap<K, V>>::get_mut::h6ea36d917e778099 
000000000002eaf0 t <defaultmap::hashmap::DefaultHashMap<K, V> as core::fmt::Debug>::fmt::h2cefa624bd18fcfe 
000000000002e9e0 t <defaultmap::hashmap::DefaultHashMap<K, V> as core::default::Default>::default::h0b736edcd6ac228a 
000000000002ea60 t <defaultmap::hashmap::DefaultHashMap<K, V> as core::default::Default>::default::hd09b7abe1e63b94f 

我認爲,就目前而言,唯一的解決辦法就是手動檢查覆蓋報告,並重新添加缺少的試驗被忽略的功能。

相關問題