Skip to main content

Использование сканирования кода с существующей системой CI

Вы можете проанализировать код с помощью CodeQL CLI или другого средства в сторонней системе непрерывной интеграции и передать результаты в GitHub. Полученные оповещения code scanning отображаются вместе с любыми оповещениями, созданными в GitHub.

Кто может использовать эту функцию?

Пользователи с доступом на запись

Code scanning доступен для следующих типов репозитория:

Сведения об использовании code scanning с существующей системой CI

В качестве альтернативы запуску code scanning в GitHub с помощью GitHub Actions, можно проанализировать код во внешней системе непрерывной интеграции или непрерывной доставки или развертывания (CI/CD), а затем передать результаты в GitHub.

Вы можете добавить CodeQL CLI в стороннюю систему или использовать другое стороннее средство статического анализа, которое может создавать результаты в виде формата обмена статическими результатами анализа (SARIF) 2.1.0. Дополнительные сведения о поддерживаемом формате SARIF см. в разделе Поддержка SARIF для проверки кода.

CodeQL CLI — это автономное средство командной строки, которое можно использовать для анализа кода. Дополнительные сведения см. в разделе Сведения о интерфейсе командной строки CodeQL.

Оповещения для code scanning, создаваемые внешним образом, отображаются так же, как и для code scanning, создаваемых в GitHub. При сканировании кода с помощью нескольких конфигураций оповещение иногда будет иметь несколько источников анализа. Если оповещение имеет несколько источников анализа, состояние оповещения для каждого источника анализа можно посмотреть на странице оповещения. Дополнительные сведения см. в разделе «О предупреждениях о сканировании кода».

Note

Отправка данных SARIF для отображения как code scanning приводит к поддержке GitHub для репозиториев, принадлежащих организации, с GitHub Advanced Security включено, а также общедоступные репозитории для GitHub.com. Дополнительные сведения см. в разделе «Управление параметрами безопасности и анализа для репозитория».

Настройка средства анализа

Сначала необходимо скачать средство анализа и настроить его с помощью системы CI.

Если вы используете CodeQL CLI, необходимо сделать все содержимое пакета CodeQL CLI доступным для каждого сервера CI, для которого требуется выполнить анализ CodeQL code scanning. Дополнительные сведения см. в разделе Настройка интерфейса командной строки CodeQL.

После того как средство анализа доступно для серверов в системе CI, вы будете готовы к созданию данных.

Анализ кода

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

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

Если вы используете CodeQL CLI, сначала необходимо создать базу данных CodeQL из кода, а затем проанализировать базу данных для получения результатов SARIF. Дополнительные сведения см. в разделе [AUTOTITLE и Подготовка кода для анализа CodeQL](/code-security/codeql-cli/getting-started-with-the-codeql-cli/analyzing-your-code-with-codeql-queries).

Создание маркера для проверки подлинности с помощью GitHub

Каждому серверу CI требуется GitHub App или personal access token для отправки результатов в GitHub, независимо от того, используются ли данные CodeQL CLI, REST API или другой метод. Необходимо использовать маркер доступа или GitHub App с разрешением на запись security_events. Если серверы CI уже используют маркер с этой областью для извлечения репозиториев из GitHub, вы можете использовать тот же токен. В противном случае создайте новый маркер с разрешением на запись security_events и добавьте его в хранилище секретов системы CI. Дополнительные сведения см. в разделе [AUTOTITLE и Создание приложений GitHub](/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token).

Дополнительные сведения о различных методах отправки результатов в GitHubсм. в разделе Отправка файла SARIF в GitHub.

Отправка результатов в GitHub

После анализа кода вы создали результаты SARIF и убедитесь, что вы можете пройти проверку подлинности с помощью GitHub, вы можете передать результаты в GitHub. Дополнительные сведения о различных методах, которые можно использовать для отправки результатов, см. в разделе Отправка файла SARIF в GitHub.

Дополнительные сведения о передаче результатов в GitHub с помощью CodeQL CLIсм. в разделе Отправка результатов анализа CodeQL в GitHub.

По умолчанию code scanning ожидается один файл результатов SARIF по каждому анализу для репозитория. Следовательно, когда вы загружаете второй файл результатов SARIF для фиксации, он рассматривается как замена исходного набора данных. Вы можете отправить два разных ФАЙЛА SARIF для одного анализа, если, например, средство анализа создает другой ФАЙЛ SARIF для каждого языка, который он анализирует или каждый набор правил, которые он использует. Если вы хотите отправить несколько наборов результатов для фиксации в репозитории, необходимо определить каждый набор результатов как уникальный набор. Способ указания категории для отправки SARIF зависит от метода анализа. Дополнительные сведения см. в разделе Поддержка SARIF для проверки кода.