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