バグトラッカーのプログラミングプロセス用のDSL

カスタムバード



エラーのないソフトウェアはありません。 開発プロセスのエラーを説明するために、原則として、バグトラッカーが使用されます-ユーザーとテスターが見つかったエラーを報告できるプログラム、マネージャー-これらのエラーを修正する手順を決定し、開発者-エラー修正の事実を記録します。 バグトラッカーは、多くの場合、開発チームとユーザー間の対話の主な手段であるため、バグトラッカーを使用することの有効性は非常に重要です。 現在、バグトラッカーの選択は非常に多くなっています。 それらの中には、 無料BugzillaMantisTracRedmine )と商用システム( JiraFogbugz )の両方があります。



当社(JetBrains)は長い間Jiraを使用しています。 しかし、ある時点で、このシステムのパフォーマンスと使いやすさの問題により、当社の他の製品と同様に、主にチームの生産性に焦点を当てた独自のバグトラッカーYouTrackの開発を余儀なくされました。 YouTrackは、2年前、最初のバージョンのリリースの少し前に、 Habréのシステムについてすでに書かれていました。 それ以来3つのリリースがあり、今では小規模チーム向けのYouTrackが無料になりました。



バグ追跡システムの使用方法は、特定の企業が採用しているプロセスに大きく依存しています。 したがって、「箱から出してすぐに」全員に適したバグトラッカーを作成することは不可能です。 代わりに、プロセスに合わせてシステムを便利に構成する機能をユーザーに提供する必要がありました。



カスタマイズは可能性を暗示します

YouTrackシステムで一連のフィールドを定義するツールは、かなり予測可能です。



YouTrackでプロジェクトのフィールドを編集するためのインターフェース



各フィールドに対して、名前、値のセット、デフォルト値などを指定できます。 YouTrackシステムでは、すべてのフィールドがカスタマイズ可能であるという事実は、組み込みのスキーマレスDBデータベースを使用しているため、パフォーマンスに影響しません。



バグトラッカーでのワークフローの設定方法を決定することは、はるかに困難でした。 他のバグトラッカーの既存の実装を調査した結果、次のアプローチを特定しました。

  1. 一連のテーブル形式のエラーレポートのライフサイクルの形式化。 この一連のテーブルを編集することにより、状態から状態への遷移の規則と、これらの遷移中のアクションを定義できます。 さらに、多くの可能なアクションが事前に事前に決定され、制限されています。 このプログラミング方法は、準備のできていないユーザーにとっては簡単ですが、数行のコードを書くのに十分なマウスクリックが多く含まれるため、十分に効果的ではありません。
  2. 構成ファイル内のライフサイクルの説明。 ライフサイクルもオートマトンの形式で設定されます-同じ状態と遷移ですが、オートマトンはテキスト形式でプログラムされます。 この設定方法は多くの点でより便利ですが、構成ファイルは通常のテキストエディターで作成され、バグトラッカーの操作中に解釈されます。 このようなスクリプトを記述するときにエラーが発生する可能性は高すぎます。
  3. 受け入れられたワークフローを維持するために、バグトラッカーにない機能を実装する汎用言語でプラグインを作成します。 このアプローチは最も柔軟ですが、完全な開発が必要であり、小さなチームにとっては乗り越えられない障壁になる可能性があります。


バグトラッカーのワークフローのタスクは常に何らかの形でプログラミングされているという結論に達しました。 したがって、YouTrackシステムでは、ドメイン固有の言語(ドメイン固有の言語)でワークフローを記述する機会をユーザーに提供することにしました。 もちろん、この言語のために、オートコンプリート、構文強調表示、エラー強調表示、リファクタリングなどを備えた統合開発環境(IDE)を作成しました。 この環境は、Habréで前述しMPSメタプログラミングシステムに基づいて構築されています。



この言語の観点では、ワークフローは関連する一連のルールです。 ルールは、次の3つのタイプのいずれかです。

  1. 状態に関係なく、エラーレポートの変更に対する反応を記述するルール(ステートレスルール)。
  2. 特定の条件を満たすすべてのエラーレポートのスケジュールによってトリガーできるルール(スケジュールイベントルール)。
  3. オートマトン(ステートマシン)の形式でユーザーコマンドに対する反応を定義するルール。
たとえば、「エラーレポートを閉じるときは、このエラーに関連する修正を含む製品のバージョン番号を指定する必要があります」というルールは、次のように実装できます。

修正バージョンのアサートが修正された問題に設定されている

ルールはIDEで作成され、YouTrackに直接ダウンロードするか、zipアーカイブとしてエクスポートできます。 ルール作成サイクル全体は、JetBrains TV Webサイトのスクリーンキャストに示されています。 サブジェクト指向言語の機能の説明、および組織のプロセス用のYouTrack構成の他の詳細は、ドキュメントに記載れています



All Articles