Skip to main content

設定のカスタマイズ

ニーズに合わせて、Visual Studio Code 拡張機能の CodeQL の設定を編集することができます。

Visual Studio Code 拡張機能の CodeQL の設定のついて

Visual Studio Code 拡張機能の CodeQL では、次のように多数の設定を変更できます。

  • 拡張機能が使用する CodeQL CLI のバージョン。
  • 拡張機能による以前のクエリの表示方法。
  • 拡張機能によるクエリの実行方法。

CodeQL 拡張機能の設定を編集する

  1. [拡張機能] ビューを開き、CodeQL を右クリックし、[拡張機能の設定] をクリックします。

    右クリック メニューが表示され、[拡張機能の設定] が濃いオレンジ色で囲まれた [拡張機能] ビューのスクリーンショット。

  2. 設定 ウィンドウで、必要に応じて設定を編集します。 新しい設定は自動的に保存されます。

    VS Code 内に表示される [VS Code 向け CodeQL の拡張機能設定] ウィンドウのスクリーンショット。

Tip

または、VS Code Command Palette を開き、[Preferences: Open User Settings (JSON)] を選択して、JSON 形式で設定を編集することもできます。

CodeQL CLI のバージョンを選択する

既定の動作をオーバーライドし、特定のバージョンの CodeQL CLI を使用するには、拡張機能の設定で CodeQL CLI の "実行可能パス" を指定し、既存の CodeQL CLI のコピーを指定します。 つまり、codeql (Linux と macOS)、または codeql.exe (Windows) という名前のファイルです。 既定の動作について詳しくは、「CodeQL CLI へのアクセスの構成」を参照してください。

クエリ履歴項目のラベルを変更する

クエリ履歴の [書式] 設定により、拡張機能がクエリ履歴内のクエリを一覧表示するのを制御します。 既定では、各項目には次の形式のラベルがあります。

QUERY-NAME on DATABASE-NAME - QUERY-STATUS NUMBER-OF-RESULTS [QUERY-RUNTIME]

既定のラベルをオーバーライドするには、クエリ履歴項目に別の形式を指定します。

クエリ履歴アイテムの保持期間の変更

既定では、[クエリ履歴] ビューの項目は 30 日間保持されます。 [クエリ履歴: TTL] 設定を変更することで、別の有効期間 (TTL) を設定できます。 アイテムを無期限に保持するには、値を 0 に設定します。

クエリをローカルで実行するための設定の構成

[実行中のクエリ] には、いくつかの設定があります。 たとえば、クエリの実行速度が遅すぎてタイムアウトが頻繁に発生する場合は、[実行中のクエリ: メモリ] 設定を変更してメモリを増やすことができます。

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

クエリ サーバーのログをカスタムの場所に保存するには、[実行中のクエリ: カスタム ログ ディレクトリ] 設定を編集します。 カスタム ログ ディレクトリを使用する場合、拡張機能は、各ワークスペース セッションの後にログを自動的に削除するのではなく、完全に保存します。 これは、これらのログを調査してクエリのパフォーマンスを向上させる場合に便利です。

バリアント分析の設定の構成

[バリアント分析] には、バリアント分析用の GitHub リポジトリのリストを定義または編集したり、別のコントローラー リポジトリに変更したりするために使用できる設定がいくつかあります。 コントローラー リポジトリの目的と要件については、「マルチリポジトリ バリアント分析を使用した大規模な CodeQL クエリの実行」を参照してください。

[バリアント分析リポジトリ] ビューに表示される項目は、Visual Studio Code の databases.json というワークスペース内のファイルを編集して編集することもできます。 このファイルには、ビューに表示されるすべての項目の JSON 表記が含まれています。 エディター ウィンドウで databases.json ファイルを開くには、[バリアント分析リポジトリ] ビューの右上にある { } アイコンをクリックします。 その後、リポジトリ、組織、リストの構造化された表記をビューに表示できます。 次に例を示します。

