Skip to main content

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

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

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

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

Некоторые пользователи предпочитают работать напрямую с CodeQL источниками запросов, чтобы работать с открытыми общими запросами или вносить вклад в них.

1. Скачайте 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](https://github.com/github/codeql?ref_product=code-scanning&ref_type=engagement&ref_style=text) содержит запросы и библиотеки, необходимые для 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.