本地CodeReview_techdebt
Source:2025-12-03
本地CodeReview_Powershell
param(
[string]$featureBranch = "my-feature"
)
$env:GH_TOKEN = "Tokan"
$env:COPILOT_MODEL = "gpt-5.1-codex"
# 檢查 GITHUB_TOKEN 是否設定
if (-not $env:GH_TOKEN) {
Write-Host "Error: GITHUB_TOKEN not set in GitLab CI/CD variables"
exit 1
}
else {
# 顯示現在GH_TOKEN的全部
Write-Host "GH_TOKEN is set to: $env:GH_TOKEN"
}
# 確認 Node.js 路徑並安裝 Node.js
# (Get-Command node).Source
$env:PATH = "C:\Users\shengwei\scoop\apps\nodejs\current;C:\Users\shengwei\AppData\Roaming\npm;" + $env:PATH
scoop install nodejs
node -v
$env:PATH = "C:\Users\shengwei\AppData\Roaming\npm;" + $env:PATH
# 安裝 Copilot CLI
npm install -g @github/copilot
copilot -v
# 檢查是否存在 master 分支,若無則使用 main
if (git branch --list master) {
$compareBranch = "master"
}
else {
$compareBranch = "main"
}
# 切到 feature 分支
git checkout $featureBranch
# 產出「這整個 feature 分支」相對於 $compareBranch 的所有變更
git diff "${compareBranch}...${featureBranch}" -- **/*.cs **/*.csproj **/*.sln **/*.config **/*.xml > feature-diff.patch
# 呼叫 Copilot CLI 進行 review - 讓 Copilot 自己讀取 diff 檔案
Write-Host "執行 Copilot CLI 進行 code review..."
$patchPath = Join-Path (Get-Location) "feature-diff.patch"
$outputFile = Join-Path (Get-Location) "code-review.md"
$outputlog = Join-Path (Get-Location) "logs"
$addDir = (Get-Location).Path
$prompt = "讀取 $patchPath 檔案內容進行CodeReview ,顯示一律使用繁體中文回答。"
# 判斷是否有差異
if ((Get-Item $patchPath).Length -eq 0) {
Write-Host "未偵測到任何差異,刪除 feature-diff.patch 並結束流程。" -ForegroundColor Yellow
Remove-Item $patchPath
exit
}
# 顯示完整命令供 debug
Write-Host "========== DEBUG: 執行命令 ==========" -ForegroundColor Yellow
Write-Host "copilot -p `"$prompt`" --allow-all-tools -s --add-dir `"$outputlog`"" -ForegroundColor Cyan
Write-Host "=====================================" -ForegroundColor Yellow
# 執行 Copilot CLI 並將結果輸出到 code-review.md
$result = copilot --agent=code-review -p $prompt --log-level all --log-dir $outputlog --allow-all-tools -s --add-dir $addDir
$result | Tee-Object $outputFile
# 判斷 code-review.md 是否成功產出
if (Test-Path $outputFile) {
Write-Host "Code review 結果已儲存至: $outputFile"
Remove-Item $patchPath
Write-Host "已刪除 feature-diff.patch" -ForegroundColor Green
}
else {
Write-Host "產生 code-review.md 時發生錯誤,請檢查流程。" -ForegroundColor Red
}