デフォルトでは、カバレージディレクトリ上の uncover コマンドを実行すると、カバレージレポートが Oracle Developer Studio パフォーマンスアナライザで実験として開きます。このセクションでは、カバレージデータを表示するパフォーマンスアナライザのインタフェースについて説明します。
パフォーマンスアナライザの詳細は、統合ヘルプおよびOracle Developer Studio 12.5: パフォーマンスアナライザを参照してください。
パフォーマンスアナライザでカバレージレポートを開くと、「概要」画面が表示されます。このビューには、実行中の「実験」、実験の「メトリック」、および「メトリックのプレビュー」が表示されます。
次の図は、パフォーマンスアナライザの「概要」画面を示しています。
ナビゲーションパネルで「関数」ビューをクリックすると、プログラムの関数と排他的メトリックが表示されます。特定のメトリックの値に従ってデータをソートするには、目的の列見出しをクリックします。列ヘッダーの下にある矢印をクリックすると、ソート順が逆になります。
メトリックには次のようなものがあります。
関数でカバーできるバイト数を示す「カバレージ外」カウンタ。
どの関数がカバーされているかを示す「関数」カウンタ。
関数内で命令が実行されたかどうかを示す「命令の実行」カウンタ。
関数内でカバーされているブロックの割合を示す「カバーされているブロックの割合」カウンタ。
関数内でカバーされている命令の割合を示す「カバーされている命令の割合」カウンタ。
次の図は、パフォーマンスアナライザ内の「カバレージ外」でソートされたカバレージレポートを示しています。
「カバレージ外」カウンタは、uncover の非常に強力な機能です。この列を降順のソートキーとして使用する場合、最上部に表示される関数は、カバレージを増やす可能性がもっとも高い関数です。前の図で、test_for_memory_leak() 関数は、「カバレージ外」列に最大の数が存在するためリストのいちばん上にあります。
test_for_memory_leak() 関数の「カバレージ外」の数は、関数が呼び出される原因となるスイートにテストが追加された場合にカバーされる可能性のあるコードのバイト数です。カバレージが実際に増加する量は、関数の構造によって異なります。関数に分岐がなく、呼び出すすべての関数も直線関数である場合、カバレージは一定のバイト数で増加します。ただし、通常、カバレージの増加は潜在的に想定されるより (おそらくずっと) 少なくなります。
「カバレージ外 (Uncoverage)」列の 0 以外の値を持つカバーされていない関数は、カバーされていないルート関数と呼ばれ、カバーされている関数によってすべて呼び出されることを意味します。カバーされていないルート関数以外からしか呼び出されない関数には、独自の「カバレージ外」の数は存在しません。テストスイートは、潜在性の高いカバーされていない関数をカバーするように改良されるにつれて、これらの関数は、後続の実行で、カバーされるか、またはカバーされないことが明らかにされると想定されます。
カバレージ数は排他的ではありません。
「関数カウント」列は、カバーされている関数とカバーされていない関数を報告します。数が 0 の場合、関数はカバーされません。数が 0 以外の場合、関数はカバーされます。関数の命令が実行される場合、関数はカバーされるとみなされます。
この列で、トップレベル以外のカバーされていない関数を検出できます。「関数カウント」列と「カバレージ外」列の両方が 0 を示している場合、その関数はトップレベルのカバーされている関数ではありません。
「命令の実行 (Instr Exec)」カウンタは、カバーされている命令とカバーされていない命令を表示します。0 のカウントは命令が実行されないことを意味し、0 以外のカウントは命令が実行されることを意味します。
このカウンタは、各関数で実行される命令の総数を「関数」ビューに表示します。このカウンタは、「ソース」ビューと「逆アセンブリ」ビューにも表示されます。
関数ごとに、「カバーされているブロックの割合」カウンタには、その関数内のカバーされている基本的なブロックの割合が表示されます。この数値は、関数がどの程度カバーされているかを示します。「合計」行のこの数は無視してください。これは列のパーセンテージの合計であり、意味がありません。
関数ごとに、「カバーされている命令の割合 (%) (Instr Covered %)」カウンタに、カバーされている関数の命令の割合が表示されます。この数値は、関数がどの程度カバーされているかを示します。「合計」行のこの数は無視してください。これは列のパーセンテージの合計であり、意味がありません。
–g オプションを使用してバイナリをコンパイルすると、「ソース」ビューにプログラムのソースコードが表示されます。uncover はバイナリレベルでプログラムを計測しますが、最適化してプログラムをコンパイルしているため、このビューのカバレージ情報は解釈するのが困難な場合があります。
「ソース」ビュー内の「命令の実行」カウンタには、ソース行ごとに実行された命令の総数が表示されます。基本的に、これは文レベルのコードカバレージ情報です。0 以外の値は、文がカバーされていることを意味します。0 の値は、文がカバーされていないことを意味します。変数宣言およびコメントには命令の実行カウントがありません。
次の図は、開かれた「ソース」ビューの例を示しています。
関連付けられたカバレージ情報がないソースコード行については、行が空白になり、どのフィールドにも数値が表示されません。これらの空の行は、次の理由で発生します。
コメント、空行、宣言など、実行可能コードを含んでいない言語構造。
次のいずれかの理由で、コンパイラの最適化によって行に対応するコードが削除された。
コードは実行されることがない (デッドコード)。
コードは実行可能であるが冗長。
詳細は、uncover 使用時の制限事項を参照してください。
「ソース」ビューで行を選択してから「逆アセンブリ」ビューを選択すると、パフォーマンスアナライザはバイナリ内の選択された行を検出し、その逆アセンブリを表示しようとします。
このビュー内の「命令の実行」カウンタには、各命令が実行された回数が表示されます。
「命令頻度」ビューには、全体的なカバレージサマリーが表示されます。