Skip to main content

Настройка интерфейса командной строки CodeQL

Чтобы приступить к работе с CodeQL CLI, необходимо скачать и настроить интерфейс командной строки, чтобы получить доступ к средствам и библиотекам, необходимым для создания и анализа баз данных.

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

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

Настройка CodeQL CLI

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

CodeQL CLI поддерживает широкий спектр сценариев использования и структуры каталогов. В этой статье рассматривается простая настройка, которая работает для большинства пользователей и сред.

Если вы планируете использовать CodeQL CLI для исследований в области безопасности, тестирования или внесения запросов, возможно, понадобится более продвинутая система. Дополнительные сведения см. в разделе Сведения о интерфейсе командной строки CodeQL.

Перед тем как начать

Если вы используете macOS в Apple Silicon (например, Apple M1), убедитесь, что установлены средства разработчика командной строки Xcode и Rosetta 2 .

Примечание.

Данные CodeQL CLI в настоящее время несовместимы с дистрибутивами Linux, отличными от glibc Linux, такими как (на основе muslc) Alpine Linux.

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. Извлечение архива tar CodeQL CLI

Извлеките архив данных CodeQL CLI tar в каталог выбранного вами каталога.

Необязательно: Сделайте CodeQL CLI доступными в вашей системе CI

Если вы планируете запускать анализ CodeQL code scanning в системе CI, убедитесь, что полное содержимое пакета CodeQL CLI доступно каждому CI-серверу, который будет запускать анализ.

Например, доступны следующие возможности:

  • Скопируйте пакет из центрального внутреннего отделения и извлекайте его на каждом сервере, или
  • Используйте REST API, чтобы скачать пакет напрямую из GitHub, чтобы получить последние улучшения запросов. Дополнительные сведения см. в разделе Конечные точки REST API для выпусков и ресурсов выпуска.

3. Запуск codeql

После извлечения можно выполнить процессы CodeQL путем выполнения codeql исполняемого файла несколькими способами:

  • Выполнив выполнение <extraction-root>/codeql/codeql, где <extraction-root> находится папка, в которой извлечен пакет CodeQL CLI.
  • Добавив <extraction-root>/codeql в PATH, чтобы можно было запустить исполняемый файл просто как codeql.

На этом этапе можно выполнить команды CodeQL. Полный список команд CodeQL CLI см. в разделе Команды CLI CodeQL вручную.

Примечание.

При добавлении codeql к ней PATHдоступ можно получить с помощью CodeQL для Visual Studio Code для компиляции и выполнения запросов. Дополнительные сведения о настройке VS Code для доступа к CodeQL CLIсм. в разделе Управление CLI CodeQL в расширении VS Code.

Тестирование конфигурации CodeQL CLI

После извлечения пакета CodeQL CLI можно выполнить следующую команду, чтобы убедиться, что интерфейс командной строки настроен для создания и анализа баз данных:

  •         `codeql resolve packs`, если `/<extraction root>/codeql` находится в `PATH`.
    
  • В противном случае /<extraction root>/codeql/codeql resolve packs.

При успешном выполнении вы увидите выходные данные, аналогичные следующему извлечению:

Searching directories specified by `--additional-packs`. All directories have equal priority.
  Searching in:
    No packs were found at this location.
Searching directories specified by `--search-path`. Directories are searched in order.
Searching the root of the CodeQL distribution.
  Searching in:
      <extraction root>
    The following packs were found:
      codeql/java-all@<version>: (library) <extraction root>/qlpacks/codeql/javat-all/<version>/qlpack.yml
      codeql/java-queries@<version>: (query) <extraction root>/qlpacks/codeql/java-queries/<version>/qlpack.yml
      codeql/javascript-all@<version>: (library) <extraction root>/qlpacks/codeql/javascript-all/<version>/qlpack.yml
      codeql/javascript-queries@<version>: (query) <extraction root>/qlpacks/codeql/javascript-queries/<version>/qlpack.yml
      codeql/swift-all@<version>: (library) <extraction root>/qlpacks/codeql/swift-all/<version>/qlpack.yml
      codeql/swift-queries@<version>: (query) <extraction root>/qlpacks/codeql/swift-queries/<version>/qlpack.yml
...

Результаты усечены для краткости. Фактические результаты будут более длинными и более подробными.

Убедитесь, что выходные данные содержат ожидаемые языки, а расположение каталога для файлов qlpack указано верно. Расположение должно находиться в извлеченном пакете CodeQL CLI, показанном в предыдущем примере как <extraction root>. Если CodeQL CLI не удается найти qlpacks для ожидаемых языков, убедитесь, что скачали пакет CodeQL, а не отдельную копию CodeQL CLI.

Можно также запустить codeql resolve languages , чтобы показать, какие языки доступны для создания базы данных. В этом списке перечислены языки, поддерживаемые по умолчанию в пакете CodeQL CLI.

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

Команда codeql resolve packs полезна для диагностики проблем, когда CodeQL CLI не удается найти пакеты запросов, которые вы ожидаете получить для анализа.

Примечание.

Команда codeql resolve packs доступна в CodeQL CLI версии 2.19.0 и более поздних версий. Для более ранних версий интерфейса командной строки следует выполнить codeql resolve qlpacks команду, которая создает аналогичные, но менее подробные выходные данные.

Дальнейшие шаги

Сведения о подготовке кода для анализа с помощью CodeQL CLIсм. в разделе Подготовка кода для анализа CodeQL.