Анализ скомпилированных языков
При анализе скомпилированных языков с помощью autobuild режима сборки manual CodeQL сканирует тольк�� файлы, созданные во время анализа. Поэтому число проверенных строк кода будет меньше, чем ожидалось, если некоторые строки исходного кода компилируются неправильно. Это может произойти по нескольким причинам.
-
Функция CodeQL
autobuildиспользует эвристические методы для сборки кода в репозитории. Но иногда такой подход приводит к неполному анализу репозитория. Например, если в одном репозитории существует несколько командbuild.sh, анализ может и не завершиться, так как шагautobuildбудет выполняет только одну из команд, поэтому некоторые исходные файлы могут не компилироваться. -
Некоторые компиляторы не работают с CodeQL и могут вызывать проблемы при анализе кода. Например, большинство компиляторов C, относящихся к поставщику, не будут распознаны CodeQL. Для анализа кода C необходимо скомпилировать с распознаваемым компилятором (например, GCC, Clang или MSVC).
Если анализ CodeQL сканирует меньше строк кода, чем ожидалось, попробуйте изменить режим manual сборки и указать команды сборки, если рабочий процесс задает режим сборки, заменив autobuild шаг командами сборки, если рабочий процесс содержит autobuild шаг, или проверить копию исходных файлов в базе данных CodeQL базы данных.
Изменение процесса сборки manual
Замените autobuild процесс теми же командами сборки, которые будут использоваться в рабочей среде. Это гарантирует, что CodeQL точно знает, как скомпилировать все исходные файлы, которые требуется проверить.
Дополнительные сведения об определении шагов сборки см. в разделе Сканирование кода CodeQL для скомпилированных языков.
Проверка копии исходных файлов в базе данных CodeQL
Вы можете понять, почему некоторые исходные файлы не были проанализированы, проверив копию исходного кода, включенную в базу данных CodeQL. Чтобы получить базу данных из рабочего процесса Actions, измените шаг init файла рабочего процесса CodeQL и задайте debug: true.
- name: Initialize CodeQL
uses: github/codeql-action/init@v3
with:
debug: true
При этом база данных передается в виде артефакта действий, который можно скачать на локальный компьютер. Дополнительные сведения см. в разделе Хранение и предоставление общего доступа к данным с артефактами рабочего процесса.
Артефакт будет содержать архивную копию исходных файлов, проверенных с помощью CodeQL под названием src.zip. При сравнении файлов исходного кода в репозитории с файлами в src.zip можно увидеть, какие типы файлов отсутствуют. Узнав, какие типы файлов не анализируются, проще понять, как нужно изменить рабочий процесс для анализа CodeQL.