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

Создание пакетов CodeQL и работа с ними

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

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

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

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

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

Сведения о пакетах CodeQL и CodeQL CLI

Примечание: В этой статье описываются функции, доступные в пакете CodeQL CLI 2.10.5, включенном в первоначальный выпуск GitHub Enterprise Server 3.7.

Если администратор сайта обновил вашу версию CodeQL CLI до более новой версии, ознакомьтесь с версией GitHub Enterprise Cloud этой статьи, чтобы узнать о последних возможностях.

С помощью пакетов CodeQL и команд управления пакетами в CodeQL CLI можно публиковать пользовательские запросы и интегрировать их в анализ базы кода.

Существует два типа пакетов CodeQL: пакеты запросов и пакеты библиотек.

  • Пакеты запросов предназначены для выполнения. При публикации пакета запроса пакет включает все транзитивные зависимости и кэш компиляции. Это обеспечивает согласованное и эффективное выполнение запросов в пакете.
  • Пакеты библиотек предназначены для использования пакетами запросов (или другими пакетами библиотек) и не содержат сами запросы. Библиотеки не компилируются , и кэш компиляции не включается при публикации пакета.

Вы можете использовать pack команду в CodeQL CLI для создания пакетов CodeQL, добавления зависимостей в пакеты, установки или обновления зависимостей. Вы также можете опубликовать и скачать пакеты CodeQL с помощью pack команды . Дополнительные сведения см. в разделе Публикация и использование пакетов CodeQL.

Создание пакета CodeQL

Вы можете создать пакет CodeQL, выполнив следующую команду в корневом каталоге оформления проекта:

codeql pack init <scope>/<pack>

Необходимо указать следующие данные:

  • <scope>: имя организации или учетной записи пользователя GitHub, в которую вы будете публиковаться.

  • <pack>: имя создаваемого пакета.

Команда codeql pack init создает структуру каталогов и файлы конфигурации для пакета CodeQL. По умолчанию команда создает пакет запроса. Если вы хотите создать пакет библиотеки, необходимо изменить qlpack.yml файл, чтобы явно объявить файл как пакет библиотеки, включив library:true свойство .

Изменение существующего устаревшего пакета QL для создания пакета CodeQL

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

  1. Измените name свойство таким образом, чтобы оно соответствовало формату <scope>/<name>, где <scope> — имя организации или учетной записи пользователя GitHub, в которую вы будете публиковаться.

  2. qlpack.yml Добавьте version в файл свойство с идентификатором semver, а также необязательный dependencies блок.

  3. Перенесите список зависимостей в libraryPathDependencies dependencies блок. Укажите диапазон версий для каждой зависимости. Если диапазон не имеет значения или вы не уверены в совместимости, можно указать "\*", который указывает, что любая версия допустима и будет по умолчанию установлена последняя версия при запуске codeql pack install.

Дополнительные сведения о свойствах см. в разделе Сведения о пакетах CodeQL.

Добавление и установка зависимостей в пакет CodeQL

Вы можете добавить зависимости в пакеты CodeQL с помощью команды codeql pack add. Необходимо указать область, имя и (необязательно) совместимый диапазон версий.

codeql pack add <scope>/<name>@x.x.x <scope>/<other-name>

Если диапазон версий не указан, будет добавлена последняя версия. В противном случае будет добавлена последняя версия, удовлетворяющая запрошенному диапазону.

Эта команда обновляет qlpack.yml файл с запрошенными зависимостями и загружает их в кэш пакетов. Обратите внимание, что эта команда переформатит файл и удалит все примечания.

Вы также можете вручную изменить файл, qlpack.yml включив в него зависимости, и установить зависимости с помощью команды :

codeql pack install

Эта команда скачивает все зависимости в общий кэш на локальном диске.

Примечания.

  • codeql pack add Выполнение команд и codeql pack install приведет к созданию или обновлению codeql-pack.lock.yml файла. Этот файл должен быть возвращен в систему управления версиями. Файл codeql-pack.lock.yml содержит точные номера версий, используемые пакетом. Дополнительные сведения см. в разделе Сведения о файлах codeql-pack.lock.yml.

  • По умолчанию codeql pack install установит зависимости из Container registry на GitHub.com. Вы можете установить зависимости из GitHub Enterprise Server Container registry, создав qlconfig.yml файл. Дополнительные сведения см. в разделе Публикация и использование пакетов CodeQL.