メニューボタン
IBMi海外記事2020.01.29

CLコマンドを使用してコード・カバレッジを実行する

Susan Gantner 著

この記事は、RDiのコード・カバレッジ サポートの使用法に関する3つ目の記事です。 1つ目の記事では、サービス エントリー ポイント(SEP)を使用してテスト実行をセットアップする方法について説明しました。 2つ目の記事では、テスト実行用の構成を作成する方法を取り上げました。この記事では、RDiとの対話操作を必要とすることなく(レポートを除く)、CLコマンドを使用して、コード・カバレッジ テスト セッションを実行する方法について見て行きます。

その方法の説明の前に、CLコマンドを使用する手法のほうが好ましい理由について説明しておくとよいかもしれません。簡単に言えば、CLコマンドを使用する手法では、テスト プロセスを自動化するのがより簡単になるため、テスト プロセスがより簡単に反復使用できるということです。これは、テストを実行するプログラムを呼び出すためのCLプログラムだけでなく、そのテスト実行のためにコード・カバレッジ セッションを開始するためのCLプログラムも書くことができるからです。

ただし、分析を実行してコード・カバレッジ レポートを取得するには、RDiを使用する必要があることは理解しておいてください。もっとも、テスト プロセスは、コード・カバレッジ用のデータ収集とともに、テストが実行されるホストで開始することができます。

IBM i V7.4を使用していない場合は、CODECOVコマンドが動作できるようにするPTFがインストールされている必要があります。この記事の最後に、必要なPTFをリストします。また、このコマンドが動作するためには、ジョブのライブラリー リストにQDEVTOOLSライブラリーを追加することが必要になる場合もあります。

CODECOVコマンド

CODECOVコマンドについて見てみましょう。CODECOVコマンドでは、コード・カバレッジ構成で指定できたのと同じ情報(前回の記事を参照)と、他のいくつかの詳細情報を指定することができます。

                                                          Code coverage (CODECOV)                                                                               
 Command to run . . . . . . . .   ______________________________________                                           
 ____________________________________________________________________...                                                                                                                                                   
 Modules:                        _                                             
   Object . . . . . . . . . . .   __________    Name                         
     Library  . . . . . . . . .     *LIBL_____  Name, *LIBL, *CURLIB         
   Object type  . . . . . . . .   *PGM___       *PGM, *SRVPGM                
   Module . . . . . . . . . . .   *ALL______    Name, generic*, *ALL, *EXCEPT
                + for more values   *ALL______                                           
                + for more values   _                                           
 Code coverage view . . . . . .   *DFT___       *DFT, *LIST, *SOURCE         
 Code coverage level  . . . . .   *LINE         *LINE, *PROC     
 Output directory . . . . . . .   *CURRENT____________________________                                                                                                                 
 Output stream file . . . . . .   ____________________________________                                                                                                                           
 Code coverage test identifier.   ____________________________________                     

ご覧の通り、このコマンドはかなりシンプルです。ほとんどのCLコマンドと同様に、たいていの場合、パラメーターの多くでデフォルト値を利用できます。最低限必要なパラメーターは、「Command to run(実行するコマンド)」と、コード・カバレッジ データを収集する1つ以上のプログラムまたはサービス プログラムの名前です。デフォルトでは、指定されたプログラム/サービス プログラムのすべてのモジュールでデータを収集します。追加のプログラムまたはサービス プログラムの名前をリストするには、「Modules:」の横または2つ目の「+ for more values」エントリーのいずれかに「+」を入力します。

「Command to run」は、 前の記事で構成を作成したときに、「開始方法」というタブで指定したのと同じものです。テスト実行を開始するのに使用されるのが、そのコマンドです。

「Code coverage view」パラメーターでは、テスト情報を収集するときに、ソース ビューまたはリスト ビューのどちらのデバッグ データを使用するかを指定できます。デフォルト値は利用可能などちらのビューも使用します。両方ともある場合は、デフォルトでソース ビューとなります。

「Code coverage level」では、実行された個々のステートメントのデータを収集する(デフォルトおよび最も使用されるオプション)か、呼び出された各プロシージャーのデータを収集するだけにするかを指定できます。

その次の2つのパラメーター(「Output directory」と「Output stream file」)では、テスト セッション中に収集されたデータをどこに置くかを指定できます。後でRDiを使用してデータを分析するときに参照できるように、出力ファイルがどこにあるか覚えておくことが重要です。

ディレクトリーは、デフォルトで、ジョブの現行ディレクトリー(通常はユーザー プロファイルで指定)になり、ストリーム ファイルは、デフォルトで、プログラム名とタイムスタンプと拡張子.cczipから生成される名前になります。出力ディレクトリーまたは完全修飾IFSファイル名のいずれかを指定することができます(両方ではありません)。

