Разработчики программного обеспечения и исследователи безопасности могут защитить свой код с помощью CodeQL анализа. Дополнительные сведения см. в CodeQLразделе Сканирование кода с помощью CodeQL.
Это CodeQL CLI автономный инструмент командной строки, который можно использовать для анализа кода. Её основная цель — генерировать представление базы данных кода, базы CodeQL данных. Когда база данных готова, вы можете делать к ней интерактивный запрос или запускать набор запросов для генерации результатов в формате SARIF и загрузки их в GitHub.
Вы можете использовать CodeQL CLI это, чтобы:
- Запускайте анализы CodeQL с помощью запросов, предоставленных инженерами GitHub и сообществом открытый код
- Генерируйте оповещения о сканировании кода, которые можно загрузить для отображения в GitHub
- Создайте CodeQL базы данных для использования в CodeQL расширении.Visual Studio Code
- Разрабатывайте и тестируйте пользовательские CodeQL запросы для использования в собственном анализе
Они CodeQL CLI могут проанализировать:
- Динамические языки, например, JavaScript и Python.
- Например, компилированные языки, C/C++, C#, Go, Java, Kotlin, Rust, и Swift
- Базы кода написаны на нескольких языках.
О том, как использовать CodeQL CLI для code scanning
Вы можете использовать CodeQL CLI их для запуска code scanning кода, который вы обрабатываете в сторонней системе непрерывной интеграции (CI). Code scanning — это функция, используемая для анализа кода в репозитории GitHub для поиска уязвимостей системы безопасности и ошибок кодирования. Все проблемы, выявленные анализом, отображаются в репозитории. Для обзора использования сканирования кода с внешними CI-системами см. Использование сканирования кода с существующей системой CI. Рекомендуемые характеристики (оперативная память, ядра процессора и диск) для анализа CodeQL см. Рекомендуемое оборудование для запуска CodeQL.
В качестве альтернативы можно использовать GitHub Actions или Azure DevOps конвейеры для сканирования кода с помощью CodeQL CLI. Для получения дополнительной информации см. Настройка настройки по умолчанию для сканирования кода или Configure GitHub Advanced Security for Azure DevOps в Microsoft Learn.
Для обзора всех вариантов использования CodeQL анализа для сканирования кода см. Сканирование кода с помощью CodeQL.
Примечание.
- CodeQL CLI можно использовать в общедоступных репозиториях, которые хранятся на GitHub.com, и доступны для использования в частных репозиториях, принадлежащих клиентам с лицензией GitHub Code Security . Дополнительные сведения см. в разделе GitHub CodeQL условия и CodeQL CLI.
- В настоящее время CodeQL CLI несовместим с дистрибутивами Linux не на основе glibc, такими как Alpine Linux (на основе musl).
О генерации результатов сканирования кода с помощью CodeQL CLI
Если вы решите запускать CodeQL CLI его напрямую, сначала нужно установить CodeQL CLI локально. Если вы планируете использовать CodeQL CLI их с внешней CI-системой, вам нужно сделать CodeQL CLI её доступной для серверов в вашей CI-системе.
После CodeQL CLI настройки вы можете использовать три разные команды для генерации результатов и загрузки их в GitHub:
database createсоздать CodeQL базу данных, представляющую иерархическую структуру каждого поддерживаемого языка программирования в репозитории. Дополнительные сведения см. в разделе Подготовка кода для анализа CodeQL.database analyzeдля выполнения запросов для анализа каждой CodeQL базы данных и суммирования результатов в файле SARIF. Дополнительные сведения см. в разделе Анализ кода с помощью запросов CodeQL.github upload-resultsзагрузить полученные SARIF-файлы туда GitHub , где результаты сопоставляются с веткой или pull-запросом и отображаются в виде code scanning оповещений. Дополнительные сведения см. в разделе Загрузка результатов анализа CodeQL на GitHub.
Примечание.
Отправка данных SARIF для отображения в виде code scanning приводит к поддержке GitHub для репозиториев, принадлежащих организации, с GitHub Code Security включено, а также общедоступные репозитории на GitHub.com. Дополнительные сведения см. в разделе Управление параметрами безопасности и анализа для репозитория.
Пример конфигурации CI для CodeQL анализа
Это пример полной серии команд для , CodeQL CLI которые можно использовать для анализа кодовой базы с двумя поддерживаемыми языками, а затем загрузки результатов в GitHub.
# Create CodeQL databases for Java and Python in the 'codeql-dbs' directory
# Call the normal build script for the codebase: 'myBuildScript'
codeql database create codeql-dbs --source-root=src \
--db-cluster --language=java,python --command=./myBuildScript
# Analyze the CodeQL database for Java, 'codeql-dbs/java'
# Tag the data as 'java' results and store in: 'java-results.sarif'
codeql database analyze codeql-dbs/java java-code-scanning.qls \
--format=sarif-latest --sarif-category=java --output=java-results.sarif
# Analyze the CodeQL database for Python, 'codeql-dbs/python'
# Tag the data as 'python' results and store in: 'python-results.sarif'
codeql database analyze codeql-dbs/python python-code-scanning.qls \
--format=sarif-latest --sarif-category=python --output=python-results.sarif
# Upload the SARIF file with the Java results: 'java-results.sarif'
# The GitHub App or personal access token created for authentication
# with GitHub's REST API is available in the `GITHUB_TOKEN` environment variable.
codeql github upload-results \
--repository=my-org/example-repo \
--ref=refs/heads/main --commit=deb275d2d5fe9a522a0b7bd8b6b6a1c939552718 \
--sarif=java-results.sarif
# Upload the SARIF file with the Python results: 'python-results.sarif'
codeql github upload-results \
--repository=my-org/example-repo \
--ref=refs/heads/main --commit=deb275d2d5fe9a522a0b7bd8b6b6a1c939552718 \
--sarif=python-results.sarif
Извлечение базы данных
Используется CodeQL CLI специальные программы, называемые экстракторами, для извлечения информации из исходного кода программной системы в базу данных, к которой можно задавать запросы. Вы можете настроить поведение экстракторов, настроив настройки экстрактора через CodeQL CLI. См . раздел AUTOTITLE.
О лицензии GitHub CodeQL
Уведомление о лицензии. Если у вас нет лицензии на GitHub Code Security, то, установив этот продукт, вы соглашаетесь с GitHub CodeQL условий.
Сведения о том, как можно попробовать GitHub Advanced Security бесплатно, см. в разделе Настройка пробной версии GitHub Advanced Security.
О CodeQL CLI базах данных
CodeQL CLI Команда database bundle может быть использована для создания пере��осимого архива CodeQL базы данных.
Копия пакета баз данных может использоваться для обмена информацией по устранению неполадок с членами вашей команды или с Служба поддержки GitHub. См . раздел AUTOTITLE.
Начало работы
Самый простой способ начать смотрите Настройка интерфейса командной строки CodeQL.
Более продвинутые варианты настройки доступны, если они нужны. Например, если вы:
- Хочу внести вклад в открытый код общие запросы CodeQL и предпочитаю работать напрямую с исходным кодом CodeQL. См . раздел AUTOTITLE.
- Нужно установить несколько версий CodeQL CLI параллельно. Например, если одна кодовая база требует определённой версии, а другая использует последнюю. Вы можете скачать каждую версию и распаковывать оба архива CLI в одной родительской директории.
- Вы исследуете или разрабатываете запросы и хотите скачать базы данных с GitHub.com. См . раздел AUTOTITLE.