MPS 2024.1 ヘルプ

JetBrains MPS プロジェクトへの貢献

バグレポートを提出する

バグの報告は、参加するための最も簡単な方法です。バグレポートは提出に時間がかからず、開発者にとって非常に役立ちます。問題を発見したら、JetBrains MPS issue tracker に報告して(英語)ください。

環境 (OS、JDK、MPS バージョン) に関する情報、問題を再現する手順、問題の説明を必ず提供してください。新しい問題を作成すると、トラッカーは同様の既存の問題を一覧表示します。重複する問題を避けるために確認してください。現在の問題に賛成票を投じてください。

問題を再現するユニットテストを作成する

ほとんどのバグは、自動化された JUnit テストによって再現またはチェックできます。私たちのチームは、バグを再現するために手動で一連の手順を実行する代わりに、テストケースを実行してバグを再現する方がはるかに簡単で迅速です。問題を再現する JUnit テストの作成に数分お時間を割いていただければ、レポートを処理してバグをより迅速に修正できる可能性があります。私たちのチームは本当に感謝しています。

貢献

MPS への貢献を開始する前に、コントリビューターライセンス契約 (CLA) に電子的に署名する必要があります。このフォームに記入してください。DocuSign 経由で署名するための同意書をお送りします。

コードを投稿するには、MPS GitHub リポジトリにプルリクエストを作成してください。ブランチは、master ブランチまたは特定のリリースブランチ (2028.3 など) からコードを投稿します。

投稿タグ付きの支援したいが、その方法がわからない場合は、課題トラッカー(英語)にあるあると便利なシンプルな機能のリストを参照してください。プルリクエストのリンクを問題のコメントとして貼り付けます。その後、MPS 開発チームのメンバーがパッチまたはプルリクエストをレビューします。品質基準を満たし、コードの残りの部分に適合する場合、パッチは承認され、通知が届きます。単体テストが接続されたパッチは、通常、より高速に処理されます。

詳細な説明を添えて新しい問題を提出し、プルリクエストのリンクを貼り付けることで、修正や機能を提案することもできます。

ご不明な点がございましたら、お気軽にメールでお問い合わせいただくか、Slack ワークスペースの #contributors チャンネル(英語)に投稿してください。

MPS ソースの使用方法

メインの Git リポジトリは JetBrains (以下の Accessing MPS Git Repository セクションを参照) にありますが、GitHub にパブリックミラーを保持しています。ミラーは主に、外部のコントリビューターが使いやすいリポジトリとなることを目的としています。GitHub を通じて MPS に貢献する方法は次のとおりです。

ソースからの MPS のビルド

プロジェクト README.md(英語) ファイルの指示に従って、プロジェクトのクローンを作成してビルドしてください。

コマンドラインを使用してソースから MPS をビルドする

または、コマンドラインを使用してソースから MPS をビルドすることもできます。

始める前に、Ant がインストールされていることを確認してください。IntelliJ IDEA Community Edition をダウンロードし、その中の MPS プロジェクトを開きます。これを行うには、「プロジェクトを開く」をクリックし、Git リポジトリがあるフォルダーを選択します。その後、再構築をトリガーします。再構築が完了したら、シェルを開き、ビルドディレクトリに移動して、run.build.sh を実行します。

貢献する

これで、変更を加える準備が整いました。これを行う方法に関するいくつかのガイドラインを次に示します。

  • 好きなだけ頻繁にコミットしてください。

  • 提供されている自動テストスイートを実行して、コードをテストしてください。これを行うには、IntelliJ IDEA で Run -> Run... を選択します。特に、GlobalTestSuite, ModuleTestSuite, および ProjectTest 実行構成を実行することを強くお勧めします。

  • 現在、公開されているコードスタイルのガイドラインはありません。疑わしい場合は、MPS のソースを確認するか、#contributors チャンネル(英語)に投稿してください。

変更をプッシュする

ローカルの変更を JetBrains に転送する方法は次のとおりです。

  • git push origin my_branch_name コマンドを実行して、ブランチをプライベート GitHub リポジトリにプッシュします。

  • GitHub でプルリクエストを作成します。これを行うには、ブラウザーでリポジトリを開き、プルするブランチが表示されていることを確認して、右上隅にある Pull Request ボタンをクリックします。

  • リクエストを処理し、標準の GitHub 機能を通じて進行状況に関する通知を送信します。

フォークを最新の状態に保つ

コードを変更してコミットすると、MPS github リポジトリの独自のフォークに変更が加えられます。プルリクエストを使用すると、MPS 開発者に変更を認識させることができます。変更が元のリポジトリに統合される場合と統合されない場合があります。ただし、その間、元の MPS リポジトリが変更され (コードに取り組んでいる MPS チームの結果として)、フォークが同期しなくなります。

ローカルクローンとリモートフォークを元のリポジトリの変更と同期させるには、元のリポジトリからプルし、競合を解決してから、フォークにプッシュする必要があります。次の手順を実行します:

  • ローカルクローンで、元の MPS github リポジトリを指すリモートを追加します。git リモート mpsrepo https://github.com/JetBrains/MPS(英語) を追加

  • git pull mpsrepo master を使用して、元のリポジトリから変更をプルします。

  • 上記で提案したようにブランチへのコントリビューションを作成する場合は、更新されたマスターを git merge master を使用して (ブランチで) ブランチにマージする必要があります。その際、マージの競合をローカルで解決する必要があります。

  • その後、git push origin (origin は git clone によってリモートに割り当てられたデフォルト名) を使用して、マージされた変更を独自のフォークにプッシュできます。

MPS Git リポジトリへのアクセス

