Skip to main content

クエリ参照ファイル

クエリ参照ファイルを使って、テストで実行するクエリの場所を定義できます。

GitHub CodeQL is licensed on a per-user basis upon installation. You can use CodeQL only for certain tasks under the license restrictions. For more information, see "About the GitHub CodeQL license."

If you have a GitHub Enterprise account and GitHub Advanced Security license, you can use CodeQL for automated analysis, continuous integration and continuous delivery. You can create an enterprise account by contacting the sales team. 詳細については、「GitHub Advanced Security について」を参照してください。

Note: This article was migrated from the CodeQL documentation website in January 2023.

クエリ参照ファイルについて

クエリ参照ファイルは、テストする 1 つのクエリの場所を定義するテキスト ファイルです。

テスト ディレクトリに含まれていないクエリの実行を test run サブコマンドに指示するときは、クエリ参照ファイルを使います。 テストとして実行するクエリを指定するには、2 つの方法があります。

  1. クエリ参照ファイルを使って、テストするクエリの場所を指定します。 これは、実際のコードベースの問題を特定することを目的としたアラート クエリとパス クエリのテストを作成する場合に便利です。 テスト コードの複数のディレクトリを作成し、それぞれでクエリの異なる側面を対象にする場合があります。 その後、テスト コードの各ディレクトリにクエリ参照ファイルを追加して、テストするクエリを指定します。
  2. クエリをテストのディレクトリに直接追加します。 これらは通常、QL ライブラリの動作をテストするためにクエリを明示的に記述する場合に便利です。 多くの場合、これらのクエリにはライブラリ述語の呼び出しが数個だけ含まれ、出力をテストできるようにそれらを select ステートメントでラップします。

クエリ参照ファイルを定義する

各クエリ参照ファイル .qlref には、1 つのクエリを見つける場所を定義する 1 行が含まれています。 場所は、クエリを含む CodeQL パックのルートを基準にして定義されている必要があります。 通常これは、.qlref を含む CodeQL パック、テスト パックのdependencies ブロックで指定されている CodeQL パック、または CodeQL パックの推移的な依存関係のいずれかです。

システム間で互換性があるよう、すべてのオペレーティング システムのパスでスラッシュを使う必要があります。

JavaScript アラート クエリをテストするためのクエリ参照ファイル: DeadAngularJSEventListener.qlref

javascript/ql/test にある CodeQL パック用の qlpack.yml ファイル https://github.com/github/codeql/blob/main/javascript/ql/test/qlpack.yml では、依存関係として codeql/javascript-queries が定義されています。 そのため、クエリ参照ファイルでは、codeql/javascript-queries CodeQL パックを基準にしてクエリの場所を定義します。

AngularJS/DeadAngularJSEventListener.ql

別の例については、「カスタム クエリのテスト」をご覧ください。