自動レビュー後に確認の優先順位を決める

Farolという新しいオープンソースの開発者向けツールは、プルリクエストを承認する人が、どこに注意を集中させるべきかを判断するのを支援することを目指している。コマンドラインのパッケージとGitHub Actionの両方で配布され、プログラムの静的な情報を使って変更を解析し、リスクの高いファイル、影響を受けるアプリケーションの箇所、変更差分のテストカバレッジの不足、契約の破壊の可能性を示すレポートを生成する。

このプロジェクトは、AIや従来の行単位のレビューの後に使うよう設計されており、それらを置き換えるものではない。その前提にあるのは、自動レビューツールが個々の編集にコメントできても、小さな変更が運用上どこまで影響するかを見落とす場合があるという考え方だ。そのためFarolは、マージの判断に焦点を当てる。どのページ、エンドポイント、ジョブ、共有コンポーネントが影響を受けうるのか、承認前に何を手動でテストすべきなのかを示す。

Farolのリポジトリーによると、中核となるスコア計算はモデルの判断ではなくコンパイラーとパーサーに依存するため、決定的である。したがって、同じプルリクエストと設定であれば、同じ結果が得られるはずだ。レポートはローカル環境でも継続的インテグレーション環境でも生成でき、GitHub Actionはマージをブロックせずにプルリクエストへコメントできる。

複数の技術スタックと判断材料に対応

このツールは、TypeScriptとReactのエコシステム、Goのサービス、Pythonのアプリケーションへの対応を文書で説明している。ウェブ分野では、React Router、Next.js、TanStack Routerのページに加え、GraphQLの操作や一般的なRESTフレームワークを対応づけられる。Goの解析は複数のルーター、gRPCサービス、バイナリーを対象とする。PythonではFastAPI、Flask、Django、MCPツール、Celeryタスク、ワークフローシステムに対応する。

プロジェクトの設定ファイルで、技術スタックと関連するディレクトリーをFarolに伝える。チームは必要に応じて、テストカバレッジ、lint、依存関係監査のレポートも入力できる。生成される表示は、変更ファイルのリスクに、影響が及ぶルートとテスト情報を組み合わせる。すべての行を同じ重要度として扱うのではなく、レビュアーに確認の着手順を示す仕組みだ。インフラストラクチャーと継続的インテグレーションのファイルは、別途取り上げられる。

リポジトリーは、Farolがコードを実行せずに解析し、ソースコードをホスティングされたサービスへ送信しないことを強調している。開発者の端末またはCIランナー上で動作し、MITライセンスで提供される。パッケージにはNode.js 22以降とGitが必要で、GoやPythonのリポジトリーを解析する場合には、それぞれの言語のツールも必要となる。ユーザーはnpxで実行するか、グローバルコマンドとしてインストールできる。

任意のDatadog連携により、トラフィックやエラーの状況をレポートへ追加できる。プロジェクトによると、この情報はスコアを変えるものではなく、本番環境での利用状況、関連するエラー、サービスの呼び出し元を示す。その連携には、チーム自身のオブザーバビリティ用認証情報をCIに設定する必要がある。一方、中核の静的解析はアカウントなしで動作する。

Farolは、自動化システムがより多くの変更を生成し、検査するようになる中での、コードレビュー全体の変化を反映している。その役割は、承認の責任を引き続き負う人にリスクの見取り図を提供することだ。リポジトリーにはFastAPIとReactを使ったフルスタックの例によるライブデモがあるが、提示された証拠には、その精度に関する独立したテストは含まれていない。導入するチームは、提案されるレビュー順序に頼る前に、影響範囲のマップや警告を自らのアーキテクチャーと照らし合わせるべきだ。