The Wayback Machine - https://web.archive.org/web/20230130221846/https://docs.github.com/ru/code-security/code-scanning/using-the-codeql-cli/using-custom-queries-with-the-codeql-cli
Skip to main content
We publish frequent updates to our documentation, and translation of this page may still be in progress. For the most current information, please visit the English documentation.

Использование пользовательских запросов с интерфейсом командной строки CodeQL

Вы можете написать собственные запросы CodeQL, чтобы найти конкретные уязвимости и ошибки.

GitHub CodeQL лицензируется для каждого пользователя после установки. CodeQL можно использовать только для определенных задач с ограничениями лицензии. Дополнительные сведения см. в разделе Сведения о лицензии GitHub CodeQL.

Если у вас есть учетная запись GitHub Enterprise и лицензия на GitHub Advanced Security, вы можете использовать CodeQL для автоматического анализа, непрерывной интеграции и непрерывной поставки. Вы можете создать корпоративную учетную запись, обратившись в группу продаж. Дополнительные сведения см. в разделе Сведения о GitHub Advanced Security.

Примечание: Эта статья была перенесена с веб-сайта документации По CodeQL в январе 2023 г.

Сведения о пользовательских запросах и CodeQL CLI

Вы можете настроить анализ CodeQL, написав собственные запросы для выделения конкретных уязвимостей или ошибок.

В этом разделе конкретно описывается написание запросов для использования с командой анализа базы данных для получения интерпретируемых результатов.

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

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

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

Написание допустимого запроса

Перед выполнением пользовательского анализа необходимо написать допустимый запрос и сохранить его в файле с расширением .ql . Существует обширная документация, помогая создавать запросы. Дополнительные сведения см. в разделе ЗапросыCodeQL.

Включение метаданных запроса

Метаданные запроса включаются в начало каждого файла запроса. Он предоставляет пользователям сведения о запросе и сообщает CodeQL CLI, как обрабатывать результаты запроса.

При выполнении запросов с database analyze помощью команды необходимо включить следующие два свойства, чтобы обеспечить правильную интерпретацию результатов:

  • Идентификатор запроса (@id): последовательность слов, состоящих из строчных букв или цифр, разделенных / или -, идентифицирующих и классифицирующих запрос.

  • Тип запроса (@kind): определяет запрос как простое оповещение (@kind problem), оповещение, задокументированное последовательностью расположений кода (@kind path-problem), для устранения неполадок средства извлечения (@kind diagnostic) или сводной метрики (@kind metric и @tags summary).

Дополнительные сведения об этих свойствах метаданных см. в разделе Метаданные для запросов CodeQL и в руководстве по стилю метаданных запросов.

Примечание: Требования к метаданным могут отличаться, если вы хотите использовать запрос с другими приложениями. Дополнительные сведения см. в разделе Метаданные для запросов CodeQL.

Упаковка пользовательских запросов QL

Примечание: Функции управления пакетами CodeQL, включая пакеты CodeQL, в настоящее время доступны в виде бета-версии и могут быть изменены. Во время бета-версии пакеты CodeQL доступны только с помощью пакетов GitHub — Container registry. Чтобы использовать эту бета-версию, установите последнюю версию пакета CodeQL CLI из: https://github.com/github/codeql-action/releases.

При написании собственных запросов с намерением поделиться ими с другими пользователями следует сохранить их в пользовательском пакете CodeQL. Вы можете опубликовать пакет в виде пакета CodeQL в GitHub Packages — GitHub Container registry. Дополнительные сведения см. в разделе Сведения о пакетах CodeQL.

Пакеты CodeQL упорядочивают файлы, используемые в анализе CodeQL, и могут хранить запросы, файлы библиотеки, наборы запросов и важные метаданные. Их корневой каталог должен содержать файл с именем qlpack.yml. Пользовательские запросы должны быть сохранены в корневом каталоге пакета CodeQL или в его подкаталогах.

Для каждого пакета CodeQL файл содержит сведения, qlpack.yml которые сообщают CodeQL CLI, как компилировать запросы, от каких других пакетов и библиотек CodeQL зависит пакет, а также где найти определения наборов запросов. Дополнительные сведения о том, что следует включить в этот файл, см. в разделе Сведения о пакетах CodeQL.

Участие в работе с репозиторием CodeQL

Если вы хотите поделиться запросом с другими пользователями CodeQL, можно открыть запрос на вытягивание в репозитории CodeQL. Дополнительные сведения см. в статье Участие в разработке CodeQL.

Дополнительные материалы