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、and Swiftでは、多くの場合、このデータベースにデータを入力するプロセスには、コードのビルドとデータの抽出が含まれます。

          code scanningを有効にすると、既定のセットアップと詳細設定の両方で、使用可能な最も簡単な方法を使用して分析用のCodeQL データベースが生成されます。 
          C/C++、C#, Java および Rustの場合、CodeQL データベースは、ビルド (`none` ビルド モード) を必要とせずに、コードベースから直接生成されます。 他のコンパイル済み言語の場合、 CodeQL は、 `autobuild` ビルド モードを使用してコードベースをビルドします。 または、`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固有のキャッシュが格納されます。 「依存関係キャッシュのリファレンス」を参照してください。