設定 Copilot 程式碼審查指示

Azure DevOps 服務

Important

此功能處於公開預覽狀態。

使用自訂指令,針對組織、專案及倉庫層級調整 Copilot 的程式碼審查行為。 客製化指示引導 Copilot 專注於特定的編碼標準、最佳實務或組織政策。

先決條件

類別 要求
功能啟用 Copilot 程式碼審查必須在組織、專案及存放庫層級啟用。
組織權限 Project Collection 管理員具有新增或修改組織層級自訂指示的權限。
專案權限 可新增或修改專案層級自訂指令的 Project Administrator 權限
存放庫權限 需要儲存庫的推送或管理員權限,才能新增或修改儲存庫層級的自訂指令。

自訂指令的適用範圍

你可以在多個範圍內定義自訂指令:

  • 組織層級: 適用於所有專案的基準標準。
  • 專案層級:團隊或專案專屬標準。
  • 儲存庫層級: 儲存庫特定標準位於 .github/copilot-instructions.md 或 .azuredevops/copilot-instructions.md。

當多個範圍存在指令時,Copilot 在審查時會使用所有適用的指令。

Note

Copilot 僅從拉取請求的目標分支讀取儲存庫層級及路徑範圍的指令檔案。 拉取請求中說明檔案的變更不會影響其審查。 Copilot 只有在這些變更合併到目標分支後才會使用它們。

組織與專案自訂指示

在 Azure DevOps 設定中設定組織層級及專案層級的自訂指令。 利用這些範圍來制定廣泛的政策,例如安全要求、合規規則,或多個儲存庫共享的語言慣例。

儲存庫自訂指令檔案

將自訂指令儲存在儲存庫根目錄中的 .github/copilot-instructions.md 或 .azuredevops/copilot-instructions.md 其中之一。 Copilot 會在每次審查時閱讀此檔案,以了解你儲存庫的具體指引。

.github/
   copilot-instructions.md
   instructions/
      api.instructions.md

.azuredevops/                       # same files work here too
   copilot-instructions.md
   instructions/
      api.instructions.md

建立自訂指令

  1. 在你的儲存庫中,如果還沒有這類資料夾,請建立 .github 或 .azuredevops 資料夾。
  2. 在 .github 或 .azuredevops 資料夾中建立一個名為 copilot-instructions.md 的新檔案。
  3. 以 Markdown 格式新增您的自訂說明。
  4. 提交並推送檔案到你的儲存庫。

新增路徑範圍限定指令

當你想要針對特定資料夾、檔案類型或技術使用不同規則時,可以使用路徑範圍的指令檔。

  • 在.github/instructions/或.azuredevops/instructions/中建立一個或多個*.instructions.md檔案。
  • 加入 YAML front matter,其中包含以相符檔案為目標的 applyTo 值。
  • 每個檔案的指導重點放在一種語言或一個議題。

Copilot 只會對符合applyTo模式的變更檔案套用路徑範圍規則。

路徑範圍檔案格式

---
applyTo: "**/*.ts,**/*.tsx"
---

## TypeScript standards

- Avoid `any`; prefer `unknown` or a specific type.
- Prefer `const`; avoid `var`.
- Use optional chaining (`?.`) and nullish coalescing (`??`) where appropriate.

applyTo 模式範例

  • applyTo: "**" 適用於所有檔案。
  • applyTo: "**/*.cs" 適用於所有 C# 檔案。
  • applyTo: "**/*.sql,**/Settings.xml" 適用於多種模式樣式。

如果路徑範圍檔案沒有包含 applyTo,Copilot 會跳過該檔案。

自訂指令最佳實務

  • 請具體說明:提供明確且可行的指引,說明 Copilot 應該標示哪些問題。
  • 聚焦於高影響力領域: 優先考量與你程式碼庫相關的程式碼品質、安全性與效能考量。
  • 舉例說明: 適當時,提供代碼範例,說明需要注意的問題或避免的模式。
  • 保持簡潔:Copilot 每次審查時都會處理整個檔案,所以要直接,避免冗長的說明。
  • 定期更新: 隨著你的程式碼標準演進,檢視並更新說明。

自訂指令範例

# Copilot code review instructions

## Security focus
- Flag any hardcoded credentials, API keys, or sensitive data
- Identify potential SQL injection or XSS vulnerabilities
- Check for secure use of cryptographic functions

## Performance considerations
- Suggest database query optimizations
- Identify N+1 query problems
- Flag inefficient loops or algorithms

## Team coding standards
- Enforce naming conventions (camelCase for variables, PascalCase for classes)
- Check for proper error handling and logging
- Ensure consistent use of async/await patterns

## Documentation requirements
- Flag missing or incomplete function documentation
- Verify that complex logic includes explanatory comments

組織層級

在組織層級加入客製化指示,以定義企業內廣泛的審查標準。

組織層級的指令會影響 Copilot 對所有專案及該組織所有倉庫的程式碼審查,因此應用於每個團隊都應遵守的需求。

組織層級自訂指令設定的截圖,顯示適用於組織中所有專案與倉庫的設定。

專案層級

在專案層級新增自訂指令,定義所有專案儲存庫共用的審查標準。

Project層指令會影響該 project 中所有倉庫的 Copilot 程式碼審查,因此應將其用於 project 中每個團隊應遵守的慣例。

專案層級自訂指令設定的截圖,顯示適用於專案中所有倉庫的設定。

優先順序

當指令重疊時,Copilot 會依照以下優先順序套用:

  1. 儲存庫層級指令
  2. 專案層級指示
  3. 組織層級指令

儲存庫指令優先順序最高,其次是專案層級指示,最後是組織層級指令。

若兩條指令衝突,Copilot 會使用優先順序較高的指令。

Note

優先順序會指導 Copilot 的審查行為,但不保證如此。 由於 Copilot 使用大型語言模型,有時可能會以不同方式解釋或套用衝突的指令。

尋求幫助

關於 Copilot 程式碼審查的故障排除說明及常見問題解答,請參見「故障排除 Copilot 程式碼審查」。

後續步驟