Rustのcargo llvm covによる結果をhtmlで出力する

はじめに

以前、「Rustでテストカバレッジを測ってみる」という記事で、cargo_llvm_covを使いカバレッジを測ってみました。

今回は、その結果をhtmlのレポートとして出力することをやってみたいと思います。

環境

OS: Windows 10 Rust: 1.64.0

プロジェクトの用意

カバレッジを測るため、簡単なRustコードを用意します。

fn fizzbuzz(num: u32) -> String {
    if num%15 == 0 {
        "fizzbuzz".to_string()
    } else if num%3 == 0 {
        "fizz".to_string()
    } else if num%5 == 0 {
        "buzz".to_string()
    } else {
        num.to_string()
    }
}

fn main() {
    let num = 10;
    println!("{}", fizzbuzz(num));
}

#[cfg(test)]
mod tests {
    use super::*;

    #[test]
    fn test_fizz() {
        assert_eq!("fizz".to_string(), fizzbuzz(3));
    }
    
    #[test]
    fn test_buzz() {
        assert_eq!("buzz".to_string(), fizzbuzz(5));
    }
    
    #[test]
    fn test_fizzbuzz() {
        assert_eq!("fizzbuzz".to_string(), fizzbuzz(15));
    }
}

カバレッジレポートを出力する

以下のコマンドを実行してください

cargo llvm-cov --html

すると、カバレッジレポートがhtmlでtarget/llvm/htmlに出力されます。

コマンド実行後のフォルダ構成、レポートの場所は以下のようになります。

Rustプロジェクト
├ src
│  └ ...(省略)
├ target
│  ├ llvm-cov
│  │  └ html
│  │    ├ coverage
│  │    │  └ ...(省略)
│  │    ├ index.html  <- これ
│  │    └ style.css
│  └ llvm-cov-target
│     └ ...(省略)
├ Cargo.lock
└ Cargo.toml

index.htmlを開いてみると、以下のような感じになっています。

おわりに

Rustのcargo llvm covによる結果をhtmlで出力してみました