Skip to main content

Visual Studio Code での CodeQL クエリのテスト

Visual Studio Code 拡張機能を使用して CodeQL クエリの単体テストを実行できます。

VS Code

でのクエリのテストについて

CodeQL クエリで期待される結果が確実に生成されるようにするには、期待されるクエリ結果と実際の結果を比較するテストを実行します。

CodeQL 拡張機能は、自動的に [テスト] ビューに登録されます。 このビューには、現在のワークスペースで見つかったすべてのテストが表示され、ワークスペースでテストを探索して実行するための UI が使用できます。

CodeQL テストの作成について詳しくは、「カスタム クエリのテスト」をご覧ください。

単体テストの実行による詳細な出力を確認するには、CodeQL テスト ログを開きます。 詳しくは、「ログへのアクセス」をご覧ください。

クエリの結果のテスト

  1. Visual Studio Code で、サイドバーの [テスト] ビューを開きます。

  2. 特定のテストを実行するには、ファイル名またはフォルダー名の上にマウス ポインターを置き、再生ボタンをクリックします。 ワークスペース内のすべてのテストを実行するには、ビューの上部にある再生ボタンをクリックします。 テストの実行に時間がかかりすぎる場合は、ビューの上部にある停止ボタンをクリックするとテストをキャンセルできます。

    [テスト] ビューのスクリーンショット。[テストの実行] ボタン (すべてのテストを実行) が濃いオレンジ色で囲まれています。

  3. アイコンは、テストが成功したか失敗したかを示します。 失敗した場合は、[テスト結果] 内のテストをクリックして、期待される出力と実際の出力の違いを表示します。

    [テスト結果] ビューのスクリーンショット。テストの期待される出力と実際の出力の違いを表示しています。

  4. 結果を比較する テストを実際の出力で更新する場合は、[テスト] ビューでテストを右クリックし、[テスト出力の受け入れ] をクリックします。

クエリのパフォーマンスを監視する

クエリのパフォーマンスは、大規模なデータベースで、または継続的インテグレーション システムの一部としてクエリを実行する場合に重要となります。

クエリのパフォーマンスを調べるには、[実行中のクエリ: デバッグ] 設定を有効にして、タイミングとタプル数を含めるようにします。 そうすると、[出力] ビューの CodeQL の [クエリ サーバー] タブのログに表示されます。 タプル数は、クエリによって計算された述語のサイズを示すので便利です。 設定変更の詳細については、「設定のカスタマイズ」を参照してください。

クエリが評価されると、クエリ サーバーは計算する対象の述語をキャッシュします。 そのため、2 つの評価のパフォーマンスを比較する場合は、[CodeQL: キャッシュのクリア] を実行し、各実行の前にクエリ サーバーのキャッシュをクリアする必要があります。 こうすることで、同等のデータを比較できるようになります。

CodeQL クエリのパフォーマンスの監視の詳細については、CodeQL ドキュメントの「クエリ パフォーマンスのトラブルシューティング」および「QL プログラムの評価」を参照してください。

次のステップ

特定する結果をクエリで見つけられると確信できる場合は、バリアント分析を使用して大規模に実行することもできます。 多数の CodeQL データベースで大規模に分析を実行する方法については、「マルチリポジトリ バリアント分析を使用した大規模な CodeQL クエリの実行」を参照してください。