この記事では、解釈された結果を生成するために AUTOTITLE コマンドで使用するクエリを記述する方法について説明します。 カスタム クエリの概念については、 カスタム CodeQL クエリ を参照してください。
有効なクエリの記述
カスタム分析を実行する前に、有効なクエリを記述し、.ql 拡張子付きのファイルに保存する必要があります。 クエリの記述に役立つ広範なドキュメントがあります。 詳しくは、「CodeQL クエリ」を参照してください。
クエリ メタデータを含める
`database analyze` コマンドを使用してクエリを実行する場合は、結果が確実に正しく解釈されるように、次の 2 つのプロパティを含める必要があります。
-
クエリ識別子 (
@id):/または-で区切られた小文字あるいは数字で構成される一連の単語。クエリを識別して分類します。 -
クエリの種類 (
@kind): クエリをシンプルなアラート (@kind problem)、一連のコードの場所で文書化されたアラート (@kind path-problem)、抽出のトラブルシューティング (@kind diagnostic)、またはサマリー メトリック (@kind metricと@tags summary) として識別します。
これらのメタデータ プロパティについて詳しくは、「CodeQL クエリのメタデータ」と「クエリ メタデータ スタイル ガイド」を参照してください。
カスタム クエリのパッケージ化
他のユーザーと共有するクエリを作成するときは、それらをカスタム CodeQL パック内に保存します。
カスタム クエリをパッケージ化するには:
- CodeQL パックを作成し、そのルート ディレクトリ内に
qlpack.ymlファイルを配置します。 - カスタム クエリ (
.qlファイル) をパック ルートまたはそのサブディレクトリに保存します。 - 次を指定するように
qlpack.ymlファイルを構成します。- クエリをコンパイルする方法
- 他の CodeQL パッケージとライブラリへの依存関係
- クエリ スイートの定義
qlpack.ymlプロパティの詳細については、「 CodeQL パックを使った分析のカスタマイズ」を参照してください。
- 開発中のパックを GitHub Packages へ公開 - GitHub の Container registry 詳しくは、「CodeQL パックを使った分析のカスタマイズ」をご覧ください。
SARIF ファイルにカスタム CodeQL クエリのクエリサポートを含める
クエリのヘルプとドキュメント形式の詳細については、 AUTOTITLE を参照してください。
コード スキャン分析の実行時に SARIF ファイルにクエリ ヘルプを含めるには:
-
次のいずれかの形式でクエリ ヘルプを記述します。 * Markdown ファイル: 同じ名前のクエリと共に Markdown ファイルを保存します (たとえば、
my-query.mdのmy-query.ql)。 * **.qhelpファイル**:.qhelp形式でクエリ ヘルプを記述し、分析を実行する前に Markdown に変換します。 詳しくは、「クエリ ヘルプ ファイル」と「クエリ ヘルプ ファイルのテスト」を参照してください。 -
`codeql database analyze` オプションを使用して`--sarif-add-query-help`を実行します。codeql database analyze <database> --format=sarif-latest --output=results.sarif --sarif-add-query-helpメモ
`--sarif-add-query-help` オプションは、 CodeQL CLI v2.7.1 以降から使用できます。 -
SARIF ファイルを GitHub にアップロードします。
詳細については、次を参照してください。
-
[CodeQL クエリ](https://codeql.github.com/docs/writing-codeql-queries/codeql-queries/#codeql-queries)