Skip to main content

Выполнение проверки кода CodeQL в контейнере

Вы можете запустить code scanning в контейнере, обеспечив выполнение всех процессов в одном контейнере.

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

Code scanning доступен для следующих типов репозитория:

Сведения о code scanning с контейнерной сборкой

Если вы настраиваете code scanning для скомпилированного языка, и вы создаете код в контейнерной среде, анализ может завершиться ошибкой с сообщением об ошибке "Во время сборки не отображается исходный код". Это означает, что CodeQL не удалось отследить код в процессе его компиляции.

Необходимо запустить CodeQL в контейнере, где происходит сборка кода. Это относится к использованию CodeQL CLI или GitHub Actions. Дополнительные сведения о CodeQL CLIсм. в разделе Использование сканирования кода с существующей системой CI . Если вы используете GitHub Actions, настройте рабочий процесс таким образом, чтобы все действия выполнялись в одном контейнере. Дополнительные сведения см. в разделе "Пример рабочего процесса".

Примечание.

В настоящее время CodeQL CLI несовместим с дистрибутивами Linux не на основе glibc, такими как Alpine Linux (на основе musl).

Зависимости для CodeQL code scanning

Проблемы с проверкой code scanning могут возникнуть, если в контейнере, который вы используете, отсутствуют определенные зависимости (например, необходимо установить Git и добавить его в переменную PATH). При возникновении проблем с зависимостями просмотрите список программного обеспечения, обычно включенного в образы средства выполнения тестов GitHub. Дополнительные сведения см. в файлах readme для соответствующих версий в следующих местах:

Пример рабочего процесса

В этом примере рабочего процесса 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@v5 - name: Initialize CodeQL uses: github/codeql-action/init@v3 with: languages: ${{ matrix.language }} - name: Build run: | ./configure make  - name: Perform CodeQL Analysis uses: github/codeql-action/analyze@v3