Примечание: CodeQL runner является устаревшим. В GitHub Enterprise Server 3.0 и более поздних версий можно установить CodeQL CLI версии 2.6.3, чтобы заменить CodeQL runner.
Дополнительные сведения см. в разделе Прекращение поддержки средства выполнения тестов CodeQL. Дополнительные сведения о переходе к CodeQL CLI см. в статье «Переход со средства выполнения CodeQL на CodeQL CLI».
Выполнение команды init
занимает слишком много времени
Прежде чем CodeQL runner сможет создавать и анализировать код, ему потребуется доступ к пакету CodeQL, который содержит интерфейс командной строки CodeQL и библиотеки CodeQL.
При первом использовании CodeQL runner на компьютере init
команда загружает пакет CodeQL на компьютер. Загрузка может занять несколько минут.
Пакет CodeQL кэшируется между запусками, поэтому при повторном использовании CodeQL runner на том же компьютере пакет CodeQL больше не скачает.
Чтобы избежать автоматического скачивания, можно вручную скачать пакет CodeQL на компьютер и указать путь с помощью флага --codeql-path
команды init
.
Во время сборки не найден код
analyze
Если команда для CodeQL runner завершается ошибкой No source code was seen during the build
, это означает, что CodeQL не удалось отслеживать код. У этого сбоя может быть несколько причин.
-
Автоматическое определение языка идентифицировало поддерживаемый язык, но в репозитории нет анализируемого кода на этом языке. Типичный пример — служба определения языка находит файл, связанный с определенным языком программирования, например файл
.h
или.gyp
, но в репозитории отсутствует соответствующий исполняемый код. Чтобы решить эту проблему, можно вручную определить языки, которые требуется проанализировать, с помощью флага--languages
командыinit
. Дополнительные сведения см. в разделе Настройка CodeQL runner в системе CI. -
Вы анализируете скомпилированный язык без использования команды
autobuild
и выполняете шаги сборки самостоятельно после шагаinit
. Чтобы сборка работала, необходимо настроить среду таким образом, чтобы CodeQL runner могли отслеживать процесс сборки. Командаinit
создает инструкции по экспорту необходимых переменных среды, чтобы можно было скопировать и запустить скрипт после выполнения командыinit
.- В macOS и Linux:
$ . codeql-runner/codeql-env.sh
- В Windows с помощью командной оболочки (
cmd
) или пакетного файла (.bat
):> call codeql-runner\codeql-env.bat
- В Windows с использованием PowerShell:
> cat codeql-runner\codeql-env.sh | Invoke-Expression
Переменные среды также хранятся в файле
codeql-runner/codeql-env.json
. Этот файл содержит один объект JSON, который сопоставляет ключи переменных среды со значениями. Если вы не можете запустить скрипт, созданный командойinit
, вместо этого можно использовать данные в формате JSON.Примечание: Если вы использовали
--temp-dir
флаг команды для указания пользовательскогоinit
каталога для временных файлов, путь к файламcodeql-env
может отличаться. - В macOS и Linux:
-
Вы анализируете скомпилированный язык на macOS без использования команды
autobuild
и выполняете шаги сборки самостоятельно после шагаinit
. Если включена функция SIP (System Integrity Protection), а она включена по умолчанию в последних версиях OSX, анализ может завершиться ошибкой. Чтобы устранить эту проблему, перед командой сборки укажите переменную среды$CODEQL_RUNNER
. Например, если вы используете команду сборкиcmd arg1 arg2
, выполните команду$CODEQL_RUNNER cmd arg1 arg2
. -
Код собирается в контейнере или на отдельном компьютере. Если вы используете контейнерную сборку или передаете сборку на другой компьютер, обязательно запустите CodeQL runner в контейнере или на компьютере, где выполняется задача сборки. Дополнительные сведения см. в разделе Выполнение сканирования кода CodeQL в контейнере.