RDi V9.6の大きな変更点を探る。パート3、比較/マージ、コード カバレッジ等
今回の記事は、RDi V9.6に関するヒント記事シリーズのパート3です。今回の記事では、新たな比較およびマージ サポート、コード カバレッジの機能改善、およびV9.6でのその他のいくつかの小さな機能強化について説明します。当初は、今回の記事をシリーズの最後とする予定でしたが、先日IBMから新たなポイント リリースが提供されましたので、そこで導入された新機能を紹介するべく、少なくとももう1本、記事を追加することとなりました。
比較およびマージ
2つのソース メンバーの内容を比較する機能は、RDiにとって新しい機能ではありませんが、V9.6では、1つのメンバーから他のメンバーへ選択されたコード ブロックをマージするためのオプションが提供されるようになりました。多くのRDiユーザーは、iSphereプラグインによって提供される同じようなマージ機能をすでに使用しているかもしれません。ベースのRDiパッケージでのこの新たなサポートは、iSphereのアプローチと非常によく似ているものの、まったく同じではありません。
比較およびマージ セッションを開始するには、「リモート・システム」リスト ビューで2つのソース メンバーを選択し、右クリックして「比較」>「相互」を選択します。エディター ウインドウに新たなタブが表示され、コードの比較結果が表示されます。この画面がどのようなものか、以下のスクリーン ショットで確認してください。カラー表示でなくなっているのが分かるかと思います。画面は白黒表示です。何らかの違いがある2つのソースメンバーがハイライトされ、メンバーとメンバーとの間に、コード ブロックをつなぐ線が表示されています。
この画面は、V9.5の画面とよく似ているように見えます。ただし、画面の一方の側からもう一方の側へ変更を適用できるようにする新たなアイコン(図1の赤線で囲まれた部分)が右上隅に表示されている点が異なっています。1つ目のアイコンは、メンバーの表示位置を左右に入れ替えるのに使用します。その隣の2つのアイコンは、右側から左側または左側から右側へ、選択された特定の差分をコピーするのに使用します。後述するように、これと同じ操作を別のやり方で行う方法もあります。最後の4つのアイコンは、次または前の相違または変更点へ移動するのに使用します。私が知る限り、「次の相違」と「次の変更点」の違いは、相違オプションでは1つのコード ブロックで1度ストップするだけですが、変更点オプションではブロック内のそれぞれの変更ごとにストップする点のようです。
オプションを使用して片方の側から反対の側へ変更をすべて適用したいと思っても、確信を持って操作を行えるのでない場合は、それぞれの差分を確認しながら、一度にひとつずつ変更を適用するかどうかを決めてゆくようにする方がおそらく安心だと思われます。その場合、上述のアイコンを使用して、次の変更へ移動してから、現行の変更を適用するというやり方で行うことができます。あるいは、ブロックとブロックをつないでいる線の真ん中にある小さなボックスの上にカーソルを置いてみてください。そうすると、下図に示すように、小さな一組の矢印(右向きおよび左向き)が表示されます。この矢印をクリックすることで、左側から右側または右側から左側へその変更をコピーすることができます。個人的には、アイコンを使用するやり方よりも、後者の方が使いやすいと思います。
比較の処理を制御するために指定することができるオプションがいくつかあります。それらのオプションは、ツール バーのアイコンで、または比較エディター内での右クリックによって表示されるコンテキスト メニューでオンにすることができます。図1の比較では、示された変更のうちの1つは、Message_textへの代入文のインデントの違いのみだったことにお気付きだったでしょうか。オプションを選択することで、そのような空白の違いは無視されるようにすることができます。また、ソース変更日が無視されるようにするかどうかについても、同じようなオプションがあります。下画では、それらの機能を制御するためのアイコンが赤線で囲まれています。空白を可能な限り無視するオプションをオンにしているため、今度はそれら2つの代入文は同一であるとして処理されているのが見て取れます。
図の左上近くの「比較」タブのすぐ下に、「IBM i メンバー比較」と記されたプルダウン オプションがあります。そこで選択できるもうひとつのオプションは「テキストの比較」です。IBM i メンバー比較は、シーケンス番号および変更日全体を非表示にし、(より重要なことに)一方のソースから他方のソースへのコードのコピーによって変更が行われたときに、それらの情報を開発者のために保持します。一方、テキストの比較は、シーケンス番号および変更日を含み、変更がなされた際にそれらの情報を保持しません。テキストの比較使用時には、最初に変更を行ったときに警告がポップアップし、それらの情報を保持する責任はユーザーにある旨を示すメッセージが表示されます。メンバー比較モードとテキストの比較モードの切り替えは、比較の種類の名前の隣の矢印を使用することで行うことができます。個人的には、今のところ自分がテキストの比較の使用を選択するケースは思い浮かびませんが、ドキュメンテーションに示されているところによれば、eGitツール使用時に有用な場面があるようです。
コード カバレッジのためのCLコマンド
コード カバレッジ ツールのユーザーなら、コード カバレッジ セッションを開始するためのCLコマンドがあることを知ったら興味深く思うのではないでしょうか。コマンドの詳細については後述しますが、まずは「コード カバレッジとは何なのか」とお思いの方に向けて、簡単に説明しておきたいと思います。コード カバレッジは、最初に約4年前に導入されました。コード カバレッジは、コード テスト時に、どれだけ多くのプログラム(あるいは、プログラムまたはサービスプ ログラムのグループ)が実行されたかを測定する方法を提供します。言い換えれば、テストがどの程度完了したかを確認するのに役立ちます。
コード カバレッジの操作方法の基本的な流れは次のようになります。監視したいプログラムを指定してセッションを開始してから、任意のテストを実行し、テストが完了したと思ったら、RDiに対して、セッション中に収集したデータを分析して、テスト中にどのコードがテストされ、(より重要なことに)どのコードがまったく触れられなかったかについてのレポートを生成するように指示します。レポートでは、コード行のレベルまで報告されるため、厳密にどの行がテストされ、テストされなかったかを確認することができます。
標準的なテスト プロセスを整えているショップでは、テスト プロセスが手動か自動化されているかどうかにかかわらず、テスト プロセス自体の質を検証するのにコード カバレッジが非常に有用であることにお気付きだと思われます。以前はRDiを介して手動でセッションを開始する必要があったため、特に自動テスト ツールを使用しているときには、コード カバレッジを実行することは時に面倒に感じられたかもしれません。V9.6で導入された新たなCODECOV CLコマンドは、既存のホスト ベースのテスト プロセスに簡単に統合できるようになっています。ただし、テストの結果に関するレポートを生成および表示するのには、これまで通りRDiが必要です。
CODECOVコマンドを使用する際には、テストの実行に使用するコマンドと、テスト対象とするプログラム/サービス プログラムのモジュールという、2つの必須のパラメーターをはじめとする、数多くのパラメーターを指定できます。また、通常は、コード カバレッジによって収集されたデータの保存先となる出力ファイルの保存場所も指定しておいたほうがよいでしょう。RDiでテスト結果を分析および調査する際に、ファイルの保存場所を指定する必要があるため、その保存場所を把握しておくことは重要です。これは、特別な「Code Coverage Results」ビューを介して行います。
このCLコマンドを使用するには、IBM i7.2または7.3を使用している必要があり、また、以下のPTFをインストールしている必要があります。
- V7R3: 5770WDS PTFs SI65229 and SI64655
- V7R2: 5770WDS PTFs SI65228 and SI64544
V9.6でのその他の新機能
RFE(Request for Enhancement:機能拡張の要望)を通じてRDiユーザーから寄せられた要望に対する応答として、「アウトライン」ビューで名前付きインジケーターをフィールドとして分類する、ILE RPGの新たな設定が追加されました。この設定はデフォルトでオンになっていませんが、「アウトライン」で、名前付きインジケーターを別個の「Indicators」リストではなく、自分の「Fields」リストに表示されるようにしたい場合は、その設定をオンにする必要があります。
iProjectsユーザーの方であれば、ビルドを行い、エラーを取得するためのいくつかの新たなショートカットにお気付きでしょうか。これらのショートカットを使用すると、接続およびライブラリーを一度に複数のiProjectsに関連付けることができます。
ACS(Access Client Solutions)は、「リモート・システム」で「オブジェクト」サブシステムのコンテキスト メニューから起動できるようになりました。ACSインターフェース本体を起動するためのオプションと、Run SQL Scriptsまたは5250エミュレーターまたはデータベース スキーマ インターフェースをそれぞれ直接起動するためのオプションが表示されるようになっています。バージョンが十分に新しい場合、そのオプションは、すでにインストール済みのバージョンのACSを起動します。ACSを別個にインストールしていない場合、または、この方法で起動するにはバージョンが古過ぎる場合は、RDiに付属のバージョン(現時点ではACSバージョン1.1.7.1)が起動します。
新しいバージョンのRDiは、Eclipseの最新のバージョン(4.6.3)をベースにしています。最新バージョンがベースになっていることで生じた顕著な違いがいくつかあります。まず、デフォルトでは、オープン パースペクティブ(ワークベンチの右上の近くにリストされている)は、パースペクティブの名前を表示しないようになりました。それらに必要とされるスペースを減らすために非表示にされました。パースペクティブのテキストが再度表示されるようにするには、アイコンの1つを右クリックし、「Show Text」オプションを選択します。
また、Eclipseのバージョン変更に伴い、デフォルトで、プリント ツールバー ボタンも表示されないようになっています。私自身は使用している機能ではありませんが、使用されている場合は、ボタンの表示を復活させることができます。「ウインドウ」プルダウン メニューから「パースペクティブ」 > 「パースペクティブのカスタマイズ」を選択し、「ファイル」カテゴリーを展開して「印刷」アイコンをクリックします。 上述のように、すでにV9.6向けにいくつかの修正パックまたはポイント リリースが提供されています。今後の記事では、よりPDMっぽくさせるための「オブジェクト・テーブル」ビューの機能改善など、それら導入された機能強化のいくつかについて取り上げる予定です。