О расширенной настройке CodeQL CLI
Если вы планируете использовать CodeQL для более чем простого сканирования кода, вы можете использовать расширенную настройку CodeQL CLI.
- Если вы хотите внести свой вклад в открытый код общих запросов CodeQL, вы можете напрямую работать с исходным кодом CodeQL.
- Если вы хотите использовать последние функции CodeQL для создания оповещений сканирования кода для базы кода, но также хотите проанализировать другую базу кода, совместимую только с определенной версией CodeQL CLI, может потребоваться установить несколько версий CodeQL CLI.
- Если вы изучаете или разрабатываете запросы, вы можете скачать интересные или уникальные базы данных из GitHub.com.
Сведения о самой простой настройке данных CodeQL CLIсм. в разделе "Настройка интерфейса командной строки CodeQL".
Извлечение исходного кода CodeQL
Некоторые пользователи предпочитают работать с источниками запросов CodeQL непосредственно для работы или участия в общих запросах с открытым исходным кодом. Для этого рекомендуется выполнить следующие действия.
1. Скачайте архив tar CodeQL CLI
Пакет скачивания CodeQL CLI — это архив tar, содержащий средства, скрипты и различные файлы данных CodeQL. Если у вас нет лицензии GitHub Enterprise , скачав этот архив, вы согласны с GitHub CodeQL условий.
Загрузите пакет CodeQL из https://github.com/github/codeql-action/releases. Содержимое пакета:
- Продукт CodeQL CLI
- совместимая версия запросов и библиотек из https://github.com/github/codeql;
- предварительно скомпилированные версии всех запросов, включенных в пакет.
Всегда следует использовать пакет CodeQL . Это обеспечивает совместимость и обеспечивает гораздо более высокую производительность, чем отдельная загрузка запросов CodeQL CLI и извлечении запросов CodeQL. Если вы будете запускать CLI только на одной конкретной платформе, скачайте соответствующий файл codeql-bundle-PLATFORM.tar.zst
. Кроме того, можно скачать файл codeql-bundle.tar.zst
, содержащий CLI для всех поддерживаемых платформ.
Существуют также tar.gz
варианты пакета, которые идентичны tar.zst
вариантам, кроме сжатых с помощью менее эффективного алгоритма gzip. Единственной причиной скачивания tar.gz
вариантов является использование старых средств декомпрессии, которые не поддерживают алгоритм сжатия Zstandard.
2. Создание каталога CodeQL
Создайте новый каталог, в котором можно разместить интерфейс командной строки и все запросы и библиотеки, которые вы хотите использовать. Например, $HOME/codeql-home
.
Встроенные операции поиска интерфейса командной строки автоматически выглядят во всех его одноуровневых каталогах для файлов, используемых в создании и анализе базы данных. Сохранение этих компонентов в собственном каталоге предотвращает поиск несвязанных каталогов с общими элементами интерфейса командной строки, обеспечивая доступность всех файлов без указания дополнительных параметров в командной строке.
3. Получение локальной копии запросов CodeQL
Репозиторий CodeQL содержит запросы и библиотеки, необходимые для анализа CodeQL всех поддерживаемых языков.
Клонируйте копию этого репозитория в codeql-home
.
По умолчанию корневой каталог клонированного репозитория будет вызываться codeql
.
Переименуйте эту папку codeql-repo
, чтобы избежать конфликтов с данными CodeQL CLI, которые будут извлечены на шаге 1. Если вы используете 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. Извлечение архива tar CodeQL CLI
Извлеките архив tar в каталог, созданный на шаге 2.
Например, если путь к копии репозитория $HOME/codeql-home/codeql-repo
CodeQL, то извлеките интерфейс командной строки в $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 упаковывают интерфейс командной строки. При этом будут отображаться имена всех пакетов CodeQL, доступных непосредственно для CodeQL CLI. Это должно включать в себя следующее: - Например,
codeql/{language}-queries
пакеты запросов для каждого поддерживаемого языка. Эти пакеты содержат стандартные запросы, которые будут выполняться для каждого анализа. - Пакеты библиотек для каждого поддерживаемого языка, например
codeql/{language}-all
. Эти пакеты содержат библиотеки запросов, такие как поток управления и библиотеки потоков данных, которые могут быть полезны для записи запросов. - Примеры пакетов для каждого поддерживаемого языка, например
codeql/{language}-examples
. Эти пакеты содержат полезные фрагменты данных CodeQL, которые могут оказаться полезными для записи запросов. - Устаревшие пакеты, обеспечивающие совместимость пользовательских запросов и библиотек, созданных с помощью старых продуктов, с версией CodeQL.
Использование двух версий данных CodeQL CLI
Если вы хотите использовать последние функции CodeQL для выполнения запросов или тестов CodeQL, но также требуется подготовить базы данных, совместимые с определенной версией CodeQL, сканируя код GitHub Enterprise Server, вам может потребоваться установить две версии ИНТЕРФЕЙСА командной строки. Вы можете скачать нужные версии данных CodeQL CLI и распаковывать архивы CLI в одном родительском каталоге.
Скачивание баз данных из GitHub.com
GitHub хранит базы данных CodeQL для более чем 200 000 репозиториев на GitHub.com, которые можно скачать с помощью REST API. Список репозиториев постоянно растет и развивается, чтобы убедиться, что он включает самые интересные базы кода для исследований безопасности.
Можно также анализировать базы данных из GitHub.com с помощью расширения CodeQL для расширения VS Code . Дополнительные сведения см. в разделе Выполнение запросов CodeQL.
Вы можете проверить, есть ли репозиторий какие-либо базы данных CodeQL доступны для скачивания с помощью конечной /repos/<owner>/<repo>/code-scanning/codeql/databases
точки. Например, чтобы проверить наличие баз данных CodeQL с помощью GitHub CLI , выполните следующие действия:
gh api /repos/<owner>/<repo>/code-scanning/codeql/databases
Эта команда возвращает сведения о любых базах данных CodeQL, доступных для репозитория, включая язык, который представляет базу данных, и когда база данных была последней обновления. Если базы данных CodeQL недоступны, ответ пуст.
После подтверждения того, что база данных CodeQL существует для интересующего вас языка, его можно скачать с помощью следующей команды:
gh api /repos/<owner>/<repo>/code-scanning/codeql/databases/<language> -H 'Accept: application/zip' > path/to/local/database.zip
Дополнительные сведения см. в документации по конечной точке базы данных Get CodeQL базы данных.
Перед выполнением анализа с помощью CodeQL CLIнеобходимо распакуть базы данных.