Skip to content

リポジトリにCodeQLを設定する

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 }}"

build-modemanual の場合は自分でコンパイラをビルドする必要があるので、codeql-action/analyze を実行する前に以下のような分岐が必要。

- if: matrix.build-mode == 'manual'
shell: bash
run: make bootstrap

また、順番は前後するが codeql-action/init の前に必要なセットアップを書くらしいが、これも manual の場合のみ必要だろう。

- name: Setup Go
uses: actions/setup-go@v6