Learn how to customize Copilot code review with custom coding guidelines.
Note
The custom coding guidelines feature is only available with the Copilot Enterprise plan, and is currently limited to selected customers.
This feature will be deprecated in favor of using Copilot custom instructions to customize Copilot code review. See Using GitHub Copilot code review.
About coding guidelinesYou can customize Copilot code review with custom coding guidelines written in natural language. For more information on Copilot code review, see Using GitHub Copilot code review.
With coding guidelines, Copilot can give feedback based on your organization's specific coding style and best practices.
Because Copilot code review is powered by a large language model, it can help with enforcing coding guidelines that are not covered by your linter or static analysis tool.
Coding guidelines are configured at the repository level. You can create and enable up to 6 coding guidelines per repository.
Note
On GitHub, navigate to the main page of the repository.
Under your repository name, click Settings. If you cannot see the "Settings" tab, select the dropdown menu, then click Settings.
In the "Code & automation" section of the sidebar, click Copilot, then Code review.
Click Create guideline.
Under "Name," give the coding guideline a name.
Under "Description," provide a description of the coding guideline up to 600 characters long. This will be used by Copilot to understand your coding style and to decide when to leave a comment.
How you write your description has a big impact on the quality of comments that Copilot will generate. For help with writing effective coding guidelines, see Dos and don'ts for coding guidelines above, and Coding guidelines examples below.
Optionally, limit the coding guideline to specific file types or paths by clicking Add file path and adding path patterns.
You can use fnmatch
syntax to define paths to target, with *
as a wildcard to match any string of characters.
Because GitHub uses the File::FNM_PATHNAME
flag for the File.fnmatch
syntax, the *
wildcard does not match directory separators (/
). For example, qa/*
will match all branches beginning with qa/
and containing a single slash, but will not match qa/foo/bar
. You can include any number of slashes after qa
with qa/**/*
, which would match, for example, qa/foo/bar/foobar/hello-world
. You can also extend the qa
string with qa**/**/*
to make the rule more inclusive.
For more information about syntax options, see the fnmatch documentation.
Test your coding guideline to make sure it works as expected.
Save your coding guideline, and turn it on, by clicking Save guideline.
When you request a review from Copilot, it will automatically use the repository's enabled coding guidelines to review your code. For more information, see Using GitHub Copilot code review.
Comments generated based on a coding guideline will include a message, highlighting their source.
Coding guidelines examples Example 1: Avoid using magic numbersTitle: Avoid using magic numbers
Description: Don't use magic numbers in code. Numbers should be defined as constants or variables with meaningful names.
Path patterns: **/*.py
SELECT *
in SQL queries
Title: Don't use `SELECT *` in SQL queries
Description: Don't use `SELECT *` in SQL queries. Always specify the columns you want to select. `COUNT(*)` is allowed.
Path patterns: None (applies to all file types, as SQL queries may be embedded in code).
Example 3: Usefetch
for HTTP requests
Title: Use `fetch` for HTTP requests
Description: Use `fetch` for HTTP requests, not `axios` or `superagent` or other libraries.
Path patterns: **/*.ts
, **/*.js
, **/*.jsx
, **/*.tsx
Title: Always tag metrics with the current environment
Description: Always include a `env` tag with the current environment when emitting metrics, for example, `env:prod` or `env:dev`.
Path patterns: */*.go
, */*.java
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4