A Agiler

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ディレクトリを作成してからインストールしてください。

コミュニティサポート

Issue は GitHub で管理します。

プロジェクト個別のサポートやカスタマイズは 有償にて対応しています。問い合わせページよりお声がけください。