コミットやプッシュを行う前に、ChatGPT または Codex を使ってコードの変更内容を確認します。
レビューの開始
ChatGPT Work では、レビュー対象のコードをアップロードするか、 インストール済みのソースプラグインを通じて利用できるようにします。プロンプトでは、 Pull Request、ブランチ、コミット、ファイル、レビュー基準を指定します。
アプリでのレビュー
レビューペインを開いて変更内容を確認し、行ごとにフィードバックを伝えたうえで、どの変更をステージするか、元に戻すか、コミットするか、プッシュするかを決めます。
変更のレビューを Codex に依頼するには、コンポーザーに /review と入力し、
「ベースブランチとの差分をレビュー 」または「 未コミットの変更をレビュー」を選択します。
Codex は作業ツリーを変更せず、指摘事項を優先順位順に報告します。
レビューペインを使用するには、プロジェクトが Git リポジトリ内にある必要があります。プロジェクトがまだ Git リポジトリでない場合は、アプリから作成するよう求められます。
/review と入力すると、CLI のレビュープリセットが開きます。Codex は専用のレビュアーを起動し、
選択した差分を読み取って、優先順位を付けた具体的な指摘事項を報告します。
作業ツリーが変更されることはありません。
IDE 拡張機能のコンポーザーに /review と入力し、「 ベースブランチとの差分を
レビュー 」または「 未コミットの変更をレビュー」を選択します。Codex は指摘事項を優先順位順に報告します。
作業ツリーは変更されません。
/review コマンドは、
開いているプロジェクトが Git リポジトリ内にある場合にのみ表示されます。
レビュー範囲の選択
プロンプトで、確認する Pull Request、ブランチ、コミット、ファイルを指定します。インストール済みのソースプラグインから利用できないローカルファイルをレビューする場合は、そのファイルをチャットにアップロードします。
表示される変更
レビューペインには、Codex が編集した内容だけでなく、Git リポジトリの状態が反映されます。Codex による変更、自分で行った変更、リポジトリ内のその他すべての未コミットの変更が含まれます。
デフォルトでは、レビューペインに「 未ステージ 」の変更が表示されます。Git インデックスの変更は「 ステージ済み 」で、 選択したコミットの変更は「 コミット 」で、ベースブランチとの差分は「 ブランチ 」で、 アシスタントの最新のターンによる変更は「 最新のターン 」で確認できます。
複数のリポジトリのレビュー
ローカルプロジェクトに複数のフォルダーが含まれ、 それぞれが異なる Git リポジトリに対応している場合、レビューペインで 各リポジトリの変更を確認できます。レビューのヘッダーにあるリポジトリセレクターを開けば、 現在のレビューペインを離れずに別のリポジトリを確認し、 追加または削除された行を表示できます。
「 最新のターン 」を選択すると、 関連付けられたリポジトリ全体でアシスタントが行った最新の変更を確認できます。このビューでは、リポジトリセレクターに「 すべてのリポジトリ 」と表示されます。 「 未ステージ」、「 ステージ済み」、「 ブランチ」などのレビュー範囲は、 選択したリポジトリに適用されます。
次の /review のレビュー範囲から 1 つ選択します。
- 「ベースブランチとの差分をレビュー 」では、マージベースを特定し、ブランチの差分をレビューします。
- 「未コミットの変更をレビュー 」には、ステージ済み、未ステージ、未追跡のファイルが含まれます。
- 「コミットをレビュー 」では、選択したコミットの正確な変更セットをレビューします。
- 「カスタムレビューの指示 」では、指定した基準に絞ってレビューします。
次の /review のレビュー範囲から 1 つ選択します。
- 「ベースブランチとの差分をレビュー 」では、現在のブランチと選択したブランチを比較します。
- 「未コミットの変更をレビュー 」では、作業ツリー内の変更をレビューします。
レビュー結果の活用
レビューの指摘事項は Web チャットに表示されます。根拠を尋ねたり、範囲をさらに絞った追加レビューを依頼したり、ChatGPT に修正版のファイルの作成を依頼したりできます。
コードレビューの結果
レビューの指摘事項は、レビューペインにインラインコメントとして表示されます。
レビューはデフォルトで現在のチャットで実行されます。 設定 > 一般 > コードレビューで「 分離 」を選択すると、別のレビューチャットが開始されます。 詳しくは、開発者向け設定をご覧ください。
レビューは会話履歴の 1 ターンとして表示されます。review_model を
config.toml で設定すると、
レビューに現在のセッションとは異なるモデルを使用できます。
デフォルトでは、レビューは現在のチャットで実行されます。chatgpt.reviewDelivery を
detached に設定すると、/review で別のレビューチャットを開始できます。
詳しくは、IDE 拡張機能の設定リファレンスをご覧ください。
ChatGPT に修正版のファイルの作成を依頼する場合も、そのチャットで利用できるツールとワークスペースの権限が引き続き適用されます。
Codex に検出した問題の修正を依頼する場合は、通常のサンドボックスと承認の 設定が適用されます。
レビューペインの操作
- ファイル名をクリックすると、通常は選択したエディターでそのファイルが開きます。 デフォルトのエディターは開発者向け設定で選択できます。
- ファイル名の背景をクリックすると、差分を展開または折りたためます。
- Cmd キーを押しながら 1 行をクリックすると、選択したエディターでその行が開きます。
- 問題のない変更はステージし、不要な変更は元に戻すことができます。
フィードバック用のインラインコメント
インラインコメントを使うと、差分内の特定の行にフィードバックを直接追加できます。多くの場合、Codex に適切な修正を促す最も手早い方法です。
インラインコメントは次の手順で追加します。
- レビューペインを開きます。
- コメントを付けたい行にポインターを合わせます。
- 表示される「 + 」ボタンを選択します。
- フィードバックを入力して送信します。
- フィードバックを残し終えたら、チャットにメッセージを送信します。
コメントは特定の行に紐付くため、Codex は一般的な指示を受けた場合よりも的確に対応できます。
Codex はインラインコメントをレビューの指針として扱います。コメントを残したら、「インラインコメントに対応し、変更範囲を最小限に抑えてください」のように、意図を明確に伝える追加メッセージを送信します。
Pull Request のレビュー
Codex がリポジトリへの GitHub アクセス権を持ち、現在のプロジェクトが Pull Request のブランチ上にある場合、ChatGPT デスクトップアプリを使えば、アプリを離れずに Pull Request のフィードバックに対応できます。サイドバーには Pull Request のコンテキストとレビュアーからのフィードバックが表示され、レビューペインには差分とコメントが並んで表示されるため、同じチャットで Codex に問題への対応を依頼できます。
GitHub CLI(gh)をインストールし、gh auth login で認証すると、
Codex が Pull Request のコンテキスト、レビューコメント、変更されたファイルを読み込めるようになります。gh がインストールされていない場合や、
認証されていない場合は、
Pull Request の詳細がサイドバーやレビューペインに表示されないことがあります。
修正作業の一連の流れを 1 か所で完結させるには、次の手順に従います。
- Pull Request のブランチでレビューペインを開きます。
- Pull Request のコンテキスト、コメント、変更されたファイルを確認します。
- 対応してほしいコメントを指定し、Codex に修正を依頼します。
- 修正後の差分をレビューペインで確認します。
- 準備ができたら、変更をステージしてコミットし、Pull Request のブランチにプッシュします。
GitHub を起点とするレビューについては、GitHub で Codex を使用するをご覧ください。
ファイルのステージと変更の取り消し
レビューペインには Git の操作機能が用意されており、コミット前に差分を調整できます。
次の単位で、変更をステージしたり、ステージを解除したり、元に戻したりできます:
- 差分全体:レビューのヘッダーにある、 すべてをステージ や すべてを元に戻すなどのアクションボタンを使用します。
- ファイル単位:個々のファイルをステージしたり、ステージを解除したり、元に戻したりできます。
- ハンク単位:1 つのハンクをステージしたり、ステージを解除したり、元に戻したりできます。
変更の一部を採用したい場合はステージし、破棄したい場合は元に戻します。
ステージ済みと未ステージの状態
Git では、同じファイルにステージ済みの変更と未ステージの変更が同時に存在することがあります。その場合、レビューペインの両方のビューに同じファイルが表示されることがあります。これは Git の正常な動作です。