Skip to main content
Мы публикуем частые обновления нашей документации, и перевод этой страницы может все еще выполняться. Актуальные сведения см. в документации на английском языке.

Использование пользовательских запросов с интерфейсом командной строки 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.

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