UStackUStack
Rosentic icon

Rosentic

RosenticはCI上でPRを全アクティブブランチに照合し、スキーマドリフトやAPI/シグネチャ不一致などの互換性競合をマージ前に検出。OSS無料。

Rosentic

Rosenticとは?

Rosenticは、プルリクエスト(PR)をアクティブブランチに対してスキャンし、マージ前に互換性競合を検出する決定論的CIチェックです。ブランチ間動作を破るケースに焦点を当て、スキーマドリフト、API破壊、シグネチャ不一致を含みます。

ワークフローは自動検証を中心に:PRイベントでCI上でRosenticを実行し、破壊的変更の内訳を生成、検出した競合に関連する具体的な場所(ファイルパスと行番号)を報告します。

主な機能

  • マージ前にPRを全アクティブブランチに対してスキャンし、PR自身のdiff内問題だけでなくブランチ間非互換性を捕捉。
  • CI実行間で一貫した結果のための決定論的実行。
  • 既存のビルド環境内で分析を保持(「コードはrunnerを離れない」)するため、CI/runner上で実行。
  • サイトのスキャン範囲に基づく12言語対応。
  • 競合の行レベル内訳(ファイルパスと行番号)を提供し、チームが正確な呼び出し箇所とインターフェースに対処可能。
  • 基盤エンジンの変更をガードする回帰フィクスチャを使用。

Rosenticの使い方

  1. リポジトリにRosenticのGitHub Actionsワークフローを追加(サイトが.github/workflows/rosentic.ymlの例を提供)。
  2. ブランチを対象としたpull_requestイベントでワークフローを実行するよう設定(例はbranches: [main])。
  3. Rosenticがブランチ比較に必要なものを検査できるよう、ワークフローをfetch-depth: 0でリポジトリをチェックアウト(例と同様)。
  4. ワークフローがRosentic/rosentic-action@v1を実行。ジョブ完了後、出力を確認しRosenticの報告「Breaking」競合と行レベル場所をレビュー。

エージェントベースのワークフローで実行する場合、サイトはリポジトリにRosenticをインストールしコーディングエージェントにその指示に従うことを推奨。

ユースケース

  • マージ前のランタイム/インテグレーションフェイル防止: PRが関数シグネチャを変更(例:必須引数追加)し、Rosenticが他のブランチの古いシグネチャを呼び続ける呼び出し元を特定。
  • ブランチ間のスキーマドリフト検出: コード更新がスキーマ定義に影響(例:リゾルバや契約形状変更)した場合、Rosenticが「Schema drift」を報告し、影響ファイル/行を指摘。
  • API戻り値型や契約変更の捕捉: 関数の戻り値型が変更(例:Promise<void>から異なるPromise<Result>形状へ)した場合、Rosenticが新しい結果構造を扱えない呼び出し元をリスト。
  • バックエンド/フロントエンドコード間のインターフェース不一致ガード: PRが共有インターフェースを更新した場合、Rosenticが他のブランチの呼び出し箇所が一致しない「signature mismatch」競合をフラグ。
  • 複数エージェントブランチの互換性チェック標準化: チームが複数ブランチと自動化ワークフローを使う場合、Rosenticがブランチ間互換性を検証し、PRが並行開発と競合しにくく。

FAQ

RosenticはAPIキーやサインアップが必要?
サイトは「No signup」「No API key」と記載。

Rosenticはどこで実行される?
サイトによるとCI/runner上で実行され、コードは「never [leaves] your runner」。

Rosenticはいつ競合をチェック?
提供例のワークフローはpull_requestイベント(例のbranches: [main])で実行され、Rosenticがマージ前にアクティブブランチに対してPRをチェック。

Rosenticが報告する競合の種類は?
ページ例はスキーマドリフト、API break、シグネチャ不一致などのカテゴリを挙げ、具体的な破壊的変更と影響場所の内訳を提供。

Rosenticからどんな情報が得られる?
サイトによると、結果にファイルパスと行番号を含み、「full breakdown」とPRで見つかった競合数を記載。

代替手段

  • CI上の自動テストスイート: PRを他のブランチと積極的に比較するのではなく、ユニット/インテグレーションテストがランタイムで動作を検証します。テストは特定のシナリオを検証するのに対し、クロスブランチのインターフェース競合を列挙しない点が異なります。
  • 静的型チェックとリンター(言語依存): 型チェッカーやリンターはコンパイラが解析可能な範囲内のシグネチャや型不一致を検出できますが、他のアクティブブランチとの変更による互換性問題を特定できない場合があります。
  • 従来のGitベースのマージ競合検出: Gitはマージ時にテキストベースの競合を表示しますが、スキーマドリフトやAPI契約不一致などのセマンティック互換性をブランチ間で本質的に検証しません。
  • CI向け変更影響解析ツール: 依存/影響解析カテゴリのツールは変更が下流消費者へ与える影響に焦点を当てます。Rosenticと比べ、依存グラフやカバレッジに依存し、明示的なクロスブランチ検証を行わない場合があります。