Skip to main content
Skip to content

Проверка исходного кода CLI CodeQL

Настройте CodeQL CLI их напрямую из исходного кода.

Кто может использовать эту функцию?

CodeQL доступен для следующих типов репозитория:

Некоторые пользователи предпочитают работать напрямую с 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.