テストID(「Code coverage test identifier」)は、現在は使用されていませんが、RDiの今後のバージョンで使用されるかもしれません。

私の場合、以下の例のようにして、コード・カバレッジ テスト実行を行いました。ここでは、必須でなかったパラメーターのほとんどでデフォルトを使用しました。出力ディレクトリーは、デフォルトで、私のユーザー プロファイルで/home/GANTNERとして指定されている私の現行ディレクトリーになりました。

CODECOV CMD(CALL PGM(PARTNER400/RDICODECOV))     
        MODULE((PARTNER400/RDICODECOV *PGM *ALL))

CODECOVコマンドでEnterを押すと、コード・カバレッジ セッションをセットアップしてから、指定した「Command to run」を使用して自動的にプログラムを呼び出します。初期プログラムが終了すると、指定したIFSファイルにコード・カバレッジ データを書き出します。それ以降は、そのデータの分析およびレポートを行うためにRDiを使用する必要があります。

テスト実行後に、次の情報メッセージCCR0021を受け取りました。

Created code coverage result file 
  (/home/GANTNER/RDICODECOV_1573600424.cczip).        

コード・カバレッジ データの分析とレポート

以前の記事で、RDiからこのプロセスを開始したときに、RDiエディター ウィンドウにレポートが自動的に表示されたことを思い出されるかもしれません。では、ホストでテストが開始された場合は、どのようにしたらレポートを取得できるのでしょうか。

テスト実行中に収集されたコード・カバレッジ データを保存するファイルを指定したパラメーターを思い出してください。テスト実行がホストで完了した後、そのデータを格納しているファイルがRDiワークスペースに取り込まれるように要求することができます。RDiワークスペースにそのファイルがあれば、分析を要求し、レポートを調べることができます。

これを行うために、「コード・カバレッジ結果」ビューへ移動します(前の記事を参照)。そのビューでツールバーの緑色の「+」ボタン(下の図1の赤い丸でハイライト)を押します。まだRDiパースペクティブに「コード・カバレッジ結果」ビューが表示されていない場合は、「Window」プルダウン メニューから「Show view」オプションを選択してビューを開くことができます。

プルダウンメニュー

下の図2のような「Add Result Location」ダイアログが表示されます。私の結果ファイルはIFSフォルダー内のホストにあるため、「Remote Systems...」ボタンを押します。

ダイアログ

下の図3のような「Browse for folder」ダイアログが表示されます。最初に、「Connection」リストからリモート ホスト接続名を選択します(デフォルトで、ローカル接続になる場合もあることに注意してください)。次いで、IFSフォルダーをドリルダウンして、コマンドで指定したファイルのディレクトリーを見つけ、そのフォルダーを選択します。次いで、「OK」を押し、もう一度「OK」を押して前のダイアログを終了します。選択したフォルダーの名前が、「Location」ボックスに入力されているはずです。

ダイアログ

そのフォルダー内にあるすべてのコード・カバレッジ.cczipファイルが、結果ビューにインポートされます。フォルダー名を展開して、そこにあるかもしれないコード・カバレッジ結果を表示します。この例では(下の図4を参照)、フォルダー内に、3つの別々のCODECOV実行の結果ファイルがありました。結果ファイルの1つをダブルクリックすると、以前の記事と同じように、レポートがエディター ウィンドウに表示されます。また、コード・カバレッジ レポートでモジュールまたはプロシージャー名をダブルクリックすることによって、ステートメント レベル データ(収集された場合)へドリルダウンできます。

コード・カバレッジ結果

冒頭で約束した通り、IBM iでV7.4をまだ使用していない場合にCODECOVコマンドを使用するためにシステムで必要となるPTFをリストします。以下に示すPTFはプロダクト5770WDS用です。CODECOVコマンド サポートは、V7.1以前を稼動しているホスト システムでは利用できません。ただし、RDiから開始されたコード・カバレッジを使用することはできます。

V7.3: PTF SI65229およびSI64655

V7.2: PTF SI65228およびSI64544

コード・カバレッジの使用法に関するこの記事シリーズで、コード・カバレッジを実行するための3つの方法を見てきたことになります。前の2つの記事では、SEPまたは構成のいずれかを使用して、RDiからコード・カバレッジを開始する方法を取り上げました。今回の記事では、CLコマンドを使用してIBM iホストからテストを開始する方法について見てきました。テストがきちんと機能しているかどうかは、様々な方法で確認することができるというわけです。

あわせて読みたい記事

PAGE TOP