Skip to main content

Публикация и использование пакетов CodeQL

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

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

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

Проверка подлинности в GitHub Container registries

Вы можете публиковать пакеты и скачивать частные пакеты, проверяя подлинность в соответствующих GitHub Container registry.

Вы можете пройти проверку подлинности в Container registry двумя способами:

  1.        `--github-auth-stdin` Передайте параметр CodeQL CLI, а затем укажите маркер GitHub Apps или personal access token через стандартные входные данные.
    
  2. Задайте для переменной GITHUB_TOKEN среды значение GitHub Apps или personal access token.

Публикация вашего пакета CodeQL

Чтобы поделиться вашим пакетом данных CodeQL с другими людьми, вы можете опубликовать его в Container registry.

          `qlpack.yml` Настройка файла перед публикацией

Вы можете проверить и изменить сведения о конфигурации пакета CodeQL перед публикацией. qlpack.yml Откройте файл в предпочитаемом текстовом редакторе.

library: # set to true if the pack is a library. Set to false or omit for a query pack
name: <scope>/<pack>
version: <x.x.x>
description: <Description to publish with the package>
defaultSuite: # optional, one or more queries in the pack to run by default
    - query: <relative-path>/query-file>.ql
defaultSuiteFile: default-queries.qls # optional, a pointer to a query-suite in this pack
license: # optional, the license under which the pack is published
dependencies: # map from CodeQL pack name to version range
  •         `name:` должен соответствовать формату `<scope>/<pack>` , где `<scope>` находится организация GitHub , в которой будет публиковаться и `<pack>` имя пакета.
    
  • Допускается не более одного или defaultSuite``defaultSuiteFile одного из них. Это два разных способа определения набора запросов по умолчанию, первый путем указания запросов непосредственно в файле qlpack.yml и второй путем указания набора запросов в пакете.

Бег codeql pack publish

Когда вы будете готовы опубликовать пакет в GitHub Container registry, можно выполнить следующую команду в корневом каталоге пакета:

codeql pack publish

Опубликованный пакет будет отображаться в разделе пакетов GitHub организации, указанной областью в qlpack.yml файле.

Примечание.

Если вы публикуете пакеты моделей в GitHub Container registry для расширения охвата всех репозиториев в организации в рамках конфигурации настройки по умолчанию, необходимо убедиться, что репозитории, выполняющие сканирование кода, могут получить доступ к этим пакетам моделей. Дополнительные сведения см. в разделе [AUTOTITLE и Изменение конфигурации настройки по умолчанию](/packages/learn-github-packages/configuring-a-packages-access-control-and-visibility).

Скачивание существующего пакета CodeQL

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

codeql pack download <scope>/<pack>@x.x.x
  •         `<scope>`: имя организации GitHub, из которую вы будете скачать.
    
  •         `<pack>`: имя пакета, который требуется скачать.
    
  •         `@x.x.x`: необязательный номер версии. Если опущено, будет загружена последняя версия.
    

Эта команда принимает аргументы для нескольких пакетов.

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

Использование пакета данных CodeQL для анализа базы данных CodeQL

Чтобы проанализировать базу данных CodeQL с помощью пакета CodeQL выполните следующую команду:

codeql database analyze <database> <scope>/<pack>@x.x.x:<path>
  •         `<database>`: база данных CodeQL для анализа.
    
  •         `<scope>`: имя организации GitHub, в которую публикуется пакет.
    
  •         `<pack>`: имя используемого пакета.
    
  •         `@x.x.x`: необязательный номер версии. Если опущено, будет использоваться последняя версия.
    
  •         `:<path>`: необязательный путь к запросу, каталогу или набору запросов. Если опущено, будет использоваться набор запросов по умолчанию пакета.
    

Команда analyze запустит набор данных по умолчанию для всех указанных пакетов CodeQL . Можно указать несколько пакетов данных CodeQL для анализа базы данных CodeQL . Рассмотрим пример.

codeql <database> analyze <scope>/<pack> <scope>/<other-pack>

Примечание.

Команда codeql pack download сохраняет пакет, который он загружает в внутреннем расположении, которое не предназначено для локального изменения. Непредвиденное поведение (и трудно устранить неполадки) может привести к изменению пакета после скачивания. Дополнительные сведения о настройке пакетов см. в разделе Создание и работа с пакетами CodeQL.