設定 Copilot 程式碼審查指令

Azure DevOps 服務

Important

本功能僅限 時預覽。

由於 Microsoft 分階段推出預覽功能,部分功能可能尚未在你的環境中提供。 功能可能會在無預警的情況下變更或移除。 預覽功能沒有服務水準協議(SLA),且支援有限。

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

先決條件

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

自訂指令示波器

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

  • 組織層級: 適用於所有專案的基準標準。
  • Project 層級:團隊或 project 專屬標準。
  • 儲存庫層級:.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. 在 or 資料夾中建立一個新檔案copilot-instructions.md.github。.azuredevops
  3. 以 Markdown 格式新增您的自訂說明。
  4. 提交並推送檔案到你的儲存庫。

新增路徑導域指令

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

  • 在任一.github/instructions/或 .azuredevops/instructions/的檔案中建立一個或多個*.instructions.md檔案。
  • 加入 YAML 前言,並設定 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. Project 層級指令
  3. 組織層級指令

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

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

Note

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

尋求幫助

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

後續步驟