{"meta":{"title":"компиляция запросов","intro":"Скомпилируйте или проверьте код QL.","product":"Безопасность и качество кода","breadcrumbs":[{"href":"/ru/code-security","title":"Безопасность и качество кода"},{"href":"/ru/code-security/reference","title":"Reference"},{"href":"/ru/code-security/reference/code-scanning","title":"Проверка кода"},{"href":"/ru/code-security/reference/code-scanning/codeql","title":"CodeQL"},{"href":"/ru/code-security/reference/code-scanning/codeql/codeql-cli-manual","title":"Руководство по cli CodeQL"},{"href":"/ru/code-security/reference/code-scanning/codeql/codeql-cli-manual/query-compile","title":"компиляция запросов"}],"documentType":"article"},"body":"# компиляция запросов\n\nСкомпилируйте или проверьте код QL.\n\n> \\[!NOTE]\n> Это содержимое описывает последний выпуск данных CodeQL CLI. Дополнительные сведения об этом выпуске см. в статье <https://github.com/github/codeql-cli-binaries/releases>.\n>\n> Чтобы просмотреть сведения о параметрах, доступных для этой команды в предыдущем выпуске, выполните команду с <span style=\"white-space: nowrap;\">`--help`</span> параметром в терминале.\n\n## Synopsis\n\n```shell copy\ncodeql query compile [--check-only] [--keep-going] [--threads=<num>] [--ram=<MB>] <options>... -- <file>...\n```\n\n## Description\n\nСкомпилируйте или проверьте код QL.\n\nСкомпилируйте один или несколько запросов. Обычно основной результат этой команды заключается в том, что скомпилированная версия запроса записывается *в кэш* компиляции, где он будет найден при последующем выполнении запроса. Другие выходные параметры в основном предназначены для отладки.\n\n## Options\n\n### Основные параметры\n\n#### `<file>...`\n\n```\n          \\[Обязательный] Запросы для компиляции. Каждый аргумент является одним из следующих:\n```\n\n* QL-файл для компиляции.\n* Каталог, в котором выполняется рекурсивный поиск по файлам QL.\n* QLS-файл, определяющий определенный набор запросов.\n* Базовое имя файла QLS, экспортированного одним из установленных пакетов QL.\n\n#### `-n, --check-only`\n\nПросто убедитесь, что QL является допустимым и печатает все ошибки; не оптимизируйте и не храните план запроса. Это может быть гораздо быстрее, чем полная компиляция.\n\n#### `--[no-]precompile`\n\n```\n          \\[Дополнительно] Сохраните каждый скомпилированный запрос в виде двоичного `.qlx` файла рядом с `.ql` источником.\n```\n\nЭто должно использоваться только при подготовке пакета запросов для распространения (в этом случае он используется автоматически [при публикации](/ru/code-security/reference/code-scanning/codeql/codeql-cli-manual/pack-publish) пакета codeql). После создания файлов последующие `.qlx` команды, выполняющие запросы, могут игнорировать изменения в источнике QL в пользу предварительной версии.\n\nНекоторые редко используемые параметры компиляции несовместимы с этим и приводят к ошибке во время выполнения.\n\nДоступно с момента `v2.12.0`.\n\n#### `--[no-]dump-dil`\n\n```\n          \\[Дополнительно] Печать оптимизированного промежуточного представления DIL до стандартного выходных данных во время компиляции.\n```\n\nПри выборе выходных данных JSON DIL будет представлен в виде массива однострочных строк, при этом некоторые оболочки определяют, какой запрос компилируется.\n\n#### `-k, --[no-]keep-going`\n\nПродолжайте работать с компиляцией, даже если обнаружена ошибка.\n\n#### `--[no-]dump-ra`\n\n```\n          \\[Дополнительно] Печать оптимизированного плана запросов RA в стандартные выходные данные при компиляции.\n```\n\nПри выборе выходных данных JSON ra будет представлен в виде массива строк с одной строкой, при этом некоторые оболочки определяют, какой запрос компилируется.\n\n#### `--format=<fmt>`\n\nВыберите выходной формат либо (по умолчанию),\\_ либо `text`\\_`json`.\n\n#### `-j, --threads=<num>`\n\nИспользуйте это множество потоков для компиляции запросов.\n\nЗначение по умолчанию — 1. Вы можете передать 0 для использования одного потока на ядро на компьютере или -*N, чтобы оставить *неиспользуемые* ядра N* (за исключением того, что по-прежнему используется хотя бы один поток).\n\n#### `-M, --ram=<MB>`\n\nЗадайте общий объем ОЗУ, который компилятор должен использовать.\n\n### Вариант QL и параметры управления компилятором\n\n#### `--warnings=<mode>`\n\nОбработка предупреждений компилятора QL. Одно из:\n\n```\n          `hide`: подавление предупреждений.\n\n          `show`\n          _(по умолчанию)_: вывод предупреждений, но продолжение компиляции.\n\n          `error`: обрабатывает предупреждения как ошибки.\n```\n\n#### `--no-debug-info`\n\nНе указывайте сведения о расположении источника в RA для отладки.\n\n#### `--[no-]fast-compilation`\n\n```\n          \\[Нерекомендуемые] \\[Дополнительно] Опустить особенно медленные шаги оптимизации.\n```\n\n#### `--no-release-compatibility`\n\n```\n          \\[Дополнительно] Используйте новейшие функции компилятора по стоимости переносимости.\n```\n\nВремя от времени новые функции языка QL и оптимизации оценщика будут поддерживаться оценщиком QL несколько выпусков, прежде чем они включены по умолчанию в компиляторе QL. Это помогает гарантировать, что производительность при разработке запросов в новом выпуске CodeQL может соответствовать немного более старым выпускам, которые по-прежнему могут использоваться для интеграции сканирования кода или CI.\n\nЕсли вы не заботитесь о том, что запросы совместимы с другими (более ранними или более поздними) выпусками CodeQL, иногда можно достичь небольшого объема дополнительной производительности с помощью этого флага, чтобы обеспечить последние улучшения в компиляторе раньше.\n\nВ выпусках, где нет последних улучшений для включения, этот параметр автоматически не делает ничего. Таким образом, его можно установить один раз и для всех в глобальном файле конфигурации CodeQL.\n\nДоступно с момента `v2.11.1`.\n\n#### `--[no-]local-checking`\n\nВыполняйте только начальные проверки в части используемого источника QL.\n\n#### `--no-metadata-verification`\n\nНе проверяйте метаданные внедренного запроса в комментариях QLDoc для допустимости.\n\n#### `--compilation-cache-size=<MB>`\n\n```\n          \\[Дополнительно] Переопределите максимальный размер по умолчанию для каталога кэша компиляции.\n```\n\n#### `--fail-on-ambiguous-relation-name`\n\n```\n          \\[Дополнительно] Сбой компиляции, если во время компиляции создается неоднозначное имя отношения.\n```\n\n### Параметры настройки среды компиляции\n\n#### `--search-path=<dir>[:<dir>...]`\n\nСписок каталогов, в которых можно найти пакеты QL. Каждый каталог может быть пакетом QL (или пакетом пакетов, содержащих `.codeqlmanifest.json` файл в корневом каталоге) или непосредственным родительским элементом одного или нескольких таких каталогов.\n\nЕсли путь содержит несколько каталогов, их порядок определяет приоритет между ними: когда имя пакета, которое должно быть разрешено, совпадает с несколькими деревьями каталогов, то один из первых побед.\n\nУказывая это на получение репозитория CodeQL с открытым исходным кодом, должно работать при запросе одного из языков, которые живут там.\n\nЕсли вы проверили репозиторий CodeQL как одноуровневую цепочку инструментов CodeQL, вам не нужно предоставлять этот параметр; Такие каталоги с братом всегда будут искать пакеты QL, которые не удается найти в противном случае. (Если это значение по умолчанию не работает, настоятельно рекомендуется настроить `--search-path` один раз и для всех в файле конфигурации для каждого пользователя).\n\n(Примечание. В Windows разделитель путей имеет значение `;`).\n\n#### `--additional-packs=<dir>[:<dir>...]`\n\nЕсли указан этот список каталогов, они будут искать пакеты до тех, в которых они есть `--search-path`. Порядок между ними не имеет значения; Это ошибка, если имя пакета найдено в двух разных местах в этом списке.\n\nЭто полезно, если вы временно разрабатываете новую версию пакета, который также отображается в пути по умолчанию. С другой стороны, *не рекомендуется* переопределить этот параметр в файле конфигурации. Некоторые внутренние действия будут добавлять этот параметр на лету, переопределяя любое настроенное значение.\n\n(Примечание. В Windows разделитель путей имеет значение `;`).\n\n#### `--library-path=<dir>[:<dir>...]`\n\n```\n          \\[Дополнительно] Необязательный список каталогов, которые будут добавлены в путь поиска необработанных импортов для библиотек QL. Это следует использовать только в том случае, если вы используете библиотеки QL, которые не были упакованы как пакеты QL.\n```\n\n(Примечание. В Windows разделитель путей имеет значение `;`).\n\n#### `--dbscheme=<file>`\n\n```\n          \\[Advanced] Явно определяет, какие запросы dbscheme следует скомпилировать. Это должно быть дано только вызывающими, которые крайне уверены, что они делают.\n```\n\n#### `--compilation-cache=<dir>`\n\n```\n          \\[Дополнительно] Укажите дополнительный каталог для использования в качестве кэша компиляции.\n```\n\n#### `--no-default-compilation-cache`\n\n```\n          \\[Дополнительно] Не используйте кэши компиляции в стандартных расположениях, например в пакете QL, содержашем запрос или в каталоге цепочки инструментов CodeQL.\n```\n\n### Параметры настройки диспетчера пакетов CodeQL\n\n#### `--registries-auth-stdin`\n\nПроверка подлинности в реестрах контейнеров GitHub Enterprise Server путем передачи \\<registry\\_url>=\\<token> разделенного запятыми списка пар.\n\nНапример, можно передать `https://containers.GHEHOSTNAME1/v2/=TOKEN1,https://containers.GHEHOSTNAME2/v2/=TOKEN2`\nдля проверки подлинности на двух экземплярах GitHub Enterprise Server.\n\nПри этом переопределяются переменные среды маркера токена CODEQL\\_И\\_AUTH и GITHUB\\_. Если вам нужно выполнить проверку подлинности только в реестре контейнеров github.com, можно вместо этого выполнить проверку подлинности с помощью более `--github-auth-stdin` простого параметра.\n\n#### `--github-auth-stdin`\n\nПроверка подлинности в реестре контейнеров github.com путем передачи маркера github.com GitHub Apps или личного маркера доступа через стандартные входные данные.\n\nЧтобы пройти проверку подлинности в реестрах контейнеров GitHub Enterprise Server, передайте `--registries-auth-stdin` или используйте переменную среды AUTH CODEQL\\_REGISTRIES\\_.\n\nЭто переопределяет переменную среды токена GITHUB\\_.\n\n### Распространенные параметры\n\n#### `-h, --help`\n\nОтображение этого текста справки.\n\n#### `-J=<opt>`\n\n```\n          \\[Дополнительно] Укажите параметр JVM, выполняя команду.\n```\n\n(Убедитесь, что параметры, содержащие пробелы, не будут обрабатываться правильно.)\n\n#### `-v, --verbose`\n\nПостепенно увеличьте число отображаемых сообщений о ходе выполнения.\n\n#### `-q, --quiet`\n\nПостепенно уменьшайте количество отображаемых сообщений о ходе выполнения.\n\n#### `--verbosity=<level>`\n\n```\n          \\[Дополнительно] Явным образом задайте уровень детализации на одну из ошибок, предупреждений, хода выполнения, хода выполнения+, хода выполнения++, хода выполнения+++. Переопределяет `-v` и `-q`.\n```\n\n#### `--logdir=<dir>`\n\n```\n          \\[Дополнительно] Запись подробных журналов в один или несколько файлов в указанном каталоге с созданными именами, включающими метки времени и имя выполняющегося подкоманда.\n```\n\n(Чтобы записать файл журнала с именем, над которым у вас есть полный контроль, вместо этого предоставьте `--log-to-stderr` и перенаправите stderr по мере необходимости.)\n\n#### `--common-caches=<dir>`\n\n```\n          \\[Дополнительно] Управляет расположением кэшированных данных на диске, которые будут сохраняться между несколькими запусками интерфейса командной строки, такими как скачанные пакеты QL и скомпилированные планы запросов. Если этот параметр не задан явным образом, по умолчанию используется каталог с именем `.codeql` в домашнем каталоге пользователя; он будет создан, если он еще не существует.\n```\n\nДоступно с момента `v2.15.2`."}