Сведения о code scanning с контейнерной сборкой
Если вы настраиваете code scanning для скомпилированного языка, и вы создаете код в контейнерной среде, анализ может завершиться ошибкой с сообщением об ошибке "Во время сборки не отображается исходный код". Это означает, что CodeQL не удалось отследить код в процессе его компиляции.
Необходимо запустить CodeQL в контейнере, где происходит сборка кода. Это относится к использованию CodeQL CLI или GitHub Actions. Дополнительные сведения см. в разделе "Использование сканирования кода с существующей системой CI" для данных CodeQL CLI. Если вы используете GitHub Actions, настройте рабочий процесс таким образом, чтобы все действия выполнялись в одном контейнере. Дополнительные сведения см. в разделе Пример рабочего процесса.
Note
В настоящее время CodeQL CLI несовместим с дистрибутивами Linux не на основе glibc, такими как Alpine Linux (на основе musl).
Зависимости для CodeQL code scanning
Проблемы с проверкой code scanning могут возникнуть, если в контейнере, который вы используете, отсутствуют определенные зависимости (например, необходимо установить Git и добавить его в переменную PATH). При возникновении проблем с зависимостями просмотрите список программного обеспечения, обычно включенного в образы средства выполнения тестов GitHub. Дополнительные сведения см. в файлах readme
для соответствующих версий в следующих местах:
- Linux: https://github.com/actions/runner-images/tree/main/images/ubuntu
- macOS: https://github.com/actions/runner-images/tree/main/images/macos
- Windows: https://github.com/actions/runner-images/tree/main/images/windows
Пример рабочего процесса
В этом примере рабочего процесса GitHub Actions используется для анализа CodeQL в контейнерной среде. Значение container.image
идентифицирует используемый контейнер. В этом примере изображение называется codeql-container
и снабжено тегом f0f91db
. Дополнительные сведения см. в разделе Синтаксис рабочего процесса для GitHub Actions.
name: "CodeQL"
on:
push:
branches: [main]
pull_request:
branches: [main]
schedule:
- cron: '15 5 * * 3'
jobs:
analyze:
name: Analyze
runs-on: ubuntu-latest
permissions:
security-events: write
actions: read
strategy:
fail-fast: false
matrix:
language: [java-kotlin]
# Specify the container in which actions will run
container:
image: codeql-container:f0f91db
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Initialize CodeQL
uses: github/codeql-action/init
with:
languages: ${{ matrix.language }}
- name: Build
run: |
./configure
make
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze