Skip to main content

Custom CodeQL queries

Custom queries extend CodeQL's built-in security analysis to detect vulnerabilities and enforce coding standards specific to your codebase.

Кто может использовать эту функцию?

CodeQL доступен для следующих типов репозитория:

What are custom CodeQL queries?

Custom queries extend CodeQL's built-in security analysis to detect vulnerabilities, coding standards, and patterns specific to your codebase.

Примечание.

Запросы выполняются с database analyze строгими требованиями к метаданным. Вы также можете выполнять запросы с помощью следующих подкомандах уровня сантехники:

  • запросы запуска базы данных, который выводит не интерпретируемые результаты в промежуточном двоичном формате, называемом BQRS.
  • выполнение запроса, который выводит файлы BQRS или печатает таблицы результатов непосредственно в командной строке. Просмотр результатов непосредственно в командной строке может оказаться полезным для итеративной разработки запросов с помощью интерфейса командной строки.

Запросы, выполняемые с этими командами, не имеют одинаковых требований к метаданным. Однако для сохранения данных, доступных для чтения, необходимо обработать каждый файл результатов BQRS с помощью подкоманда autoTITLE сантехники. Поэтому для большинства вариантов использования проще всего использовать анализ базы данных для непосредственного создания интерпретированных результатов.

When to use custom queries

Use custom queries to:

  • Detect vulnerabilities specific to your application's architecture or frameworks
  • Enforce organization-specific coding standards or best practices
  • Find patterns not covered by standard CodeQL query packs
  • Analyze CodeQL databases with the database analyze command using the CodeQL CLI to produce interpreted results

Query structure

Custom queries are written in query files, which are saved with the .ql extension. These files also contain important metadata that provides information about the query's purpose and tells the CodeQL CLI how to process results. Required properties include:

  • Query identifier (@id): Lowercase letters or digits, delimited by / or -
  • Query type (@kind): One of:
    • problem - Simple alert
    • path-problem - Alert with code location sequence
    • diagnostic - Extractor troubleshooting
    • metric - Summary metric (requires @tags summary)

Примечание.

Metadata requirements may differ if you want to use your query with other applications. For more information, see Metadata for CodeQL queries.

For more information about query metadata, see Metadata for CodeQL queries and the Query metadata style guide.

Query documentation

Query documentation helps users understand what a query detects and how to address identified issues. You can include documentation for your custom queries in two formats:

  • Markdown files: Saved alongside the query, can be included in SARIF files and displayed in the code scanning UI
  • .qhelp files: Consistent with standard CodeQL queries, but must be converted to Markdown for use with code scanning

When SARIF files containing query help are uploaded to GitHub, the documentation appears in the code scanning UI for any alerts generated by the query.

For more information, see Query help files.

Sharing custom queries

You can share custom queries with the community by publishing your own query packs. See Публикация и использование пакетов CodeQL.

Further reading