Некоторые пользователи предпочитают работать напрямую с CodeQL источниками запросов, чтобы работать с открытыми общими запросами или вносить вклад в них.
1. Скачайте CodeQL CLI архив смолы
Пакет CodeQL CLI скачивания — это архив tar, содержащий инструменты, скрипты и различные файлы с определенными CodeQLпараметрами. Если у GitHub Enterprise вас нет лицензии, скачав этот архив, вы соглашаетесь с GitHubCodeQL условиями.
Вы должны скачать CodeQL пакет из https://github.com/github/codeql-action/releases. Содержимое пакета:
- CodeQL CLI продукт
- совместимая версия запросов и библиотек из https://github.com/github/codeql;
- предварительно скомпилированные версии всех запросов, включенных в пакет.
Всегда следует использовать CodeQL пакет. Это обеспечивает совместимость и обеспечивает гораздо более высокую производительность, чем отдельная загрузка CodeQL CLI и проверка CodeQL запросов.
codeql-bundle-PLATFORM.tar.zst Скачайте файл для платформы, в которой будет выполняться интерфейс командной строки. Замените PLATFORM на linux64 Linux x64, linux-arm64 для Linux ARM64, osx64 для macOS или win64 для Windows.
Пакет all-platform (codeql-bundle.tar.zst и codeql-bundle.tar.gz) закрывается и перестанет публиковаться в будущем выпуске. Вместо этого скачайте файл для каждой платформы codeql-bundle-PLATFORM.tar.zst . В CodeQL CLI версии 2.27.0 и более поздних версий интерфейс командной строки из дистрибутива всех платформ создается предупреждение.
Существуют также tar.gz варианты пакета, которые идентичны tar.zst вариантам, кроме сжатых с помощью менее эффективного алгоритма gzip. Единственной причиной скачивания tar.gz вариантов является использование старых средств декомпрессии, которые не поддерживают алгоритм сжатия Zstandard.
2. Создайте новый CodeQL каталог
Создайте новый каталог, в котором можно разместить интерфейс командной строки и все запросы и библиотеки, которые вы хотите использовать. Например: $HOME/codeql-home.
Встроенные операции поиска интерфейса командной строки автоматически выглядят во всех его одноуровневых каталогах для файлов, используемых в создании и анализе базы данных. Сохранение этих компонентов в собственном каталоге предотвращает поиск несвязанных каталогов с общими элементами интерфейса командной строки, обеспечивая доступность всех файлов без указания дополнительных параметров в командной строке.
3. Получить локальную копию CodeQL запросов
РепозиторийCodeQL содержит запросы и библиотеки, необходимые для CodeQL анализа всех поддерживаемых языков.
Клонируйте копию этого репозитория в codeql-home.
По умолчанию корневой каталог клонированного репозитория будет вызываться codeql.
Переименуйте эту папку codeql-repo , чтобы избежать конфликта с CodeQL CLI той, которую вы извлечете на первом этапе. Если вы используете Git в командной строке, клонируйте и переименуйте репозиторий одним шагом, выполнив команду git clone git@github.com:github/codeql.git codeql-repo в папке codeql-home .
В этом репозитории запросы и библиотеки организованы по следующим CodeQL Рюкзаки. Помимо самих запросов, CodeQL пакеты содержат важные метаданные, указывающие CodeQL CLI на то, как обрабатывать файлы запросов. Дополнительные сведения см. в разделе Создание и работа с пакетами CodeQL.
Примечание.
Существуют разные версии CodeQL запросов для разных пользователей. Проверьте правильную версию для вашего варианта использования:
- Для запросов, предназначенных для использования в последнем CodeQL CLI релизе, посмотрите ветку с
codeql-cli/latestтегом . Вам следует использовать эту ветку для баз данных, которые вы создали с CodeQL CLI помощью или недавно скачали из GitHub. - Для самых актуальных CodeQL запросов ознакомьтесь с филиалом
main. Эта ветвь представляет собой самую последнюю версию CodeQLанализа .
4. Извлечь CodeQL CLI архив смолы
Извлеките архив tar в каталог, созданный на шаге 2.
Например, если путь к вашей копии CodeQL репозитория — $HOME/codeql-home/codeql-repo, то извлеките CLI в $HOME/codeql-home/.
5. Запустите codeql
После извлечения можно запускать CodeQL процессы, выполнив исполняемый codeql файл несколькими способами:
- Выполнив выполнение
<extraction-root>/codeql/codeql, где<extraction-root>находится папка, в которой извлечена папка CodeQL CLI пакет. - Добавив
<extraction-root>/codeqlвPATH, чтобы можно было запустить исполняемый файл просто какcodeql.
На этом этапе можно выполнять CodeQL команды. Полный CodeQL CLI список команд см. в разделе Команды CLI CodeQL вручную.
6. Проверьте свою CodeQL CLI конфигурацию
CodeQL CLI Есть подкоманды, которые можно выполнить, чтобы убедиться, что вы правильно настроены для создания и анализа баз данных:
- Выполните команду
codeql resolve languages, чтобы узнать, какие языки доступны для создания базы данных. Там будет перечислен языки, поддерживаемые по умолчанию в вашем CodeQL CLI пакете. - Покажите
codeql resolve qlpacks, какие CodeQL пакеты CLI может найти. Это покажет имена всех CodeQL пакетов, напрямую доступных для CodeQL CLI. Это должно включать в себя следующее:- Например,
codeql/{language}-queriesпакеты запросов для каждого поддерживаемого языка. Эти пакеты содержат стандартные запросы, которые будут выполняться для каждого анализа. - Пакеты библиотек для каждого поддерживаемого языка, например
codeql/{language}-all. Эти пакеты содержат библиотеки запросов, такие как поток управления и библиотеки потоков данных, которые могут быть полезны для записи запросов. - Примеры пакетов для каждого поддерживаемого языка, например
codeql/{language}-examples. В этих наборах содержатся полезные фрагменты, CodeQL которые могут быть полезны авторам запросов. - Устаревшие пакеты, которые обеспечивают совместимость пользовательских запросов и библиотек, созданных на старых продуктах, с вашей версией CodeQL.
- Например,