メモ
この機能を使用するには、サイト管理者が code scanning を有効にする必要があります。 コードをスキャンするためにGitHub Actionsを使いなら、サイト管理者はGitHub Actionsの有効化と、必要なインフラストラクチャのセットアップもしなければなりません。 詳しくは、「アプライアンス用コードスキャンの構成」をご覧ください。
ビルド モードを比較する
| ビルド モードの特性 | なし | Autobuild | 手動 |
|---|---|---|---|
| 既定のセットアップと組織レベルの有効化に使用 | はい ( Java) | はい (none がサポートされていない場所) | いいえ |
| 分析はユーザー構成なしで成功 | はい | Variable | いいえ |
| 分析の完全性 | 生成されたコードが分析されない | Variable | ユーザー制御 |
| 分析の正確性 | よし | よし | 最高 |
ビルド モードを選択する
code scanningを初めて、または複数のリポジトリで設定する場合は、既定のセットアップを使用することをお勧めします。 既定のセットアップでは、 CodeQL データベースを生成してコードを分析するために使用できる最も簡単な方法が使用されるため、できるだけ早くアラートの修正を開始できます。 最初のアラートを解決したら、リスクの高いリポジトリ用の手動のビルド プロセスを使用して高度なセットアップに切り替えることができます。
言語固有の autobuild 動作、ランナーの要件、コンパイル済み言語のビルド モードの詳細については、 コンパイル済み言語の CodeQL ビルド オプションと手順 を参照してください。
複数言語リポジトリで複数のビルド モードを使用する
複数のコンパイル型言語を持つリポジトリの場合は、言語ごとに異なるビルド モードを使用できます。 たとえば、リポジトリに C/C++、C#、Javaが含まれている場合は、1 つの言語 (ここでは C/C++) に手動でビルド手順を指定できます。 このワークフローでは、言語ごとに異なるビルド モードを指定します。
strategy:
matrix:
include:
# Analyzes C and C++ code using the commands in `Build C and C++ code`
- language: c-cpp
build-mode: manual
# Analyzes C# code by automatically detecting a build
- language: csharp
build-mode: autobuild
# Analyzes Java code directly from the codebase without a build
- language: java-kotlin
build-mode: none # analyzes Java only
steps:
- name: Checkout repository
uses: actions/checkout@v5
# Initializes CodeQL tools and creates a codebase for analysis.
- name: Initialize CodeQL
uses: github/codeql-action/init@v4
with:
languages: ${{ matrix.language }}
- if: ${{ matrix.build-mode == 'manual' }}
name: Build C and C++ code
run: |
echo 'If you are using a "manual" build mode for one or more of the' \
'languages you are analyzing, replace this with the commands to build' \
'your code, for example:'
echo ' make bootstrap'
echo ' make release'
exit 1
CodeQLの最新バージョンでサポートされている言語、ライブラリ、フレームワークの詳細については、[](https://codeql.github.com/docs/codeql-overview/supported-languages-and-frameworks)ドキュメントでCodeQLを参照してください。 最新バージョンのCodeQLを実行するためのシステム要件については、[](https://codeql.github.com/docs/codeql-overview/system-requirements/#additional-software-requirements)ドキュメントのCodeQLを参照してください。
`none`ビルド モードを使用するCodeQL
Java
CodeQL、リポジトリに Kotlin コードも含まれている場合を除き、code scanningの既定のセットアップを有効にするときにビルドを必要とせずにデータベースを作成します。 リポジトリにJavaコードに加えて Kotlin コードが含まれている場合、Kotlin 分析にはビルドが必要であるため、自動ビルド プロセスで既定のセットアップが有効になります。
ビルドなしで CodeQL データベースを作成すると、次の場合に autobuild または手動のビルド手順を使用する場合よりも、精度の低い結果が得られる場合があります。
-
ビルド スクリプトが依存関係情報をクエリできないため、依存関係の推測が不正確です。
-
通常、リポジトリはビルド プロセス中にコードを生成します。
`autobuild` または手動のビルド手順を使用するには、高度なセットアップを使用します。
メモ
Java分析では、build-mode が none に設定されていて、Kotlin コードがリポジトリに見つかった場合、Kotlin コードは分析されず、警告が生成されます。 「コンパイル済み言語の CodeQL ビルド オプションと手順」を参照してください。
`autobuild` をCodeQLで使用する
CodeQLアクションでは、`autobuild`を使用して、次の場合にコンパイルされた言語を分析します。
- 既定のセットアップが有効になっており、言語は
noneビルドには対応していません ( Java ではサポートされています)。 - 詳細設定が有効になっており、ワークフローで
build-mode: autobuildが指定されている。 - 高度なセットアップが有効で、ワークフローに
autobuildアクション (github/codeql-action/autobuild@v4) を使用した言語用の Autobuild ステップがある。
`build-mode` オプションを使用します
# Initializes the CodeQL tools for scanning.
name: Analyze
strategy:
matrix:
include:
# Analyze C and C++ code
- language: c-cpp
build-mode: autobuild
# Analyze Go code
- language: go
build-mode: autobuild
steps:
- uses: github/codeql-action/init@v4
with:
languages: ${{ matrix.language }}
build-mode: ${{ matrix.build-mode }}
自動構築手順を使用する
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@v4
with:
languages: ${{ matrix.language }}
- name: Autobuild
uses: github/codeql-action/autobuild@v4
ビルド手順を手動で指定する
手動のビルド手順は、高度なセットアップを有効にした場合にのみ指定できます。「コード スキャンの詳細設定を構成する」を参照してください。
autobuild が失敗した場合、または autobuild プロセスによってビルドされたソース ファイルとは異なるソース ファイルのセットを分析する場合は、次の操作を行う必要があります。
- ワークフローで言語のビルド モードを指定する場合は、ビルド モードを
manualに変更します。 - ワークフローに
autobuildステップが含まれている場合は、ワークフロー内のautobuildステップを削除するかコメントにします。
次に、run ステップをコメント解除し、使用するビルド プロセスを手動で指定します。 C/C++、C#、Go、Java、Kotlin、Swift、CodeQL は、指定したビルド ステップによってビルドされたソース コードを分析します。
ワークフローを更新して、build-mode を manual と定義します。
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
- uses: github/codeql-action/init@v4
with:
languages: ${{ matrix.language }}
build-mode: manual
- uses: github/codeql-action/analyze@v4
with:
category: "/language:${{ matrix.language }}"
もしくは「Autobuild」ステップをコメントアウトして、ワークフローを更新します。
# Autobuild attempts to build any compiled languages.
# - name: Autobuild
# uses: github/codeql-action/autobuild@v4
ビルド コマンドを追加する
手動ビルドが有効になっている場合は、ワークフローの run ステップをコメント解除し、リポジトリに適したビルド コマンドを追加します。
run ステップでは、オペレーティング システムのシェルを使用してコマンド ライン プログラムが実行されます。 これらのコマンドを変更し、別のコマンドを追加してビルド プロセスをカスタマイズできます。
- run: |
make bootstrap
make release
`run` キーワードについて詳しくは、「[AUTOTITLE](/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun)」をご覧ください。
コンパイルされた言語の手動ビルド手順を追加しても、 code scanning がリポジトリで動作していない場合は、 サイト管理者にお問い合わせください。