IBM Support

Rhapsody のコード生成をカスタマイズする方法 (ポストプロセス編)

Question & Answer


Question

[Japanese] 社内のコーディング規約に遵守させるため、Rhapsody のコード生成をカスタマイズしたいのですが、一般的にどういった方法が考えられますか。また、ポストプロセス処理を使いコードをカスタマイズする場合の具体的な手順を教えてください。

Answer

Rhapsody のコード生成をカスタマイズする場合、選択肢としては以下の方法が考えられます。

軽量型カスタマイゼーション

  • コード生成用のプロパティ変更 (標準)
  • ステレオタイプベースのコード生成
  • 標準オペレーションの作成
  • ポストプロセス処理

重量型カスタマイゼーション
  • Simplifier Helpers
  • Post Simplification
  • 独自コード生成ルールを作成 (Rules Composer ライセンス必須)


本技術情報では、ポストプロセス処理を使用したコード生成のカスタマイゼーションについて説明します。

【ポストプロセス処理の説明】
Rhapsody には、CG::File::InvokePostProcessor というプロパティが用意されています。このプロパティでは、コーディング・スタイルを整えるためのプログラムやスクリプトを指定するのが一般的です。このプロパティを有効にした状態でコード生成を実行すると、Rhapsody は自身が生成したソースコードに対して指定されたプログラムを実行します。このポストプロセス処理を活用することで、非常に細かなレベルでソースコードのスタイリングを調整することができます。プロパティの詳細につきましては、フィーチャー画面より該当プロパティの説明欄をご確認ください。



※Rhapsody は、ポストプロセス処理を実施する前に、生成したコードを一時ファイルへ保存します。前に生成されたファイルが既にプロジェクトフォルダ内に存在する場合、Rhapsody は一時ファイルとターゲット・ファイルを比較します。内容に違いがある場合は、ターゲット・ファイルが一時ファイルで置き換えられます。ポストプロセスはこの一時ファイルに対して実行されるため、ターゲット・ファイルを直接アップデートすることで起こりえる問題を回避することができます。

【必要なもの】
・ソースコード整形用の実行ファイル(または、スクリプトなど)

本技術情報には、検証用のサンプル (PostprocessDemo.zip) が添付されています。
Visual Studio 2008 ソリューション (ソースコード + 実行ファイル) が同梱されています。

【コードサンプル(抜粋)】


【サンプル検証前の準備】
(1)必要に応じて、PostprocessDemo ソリューションをビルドします。
(2)"postprocessor.exe" をターゲットマシーンへ配置します。
(3)新規モデルを作成して、Model::Relation::UsePrefix をオンにします ("m_"プリフィックスが its<クラス名>の前に追加される)。
(4)CG::File::InvokePostProcessor プロパティから "postprocessor.exe" の場所と引数を指定します。

例) postprocessor.exe $file

以下のキーワードをコマンドの一部として指定することができます。

* $file - 生成されるファイルの名前
* $projectPath - 現行プロジェクトのルート・ディレクトリー

【ポストプロセス前後の比較】
サンプルが正常に動作すると、"_its" が "p" で置換され、下図のようなコードが生成されます。



注意:
本技術情報に添付されているサンプルは、Rhapsody のポストプロセス処理を検証する目的で提供されています。本番環境での利用はご遠慮ください。

Disclaimer

All source code and/or binaries attached to this document are referred to here as "the Program". IBM is not providing program services of any kind for the Program. IBM is providing the Program on an "AS IS" basis without warranty of any kind. IBM WILL NOT BE LIABLE FOR ANY ACTUAL, DIRECT, SPECIAL, INCIDENTAL, OR INDIRECT DAMAGES OR FOR ANY ECONOMIC CONSEQUENTIAL DAMAGES (INCLUDING LOST PROFITS OR SAVINGS), EVEN IF IBM, OR ITS RESELLER, HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.

PostprocessDemo.zipPostprocessDemo.zip

[{"Product":{"code":"SSB2MU","label":"IBM Engineering Systems Design Rhapsody"},"Business Unit":{"code":"BU059","label":"IBM Software w\/o TPS"},"Component":"Rational Rhapsody Developer","Platform":[{"code":"PF033","label":"Windows"}],"Version":"7.6;7.6.0.1;7.6.1.1;7.6.1;7.6.1.2","Edition":"","Line of Business":{"code":"LOB59","label":"Sustainability Software"}}]

Product Synonym

Rational Rhapsody

Document Information

Modified date:
27 May 2022

UID

swg21609708