Compare commits

..

2 Commits

3 changed files with 16 additions and 122 deletions
+15
View File
@@ -24,5 +24,20 @@
{
"location": "app/findings.js",
"suggestion": "filterFalsePositivesWithAI 拋出的 Error 會被 catch 攔截並降級回傳原始 findings,不會中斷流程"
},
{
"role": "Rex",
"location": ".gitea/workflows/review.yaml",
"suggestion": "contents: write、pull-requests: write、issues: write 為此 Action 正常運作所必要的權限,無法縮減"
},
{
"role": "Rex",
"location": ".gitea/workflows/review.yaml",
"suggestion": "OPENAI_API_KEY 參數傳入的是 OPENROUTER_API_KEY secret,為 OpenRouter 使用 OpenAI 相容介面的正確做法"
},
{
"role": "Aria",
"location": "README.md",
"suggestion": "章節編號連續且正確,無需調整"
}
]
+1 -120
View File
@@ -1,25 +1,4 @@
[
{
"level": "critical",
"role": "Aria",
"location": ".gitea/ai-review/exclusions.json",
"suggestion": "新增的條目包含 `role` 欄位,但目前的 JSON schema 只接受 `location` 與 `suggestion`,此欄位會導致驗證失敗,請移除或更新 schema。",
"is_new": false
},
{
"level": "critical",
"role": "Aria",
"location": ".gitea/ai-review/exclusions.json:12",
"suggestion": "移除 `role` 欄位,JSON schema 只接受 `location` 與 `suggestion`,保留這兩個欄位即可,避免驗證失敗。",
"is_new": false
},
{
"level": "warning",
"role": "Leo",
"location": "app/config.js:5",
"suggestion": "目前使用硬編碼的 `checks` 陣列來管理所有 LLM provider,未來若要新增或移除 provider 必須直接修改程式碼,易產生重複與維護負擔。建議將 provider 設定抽離至外部 JSON/YAML 檔或使用可擴充的資料結構,並在程式中載入,提升模組化與可維護性。",
"is_new": false
},
{
"level": "warning",
"role": "Rex",
@@ -48,34 +27,6 @@
"suggestion": "文件中章節編號不連續(例如 `### 2. OpenRouter` 後直接跳到 `### 3. Anthropic Claude`),建議重新編號或使用一致的標題層級,以提升可讀性與維護性。",
"is_new": false
},
{
"level": "warning",
"role": "Aria",
"location": "app/config.js",
"suggestion": "`checks` 陣列的每一行過長,超過 120 個字元,建議拆成多行並對齊欄位,以符合程式碼可讀性與行長限制的慣例。",
"is_new": false
},
{
"level": "warning",
"role": "Aria",
"location": "app/config.js",
"suggestion": "`amazonq` 那一行的空格對齊與其他項目不一致,請統一使用單一個空格分隔欄位,或使用對齊工具保持列的垂直對齊。",
"is_new": false
},
{
"level": "warning",
"role": "Leo",
"location": "app/config.js:12",
"suggestion": "目前使用硬編碼的 `checks` 陣列管理所有 LLM provider,未來若要新增或移除 provider 必須直接修改程式碼,易產生重複與維護負擔。建議將 provider 設定抽離至外部 JSON/YAML 檔或使用可擴充的資料結構,於程式中載入,以提升模組化與可維護性。",
"is_new": false
},
{
"level": "warning",
"role": "Zara",
"location": "app/config.js:12",
"suggestion": "改用映射表(Map)或物件儲存 provider 設定,並以 O(1) 方式查找符合條件的項目,減少每次呼叫時的線性掃描成本。",
"is_new": false
},
{
"level": "warning",
"role": "Rex",
@@ -90,20 +41,6 @@
"suggestion": "將 OPENAI_API_KEY 參數改為使用正確的 secret 名稱(如 OPENROUTER_API_KEY)時,請確保工作流程檔案中不會同時暴露兩個不同的 secret 名稱,以免因名稱錯誤導致金鑰未傳入或意外洩漏。",
"is_new": false
},
{
"level": "warning",
"role": "Rex",
"location": "app/config.js:12",
"suggestion": "在判斷 API 金鑰是否有效時,應先檢查 key 是否為非空字串,避免空字串被誤認為有效金鑰而發送請求。可改為 `if (key && key.trim() && baseURL) …`。",
"is_new": false
},
{
"level": "warning",
"role": "Aria",
"location": ".gitea/ai-review/exclusions.json",
"suggestion": "檔案最後缺少換行符號,請在檔案結尾加入一個空白換行,以符合 POSIX 標準。",
"is_new": false
},
{
"level": "warning",
"role": "Aria",
@@ -111,20 +48,6 @@
"suggestion": "檔案最後缺少換行符號,請在檔案結尾加入一個空白換行。",
"is_new": false
},
{
"level": "warning",
"role": "Aria",
"location": "app/config.js:12-13",
"suggestion": "`checks` 陣列每一行超過 120 個字元,請拆成多行並對齊欄位,以符合常見的行長限制。",
"is_new": false
},
{
"level": "warning",
"role": "Aria",
"location": "app/config.js:13",
"suggestion": "`amazonq` 那一行的空格對齊與其他項目不一致,請統一使用單一個空格分隔欄位或使用對齊工具保持列的垂直對齊。",
"is_new": false
},
{
"level": "warning",
"role": "Aria",
@@ -153,27 +76,6 @@
"suggestion": "大量移除的輸入欄位留下多行空白與註解,請整理檔案結構,移除不必要的空行與註解,保持檔案整潔。",
"is_new": false
},
{
"level": "info",
"role": "Zara",
"location": "app/config.js",
"suggestion": "對於未設定 API 金鑰的 provider(如 ollama),可提前返回快取的預設設定,避免每次呼叫都進行條件檢查。",
"is_new": false
},
{
"level": "info",
"role": "Rex",
"location": "README.md:28",
"suggestion": "文件中列出的權限說明應與實際 workflow 中的 permissions 保持一致,並提醒使用者僅在必要時授予 write 權限,避免在 CI/CD 環境中過度授權。",
"is_new": false
},
{
"level": "info",
"role": "Rex",
"location": "app/config.js:12",
"suggestion": "在取得 LLM 設定時,若 key 為空字串仍會被視為有效。建議在判斷前先檢查 key 是否為非空字串,以防止意外使用空的 API 金鑰發送請求。",
"is_new": false
},
{
"level": "info",
"role": "Aria",
@@ -188,27 +90,6 @@
"suggestion": "`ENV_KEYS` 陣列過長,建議分行列舉,每行放置一個環境變數,以提升可讀性。",
"is_new": false
},
{
"level": "info",
"role": "Aria",
"location": "app/findings.js",
"suggestion": "錯誤訊息 `AI 回傳空陣列或非陣列` 可簡化為 `AI 回傳的結果不是有效的非空陣列`,讓訊息更清晰。",
"is_new": false
},
{
"level": "info",
"role": "Leo",
"location": "app/config.js:12",
"suggestion": "`checks` 陣列的每一行過長,超過 120 個字元,建議拆成多行並對齊欄位,以符合程式碼可讀性與行長限制的慣例。",
"is_new": false
},
{
"level": "info",
"role": "Leo",
"location": "app/findings.js:151",
"suggestion": "函式內使用 `console.log` 輸出過濾結果,可能在正式環境產生過多日誌。建議改以 logger 並提供可設定的 log level,或在非除錯模式下移除此輸出。",
"is_new": false
},
{
"level": "info",
"role": "Leo",
@@ -244,4 +125,4 @@
"suggestion": "在 `OPENAI_API_KEY` 後的註解前保留一個空格,以符合常見的 YAML 註解風格:`... ${{ secrets.OPENROUTER_API_KEY }} # OpenRouter 使用 OpenAI 相容介面,以 OPENAI_API_KEY 傳入`。",
"is_new": false
}
]
]
-2
View File
@@ -72,8 +72,6 @@ inputs:
description: 'Amazon Q Base URL'
required: false
runs:
using: 'docker'
image: 'Dockerfile'