10

現在、Linux C ++アプリケーション用のテストスイートでgcovを使用しており、ラインカバレッジの測定に優れています。

gcovは、ラインカバレッジに加えて関数/メソッドカバレッジレポートを作成できますか?

gcovが受け入れるパラメーターを見ると、それは不可能だと思いますが、何かが足りない可能性があります。または、おそらく、gccによって生成された統計から関数/メソッドカバレッジレポートを生成できる他のツールはありますか?

更新:関数/メソッドの適用範囲とは、テスト中に実行される関数の割合を意味します。

4

3 に答える 3

6

あなたが意味するのは -f オプションだと思います。これにより、関数ごとにカバーされる行の割合が得られます。Dr. Dobb'sにgcov に関する興味深い記事があり、参考になるかもしれません。「man gcov」で -f フラグが表示されない場合は、gcc スイートの最新バージョンを使用しているかどうかを確認してください。

編集:実行されていない関数の割合を取得するには、関数カバレッジの出力を解析するだけです。この小さなスクリプトは、実行されなかった関数のパーセンテージを出力します。

#!/bin/bash

if test -z "$1"
then
    echo "First argument must be function coverage file"
else
    notExecuted=`cat $1 | grep "^0.00%" | wc -l`
    executed=`cat $1 | grep -v "^0.00%" | wc -l`

    percentage=$(echo "scale=2; $notExecuted / ($notExecuted + $executed) * 100" |bc)

    echo $percentage
fi
于 2009-02-10T21:20:59.013 に答える
6

gcov とlcovの併用を開始しました。lcov の結果には、見ている「モジュール」に対して実行された関数の割合が含まれています。

編集:モジュールは、ディレクトリからファイルに移動できます。

また、既に GNU コンパイラ ツールを使用している場合、gcov/lcov を実行するのはそれほど難しくなく、生成される結果は非常に印象的であることも付け加えておきます。

于 2009-02-11T10:13:51.790 に答える
5

lcov ユーティリティは素晴らしく、私たちはそれを使用しています。しかし、あなたが望むもののためにそれが必要かどうかはわかりません。

私達

  1. ctags ( wikipedia ; sourceforge ) を使用して、関連するヘッダー ファイルで宣言されているすべての関数を見つけます。

  2. GCOV を実行して、バイナリ内のすべての関数のライン カバレッジを取得します。

  3. 1 と 2 の関数のリストを比較して、「呼び出された関数」/「使用可能な関数」を作成します。

ステップ 1 をパブリック API ヘッダーにのみ適用するため、これを「API カバレッジ」と呼びます。ただし、すべてのヘッダーに対して行うことも、選択したサブセットのみに対して行うこともできます。このようにして生み出される比率は、あなたが探している比率だと思います。

于 2009-11-18T19:17:27.117 に答える