Сведения о Рабочий процесс анализа CodeQL и скомпилированных языках
Code scanning работает путем выполнения запросов к одной или нескольким базам данных CodeQL . Каждая база данных содержит представление кода на одном языке в репозитории. Для скомпилированных языков C/C++, C#, Go, Java, Kotlin, Rust (общедоступная предварительная версия), и Swiftпроцесс заполнения этой базы данных часто включает создание кода и извлечение данных.
Если включить code scanning, по умолчанию и расширенной настройке создается база данных CodeQL для анализа с помощью простого метода. Для C# and Javaбаза данных CodeQL создается непосредственно из базы кода без необходимости сборки (none режим сборки). Для других скомпилированных языков CodeQL создает базу кода с помощью режима сборки autobuild . Кроме того, можно использовать manual режим сборки для указания явных команд сборки для анализа только файлов, созданных этими пользовательскими командами.
Кэширование зависимостей можно использовать с помощью CodeQL для хранения зависимостей как кэша GitHub Actions вместо скачивания из реестров. См. раздел «О кэшировании зависимостей» для CodeQL позже в этой статье.
Режимы сборки CodeQL
Действие CodeQL поддерживает три различных режима сборки для скомпилированных языков:
-
`none` — база данных CodeQL создается непосредственно из базы кода без создания базы кода (поддерживается для всех интерпретированных языков и дополнительно поддерживается для C# and Java). -
`autobuild` - CodeQL определяет наиболее вероятный метод сборки и использует его для попытки сборки кодовой базы и создания базы данных для анализа (поддерживается для C/C++, C#, Go, Java, Kotlin и Swift). -
`manual` - Вы определяете шаги сборки, которые будут использоваться для базы кода в рабочем процессе (поддерживается для C/C++, C#, Go, Java, Kotlin и Swift).
Для языкового autobuild поведения, требований к бегунам и рекомендациям по ручным сборкам см. Опции и шаги сборки CodeQL для скомпилированных языков.
О кэшировании зависимостей для CodeQL
Кэширование зависимостей можно использовать с помощью CodeQL для хранения зависимостей как кэша GitHub Actions вместо скачивания из реестров. Это снижает риск потери оповещений, когда сторонние реестры не работают хорошо, и может привести к улучшению производительности проектов, имеющих большое количество зависимостей или работающих с медленными реестрами. Дополнительные сведения о том, как кэширование зависимостей может ускорить рабочие процессы, см. в статье Справочник по кэшированию зависимостей.
Кэширование зависимостей работает со всеми режимами сборки и поддерживается Java, Go и C#.
Примечание.
При кэшировании зависимостей будут храниться кэши CodeQL, которые будут подвергаться квотам кэша для репозитория. См . раздел AUTOTITLE.