Разработчики программного обеспечения и исследователи безопасности могут защитить свой код с помощью 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. Дополнительные сведения см. в разделе Analyzing your code with CodeQL queries.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.