Skip to main content

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

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

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

Note

В этой статье описываются функции, доступные в версии действия CodeQL и связанного пакета CodeQL CLI в первоначальном выпуске этой версии GitHub Enterprise Server. Если ваше предприятие использует более последнюю версию действия CodeQL, ознакомьтесь с версией GitHub Enterprise Cloud этой статьи, чтобы узнать о последних функциях. Сведения об использовании последней версии см. в разделе "Настройка сканирования кода для устройства".

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

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

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

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

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

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

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

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

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

Для таких языков, как JavaScript, Python и TypeScript, CodeQL анализирует без компиляции исходного кода, можно указать дополнительные параметры конфигурации, чтобы ограничить объем кода для анализа. Дополнительные сведения см. в разделе «Настройка расширенной настройки для сканирования кода».

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

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

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

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

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

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

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