Oracle® Developer Studio 12.5: Discover および Uncover ユーザーズガイド

印刷ビューの終了

更新: 2016 年 6 月
 
 

パフォーマンスアナライザのカバレージレポートを理解する

デフォルトでは、カバレージディレクトリ上の uncover コマンドを実行すると、カバレージレポートが Oracle Developer Studio パフォーマンスアナライザで実験として開きます。このセクションでは、カバレージデータを表示するパフォーマンスアナライザのインタフェースについて説明します。

パフォーマンスアナライザの詳細は、統合ヘルプおよびOracle Developer Studio 12.5: パフォーマンスアナライザを参照してください。

「概要」画面

パフォーマンスアナライザでカバレージレポートを開くと、「概要」画面が表示されます。このビューには、実行中の「実験」、実験の「メトリック」、および「メトリックのプレビュー」が表示されます。

次の図は、パフォーマンスアナライザの「概要」画面を示しています。

image:パフォーマンスアナライザの「概要」画面のカバレージ外レポート

「関数」ビュー

ナビゲーションパネルで「関数」ビューをクリックすると、プログラムの関数と排他的メトリックが表示されます。特定のメトリックの値に従ってデータをソートするには、目的の列見出しをクリックします。列ヘッダーの下にある矢印をクリックすると、ソート順が逆になります。

メトリックには次のようなものがあります。

カバレージ外

関数でカバーできるバイト数を示す「カバレージ外」カウンタ。

関数カウント

どの関数がカバーされているかを示す「関数」カウンタ。

命令の実行

関数内で命令が実行されたかどうかを示す「命令の実行」カウンタ。

カバーされているブロックの割合

関数内でカバーされているブロックの割合を示す「カバーされているブロックの割合」カウンタ。

カバーされている命令の割合

関数内でカバーされている命令の割合を示す「カバーされている命令の割合」カウンタ。

次の図は、パフォーマンスアナライザ内の「カバレージ外」でソートされたカバレージレポートを示しています。

image:パフォーマンスアナライザ内の Uncover レポートの「関数」ビュー

「カバレージ外」カウンタ

「カバレージ外」カウンタは、uncover の非常に強力な機能です。この列を降順のソートキーとして使用する場合、最上部に表示される関数は、カバレージを増やす可能性がもっとも高い関数です。前の図で、test_for_memory_leak() 関数は、「カバレージ外」列に最大の数が存在するためリストのいちばん上にあります。

test_for_memory_leak() 関数の「カバレージ外」の数は、関数が呼び出される原因となるスイートにテストが追加された場合にカバーされる可能性のあるコードのバイト数です。カバレージが実際に増加する量は、関数の構造によって異なります。関数に分岐がなく、呼び出すすべての関数も直線関数である場合、カバレージは一定のバイト数で増加します。ただし、通常、カバレージの増加は潜在的に想定されるより (おそらくずっと) 少なくなります。

「カバレージ外 (Uncoverage)」列の 0 以外の値を持つカバーされていない関数は、カバーされていないルート関数と呼ばれ、カバーされている関数によってすべて呼び出されることを意味します。カバーされていないルート関数以外からしか呼び出されない関数には、独自の「カバレージ外」の数は存在しません。テストスイートは、潜在性の高いカバーされていない関数をカバーするように改良されるにつれて、これらの関数は、後続の実行で、カバーされるか、またはカバーされないことが明らかにされると想定されます。

カバレージ数は排他的ではありません。

関数カウント

「関数カウント」列は、カバーされている関数とカバーされていない関数を報告します。数が 0 の場合、関数はカバーされません。数が 0 以外の場合、関数はカバーされます。関数の命令が実行される場合、関数はカバーされるとみなされます。

この列で、トップレベル以外のカバーされていない関数を検出できます。「関数カウント」列と「カバレージ外」列の両方が 0 を示している場合、その関数はトップレベルのカバーされている関数ではありません。

「命令の実行」カウンタ

「命令の実行 (Instr Exec)」カウンタは、カバーされている命令とカバーされていない命令を表示します。0 のカウントは命令が実行されないことを意味し、0 以外のカウントは命令が実行されることを意味します。

このカウンタは、各関数で実行される命令の総数を「関数」ビューに表示します。このカウンタは、「ソース」ビューと「逆アセンブリ」ビューにも表示されます。

「カバーされているブロックの割合」カウンタ

関数ごとに、「カバーされているブロックの割合」カウンタには、その関数内のカバーされている基本的なブロックの割合が表示されます。この数値は、関数がどの程度カバーされているかを示します。「合計」行のこの数は無視してください。これは列のパーセンテージの合計であり、意味がありません。

「カバーされている命令の割合」カウンタ

関数ごとに、「カバーされている命令の割合 (%) (Instr Covered %)」カウンタに、カバーされている関数の命令の割合が表示されます。この数値は、関数がどの程度カバーされているかを示します。「合計」行のこの数は無視してください。これは列のパーセンテージの合計であり、意味がありません。

「ソース」ビュー

–g オプションを使用してバイナリをコンパイルすると、「ソース」ビューにプログラムのソースコードが表示されます。uncover はバイナリレベルでプログラムを計測しますが、最適化してプログラムをコンパイルしているため、このビューのカバレージ情報は解釈するのが困難な場合があります。

「ソース」ビュー内の「命令の実行」カウンタには、ソース行ごとに実行された命令の総数が表示されます。基本的に、これは文レベルのコードカバレージ情報です。0 以外の値は、文がカバーされていることを意味します。0 の値は、文がカバーされていないことを意味します。変数宣言およびコメントには命令の実行カウントがありません。

次の図は、開かれた「ソース」ビューの例を示しています。

image:パフォーマンスアナライザの Uncover レポートの「ソース」ビュー

関連付けられたカバレージ情報がないソースコード行については、行が空白になり、どのフィールドにも数値が表示されません。これらの空の行は、次の理由で発生します。

  • コメント、空行、宣言など、実行可能コードを含んでいない言語構造。

  • 次のいずれかの理由で、コンパイラの最適化によって行に対応するコードが削除された。

    • コードは実行されることがない (デッドコード)。

    • コードは実行可能であるが冗長。

詳細は、uncover 使用時の制限事項を参照してください。

「逆アセンブリ」ビュー

「ソース」ビューで行を選択してから「逆アセンブリ」ビューを選択すると、パフォーマンスアナライザはバイナリ内の選択された行を検出し、その逆アセンブリを表示しようとします。


ヒント  -  「ビュー」ペインに「逆アセンブリ」が表示されない場合は、「詳細ビュー...」を選択して「逆アセンブリ」オプションをオンにします。

このビュー内の「命令の実行」カウンタには、各命令が実行された回数が表示されます。

image:パフォーマンスアナライザの Uncover レポートの「逆アセンブリ」ビュー

「命令頻度」ビュー

「命令頻度」ビューには、全体的なカバレージサマリーが表示されます。

image:パフォーマンスアナライザの Uncover レポートの「命令頻度」ビュー