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
建立自訂指令
- 在你的儲存庫中,如果還沒有這類資料夾,請建立
.github或.azuredevops資料夾。 - 在
.github或.azuredevops資料夾中建立一個名為copilot-instructions.md的新檔案。 - 以 Markdown 格式新增您的自訂說明。
- 提交並推送檔案到你的儲存庫。
新增路徑範圍限定指令
當你想要針對特定資料夾、檔案類型或技術使用不同規則時,可以使用路徑範圍的指令檔。
- 在
.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 會依照以下優先順序套用:
- 儲存庫層級指令
- 專案層級指示
- 組織層級指令
儲存庫指令優先順序最高,其次是專案層級指示,最後是組織層級指令。
若兩條指令衝突,Copilot 會使用優先順序較高的指令。
Note
優先順序會指導 Copilot 的審查行為,但不保證如此。 由於 Copilot 使用大型語言模型,有時可能會以不同方式解釋或套用衝突的指令。
尋求幫助
關於 Copilot 程式碼審查的故障排除說明及常見問題解答,請參見「故障排除 Copilot 程式碼審查」。