Agiler Refactoring
Agiler Refactoring は、GeneXus の開発体験を改善する実験的な IDE 拡張プロジェクトです。
データモデルに基づくプロシージャ生成を支援し、コードレビューで指摘されがちな問題を自動修正します。
できること
Transaction から Procedure 自動生成
Transaction の Structure 情報に基づいて、 Procedure の雛形を自動生成します。
手作業で繰り返し記述しがちな部分を減らし、 実装の立ち上がりをスムーズにします。
操作方法:オブジェクトを右クリックして "Create Updater(For each)" を選択
補足:BC版の"Create Updater"を選択するには、事前にトランザクションオブジェクトのBussiness Componentを有効にする必要があります。
右クリックして「動画を新しいタブで開く」で大きい動画を確認できます。 Transaction の構造をもとに、Procedure 作成の初期作業を効率化しています。
レビュー機能
GeneXus のソースコードを解析し、 コード品質の問題を自動修正します。
- 変数名の先頭大文字化
- 自動宣言変数 (IsAutoDefined) の検出
- Procedure ヘッダーの自動付与
- 識別子の命名規則統一
- 予約語の表記統一
- 演算子前後のスペース整形
- ! コメントの自動付与
- Rule タブの Parm(...) 形式チェック
- CommitOnExit や PermissionPrefix の警告
操作方法:オブジェクトを右クリックして "Review for cording rule" を選択
右クリックして「動画を新しいタブで開く」で大きい動画を確認できます。 コーディングルールの統一や、見落としやすい設定の確認を支援します。
TraceModel 作成
現在開発中の機能です。
技術負債を避けるためのIDE拡張アプローチ
GeneXus にはオブジェクト自動生成の仕組みとして KIP(xpzインポート) や Pattern(パターン) が存在します。
Pattern は、優れた開発者体験を提供しますが、 GeneXus のバージョンアップごとに メンテナンスが必要となり、無償プラグインを提供しても 技術負債となる可能性があります。
そこで Agiler Refactoring では IDE拡張というアプローチを採用しました。
KBに標準オブジェクトのみを生成し、IDE拡張がなくても動作できるようにしました。 フレームワーク依存を極力減らします。
Agiler Refactoringの方針
- アンチベンダーロック
- Future Proof
- WorkWithPlus と共存
- 将来バージョンアップ時に 本IDE拡張不要
- GXserver 側の本IDE拡張不要
- 各社コーディングルールの最大公約数を考慮
課題と開発の背景
GeneXus には他言語のようなフォーマッタが存在せず、 コーディングスタイルは開発者や組織のルール、 そしてレビューに依存しています。
しかし GeneXus の特性上、
コードを書けば動作してしまうため、
レビューが行われる頃には
単体テストが終わっていることがほとんどです。
その結果、単体テスト後に
- レビュー指摘
- リファクタリング
- 再テスト
という非効率なサイクルが発生します。
この問題を解決するため、
2024年12月から Agiler Refactoring の開発を開始しました。
当初は自社利用のためのツールでしたが、 GeneXusコミュニティへの貢献を目的として 公開することにしました。
本プロジェクトは 実験的かつ無償提供であり、 いかなる保証も提供しません。
適用範囲
公開版は GeneXus 18 U12 で動作確認しています。
ダウンロード
本IDE拡張は実験的プロジェクトであり、 現状有姿のバイナリで提供されます。
安定版: GeneXus Marketplace
最新プレビュー版:GitHub
本ツールを利用する場合は、 利用規約(Terms of Product) への同意が必要です。 ダウンロードまたは利用をもって、 当該利用規約に同意したものとみなします。
インストール方法
インストール方法は、zipに同梱のreadmeに記載されています。必ずc:\tempディレクトリを作成してからインストールしてください。