上で説明した GitHub プロセスは、メインの MPS リポジトリにアクセスするための推奨される方法です。ただし、git://git.jetbrains.com/mps/mps.git にある MPS リポジトリを、パッチを MPS に送信するためのベースとして使用することもできます。

IntelliJ IDEA からチェックアウトするには、次のリポジトリ URL を使用します。

git://git.jetbrains.org/mps/mps.git

コマンドラインからチェックアウトするには、次のコマンドを使用します。

git clone git://git.jetbrains.org/mps/mps.git

さらに、Git の Web アクセスを使用して MPS ソースを閲覧する(英語)を実行できます。

プロジェクトの構造

確かに、IntelliJ IDEA と MPS のモジュールとパッケージの階層から見ると、全体的なプロジェクト構造は複雑になる可能性があります。最初は、ピースがどのように組み合わされているかを理解するのが難しいでしょう。開始に役立ついくつかのポイントを以下にまとめました。さらに質問がある場合は、メールまたは #contributors Slack チャンネル(英語)でお問い合わせください。

大きな分裂

MPS は IntelliJ IDEA と MPS 自体の両方で開発されているため、コードベースは Java ソースと MPS モデルで構成されています。IntelliJ IDEA で Java ファイルを開くたびに、ファイルに /*Generated by MPS */ コメントが含まれているかどうかを確認できます。これは、ソースが生成されたことを示しており、実際のソースは、おそらく類似した名前で MPS にあります。Mac のショートカット Cmd+O または Windows の Ctrl + N は、ファイル、クラス、ルートノードを名前で開くために使用され、確かに便利です。幸い、キーの組み合わせは IntelliJ IDEA と MPS で同じです。

構造

MPS のプロジェクトビューは、プロジェクトがどのように構成されているかについての大まかなガイドラインを提供する場合があります。

The structure tool window
  • core は、重要な言語設計機能を保持しています。

    • アスペクトは、個々の言語定義アスペクトの機能と言語を保持します。

    • スタブには、JDK、Ant、IntelliJ プラットフォーム、MPS Java ソースなどのロードされた外部ライブラリが格納されます。

  • languages には、baselanguage、smodelquotationxml などのコア言語が含まれています。

  • platform には、コンソール、vas サポート、モデルチェック、ビルド言語などの IDE 拡張機能が含まれています。

  • samples は、サンプルプロジェクトをグループ化します。

  • tests には、MPS のさまざまな側面のテストが含まれています。

  • ワークベンチは、IntelliJ プラットフォームとの統合と多くの UI 要素の実装を提供し、実行とデバッグをサポートします。

作業をコミットする

MPS プロジェクトは、生成されたアーティファクトをソースとモデルとともに Git に保存します。コミットする前に、変更されたすべてのモデルが再生成されていることを確認してください。(generation required) ノートは消えている必要があります。そうしないと、TeamCity CI サーバーは、すべてのアーティファクトが正しく生成されていることを確認するため、失敗したビルドでコミットを拒否します。再生成する最良の方法は、モデルまたはモジュールのコンテキストメニューから Rebuild を呼び出すことです。

開発者向けのヒント

生産性ガイドのヒントの追加

MPS 自体またはスタンドアロン MPS ベースの IDE のいずれかについて、新しい生産性ガイドのヒントを追加する場合は、次のガイドラインに従ってください。

  • ヒントを説明する HTML ファイルを作成し、それを /workbench/resources_en/source/tips に配置します。他のヒントで使用されているスタイルに従ってください。

  • 新しい HTML ファイルを /workbench/resources_en/source/tips/tips.xml にリストして、「今日のヒント」ダイアログの一部にします。

  • FeatureUsageTracker.getInstance().triggerFeatureUsed("my.key" ); への呼び出しを適切なアクションに追加して、機能が生産性ガイドで使用されていることを示します (my.key は、作成または再利用する生産性ヒントの識別子です)。

  • /workbench/resources_en/source/messages/FeatureStatisticsBundle.properties のキーに表示名を追加する

  • 生産性ガイドエントリを /workbench/resources/source/ProductivityFeaturesRegistry.xml に登録し、ID を HTML ページにマップします。

関連ページ:

Subversion リポジトリからファイルをチェックアウトする

Subversion リポジトリからファイルをチェックアウトすることで、リポジトリのローカルの作業用コピーを取得し、編集できます。必要な変更を行った後、変更をコミットするか、変更内容をリポジトリにチェックインして、結果を公開できます。メインメニューで、に移動します。バージョン管理から取得ダイアログで、リポジトリロケーションの追加をクリックしてリポジトリ URL を指定します。チェックアウトをクリックします。開いたダイアログで、リポジトリファイルのローカルコピーが作成される宛先ディレクトリを指定し...

ジェネレーターのパフォーマンスを向上させるためのヒント

MPS ジェネレーターを高速化し、400% によってビルド速度を向上させる:Daniel Stiegler (Modellwerkstatt) と V á clav Pech 著 (JetBrains)Daniel Stieger は、Java ローコードプラットフォーム MoWare Werkbank を提供するオーストリアの企業、modellwerkstatt.org のパートナーです。このプラットフォームは、ビジネスアプリケーション、つまり特定の企業の特定のビジネスプロセスをサポートする...

著作権

(C) コピーライト JetBrains, s.r.o. 2003、2008-2018。無断転載を禁じます JetBrains MPS は、Apache 2 ライセンスでライセンスされています。JetBrains MPS には、サードパーティによって開発されたソフトウェアが含まれています。それらのライセンスは、MPS インストールのライセンスディレクトリにあります。JetBrains MPS プロジェクトへの貢献移行ガイド...