Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Как правило, если возникают ошибки при выполнении CodeQL, интерфейс командной строки CodeQL сообщает о состоянии каждой команды, выполняемой в качестве кода выхода. Код выхода содержит сведения о последующих командах или других средствах, использующих cli CodeQL. Дополнительные сведения о коде выхода см. в разделе "Коды выхода".
Предпосылки
| Категория | Требования |
|---|---|
| Разрешения | — Чтобы просмотреть сводку всех оповещений для репозитория, нужны разрешения участника для репозитория. — Чтобы отклонить оповещения в Advanced Security: администратор проекта разрешения. — Для управления разрешениями в Расширенной безопасности: быть членом группы Администраторов коллекции проектов или иметь разрешение Расширенная безопасность: управление параметрами установлено на Разрешить. |
Дополнительные сведения о разрешениях расширенной безопасности см. в разделе Управление разрешениями расширенной безопасности.
Ошибка: команда CodeQL "Завершение базы данных" (32)
Эта ошибка указывает на проблему при завершении создания базы данных CodeQL, возможно, из-за ошибок извлечения или отсутствия шагов сборки.
Действия по устранению неполадок.
- Проверка наличия кода и компиляция
- Для скомпилированных языков убедитесь, что процесс сборки компилируется код и происходит между
AdvancedSecurity-Codeql-Initзадачами и задачамиAdvancedSecurity-Codeql-Analyze. Общие команды сборки и обязательные флаги (например, очистка без кэша или управляющей программы) можно найти здесь в разделе "Указание команд сборки". - Для интерпретированных языков убедитесь, что в проекте есть некоторый исходный код для указанного языка.
- Для скомпилированных языков убедитесь, что процесс сборки компилируется код и происходит между
- Проверка ошибок извлечения
- Проверьте, влияют ли ошибки извлечения на работоспособность базы данных CodeQL.
- Просмотрите файл журнала для извлечения ошибок и предупреждений, чтобы оценить общую работоспособность базы данных.
- Исследование подавляющие ошибки
- Если большинство файлов сталкиваются с ошибками средства извлечения, изучите дополнительные сведения о первопричине неправильного извлечения.
Ошибка: скрипт автостроения (1)
Эта ошибка описывает автоматический сбой сборки, предлагая проблему с проверкой кода установки или конфигурации.
Действия по устранению неполадок.
- Настройка шагов сборки
- Удалите шаг AutoBuild и настройте определенные шаги сборки для скомпилированных языков в конвейерах.
- Ознакомьтесь с рекомендациями по настройке GitHub Advanced Security для Azure DevOps.
Ошибка: каталоги CodeQL не найдены в кэше инструментов агента
Эта ошибка указывает на проблему с установкой CodeQL для локальных агентов.
Действия по устранению неполадок.
- Ознакомьтесь с рекомендациями по настройке или скриптами конфигурации, указанными в разделе "Настройка расширенной безопасности GitHub для Azure DevOps".
Ошибка: переменная конвейера языка не задана
Эта ошибка возникает при попытке запустить CodeQL без задания переменной конвейера, указывающей, какие языки следует проверять.
Действия по устранению неполадок.
- Установка переменной конвейера языка
- Убедитесь, что переменная конвейера языка настроена правильно. Ознакомьтесь с рекомендациями по настройке GitHub Advanced Security для Azure DevOps.
- Поддерживаемые языки включают
csharp, ,cppgojavajavascript,pythonи .rubyswift
CodeQL, возвращающий результаты без результатов
В этом разделе приводятся рекомендации по ситуациям, когда анализ CodeQL не дает результатов.
Действия по устранению неполадок.
- Проверка обнаруженных уязвимостей
- Рассмотрите возможность того, что код может не иметь уязвимостей. Если ожидается, но не обнаружены уязвимости, перейдите к проверке далее.
- Проверка конфигурации набора запросов
- Убедитесь, что используется текущий набор запросов, и, если необходимо, рассмотрите возможность переключения на более обширный набор.
- Кроме того, пользовательские наборы запросов можно создать для анализа с учетом.
- Настройка разрешений для просмотра результатов
- Убедитесь, что разрешения, по крайней мере на уровне участника, предоставляются для доступа к результатам анализа. Дополнительные сведения см. в разделе "Расширенные разрешения безопасности".
Время ожидания CodeQL
AdvancedSecurity-Codeql-Analyze@1 Если задача отображается This job was abandoned ... we lost contact with the agent и используется размещенный агент Майкрософт, задача достигает встроенного шестичасового времени ожидания для платных размещенных агентов. Вместо этого можно попытаться выполнить анализ на локальном агенте.
Разрешения на сканирование кода
Задача сканирования кода использует удостоверение конвейера для вызова REST API расширенной безопасности. По умолчанию конвейеры в одном проекте имеют доступ к отправке ФАЙЛА SARIF, созданного с помощью анализа CodeQL. Если эти разрешения удаляются из учетной записи службы сборки или если у вас есть пользовательская настройка, например конвейер, размещенный в проекте, отличном от репозитория, предоставьте эти разрешения вручную.
Действия по устранению неполадок.
- Предоставление
Advanced Security: View alertsиAdvanced Security: Manage and dismiss alertsразрешение учетной записи службы сборки, используемой в конвейере, которая используется[Project Name] Build Service ([Organization Name])для конвейеров с областью проекта, и для конвейеровProject Collection Build Service ([Organization Name])с областью сбора.
Публикация результатов сканирования кода в непреднамеренный репозиторий
Если у вас есть определение конвейера, размещенное в одном репозитории, и исходный код для сканирования с помощью GitHub Advanced Security был в другом, результаты могут обрабатываться и отправляться в неправильный репозиторий, публикуя в репозиторий, содержащий определение конвейера, а не репозиторий исходного кода.
Чтобы включить заданную маршрутизацию результатов, задайте переменную среды конвейера advancedsecurity.publish.repository.infer: true, чтобы определить репозиторий для публикации из рабочего каталога.
trigger:
- main
resources:
repositories:
# PipelineRepo: The repository containing the pipeline definition.
# This is optional and only needed if you plan to reference files or scripts from this repo.
- repository: PipelineRepo
type: git
name: DevOpsPipelineRepo
ref: refs/heads/main
trigger:
- main
# SourceRepo: The repository where scanning and publishing will occur.
- repository: SourceRepo
type: git
name: code-to-analyze-repo
ref: refs/heads/main
trigger:
- main
jobs:
- job: "CodeQLScan"
displayName: "CodeQL Scanning with Inferred Publishing"
variables:
# Enable repository inference
advancedsecurity.publish.repository.infer: true
steps:
# Checkout the SourceRepo
- checkout: SourceRepo
# Initialize CodeQL
- task: AdvancedSecurity-Codeql-Init@1
displayName: "Initialize CodeQL"
inputs:
languages: "python,javascript" # Adjust based on repository languages
# Perform CodeQL analysis
- task: AdvancedSecurity-Codeql-Analyze@1
displayName: "Analyze Code with CodeQL"
Ручная установка пакета CodeQL для локального агента
Установите пакет CodeQL в кэш средств агента, используя скрипт установки для архитектуры, доступный на сайте GitHub. Эти скрипты требуют, чтобы переменная среды $AGENT_TOOLSDIRECTORY была установлена на расположение каталога инструментов агента на агенте, например, C:/agent/_work/_tool. Кроме того, можно выполнить следующие действия вручную.
- Выберите последний пакет выпуска CodeQL из GitHub.
- Скачайте и распакуйте пакет в следующий каталог в каталоге инструментов агента, как правило, расположенного в разделе
_work/_tool:./CodeQL/0.0.0-[codeql-release-bundle-tag]/x64/. Используя текущийv2.23.5выпуск, имя папки будет заголовок./CodeQL/0.0.0-v2.23.5/x64/. Дополнительные сведения о каталоге средств агента. - Создайте пустой файл, заголовок в
x64.completeпапке./CodeQL/0.0.0-[codeql-release-bundle-tag]. В предыдущем примере путь кx64.completeфайлу должен быть./CodeQL/0.0.0-v2.23.5/x64.completeзавершен.
Как явно определить репозиторий для публикации оповещений сканирования кода?
- Используйте переменную среды конвейера
advancedsecurity.publish.repository.infer: true, чтобы определить репозиторий для публикации из репозитория в рабочем каталоге. - В качестве другой опции, если вы не выполняете явную выкачку репозитория или не используете псевдоним для его выкачки, используйте переменную
advancedsecurity.publish.repository: $[ convertToJson(resources.repositories['YourRepositoryAlias']) ].
Дополнительные сведения см. в заметках о выпуске.