Skip to main content

Анализ сканирования кода занимает слишком много времени

Вы можете точно настроить code scanning конфигурацию, чтобы свести к минимуму время анализа.

Существует несколько подходов, которые можно попытаться сократить время сборки в анализе code scanning .

Увеличение объема памяти или числа ядер

Если для анализа используются GitHubмодули выполнения code scanning с размещением, рассмотрите возможность обновления до более крупные бегуны. GitHubЭто модули runner с большим объемом ОЗУ, ЦП и дискового пространства, чем стандартные средства выполнения. Для получения дополнительной информации о более крупные бегуны и code scanningсм. Использование крупных средств выполнения и Настройка более крупных модулей выполнения для настройки по умолчанию.

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

Использование матричных сборок для параллелизации анализа

Чтобы ускорить анализ рабочих процессов, связанных с несколькими заданиями, можно изменить рабочий процесс для использования матрицы. Дополнительные сведения см. в разделе Выполнение вариантов заданий в рабочем процессе.

По умолчанию Рабочий процесс анализа CodeQL используется матрица языков, которая приводит к параллельному анализу каждого языка. Однако если вы используете CodeQL расширенную настройку и указали языки, которые вы хотите проанализировать непосредственно на шаге "Initialize CodeQL", анализ каждого языка будет выполняться последовательно. В этой конфигурации можно ускорить анализ, изменив рабочий процесс расширенной настройки для использования матрицы. Пример см. в извлечении рабочего процесса в Некоторые языки не были проанализированы с помощью расширенной настройки CodeQL.

Уменьшение объема кода, анализируемого в одном рабочем процессе

Время анализа обычно пропорционально объему анализируемого кода. Если вы используете CodeQL расширенную настройку, вы можете сократить время анализа, уменьшая объем анализируемого кода одновременно. Например, исключив тестовый код или прервав анализ в несколько рабочих процессов, которые анализируют только подмножество кода за раз.

При использовании build-mode: autobuild или build-mode: manualдля скомпилированных языков, таких как Java, Kotlin, Go, C, C++и C#, анализирует весь код, CodeQL созданный во время выполнения рабочего процесса. Чтобы ограничить объем анализируемого кода, выполняйте сборку только того кода, который требуется проанализировать, указав необходимые шаги сборки в блоке run. Можно объединить указание собственных шагов сборки с помощью фильтров paths и paths-ignore в событиях pull_request и push, чтобы рабочий процесс выполнялся только при изменении определенного кода. Дополнительные сведения см. в разделе Синтаксис рабочего процесса для GitHub Actions.

Для языков, таких как JavaScript, Python и TypeScript, которые CodeQL анализируются без компиляции исходного кода или для скомпилированного языка, build-mode: noneможно указать дополнительные параметры конфигурации, чтобы ограничить объем кода для анализа. Дополнительные сведения см. в разделе Параметры настройки рабочих процессов для сканирования кода.

Если вы разделяете CodeQL анализ на несколько рабочих процессов, мы по-прежнему рекомендуем использовать хотя бы один рабочий процесс, который выполняется для schedule анализа всего кода в репозитории. Так как CodeQL анализирует потоки данных между компонентами, некоторые сложные действия безопасности могут быть обнаружены только в полной сборке.

Выполнение только во время события schedule

Вы можете обнаружить, что анализ замедляется во время или push событияхpull_request. В этом случае можно настроить анализ только для триггера события schedule . Если вы используете CodeQL для code scanning анализа, это можно настроить с помощью расширенного рабочего процесса установки, но не в настройке по умолчанию. Дополнительные сведения см. в разделе Понимание GitHub Actions.

Проверьте, какие запросы или правила выполняются рабочим процессом

Другим вариантом снижения времени анализа является выполнение только запросов или правил, которые считаются критически важными в рабочих процессах, выполняемых при запросах на вытягивание. Если вы используете стороннее средство code scanningдля, обратитесь к документации по инструменту.

В CodeQLнем есть два основных набора запросов, доступные для каждого языка. Если вы оптимизировали CodeQL сборку базы данных и процесс еще слишком длинный, можно уменьшить количество выполняемых запросов. Набор запросов по умолчанию выполняется автоматически: он обеспечивает лучший компромисс между качеством и скоростью.

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