В этом материале описывается последний выпуск Интерфейса командной строки CodeQL. Дополнительные сведения об этом выпуске см. в разделе https://github.com/github/codeql-cli-binaries/releases.
Чтобы просмотреть сведения о параметрах, доступных для этой команды в более раннем выпуске, выполните команду с параметром в терминале --help
.
Краткий обзор
codeql dataset upgrade [--threads=<num>] [--ram=<MB>] <options>... -- <dataset>
Описание
[Сантехника] Обновите набор данных, чтобы он был доступен для использования текущими инструментами.
Это аналогично обновлению базы данных codeql , но работает с необработанным набором данных, а не всей базой данных.
Основные параметры
<dataset>
[Обязательный] Путь к необработанному набору данных QL для обновления.
--search-path=<dir>[:<dir>...]
Список каталогов, в которых можно найти пакеты QL, содержащие рецепты обновления. Каждый каталог может быть либо пакетом QL (или пакетом пакетов, .codeqlmanifest.json
содержащим файл в корне), либо непосредственным родительским элементом одного или нескольких таких каталогов.
Если путь содержит деревья каталогов, их порядок определяет приоритет между ними: если имя пакета, которое необходимо разрешить, совпадает в нескольких деревьях каталогов, первое из них побеждает.
Указание на это при извлечении репозитория CodeQL с открытым кодом должно работать при запросе одного из языков, которые там живут.
(Примечание. В Windows разделителем пути является ;
).
--additional-packs=<dir>[:<dir>...]
[Дополнительно] Если указан этот список каталогов, они будут искать обновления до тех, которые в --search-path
. Порядок между ними не имеет значения; Это ошибка, если имя пакета найдено в двух разных местах в этом списке.
Это полезно, если вы временно разрабатываете новую версию пакета, которая также отображается в пути по умолчанию. С другой стороны, не рекомендуется переопределять этот параметр в файле конфигурации; некоторые внутренние действия добавляют этот параметр на лету, переопределяя любое настроенное значение.
(Примечание. В Windows разделителем пути является ;
).
--target-dbscheme=<file>
Целевой dbscheme, до которого требуется выполнить обновление. Если это не задано, будет создан максимальный путь обновления.
--target-sha=<sha>
[Дополнительно] Альтернатива --target-dbscheme
, которая предоставляет внутренний хэш целевого dbscheme вместо файла dbscheme.
--[no-]allow-downgrades
Включение всех соответствующих переходов на более раннюю версию при отсутствии обновлений
Параметры для управления оценкой запросов на обновление
--[no-]tuple-counting
[Дополнительно] Отображение количества кортежей для каждого шага оценки в журналах средства оценки запросов. --evaluator-log
Если указан параметр, счетчик кортежей будет включаться в текстовые и структурированные журналы JSON, созданные командой . (Это может быть полезно для оптимизации производительности сложного кода QL.)
--timeout=<seconds>
[Дополнительно] Задайте время ожидания для оценки запроса в секундах.
Функция времени ожидания предназначена для перехвата случаев, когда для оценки сложного запроса потребуется "навсегда". Это не эффективный способ ограничить общее время, которое может занять вычисление запроса. Оценка будет продолжена до тех пор, пока каждая отдельная часть вычисления по времени завершается в течение времени ожидания. В настоящее время эти отдельные части по времени являются уровнями RA оптимизированного запроса, но в будущем они могут измениться.
Если время ожидания не указано или задано как 0, время ожидания не будет задано (за исключением тестового выполнения codeql, где время ожидания по умолчанию составляет 5 минут).
-j, --threads=<num>
Используйте это множество потоков для оценки запросов.
По умолчанию равен 1. Вы можете передать 0, чтобы использовать один поток на каждое ядро на компьютере, или -N , чтобы оставить N ядер неиспользуемых (за исключением использования по крайней мере одного потока).
--[no-]save-cache
[Дополнительно] Агрессивно записывайте промежуточные результаты в кэш диска. Это занимает больше времени и занимает (гораздо) больше места на диске, но может ускорить последующее выполнение аналогичных запросов.
--[no-]expect-discarded-cache
[Дополнительно] Принимать решения о том, какие предикаты следует оценивать и что записывать в кэш диска, исходя из предположения, что кэш будет удален после выполнения запросов.
--[no-]keep-full-cache
[Дополнительно] Не очищайте кэш диска после завершения оценки. Это может сэкономить время, если вы собираетесь выполнить очистку набора данных codeql или очистку базы данных codeql .
--max-disk-cache=<MB>
Задайте максимальный объем пространства, который кэш диска может использовать для промежуточных результатов запроса.
Если этот размер не настроен явно, средство оценки попытается использовать "разумный" объем кэша в зависимости от размера набора данных и сложности запросов. Явное задание более высокого ограничения, чем это использование по умолчанию, позволит включить дополнительное кэширование, что может ускорить последующие запросы.
--min-disk-free=<MB>
[Дополнительно] Задайте целевой объем свободного места в файловой системе.
Если --max-disk-cache
значение не задано, средство оценки будет стараться сократить использование кэша диска, если свободное место в файловой системе падает ниже этого значения.
--min-disk-free-pct=<pct>
[Дополнительно] Задайте целевую долю свободного места в файловой системе.
Если --max-disk-cache
значение не задано, средство оценки будет стараться ограничить использование кэша диска, если свободное место в файловой системе падает ниже этого процента.
--external=<pred>=<file.csv>
CSV-файл, содержащий строки для внешнего предиката \--external
вариантов.
--xterm-progress=<mode>
[Дополнительно] Определяет, следует ли отображать отслеживание хода выполнения во время оценки QL с помощью последовательностей элементов управления xterm. Возможны следующие значения:
no
: никогда не создавать причудливый прогресс; предположим, что глупый терминал.
auto
(по умолчанию): автоматически определяет, выполняется ли команда в соответствующем терминале.
yes
: предполагается, что терминал может понимать последовательности элементов управления xterm. Эта функция по-прежнему зависит от возможности автоматически определить размер терминала, а также будет отключена, если -q
она задана.
25x80
(или аналогично): нравится yes
, а также явно укажите размер терминала.
25x80:/dev/pts/17
(или аналогично): отображение необычного хода выполнения в терминале, отличном от stderr. В основном полезно для внутреннего тестирования.
Параметры управления выходными данными структурированных журналов средства оценки
--evaluator-log=<file>
[Дополнительно] Вывод структурированных журналов о производительности средства оценки в указанный файл. Формат этого файла журнала может быть изменен без уведомления, но будет потоком объектов JSON, разделенных двумя символами новой строки (по умолчанию) или одним, если --evaluator-log-minify
параметр передан. Используйте для codeql generate log-summary <file>
создания более стабильной сводки по этому файлу и избегайте непосредственного анализа файла. Файл будет перезаписан, если он уже существует.
--evaluator-log-minify
[Дополнительно] Если --evaluator-log
параметр передается, также передача этого параметра позволит свести к минимуму размер создаваемого журнала JSON за счет того, что сделать его гораздо менее удобочитаемым.
Параметры управления использованием ОЗУ в процессе обновления
-M, --ram=<MB>
Задайте общий объем ОЗУ, который должен использовать средство оценки запросов.
Общие параметры
-h, --help
Показать этот текст справки.
-J=<opt>
[Дополнительно] Предоставьте параметр виртуальной машине JVM, выполняющую команду .
(Остерегайтесь, что параметры, содержащие пробелы, будут обрабатываться неправильно.)
-v, --verbose
Постепенно увеличивайте количество выводемых сообщений о ходе выполнения.
-q, --quiet
Постепенно уменьшайте количество выводемых сообщений о ходе выполнения.
--verbosity=<level>
[Дополнительно] Явно задайте уровень детализации для одной из ошибок, предупреждений, progress, progress+, progress++, progress+++. Переопределяет -v
и -q
.
--logdir=<dir>
[Дополнительно] Запись подробных журналов в один или несколько файлов в указанном каталоге с созданными именами, включающими метки времени и имя выполняющейся подкоманды.
(Чтобы записать файл журнала с именем, над которым у вас есть полный контроль, вместо этого при необходимости предоставьте --log-to-stderr
и перенаправьте stderr.)