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

разрешение пути к библиотеке

[Глубокая сантехника] Определите путь к библиотеке QL и dbscheme для запроса.

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

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

В этом материале описывается последний выпуск Интерфейса командной строки CodeQL. Дополнительные сведения об этом выпуске см. в разделе https://github.com/github/codeql-cli-binaries/releases.

Чтобы просмотреть сведения о параметрах, доступных для этой команды в более раннем выпуске, выполните команду с параметром в терминале --help .

Краткий обзор

Shell
codeql resolve library-path (--query=<qlfile> | --dir=<dir> | --root-pack=<pkgname>) <options>...

Описание

[Глубокая сантехника] Определите путь к библиотеке QL и dbscheme для запроса.

Определите, по какому пути к библиотеке QL должен компилироваться конкретный запрос. Это вычисление неявно в нескольких подкомандах, которые могут потребоваться для компиляции запросов. Он предоставляется в виде отдельной команды сантехники, чтобы (а) помочь в устранении неполадок и (б) предоставить отправную точку для изменения пути в чрезвычайных случаях, когда требуется точное управление.

Команда также определит язык и dbscheme для компиляции запроса, так как они также могут зависеть от автоматического определения языка запроса QL.

Команда является глубоко внутренней, и ее поведение или существование может измениться без особого уведомления по мере развития экосистемы языка QL.

Основные параметры

--[no-]find-extractors

[Дополнительно] Включите в выходные данные сводку extractor полей из пакетов QL, от которых зависит запрос. Он используется только для нескольких редких внутренних случаев и может потребовать больше работы по вычислению, поэтому не включен по умолчанию.

--format=<fmt>

Выберите формат вывода. Можно выбрать:

lines(по умолчанию): вывод аргументов командной строки в одной строке.

json: вывод объекта JSON со всеми данными.

path: выводит только вычисляемый путь к библиотеке.

dbscheme: выводит только обнаруженную dbscheme.

cache: выводит расположение кэша компиляции по умолчанию или ничего, если нет.

Параметры из командной строки вызывающей команды

--search-path=<dir>[:<dir>...]

Список каталогов, в которых можно найти пакеты QL. Каждый каталог может быть либо пакетом QL (или пакетом пакетов, .codeqlmanifest.json содержащим файл в корне), либо непосредственным родительским элементом одного или нескольких таких каталогов.

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

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

Если вы извлекли репозиторий CodeQL как одноуровневый элемент неупакованной цепочки инструментов CodeQL, вам не нужно предоставлять этот параметр. в таких одноуровневых каталогах всегда будет выполняться поиск пакетов QL, которые не могут быть найдены в противном случае. (Если это значение по умолчанию не работает, настоятельно рекомендуется настроить --search-path один раз и для всех в файле конфигурации для каждого пользователя.

(Примечание. В Windows разделителем пути является ;).

--additional-packs=<dir>[:<dir>...]

Если указан этот список каталогов, в них будет выполняться поиск пакетов перед каталогами в --search-path. Порядок между ними не имеет значения; Это ошибка, если имя пакета найдено в двух разных местах в этом списке.

Это полезно, если вы временно разрабатываете новую версию пакета, которая также отображается в пути по умолчанию. С другой стороны, не рекомендуется переопределять этот параметр в файле конфигурации; некоторые внутренние действия добавляют этот параметр на лету, переопределяя любое настроенное значение.

(Примечание. В Windows разделителем пути является ;).

--library-path=<dir>[:<dir>...]

[Дополнительно] Необязательный список каталогов, которые будут добавлены в необработанный путь поиска импорта для библиотек QL. Это следует использовать, только если вы используете библиотеки QL, которые не были упакованы как пакеты QL.

(Примечание. В Windows разделителем пути является ;).

--dbscheme=<file>

[Дополнительно] Явно определяет, какие запросы dbscheme следует компилировать. Это должно быть дано только вызывающими абонентами, которые очень уверены, что они делают.

--compilation-cache=<dir>

[Дополнительно] Укажите дополнительный каталог для использования в качестве кэша компиляции.

--no-default-compilation-cache

[Дополнительно] Не используйте кэши компиляции в стандартных расположениях, например в пакете QL, содержавшем запрос, или в каталоге цепочки инструментов CodeQL.

Параметры настройки диспетчера пакетов CodeQL

--registries-auth-stdin

Выполните проверку подлинности в реестрах контейнеров GitHub Enterprise Server, передав список \<registry_url>=\ пар, разделенный запятыми.

Например, можно передать https://containers.GHEHOSTNAME1/v2/=TOKEN1,https://containers.GHEHOSTNAME2/v2/=TOKEN2 для проверки подлинности в двух экземплярах GitHub Enterprise Server.

Это переопределяет переменные среды CODEQL_REGISTRIES_AUTH и GITHUB_TOKEN. Если вам нужно пройти проверку подлинности только в реестре контейнеров github.com, можно использовать более простой --github-auth-stdin вариант.

--github-auth-stdin

Выполните проверку подлинности в реестре контейнеров github.com, передав github.com маркер GitHub Apps или личный маркер доступа через стандартные входные данные.

Чтобы пройти проверку подлинности в реестрах контейнеров GitHub Enterprise Server, передайте --registries-auth-stdin или используйте переменную среды CODEQL_REGISTRIES_AUTH.

Это переопределяет переменную среды GITHUB_TOKEN.

Параметры для указания того, что мы собираемся скомпилировать

Необходимо указать именно один из этих вариантов.

--query=<qlfile>

Путь к QL-файлу, который требуется скомпилировать.

Его каталоги и родительские каталоги будут искать файлы qlpack.yml или устаревшие queries.xml для определения необходимых пакетов.

--dir=<dir>

Корневой каталог пакета, содержащий запросы для компиляции.

--root-pack=<pkgname>

[Дополнительно] Объявленное имя пакета, используемого в качестве корневого каталога для разрешения зависимостей.

Используется, когда пакет можно найти по имени в пути поиска. Если вы знаете расположение диска нужного корневого пакета, сделайте вид, что он содержит QL-файл и используйте --query вместо него.

Общие параметры

-h, --help

Показать этот текст справки.

-J=<opt>

[Дополнительно] Предоставьте параметр виртуальной машине JVM, выполняющую команду .

(Остерегайтесь, что параметры, содержащие пробелы, будут обрабатываться неправильно.)

-v, --verbose

Постепенно увеличивайте количество выводемых сообщений о ходе выполнения.

-q, --quiet

Постепенно уменьшайте количество выводемых сообщений о ходе выполнения.

--verbosity=<level>

[Дополнительно] Явно задайте уровень детализации для одной из ошибок, предупреждений, progress, progress+, progress++, progress+++. Переопределяет -v и -q.

--logdir=<dir>

[Дополнительно] Запись подробных журналов в один или несколько файлов в указанном каталоге с созданными именами, включающими метки времени и имя выполняющейся подкоманды.

(Чтобы записать файл журнала с именем, над которым у вас есть полный контроль, вместо этого при необходимости предоставьте --log-to-stderr и перенаправьте stderr.)