{"meta":{"title":"Создание и работа с пакетами CodeQL","intro":"Вы можете использовать CodeQL паки для создания, обмена, зависимости и запуска CodeQL запросов и библиотек.","product":"Безопасность и качество кода","breadcrumbs":[{"href":"/ru/code-security","title":"Безопасность и качество кода"},{"href":"/ru/code-security/tutorials","title":"Tutorials"},{"href":"/ru/code-security/tutorials/customize-code-scanning","title":"Настройка сканирования кода"},{"href":"/ru/code-security/tutorials/customize-code-scanning/creating-and-working-with-codeql-packs","title":"Создание и работа с пакетами CodeQL"}],"documentType":"article"},"body":"# Создание и работа с пакетами CodeQL\n\nВы можете использовать CodeQL паки для создания, обмена, зависимости и запуска CodeQL запросов и библиотек.\n\n## О CodeQL рюкзаках и CodeQL CLI\n\n```\n          CodeQL Пакеты используются для создания, обмена, зависимости и запуска CodeQL запросов и библиотек.\n```\n\nВы можете использовать `pack` команду в разделе CodeQL CLI для создания CodeQL паков, добавления зависимостей в паки и установки или обновления зависимостей. Вы также можете публиковать и скачивать CodeQL пакеты с помощью команды `pack` .\n\n## Создание стаи CodeQL\n\nВы можете создать CodeQL пакет, выполнив следующую команду из корня оформления заказа вашего проекта:\n\n```shell\ncodeql pack init <scope>/<pack>\n```\n\nНеобходимо указать следующее:\n\n* `<scope>`: название организации или аккаунта пользователя, на который вы собираетесь публиковать информацию GitHub .\n\n* `<pack>`: имя создаваемого пакета.\n\nКоманда `codeql pack init` создаёт структуру каталогов и конфигурационные файлы для пака CodeQL . По умолчанию команда создает пакет запросов. Если вы хотите создать пакет библиотеки, необходимо изменить `qlpack.yml` файл, чтобы явно объявить файл как пакет библиотеки, включив `library:true` свойство.\n\n## Создание CodeQL мамодельного пака\n\n> \\[!NOTE]\n> В настоящее время пакеты моделей CodeQL находятся в public preview и подвергаются изменению. Пакеты моделей поддерживаются для анализа C/C++, C#, Java/Kotlin, Python, Ruby, и Rust .\n>\n> Редактор модели CodeQL в расширении CodeQL для Visual Studio Code поддерживает моделирование зависимостей для  C#, Java/Kotlin, Python и Ruby.\n\nПакеты моделей могут использоваться для расширения code scanning анализа с целью распознавания библиотек и фреймворков, которые по умолчанию не поддерживаются. Пакеты моделей используют расширения данных, которые реализуются как YAML и описывают добавление данных для новых зависимостей. Когда указывается набор модели, расширения данных в этом пакете автоматически добавляются в code scanning анализ. Для получения дополнительной информации о CodeQL пакетах моделей и расширениях данных см. [AUTOTITLE.](/ru/code-security/codeql-for-vs-code/using-the-advanced-functionality-of-the-codeql-for-vs-code-extension/using-the-codeql-model-editor)\n\nМодельный пакет — это CodeQL пакет с следующими характеристиками в `qlpack.yml` файле:\n\n* Он определяет `library: true`.\n* Она не имеет зависимостей.\n* Он имеет один или несколько `extensionTargets`.\n* Он имеет `dataExtensions` свойство, указывающее на один или несколько файлов расширения данных.\n\nПакет модели внедряет указанные расширения данных в каждый пакет запросов, который называется в `extensionTargets`, если он входит в указанный диапазон версий. Рассмотрим пример.\n\n```yaml\nname: my-repo/my-java-model-pack\nversion: 1.2.3\nextensionTargets:\n  codeql/java-all: ~1.2.3\n  codeql/util: ~4.5.6\ndataExtensions:\n  - models/**/*.yml\n```\n\nВ этом примере пакет модели внедряет все расширения данных в `models/**/``codeql/java-all` пакет запросов, который находится в версии от `1.2.3` до и в том числе `1.3.0`, и `codeql/util` пакет запросов, который находится в версии от `4.5.6` до и включая `4.6.0`. Дополнительные сведения см. в разделе [\"Использование семантического управления](https://docs.npmjs.com/about-semantic-versioning#using-semantic-versioning-to-specify-update-types-your-package-can-accept) версиями\" в документации npm и [спецификации](https://semver.org/) семантического управления версиями.\n\nПосле того как вы создали набор моделей, вы можете публиковать его так же, как и другие CodeQL паки. Дополнительные сведения см. в разделе [Публикация и использование пакетов CodeQL](/ru/code-security/codeql-cli/using-the-advanced-functionality-of-the-codeql-cli/publishing-and-using-codeql-packs). Затем вы можете использовать опубликованные наборы моделей в code scanning анализе с этой `--model-packs` опцией. Дополнительные сведения см. в разделе [Настройка анализа с помощью пакетов CodeQL](/ru/code-security/codeql-cli/getting-started-with-the-codeql-cli/customizing-analysis-with-codeql-packs#using-model-packs-to-analyze-calls-to-custom-dependencies).\n\n## Добавление и установка зависимостей на пакет CodeQL\n\n> \\[!NOTE]\n> Это поддерживается только для CodeQL пакетов запросов и библиотек.\n\nВы можете добавлять зависимости к CodeQL пакам с помощью команды `codeql pack add`. Необходимо указать область, имя и (необязательно) совместимый диапазон версий.\n\n```shell\ncodeql pack add <scope>/<name>@x.x.x <scope>/<other-name>\n```\n\nЕсли диапазон версий не указан, будет добавлена последняя версия. В противном случае будет добавлена последняя версия, которая удовлетворяет запрошенному диапазону.\n\nЭта команда обновляет `qlpack.yml` файл с запрошенными зависимостями и загружает их в кэш пакетов. Обратите внимание, что эта команда будет переформатировать файл и удалить все примечания.\n\nВы также можете вручную изменить `qlpack.yml` файл, чтобы включить зависимости и установить зависимости с помощью команды:\n\n```shell\ncodeql pack install\n```\n\nЭта команда скачивает все зависимости в общий кэш на локальном диске.\n\n> \\[!NOTE]\n> \\*\n> `codeql pack add` Выполнение команд `codeql pack install` приведет к созданию или обновлению `codeql-pack.lock.yml` файла. Этот файл должен быть установлен на элемент управления версиями. Файл `codeql-pack.lock.yml` содержит точные номера версий, используемые пакетом. Дополнительные сведения см. в разделе [\"Сведения о файлах](/ru/code-security/codeql-cli/getting-started-with-the-codeql-cli/customizing-analysis-with-codeql-packs##about-codeql-packlockyml-files) codeql-pack.lock.yml\".\n>\n> * По умолчанию `codeql pack install` будут устанавливать зависимости из Container registry on GitHub.com. Вы можете установить зависимости из a GitHub Enterprise ServerContainer registry , создав `qlconfig.yml` файл. Для получения дополнительной информации см. [раздел AUTOTITLE](/ru/enterprise-server@3.20/code-security/codeql-cli/using-the-advanced-functionality-of-the-codeql-cli/publishing-and-using-codeql-packs) в GitHub Enterprise Server документации.\n\n## Организация CodeQL структуры каталога пака\n\nПакет должен содержать файл, вызванный CodeQL`qlpack.yml` в его корневой директории. В `qlpack.yml` файле `name:` поле должно иметь значение, соответствующее формату `<scope>/<pack>`, где `<scope>` — GitHub это организация или учетная запись пользователя, в которую будет опубликован пакет, а `<pack>` — название пака.\n\nКроме того, пакеты запросов и библиотечные пакеты с CodeQL тестами содержат `codeql-pack.lock.yml` файл, содержащий разрешённые зависимости этого пака. Этот файл создается во время вызова `codeql pack install` команды, не предназначен для редактирования вручную и должен быть добавлен в систему управления версиями.\n\nДругие файлы и каталоги в пакете должны быть логически упорядочены. Например, обычно:\n\n* Запросы упорядочены в каталоги для конкретных категорий.\n* Запросы для конкретных продуктов, библиотек и платформ упорядочены в собственные каталоги верхнего уровня.\n\n## Настройка скачанного CodeQL пака\n\nРекомендуемый способ экспериментировать с изменениями в пакете — клонировать репозиторий, содержащий исходный код.\n\nЕсли репозиторий исходников недоступен и вам нужно основывать модификации на скачанном Container registryпакете, имейте в виду, что эти паки не предназначены для модификации или настройки после загрузки, и их формат может измениться в будущем без особого предупреждения. Рекомендуется выполнить следующие действия после скачивания пакета, если необходимо изменить содержимое:\n\n* Измените имя\\_ пакета\\_, `qlpack.yml` чтобы избежать путаницы с результатами из немодифицированного пакета.\n\n* Удалите все файлы с именем `*.qlx` в любом месте в распаковке структуры каталогов. Эти файлы содержат заранее скомпилированные версии запросов и в некоторых случаях CodeQL используют их вместо модифицированного вами QL-источника."}