| title | Writing custom queries for the CodeQL CLI | ||||||
|---|---|---|---|---|---|---|---|
| shortTitle | Write custom queries | ||||||
| intro | You can write your own {% data variables.product.prodname_codeql %} queries to find specific vulnerabilities and errors. | ||||||
| product | {% data reusables.gated-features.codeql %} | ||||||
| allowTitleToDifferFromFilename | true | ||||||
| versions |
|
||||||
| topics |
|
||||||
| redirect_from |
|
||||||
| contentType | how-tos |
This article is specifically about writing queries to use with the AUTOTITLE command to produce interpreted results. For conceptual information about custom queries, see AUTOTITLE.
Before running a custom analysis you need to write a valid query, and save it in a file with a .ql extension. There is extensive documentation available to help you write queries. For more information, see {% data variables.product.prodname_codeql %} queries.
When running queries with the database analyze command, you must include the following two properties to ensure that the results are interpreted correctly:
-
Query identifier (
@id): a sequence of words composed of lowercase letters or digits, delimited by/or-, identifying and classifying the query. -
Query type (
@kind): identifies the query as a simple alert (@kind problem), an alert documented by a sequence of code locations (@kind path-problem), for extractor troubleshooting (@kind diagnostic), or a summary metric (@kind metricand@tags summary).
For more information about these metadata properties, see Metadata for {% data variables.product.prodname_codeql %} queries and the Query metadata style guide.
For information about query help and documentation formats, see AUTOTITLE.
To include query help in SARIF files when running code scanning analyses:
-
Write your query help in one of the following formats:
- Markdown file: Save a Markdown file alongside your query with the same name (for example,
my-query.mdformy-query.ql) .qhelpfile: Write query help in.qhelpformat, then convert it to Markdown before running the analysis. For more information, see Query help files and AUTOTITLE.
- Markdown file: Save a Markdown file alongside your query with the same name (for example,
-
Run
codeql database analyzewith the--sarif-add-query-helpoption:codeql database analyze <database> --format=sarif-latest --output=results.sarif --sarif-add-query-help
[!NOTE] The
--sarif-add-query-helpoption is available from {% data variables.product.prodname_codeql_cli %} v2.7.1 onwards. -
Upload the SARIF file to {% data variables.product.github %}.
To share and use your custom queries, see AUTOTITLE.