メモ
この記事では、CodeQL CLI 3.21 の初期リリースに含まれている 2.24.3 GitHub Enterprise Server バンドルで使用できる機能について説明します。
サイト管理者が CodeQL CLI のバージョンをより新しいリリースに更新している場合は、この記事の GitHub Enterprise Cloud バージョンで最新の機能に関する情報を参照してください。
CodeQL パックの概要
CodeQL パックは、 CodeQL クエリとライブラリの作成、共有、依存、および実行に使用されます。 他のユーザーによって作成されたパックをダウンロードし、コードベースで実行することで、 CodeQL 分析をカスタマイズできます。
各 CodeQL パックには、次を指定する qlpack.yml ファイルがルート ディレクトリに必要です。
- クエリをコンパイルする方法
- 他の CodeQL パックとライブラリへの依存関係
- クエリ スイートの定義
qlpack.ymlプロパティの詳細については、「CodeQL パックを使った分析のカスタマイズ」を参照してください。
さらに、 CodeQL パックには次を含めることができます。
- カスタム クエリ (
.qlファイル) - ライブラリ ファイル
- クエリ スイート
- メタデータ
CodeQL CLI バンドルには、GitHubの専門家、セキュリティ研究者、コミュニティ共同作成者によって管理されるクエリが含まれています。 他の組織によって開発されたクエリを実行する場合、 CodeQL クエリ パックを使用すると、クエリを効率的かつ信頼性の高い方法でダウンロードして実行できます。一方、モデル パック (パブリック プレビュー) を使用して code scanning 分析を拡張し、既定でサポートされていないライブラリとフレームワークを認識できます。
CodeQL パックの種類
CodeQL パックには、クエリ パック、ライブラリ パック、モデル パックの 3 種類があります。
-
クエリ パックには、 CodeQL データベースで評価できる事前コンパイル済みクエリのセットが含まれています。 クエリ パックは、実行するように設計されています。 クエリ パックが発行されると、バンドルには、クエリ ソースに加えて、各クエリのすべての推移的な依存関係とプリコンパイル済みの表現が含まれます。 これにより、パック内のクエリの一貫した効率的な実行が保証されます。
-
ライブラリ パックは、クエリ パック (または他のライブラリ パック) で使用するように設計されており、クエリ自体は含まれません。 ライブラリは個別にコンパイルされません。
-
モデル パックを使用して code scanning 分析を拡張し、既定ではサポートされていないライブラリとフレームワークを認識できます。 モデル パックは現在 パブリック プレビュー であり、変更される可能性があります。 パブリック プレビュー中、モデル パックはC/C++、C#、Java/Kotlin、Python、Ruby、Rust分析に使用できます。 独自のモデル パックの作成の詳細については、「CodeQL パックの作成と操作」を参照してください。
クエリ パックを検索する場所
サポートされているすべての言語の標準 CodeQL パックは、 Container registryで公開されます。 CodeQL CLI バンドルを使用して標準の方法でCodeQL CLIをインストールした場合、コア クエリ パックは既にダウンロードされ、使用できます。 これらは次のとおりです。
codeql/cpp-queriescodeql/csharp-queriescodeql/go-queriescodeql/java-queriescodeql/javascript-queriescodeql/python-queriescodeql/ruby-queriescodeql/swift-queries
パブリッシュされたクエリ パックとさまざまな CodeQL リリース間の互換性の詳細については、「 CodeQL クエリパック参照」を参照してください。
CodeQL CLIを使用して、独自のCodeQL パックの作成、パックへの依存関係の追加、依存関係のインストールまたは更新を行うこともできます。
CodeQL パックを公開して共有する
次の方法で、より広範な CodeQL コミュニティとカスタム クエリを共有できます。
- GitHub Packagesへの公開: 他のユーザーが検出して使用できるように、パックを一般公開します。
- CodeQL リポジトリへの貢献: 公式リポジトリへの pull request を開くことで、より広いコミュニティに役立つクエリを送信します。
CodeQL パックの発行とダウンロードの詳細については、「CodeQL パックを発行して使用する」を参照してください。
CodeQLへの貢献については、「CodeQLへの貢献」を参照してください。