リポジトリにCodeQLを設定する
規定とアドバンス
Section titled “規定とアドバンス”CodeQLの設定するには規定の設定と高度な設定の2種類がある。
規定(Default)と高度(Advanced)なセットアップの違いは以下の記事にある程度まとまっている。
2025年10月時点では、GitHubリポジトリの推奨設定に書いた Require actions to be pinned to a full-length commit SHA オプションを設定すると、リポジトリの設定画面で Advanced Security タブの Code Scanning セクションで
Code scanning with GitHub Actions is not available for this repository
と警告が出てCodeQLが設定できなくなる。それ以外にも、規定のセットアップでは定期的な実行が行われないなど微妙な状態なので、少なくとも今の時点では高度なセットアップを使ったほうがいいと思う。
高度なセットアップでCodeQLワークフローを書く
Section titled “高度なセットアップでCodeQLワークフローを書く”規定のセットアップでは動かないので、高度なセットアップを使用して codeql.yml として以下のようなワークフローを自分で書く。ワークフローとして記述する内容については以下のドキュメントにまとまっている。
## この内容は簡略化しているので、リポジトリの設定からAdvanced Security/Code Scanningセクションで「Advanced」を選んで出てくるテンプレートを参照してください。
name: "CodeQL Advanced"
on: push: branches: - main pull_request: branches: - main schedule: - cron: '17 2 * * 6'
jobs: analyze: name: Analyze (${{ matrix.language }}) runs-on: ubuntu-latest permissions: security-events: write packages: read
# only required for workflows in private repositories actions: read contents: read
strategy: fail-fast: false matrix: include: - language: actions build-mode: none - language: go build-mode: autobuild steps: - name: Checkout repository uses: actions/checkout@v4
- name: Initialize CodeQL uses: github/codeql-action/init@v3 with: languages: ${{ matrix.language }} build-mode: ${{ matrix.build-mode }}
- name: Perform CodeQL Analysis uses: github/codeql-action/analyze@v3 with: category: "/language:${{ matrix.language }}"language パラメータに渡す言語名は以下ドキュメントの Languages to be analyzed にリストがある。
また、build-mode が manual の場合は自分でコンパイラをビルドする必要があるので、codeql-action/analyze を実行する前に以下のような分岐が必要。詳細はCodeQLのautobuildとは何かに書いた。
- if: matrix.build-mode == 'manual' shell: bash run: make bootstrapまた、codeql-action/init で特別なコンパイラをインストールしているので、一般の setup-go 等で競合するツールチェーンをインストールしてはいけない。
- uses: actions/setup-go@v6これをすると以下のエラーで検査が失敗する。
Warning: Expected
which goto return xxx/codeql-action-go-tracing/bin/go, but got xxx/bin/go: please ensure that the correct version of Go is installed before thecodeql-action/initAction is used.