Skip to main content

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

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

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

Code scanning доступен для всех общедоступных репозиториев на GitHub.com. Code scanning также доступен для частных репозиториев, принадлежащих организациям, использующей GitHub Enterprise Cloud и имеющих лицензию на GitHub Advanced Security. Дополнительные сведения см. в разделе Сведения о GitHub Advanced Security.

Сведения об использовании 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. При выполнении сканирования кода с помощью нескольких конфигураций одно и то же оповещение иногда создается несколькими конфигурациями. Если оповещение поступает из нескольких конфигураций, можно просмотреть состояние оповещения для каждой конфигурации на странице генерации оповещений. Дополнительные сведения см. в разделе О предупреждениях о сканировании кода.

Примечание. Передача данных 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 для проверки кода.