{
  "version": 1,
  "databases": {
    "variantAnalysis": {
      "repositoryLists": [
        {
          "name": "My favorite JavaScript repos",
          "repositories": [
            "facebook/react",
            "babel/babel",
            "angular/angular"
          ]
        }
      ],
      "owners": [
        "microsoft"
      ],
      "repositories": [
        "apache/hadoop"
      ]
    }
  },
  "selected": {
    "kind": "variantAnalysisSystemDefinedList",
    "listName": "top_10"
  }
}

このファイルを直接編集することで、ビューに表示される項目を変更したり、新しい項目を追加したりできます。

データベースを追加するための設定の構成

データベース ソース フォルダーをワークスペースに自動的に追加するには、[データベースの追加: ワークスペースへのデータベース ソースの追加] 設定を有効にします。

既定では、この設定は無効になっています。 データベースのソース コードを定期的に閲覧する場合 (たとえば、コードの抽象構文ツリーを表示する場合) に、この設定を有効にすることができます。 詳しくは、「ソース コードの構造の探索」をご覧ください。

Note

単一フォルダー ワークスペース内にある場合、データベース ソース フォルダーを追加すると、ワークスペースがマルチルート ワークスペースとしてリロードされます。 これにより、クエリ履歴とデータベース リストがリセットされる可能性があります。

この設定を有効にする前に、ワークスペースをマルチルート ワークスペースとして保存することをお勧めします。 詳細については、Visual Studio Code ドキュメントの「マルチルート ワークスペース」をご覧ください。

クエリをローカルでテストするための設定の構成

クエリのテストに使用されるスレッドの数を増やすには、[実行中のテスト: スレッド数] 設定を更新します。

テストの実行時に CodeQL CLI に追加の引数を渡すには、[実行中のテスト: 追加のテスト引数] 設定を更新します。 使用できる引数について詳しくは、「テストの実行」を参照してください。

テレメトリとデータ コレクションの設定の構成

CodeQL 拡張機能が利用統計情報を収集するかどうかを構成できます。 これは、既定では無効になっています。 詳しくは、「Visual Studio Code 用 CodeQL のテレメトリ」をご覧ください。

拡張機能で使用される GitHub URL の変更

既定では、Visual Studio Code 拡張機能の CodeQL は、GitHub.com 上でホストされるリポジトリを分析するように構成されています。 データ所在地付き GitHub Enterprise Cloud を使用する場合は、"GitHub Enterprise URI" 設定を使用してサイトの URL を指定できます。

設定での GitHub URL の指定

  1. [拡張機能] ビューを開き、CodeQL を右クリックし、[拡張機能の設定] をクリックします。

  2. [設定] ウィンドウで、GitHub 認証設定が見つかるまで下にスクロールし、データ所在地付き GitHub Enterprise Cloud の URL を入力します。 新しい設定は自動的に保存されます。

    URI フィールドが濃いオレンジ色で囲まれている "GitHub Authentication" の "Extensions" 設定のスクリーンショット。

または、CodeQL の設定が格納されている JSON ファイルで URL を定義することもできます。

    "github-enterprise.uri": "SUBDOMAIN.ghe.com",

設定した GitHub URL が拡張機能で使用される場合

GitHub Enterprise URI (github-enterprise.uri) が定義されている場合、拡張機能により URL が以下で使用されます。

  • GitHub からデータベースをダウンロードする要求
  • バリアント分析用のリポジトリの一覧を作成する

Note

データ所在地付き GitHub Enterprise Cloud では、すべてのリポジトリを表示するための認証が必要であるため、データをダウンロードまたは分析する前に認証を行う必要があります。 さらに、バリアント分析用の "上位 XX リポジトリ" の一覧は表示されません。「マルチリポジトリ バリアント分析を使用した大規模な CodeQL クエリの実行」を参照してください。

参考資料