コード カバレッジ (ネイティブ COBOL)

Enterprise Developer では、ネイティブ COBOL のコード カバレッジを把握するツールとして、Micro Focus Test Coverage 機能が用意されています。
注:この機能はネイティブ COBOL でのみサポートされます。

アプリケーションに対してコード カバレッジを有効にして、コード カバレッジ レポートを作成するには、次の手順を実行します。

  1. 関連するプロジェクトのプロパティでコード カバレッジを有効にします。
  2. アプリケーションをコンパイルして、変更を適用します。
  3. コード カバレッジ モードでアプリケーションを実行します。

コード カバレッジ モードでアプリケーションを実行している間は、プログラムやサブプログラムごとに、コード実行のログが記録されます。ログはバイナリ結果ファイルに保存されます。このファイルの拡張子は .tcz です。IDE では、テスト カバレッジの構成に応じて、どの程度詳細にテスト カバレッジのログを結果ファイルに記録するかの設定を指定できます。

例えば、ソース コード内の文にタグを付けてコード カバレッジを使用すると、これらの文が実行されたかどうかをレポートできます。この方法は、ソース コードに追加された行や変更された行のカバレッジを確認する場合に特に役立ちます。

カバレッジをわかりやすくするため、Enterprise Developer では、結果ファイルのコード カバレッジ情報をビジュアル化して、処理済み (実行された) ブロックまたは未処理 (実行されていない) ブロックの統計を [Code Coverage] ウィンドウ に表示して、処理済みおよび未処理ブロックをエディター内で別の色でハイライトします。コード カバレッジ レポートは HTML 形式で生成できます。

注:

コード カバレッジ モードでプログラムを実行する場合、コード カバレッジが有効ではない場合に比べて、使用するリソースが大幅に増加します。このため、コード カバレッジは開発システムでのみ使用し、本番システムでは使用しないことを推奨します。

処理済みブロックと未処理ブロック

ブロックとはコードのまとまりであり、実行時に連続して順番に実行されます。つまり、ブロック内の一箇所が実行されたら、ブロック内のそれ以外の箇所も実行されていると想定できます。

順番に実行されないコード (例えば、IF THEN ELSE のように文の中の各句が直線的な順番で実行されないコード) には、複数のコード ブロックが含まれます。

実行されたコード ブロックは「処理済み」ブロックと呼ばれ、実行されていないコード ブロックは「未処理」ブロックと呼ばれます。

制限事項

IDE でコード カバレッジを把握するには、Test Coverage コマンド ライン ユーティリティを使用します。Test Coverage ユーティリティには次の制限事項があり、これらはコード カバレッジにも該当します。

  • テスト カバレッジでは、ネストされたプログラムはサポートされません。特に、ネストされたプログラムの呼び出し時に使用する cobsetjmp() API および coblongjmp() API を呼び出すプログラムには機能しません。
  • プログラムのデバッグ中に実行ポイントを手動で変更すると、正しくないテスト カバレッジ結果が生成されます。
  • マルチスレッド プログラム (REENTRANT 指令でコンパイルされたプログラム) がある場合に、そのプログラムをテスト カバレッジを有効にしてコンパイルし、テスト カバレッジ モードで実行すると、生成されるテスト カバレッジ結果が正確ではなくなります。
  • プリプロセッサでテスト カバレッジを使用すると、元のコードの基本ブロックのみが対象となります。