Skip to main content

Эта версия GitHub Enterprise Server была прекращена 2024-03-26. Исправления выпускаться не будут даже при критических проблемах безопасности. Для повышения производительности, повышения безопасности и новых функций выполните обновление до последней версии GitHub Enterprise Server. Чтобы получить справку по обновлению, обратитесь в службу поддержки GitHub Enterprise.

CodeQL сканировал меньше строк, чем ожидалось

Если CodeQL проанализировал меньше кода, чем ожидалось, может потребоваться использовать пользовательскую команду сборки.

Анализ скомпилированных языков

Для скомпилированных языков, таких как C/C++, C#, Go и Java CodeQL проверяет только файлы, созданные во время анализа. Поэтому число проверенных строк кода будет меньше, чем ожидалось, если некоторые строки исходного кода компилируются неправильно. Это может произойти по нескольким причинам.

  1. Функция CodeQL autobuild использует эвристические методы для сборки кода в репозитории. Но иногда такой подход приводит к неполному анализу репозитория. Например, если в одном репозитории существует несколько команд build.sh, анализ может и не завершиться, так как шаг autobuild будет выполняет только одну из команд, поэтому некоторые исходные файлы могут не компилироваться.

  2. Некоторые компиляторы не работают с CodeQL и могут вызывать проблемы при анализе кода. Например, большинство компиляторов C, относящихся к поставщику, не будут распознаны CodeQL. Для анализа кода C необходимо скомпилировать с распознаваемым компилятором (например, GCC, Clang или MSVC).

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

Замена шага autobuild

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

Проверка копии исходных файлов в базе данных CodeQL

Вы можете понять, почему некоторые исходные файлы не были проанализированы, проверив копию исходного кода, включенную в базу данных CodeQL. Чтобы получить базу данных из рабочего процесса Actions, измените шаг init файла рабочего процесса CodeQL и задайте debug: true.

- name: Initialize CodeQL
  uses: github/codeql-action/init@v3@v2
  with:
    debug: true

При этом база данных передается в виде артефакта действий, который можно скачать на локальный компьютер. Дополнительные сведения см. в разделе Хранение данных рабочего процесса в виде артефактов.

Артефакт будет содержать архивную копию исходных файлов, проверенных с помощью CodeQL под названием src.zip. При сравнении файлов исходного кода в репозитории с файлами в src.zip можно увидеть, какие типы файлов отсутствуют. Узнав, какие типы файлов не анализируются, проще понять, как нужно изменить рабочий процесс для анализа CodeQL.