Skip to main content

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

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

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

GitHub CodeQL лицензируется на основе каждого пользователя при установке. Вы можете использовать CodeQL только для определенных задач в соответствии с ограничениями лицензии. Дополнительные сведения см. в разделе Сведения о интерфейсе командной строки CodeQL.

Если у вас есть лицензия GitHub Advanced Security, можно использовать CodeQL для автоматического анализа, непрерывной интеграции и непрерывной доставки. Дополнительные сведения см. в разделе Сведения о GitHub Advanced Security.

Настройка CodeQL CLI

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

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

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

Если вы настраиваете CodeQL CLI в системе CI, необходимо сделать полное содержимое пакета CodeQL CLI для каждого сервера CI, для которого требуется выполнить анализ CodeQL code scanning. Например, можно настроить каждый сервер для копирования пакета из центрального внутреннего расположения и извлечения его. Кроме того, можно использовать REST API для получения пакета непосредственно из GitHub, чтобы использовать преимущества последних улучшений запросов. Дополнительные сведения см. в разделе "Конечные точки REST API для выпусков и ресурсов выпуска" в документации по REST API.

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

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

1. Скачайте zip-пакет CodeQL CLI

Пакет скачивания CodeQL CLI — это zip-архив, содержащий средства, скрипты и различные файлы 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.gz. Кроме того, можно скачать файл codeql-bundle.tar.gz, содержащий CLI для всех поддерживаемых платформ.

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

Скачивание сведений для пользователей macOS "Catalina" (или более поздней версии)

2. Извлечение ZIP-архива

Для пользователей Linux, Windows и macOS (версия 10.14 "Mojave" и более ранних версий) просто извлеките ZIP-архив.

Извлечение сведений для пользователей macOS "Catalina" (или более поздней версии)

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".

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

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

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

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

codeql/cpp-all (/<extraction-root>/qlpacks/codeql/cpp-all/<version>)
codeql/cpp-examples (/<extraction-root>/qlpacks/codeql/cpp-examples/<version>)
codeql/cpp-queries (/<extraction-root>/qlpacks/codeql/cpp-queries/<version>)
codeql/csharp-all (/<extraction-root>/qlpacks/codeql/charp-all/<version>)
codeql/csharp-examples (/<extraction-root>/qlpacks/codeql/charp-examples/<version>)
codeql/csharp-queries (/<extraction-root>/qlpacks/codeql/charp-queries/<version>)
codeql/java-all (/<extraction-root>/qlpacks/codeql/java-all/<version>)
codeql/java-examples (/<extraction-root>/qlpacks/codeql/java-examples/<version>)
codeql/java-queries (/<extraction-root>/qlpacks/codeql/java-queries/<version>)
codeql/javascript-all (/<extraction-root>/qlpacks/codeql/javascript-all/<version>)
codeql/javascript-examples (/<extraction-root>/qlpacks/codeql/javascript-examples/<version>)
codeql/javascript-queries (/<extraction-root>/qlpacks/codeql/javascript-queries/<version>)
codeql/python-all (/<extraction-root>/qlpacks/codeql/python-all/<version>)
codeql/python-examples (/<extraction-root>/qlpacks/codeql/python-examples/<version>)
codeql/python-queries (/<extraction-root>/qlpacks/codeql/python-queries/<version>)
codeql/ruby-all (/<extraction-root>/qlpacks/codeql/ruby-all/<version>)
codeql/ruby-examples (/<extraction-root>/qlpacks/codeql/ruby-examples/<version>)
codeql/ruby-queries (/<extraction-root>/qlpacks/codeql/ruby-queries/<version>)
...

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

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

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

Следующие шаги

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