Skip to main content
Мы публикуем частые обновления нашей документации, и перевод этой страницы может все еще выполняться. Актуальные сведения см. в документации на английском языке.

Поддержка этой версии GitHub Enterprise была прекращена 2023-01-18. Исправления выпускаться не будут даже при критических проблемах безопасности. Для повышения производительности, укрепления безопасности и новых функций установите последнюю версию GitHub Enterprise. Чтобы получить справку по обновлению, обратитесь в службу поддержки GitHub Enterprise.

Устранение неполадок со средством выполнения CodeQL в системе CI

Если у вас возникли проблемы с CodeQL runner, воспользуйтесь этими советами.

Code scanning доступно в репозиториях, принадлежащих организациям, в GitHub Enterprise Server. Для этой функции требуется лицензия на GitHub Advanced Security. Дополнительные сведения см. в разделе Сведения о GitHub Advanced Security.

Примечание: 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 не удалось отслеживать код. У этого сбоя может быть несколько причин.

  1. Автоматическое определение языка идентифицировало поддерживаемый язык, но в репозитории нет анализируемого кода на этом языке. Типичный пример — служба определения языка находит файл, связанный с определенным языком программирования, например файл .h или .gyp, но в репозитории отсутствует соответствующий исполняемый код. Чтобы решить эту проблему, можно вручную определить языки, которые требуется проанализировать, с помощью флага --languages команды init. Дополнительные сведения см. в разделе Настройка CodeQL runner в системе CI.

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

  3. Вы анализируете скомпилированный язык на macOS без использования команды autobuild и выполняете шаги сборки самостоятельно после шага init. Если включена функция SIP (System Integrity Protection), а она включена по умолчанию в последних версиях OSX, анализ может завершиться ошибкой. Чтобы устранить эту проблему, перед командой сборки укажите переменную среды $CODEQL_RUNNER. Например, если вы используете команду сборки cmd arg1 arg2, выполните команду $CODEQL_RUNNER cmd arg1 arg2.

  4. Код собирается в контейнере или на отдельном компьютере. Если вы используете контейнерную сборку или передаете сборку на другой компьютер, обязательно запустите CodeQL runner в контейнере или на компьютере, где выполняется задача сборки. Дополнительные сведения см. в разделе Выполнение сканирования кода CodeQL в контейнере.