Skip to main content
ドキュメントへの更新が頻繁に発行されており、このページの翻訳はまだ行われている場合があります。 最新の情報については、「英語のドキュメント」を参照してください。

CodeQL によるコード スキャンについて

CodeQL を使うと、コード内の脆弱性とエラーを特定することができます。 結果は、GitHub 内で code scanning アラートとして表示されます。

Code scanning は、GitHub Enterprise Server の Organization 所有のリポジトリで利用できます。 この機能には、GitHub Advanced Security のライセンスが必要です。 詳しくは、「GitHub Advanced Security について」を参照してください。

注: この機能を使うには、サイト管理者が お使いの GitHub Enterprise Server インスタンス の code scanning を有効にする必要があります。 詳しくは、「アプライアンスのコードスキャンを設定する」を参照してください。

code scanning と CodeQL について

CodeQL は、セキュリティ チェックを自動化するために GitHub が開発した、コード分析エンジンです。 CodeQL を使用してコードを分析し、結果を code scanning アラートとして表示することができます。

code scanning に対して CodeQL 分析を使用する方法には、主に 2 通りあります。

GitHub Enterprise Server 3.7 の場合は、CodeQL アクションの既定で CodeQL CLI バージョン 2.10.5 が使われます。 外部 CI システムで分析を実行する場合は、同じバージョンの CodeQL CLI を使うことをお勧めします。

CodeQL について

CodeQL はコードをデータのように扱い、コードの潜在的な脆弱性を従来の静的分析よりも高い精度で見つけることができます。

  1. ご利用のコードベースを表現する CodeQL データベースを生成します。
  2. 次に、そのデータベースに対して CodeQL クエリを実行して、コードベース内の問題を特定します。
  3. CodeQL を code scanning で使用すると、クエリ結果は GitHub Enterprise Server に code scanning アラートとして表示されます。

CodeQL ではコンパイルおよびインタープリタ言語の両方がサポートされていて、サポートされている言語で記述されたコードの脆弱性とエラーを見つけることができます。

  • C/C++
  • C#
  • Go
  • Java
  • JavaScript/TypeScript
  • Python
  • Ruby

:

  • Ruby の CodeQL 分析は、現在ベータ版です。 ベータ版の間、Ruby の分析は他の言語の CodeQL 分析ほど包括的ではありません。
  • JavaScript、TypeScript、またはその両方で記述されたコードを分析するには javascript を使用します。

詳細については、CodeQL Web サイトのドキュメント「サポートされている言語とフレームワーク」を参照してください。

CodeQL クエリについて

GitHub 専門家、セキュリティ研究者、およびコミュニティの貢献者は、code scanning に使用される既定の CodeQL クエリを作成して維持します。 クエリは、分析を改善し、誤検知の結果を減らすために定期的に更新されます。 クエリはオープン ソースであるため、github/codeql リポジトリ内のクエリを表示して投稿できます。 詳細については、CodeQL Web サイトの CodeQL に関するページを参照してください。 自分で独自のクエリを記述することもできます。 詳細については、CodeQL ドキュメントにある CodeQL クエリに関するページを参照してください。

詳細設定または外部 CI システムを使用してコードをスキャンする場合は、分析の一環として追加のクエリを実行できます。 これらのクエリは、公開された CodeQL クエリ パック (ベータ) またはリポジトリ内の CodeQL パックに属している必要があります。 CodeQL パック (ベータ) には、従来の QL パックと比べて次の利点があります。

  • CodeQL クエリ パック (ベータ) が GitHub Container registry に公開されると、クエリとコンパイル キャッシュに必要なすべての推移的な依存関係がパッケージに含められます。 これにより、パフォーマンスが向上します。そして、パックまたは CLI の新しいバージョンにアップグレードするまでは、パックでクエリを実行するたびに確実に同じ結果が得られます。
  • QL パックには推移的な依存関係は含まれていません。その結果、パック内のクエリを、標準ライブラリ (つまり、ご利用のクエリ内の import LANGUAGE ステートメントによって参照されるライブラリ)、またはクエリと同じ QL パック内のライブラリにのみ依存させることができます。
  • CodeQL クエリ パック (ベータ) は、複数の GitHub コンテナー レジストリからダウンロードできます。 詳しくは、「code scanning のカスタマイズ」を参照してください。

詳しくは、「CodeQL パックについて」を参照してください。