| 開発者 | オラクル株式会社 |
|---|---|
| オペレーティング·システム | ソラリス |
| プラットフォーム | スパーク |
| タイプ | コードカバレッジ |
| ライセンス | Sun Studio 製品ライセンスに記載されているとおり、無料でダウンロードして使用できます。 |
| Webサイト | 開発者向け |
Tcov は、 Fortran、C、C++で書かれたソフトウェアのソース コード カバレッジ分析およびステートメントごとのプロファイリング ツールです。Tcov は、プログラム内の各ステートメントの実行回数の正確なカウントを生成し、ソース コードに注釈を付けてインストルメンテーションを追加します。これは、 Sun Studioソフトウェアで無料で提供される標準ユーティリティです。
tcov ユーティリティは、プログラムがコード セグメントを実行する頻度に関する情報を提供します。実行頻度の注釈が付けられたソース ファイルのコピーを生成します。コードは、基本ブロックレベルまたはソース行レベルで注釈を付けることができます。基本ブロック内のステートメントは同じ回数実行されるため、基本ブロックの実行回数は、ブロック内の各ステートメントの実行回数と等しくなります。tcov ユーティリティは、時間ベースのデータを生成しません。
説明
tcov は、コンパイルされたプログラムのテスト カバレッジ分析を生成します。tcov はソース ファイルを引数として受け取り、注釈付きのソース リストを生成します。コードの各基本ブロック(または tcov に特定のオプションが指定されている場合は各行) には、実行された回数がプレフィックスとして付けられます。実行されていない行には、"#####" がプレフィックスとして付けられます。
tcov ユーティリティは、注釈付きプログラム リストの最後にも要約を配置します。最も頻繁に実行される基本ブロックの統計が、実行頻度の順にリストされます。行番号は、ブロックの最初の行の番号です。
tcov には 2 つの実装があります。
- 旧スタイルのカバレッジ分析: [1]この実装はtcovオリジナルとも呼ばれ、コンパイラは各オブジェクトファイルに対して拡張子.dのカバレッジデータファイルを作成します。プログラムが完了すると、カバレッジデータファイルが更新されます。
- 新しいスタイルのカバレッジ分析: [2]この実装はtcov拡張とも呼ばれ、コンパイル時に追加のファイルは作成されません。代わりに、プロファイルデータを格納するためのディレクトリが作成され、そのディレクトリにtcovdと呼ばれる単一のカバレッジデータファイルが作成されます。
強化されたカバレッジ分析は、次のような元の分析ツールの欠点のいくつかを克服しました。[3]
- C++ のより完全なサポートを提供します。
- #include ヘッダー ファイルにあるコードをサポートし、テンプレート クラスと関数のカバレッジ番号が不明瞭になる欠陥を修正します。
- オリジナルの tcov ランタイムよりも効率的なランタイムです。
- コンパイラがサポートするすべてのプラットフォームでサポートされます。
実装
注釈付きソースコードを生成するには、次の3つのステップが必要です。[4]
- 適切なコンパイラオプションによるコードのコンパイル
- プロファイルデータを蓄積するためのプログラム実行
- 注釈付きファイルを生成するためのtcovコマンドの実行
以降の実行ごとに、プロファイルデータファイルにカバレッジデータが蓄積されます。各オブジェクトファイルのデータは、再コンパイル後にプログラムが最初に実行されるときにゼロに設定されます。プログラム全体のデータは、tcovdファイルを削除することでゼロに設定されます。[5]
上記の手順は、以下の元の tcov と拡張された tcov の両方について説明されています。
旧式のカバレッジ分析
ソース コードは、 C プログラムの場合は-xaオプション、Fortran および C++ プログラムの場合は-aオプションでコンパイルされます。コンパイラは、各オブジェクト ファイルに対して、接尾辞.dを持つカバレッジ データ ファイルを作成します。カバレッジ データ ファイルは、環境変数TCOVDIRで指定されたディレクトリに作成されます。TCOVDIRが設定されていない場合、カバレッジ データ ファイルは現在のディレクトリに作成されます。上記のインストルメント ビルドが実行され、プログラム完了時に.dファイルが更新されます。最後に、tcov コマンドが実行され、注釈付きソース ファイルが生成されます。tcov コマンドの構文は次のとおりです。
tcov オプション ソースファイルリスト
ここで、source-file-list はソース コードのファイル名のリストです。オプションのリストについては、tcov のデフォルトの出力は、それぞれに.tcovというサフィックスが付いたファイルのセットであり、 -o filename オプションで変更できます。
コード カバレッジ分析用にコンパイルされたプログラムは、複数回実行できます (入力が変化する可能性があります)。実行のたびに tcov を使用してプログラムの動作を比較できます。
新しいスタイルのカバレッジ分析
ソースコードは、-xprofile=tcovオプションでコンパイルされます。オリジナルモードとは異なり、拡張 tcov はコンパイル時にファイルを生成しません。[6]上記のインストルメント化されたビルドが実行され、プログラム完了時に、プロファイルデータを格納するためのディレクトリが作成され、そのディレクトリにtcovdと呼ばれる単一のカバレッジデータファイルが作成されます。 tcovd は、行番号と実行回数に関する情報を保持します。これはプレーンテキストファイルです。デフォルトでは、ディレクトリはプログラムが実行される場所に作成され、実行可能ファイルの名前に.profileという接尾辞が付けられます。ディレクトリはプロファイルバケットとも呼ばれます。プロファイルバケットの場所は、SUN_PROFDATA_DIRまたはSUN_PROFDATA環境変数を設定することで上書きできます。最後に、tcov コマンドが実行され、注釈付きソースファイルが生成されます。tcov コマンドの構文は、必須の-xオプションを除いて、オリジナルコマンドと同じです。
tcov オプション -x プロファイルバケット ソースファイルリスト
オリジナルの tcov コマンドとの唯一の違いは、拡張された tcov を示す-x dirオプションが必須で追加されていることです。
例
C プログラミング言語で書かれた次のプログラムは、1 から 9 までの整数をループし、係数 (%) 演算子を使用してそれらが割り切れるかどうかをテストします 。
#include <stdio.h>
int
main ( void ) { int i ;
for ( i = 1 ; i < 10 ; i ++ ) { if ( i % 3 == 0 ) printf ( "%d は 3 で割り切れます\n " , i ); if ( i % 11 == 0 ) printf ( "%d は 11 で割り切れます\n " , i ); }
0 を返す; }
カバレッジ テストを有効にするには、プログラムを次のオプションでコンパイルする必要があります。
旧式のコードカバレッジ の場合、
cc -xa cov.c
新しいスタイルのコードカバレッジ については、
cc -xprofile=tcov -o cov cov.c
ここで、cov.c はプログラム ファイルの名前です。これにより、プログラムの各行が実行された回数を記録する追加の命令を含むインストルメントされた実行可能ファイルが作成されます。実行可能ファイルの名前を設定するには、 -oオプションを使用します。次に、実行可能ファイルを実行してカバレッジ データを作成する必要があります。このファイルの作成と場所は、古いスタイルのコード分析と新しいスタイルのコード分析で異なります。古いスタイルの分析では、コンパイル後にTCOVDIRディレクトリまたは現在のディレクトリに作成される拡張子 .dのこのファイルは、カバレッジ データで更新されます。新しいスタイルの分析では、 <実行可能ファイルの名前>.profileディレクトリにtcovdという名前のカバレッジ データ ファイルが作成されます。このデータは、tcov コマンドとソース ファイルの名前を使用して分析できます。
旧式のコードカバレッジ の場合、
tcovcov.c の
新しいスタイルのコードカバレッジ については、
tcov -x cov.profile cov.c
新しいスタイルの分析における追加の引数はプロファイルバケットです。tcovコマンドは、各行が実行された回数のカウントを含む、ファイル拡張子が '.tcov' で ある元のソース ファイルの注釈付きバージョンを生成します。
#include <stdio.h>
int
main ( void ) { 1 int i ;
10 for ( i = 1 ; i < 10 ; i ++ ) { 9 if ( i % 3 == 0 ) 3 printf ( "%d は 3 で割り切れます\n " , i ); 9 if ( i % 11 == 0 ) ###### printf ("%d は 11 で割り切れます\n", i); 9 }
1 0を返す; 1 }
tcovユーティリティは、注釈付きプログラム リストの最後にも要約を配置します。最も頻繁に実行される基本ブロックの統計が、実行頻度の順にリストされます。行番号は、ブロックの最初の行の番号です。
コマンドラインオプション
Tcovコマンドラインユーティリティは、プロファイルデータから注釈付きファイルを生成する際に以下のオプションをサポートしています: [7]
- -a : 各ステートメントの実行回数を表示します。このオプションを指定しない場合は、コード ブロックのリーダーの実行回数のみが表示されます。
- -n : 最も頻繁に実行される n 個のステートメントの行番号とその実行回数の表を表示します。
- -o filename : 出力をfile.tcovではなくfilenameに送ります。このオプションは、 -を指定して出力を標準出力に送るために使用できます。
- -x dir : これは新しいスタイルのカバレッジ分析でサポートされています。このオプションを指定しない場合は、古いスタイルの tcov カバレッジが想定されます。
参照
- Sun Studio、Tcov を提供するコンパイラ スイート
- 共通開発および配布ライセンス
- コードカバレッジ
- GCCが提供するコード カバレッジ ツールGcov
参考文献
- ^ 「オリジナルの Tcov ステートメントごとの分析」 。2012年2 月 6 日閲覧。
- ^ 「Enhanced Tcov statement-by-statement analysis」2012 年2 月 6 日閲覧。
- ^ 「tcov オリジナルよりも強化された tcov の機能」2012 年2 月 6 日閲覧。
- ^ oracle.com. 「注釈付きソース コードを生成するために必要な手順」。
- ^ www.sics.se. 「SunOS マニュアルページ」。
- ^ docs.oracle.com. 「拡張 tcov」。
- ^ developer.sun.com. 「Tcov ドキュメント」 。2012年2 月 7 日閲覧。
