133 lines
5.1 KiB
Markdown
133 lines
5.1 KiB
Markdown
Pull Requestのコメントに対する対応要否をコードベース分析に基づいて判断します
|
||
|
||
## 分析対象
|
||
Pull RequestのURL: $ARGUMENTS
|
||
|
||
## 実行手順
|
||
|
||
### 1. 情報取得と分析
|
||
```bash
|
||
# Pull RequestのURLから情報を取得
|
||
PR_URL="$ARGUMENTS"
|
||
|
||
# $ARGUMENTSが空の場合、現在のブランチのPRを取得
|
||
if [ -z "$PR_URL" ]; then
|
||
PR_URL=$(gh pr view --json url --jq '.url' 2>/dev/null || echo "")
|
||
if [ -z "$PR_URL" ]; then
|
||
echo "エラー: Pull RequestのURLが指定されていません。また、現在のブランチに紐づくPRも見つかりませんでした。"
|
||
exit 1
|
||
fi
|
||
echo "現在のブランチのPull Request URLを使用します: $PR_URL"
|
||
fi
|
||
|
||
echo "=== Pull Request基本情報 ==="
|
||
|
||
# gh pr viewでPR情報を取得
|
||
PR_INFO=$(gh pr view "$PR_URL" --json number,headRepositoryOwner,headRepository,title,author,state,headRefName,baseRefName,changedFiles,additions,deletions,createdAt)
|
||
|
||
# 変数の設定(後のAPI呼び出しで使用)
|
||
OWNER=$(echo "$PR_INFO" | jq -r '.headRepositoryOwner.login')
|
||
REPO=$(echo "$PR_INFO" | jq -r '.headRepository.name')
|
||
PR_NUMBER=$(echo "$PR_INFO" | jq -r '.number')
|
||
|
||
echo "$PR_INFO"
|
||
echo ""
|
||
|
||
echo "=== 未解決コメント一覧 ==="
|
||
# 未解決コメント取得(GraphQL API)
|
||
gh api graphql --field query="query { repository(owner: \"$OWNER\", name: \"$REPO\") { pullRequest(number: $PR_NUMBER) { reviewThreads(last: 100) { nodes { id isResolved comments(last: 10) { nodes { id body path line originalLine createdAt author { login } diffHunk } } } } } } }" | jq '.data.repository.pullRequest.reviewThreads.nodes | map(select(.isResolved == false)) | map(.comments.nodes) | flatten'
|
||
echo ""
|
||
|
||
echo "=== 変更内容の詳細分析 ==="
|
||
echo "### 変更されたファイル一覧"
|
||
gh pr diff "$PR_URL" --name-only
|
||
|
||
echo ""
|
||
echo "### 各ファイルの詳細な差分"
|
||
gh pr diff "$PR_URL"
|
||
```
|
||
|
||
### 4. 分析指示
|
||
|
||
**このPull Requestの情報を取得しました。あなたはこのPull Requestの作成者として、コメントに対する対応要否を判断する必要があります。このPRのオーナーシップを持つ立場から、各コメントに対応すべきかどうかを以下の観点で分析してください:**
|
||
|
||
## A. コードベース全体の理解
|
||
|
||
まず、リポジトリ全体を把握してください:
|
||
|
||
1. **プロジェクト構造の分析**
|
||
- ディレクトリ構造、命名規則
|
||
- 使用技術スタック、フレームワーク
|
||
- 設定ファイル(package.json、requirements.txt、go.modなど)
|
||
|
||
2. **既存パターンの特定**
|
||
- テストファイルの配置規則と命名規則
|
||
- エラーハンドリングの統一パターン
|
||
- ログ出力やデバッグの方法
|
||
- ドキュメンテーションの書き方
|
||
- コーディングスタイル、規約
|
||
|
||
3. **アーキテクチャの理解**
|
||
- レイヤー構造、依存関係
|
||
- デザインパターンの使用状況
|
||
- 拡張性、保守性への配慮
|
||
|
||
## B. 変更内容の整合性チェック
|
||
|
||
今回のPull Requestが既存パターンに従っているかチェック:
|
||
|
||
- 新機能にテストが含まれているか
|
||
- エラーハンドリングが適切か
|
||
- ログ出力が既存パターンに従っているか
|
||
- ドキュメント更新が必要かどうか
|
||
- 依存関係の追加が適切か
|
||
|
||
## C. 各コメントの詳細分析
|
||
|
||
**各コメントについて、以下の形式で判断してください:**
|
||
|
||
### コメントID: [ID番号]
|
||
**内容**: [コメントの要約]
|
||
|
||
#### 対応判断: ✅必要 / ⚠️要検討 / ❌不要
|
||
|
||
**理由**:
|
||
- [客観的な根拠]
|
||
|
||
**コメント者の意図**:
|
||
- [なぜこのコメントをしたのか]
|
||
|
||
**影響範囲**:
|
||
- [修正しない場合のリスク]
|
||
|
||
**修正方針** (対応必要な場合):
|
||
- **場所**: [具体的なファイル、関数]
|
||
- **方法**: [どのように修正するか]
|
||
- **難易度**: 簡単/中程度/困難
|
||
- **時間**: [おおよその所要時間]
|
||
|
||
**返信内容案**:
|
||
- **対応する場合**: [修正内容や対応方針を説明する返信文案]
|
||
- **対応しない場合**: [理由を丁寧に説明する返信文案]
|
||
- **質問・確認が必要な場合**: [意図を確認するための返信文案]
|
||
|
||
---
|
||
|
||
## D. 参考情報の整理
|
||
|
||
### 対応判断の参考情報
|
||
- **既存パターンとの整合性**: [コメントが指摘する内容が既存コードベースの規則に合致するか]
|
||
- **技術的妥当性**: [指摘内容が技術的に正しいか]
|
||
- **影響範囲**: [対応しない場合の潜在的リスク]
|
||
|
||
### コメント優先度整理 (参考)
|
||
1. [コメントID] - [対応を検討すべき理由]
|
||
2. [コメントID] - [対応を検討すべき理由]
|
||
3. [コメントID] - [対応を検討すべき理由]
|
||
|
||
### ユーザー判断のための補足
|
||
- **すぐに対応できそうなもの**: [リスト]
|
||
- **時間をかけて検討が必要なもの**: [リスト]
|
||
- **コメント者に確認が必要なもの**: [リスト]
|
||
|
||
**重要**: この分析は判断材料の提供であり、最終的な対応判断はユーザーが行います。コード修正は一切行いません。 |