О CodeQL рюкзаках и CodeQL CLI
CodeQL Пакеты используются для создания, обмена, зависимости и запуска CodeQL запросов и библиотек.
Вы можете использовать pack команду в разделе CodeQL CLI для создания CodeQL паков, добавления зависимостей в паки и установки или обновления зависимостей. Вы также можете публиковать и скачивать CodeQL пакеты с помощью команды pack .
Создание стаи CodeQL
Вы можете создать CodeQL пакет, выполнив следующую команду из корня оформления заказа вашего проекта:
codeql pack init <scope>/<pack>
Необходимо указать следующее:
-
<scope>: название организации или аккаунта пользователя, на который вы собираетесь публиковать информацию GitHub . -
<pack>: имя создаваемого пакета.
Команда codeql pack init создаёт структуру каталогов и конфигурационные файлы для пака CodeQL . По умолчанию команда создает пакет запросов. Если вы хотите создать пакет библиотеки, необходимо изменить qlpack.yml файл, чтобы явно объявить файл как пакет библиотеки, включив library:true свойство.
Создание CodeQL мамодельного пака
Примечание.
В настоящее время пакеты моделей CodeQL находятся в public preview и подвергаются изменению. Пакеты моделей поддерживаются для анализа C/C++, C#, Java/Kotlin, Python, Ruby, и Rust .
Редактор модели CodeQL в расширении CodeQL для Visual Studio Code поддерживает моделирование зависимостей для C#, Java/Kotlin, Python и Ruby.
Пакеты моделей могут использоваться для расширения code scanning анализа с целью распознавания библиотек и фреймворков, которые по умолчанию не поддерживаются. Пакеты моделей используют расширения данных, которые реализуются как YAML и описывают добавление данных для новых зависимостей. Когда указывается набор модели, расширения данных в этом пакете автоматически добавляются в code scanning анализ. Для получения дополнительной информации о CodeQL пакетах моделей и расширениях данных см. AUTOTITLE.
Модельный пакет — это CodeQL пакет с следующими характеристиками в qlpack.yml файле:
- Он определяет
library: true. - Она не имеет зависимостей.
- Он имеет один или несколько
extensionTargets. - Он имеет
dataExtensionsсвойство, указывающее на один или несколько файлов расширения данных.
Пакет модели внедряет указанные расширения данных в каждый пакет запросов, который называется в extensionTargets, если он входит в указанный диапазон версий. Рассмотрим пример.
name: my-repo/my-java-model-pack
version: 1.2.3
extensionTargets:
codeql/java-all: ~1.2.3
codeql/util: ~4.5.6
dataExtensions:
- models/**/*.yml
В этом примере пакет модели внедряет все расширения данных в models/**/``codeql/java-all пакет запросов, который находится в версии от 1.2.3 до и в том числе 1.3.0, и codeql/util пакет запросов, который находится в версии от 4.5.6 до и включая 4.6.0. Дополнительные сведения см. в разделе "Использование семантического управления версиями" в документации npm и спецификации семантического управления версиями.
После того как вы создали набор моделей, вы можете публиковать его так же, как и другие CodeQL паки. Дополнительные сведения см. в разделе Публикация и использование пакетов CodeQL. Затем вы можете использовать опубликованные наборы моделей в code scanning анализе с этой --model-packs опцией. Дополнительные сведения см. в разделе Настройка анализа с помощью пакетов CodeQL.
Добавление и установка зависимостей на пакет 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 on GitHub.com. Вы можете установить зависимости из a GitHub Enterprise ServerContainer registry , создавqlconfig.ymlфайл. Для получения дополнительной информации см. раздел AUTOTITLE в GitHub Enterprise Server документации.
Организация CodeQL структуры каталога пака
Пакет должен содержать файл, вызванный CodeQLqlpack.yml в его корневой директории. В qlpack.yml файле name: поле должно иметь значение, соответствующее формату <scope>/<pack>, где <scope> — GitHub это организация или учетная запись пользователя, в которую будет опубликован пакет, а <pack> — название пака.
Кроме того, пакеты запросов и библиотечные пакеты с CodeQL тестами содержат codeql-pack.lock.yml файл, содержащий разрешённые зависимости этого пака. Этот файл создается во время вызова codeql pack install команды, не предназначен для редактирования вручную и должен быть добавлен в систему управления версиями.
Другие файлы и каталоги в пакете должны быть логически упорядочены. Например, обычно:
- Запросы упорядочены в каталоги для конкретных категорий.
- Запросы для конкретных продуктов, библиотек и платформ упорядочены в собственные каталоги верхнего уровня.
Настройка скачанного CodeQL пака
Рекомендуемый способ экспериментировать с изменениями в пакете — клонировать репозиторий, содержащий исходный код.
Если репозиторий исходников недоступен и вам нужно основывать модификации на скачанном Container registryпакете, имейте в виду, что эти паки не предназначены для модификации или настройки после загрузки, и их формат может измениться в будущем без особого предупреждения. Рекомендуется выполнить следующие действия после скачивания пакета, если необходимо изменить содержимое:
-
Измените имя_ пакета_,
qlpack.ymlчтобы избежать путаницы с результатами из немодифицированного пакета. -
Удалите все файлы с именем
*.qlxв любом месте в распаковке структуры каталогов. Эти файлы содержат заранее скомпилированные версии запросов и в некоторых случаях CodeQL используют их вместо модифицированного вами QL-источника.