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

Использование пользовательских запросов с codeQL CLI

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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