Skip to main content

コンパイル済み言語の CodeQL コード スキャンについて

必要に応じて CodeQL によるコンパイル型言語の分析方法、利用可能なビルド オプション、データベース作成プロセスのカスタマイズ方法について理解しましょう。

この機能を使用できるユーザーについて

書き込み アクセスを持つユーザー if advanced setup is already enabled

Code scanning は、次のリポジトリの種類で使用できます。

  • GitHub.com 上のパブリックリポジトリ
  • GitHub Team、GitHub Enterprise Cloud、または GitHub Enterprise Server 上の組織所有リポジトリ。 GitHub Code Security が 有効になっています。

CodeQL 分析ワークフローとコンパイル型言語について

Code scanning は、1 つ以上の CodeQL データベースに対してクエリを実行することにより機能します。 各データベースには、リポジトリにあるコードが 1 つの言語で表わされたものが含まれています。 C/C++、C#、Go、Java、Kotlin、Rust、、Swift のようなコンパイル言語では、こうしたデータベースの作成プロセスにコードのビルドとデータの抽出が必要になることがよくあります。

code scanning を有効にすると、既定のセットアップおよび拡張されたセットアップの両方で、利用できる最も簡単な方法で分析用の CodeQL データベースが作成されます。 C/C++、 C#、 Java および Rust の場合、CodeQL データベースは、ビルド (none ビルド モード) を必要とせずにコードベースから直接作成されます。 他のコンパイル型言語の場合、autobuild ビルド モードを使用して CodeQL によりコードベースがビルドされます。 または、manual ビルド モードを使用して明示的なビルド コマンドを指定し、これらのカスタム コマンドによってビルドされたファイルのみを分析することもできます。

CodeQL で依存関係キャッシュを使用して、依存関係をレジストリからダウンロードするのではなく、GitHub Actions キャッシュとして格納できます。 この記事の後半の 「 CodeQL の依存関係キャッシュについて 」を参照してください。

CodeQL ビルド モデル

CodeQL アクションでは、コンパイル型言語に対して次の 3 つの異なるビルド モードがサポートされています。

  •         `none` - CodeQL データベースは、コードベースをビルドすることなくコードベースから直接作成されます (すべてのインタプリタ型言語でサポートされ、C/C++、 C#、 Java および Rust でもサポートされています)。
    
  •         `autobuild` - CodeQL は、最も可能性の高いビルド方法を検出し、これを使用してコードベースをビルドし、分析用のデータベースを作成します (C/C++、C#、Go、Java、Kotlin、Swift でサポートされています)。
    
  •         `manual` - ワークフロー内のコードベースに使用するビルド手順を定義します (C/C++、C#、Go、Java、Kotlin、Swift でサポートされます)。
    

言語固有の autobuild 動作、ランナーの要件、および手動ビルドのガイダンスについては、 コンパイル済み言語の CodeQL ビルド オプションと手順 を参照してください。

CodeQL の依存関係キャッシュについて

CodeQL で依存関係キャッシュを使用して、依存関係をレジストリからダウンロードするのではなく、GitHub Actions キャッシュとして格納できます。 これにより、サードパーティのレジストリがうまく機能しない場合にアラートが失われるリスクが軽減され、多数の依存関係を持つプロジェクトや低速のレジストリで動作するプロジェクトのパフォーマンスが向上する可能性があります。 依存関係をキャッシュしてワークフローを高速化する方法の詳細については、「依存関係キャッシュのリファレンス」を参照してください。

依存関係キャッシュはすべてのビルド モードで機能し、Java、Go、C# でサポートされています。

メモ

依存関係キャッシュを使用すると、リポジトリのキャッシュ クォータの対象となる CodeQL 固有のキャッシュが格納されます。 「依存関係キャッシュのリファレンス」を参照してください。