Skip to main content

CodeQL パックを発行して使用する

          CodeQL パックを共有またはダウンロードし、CodeQL データベースを分析します。

この機能を使用できるユーザーについて

CodeQL は、次の種類のリポジトリで使用できます:

認証中 GitHubContainer registries

適切な GitHubContainer registryに認証することで、パックを発行し、プライベート パックをダウンロードできます。

          Container registryに対して認証するには、次の 2 つの方法があります。

1. --github-auth-stdin オプションをCodeQL CLIに渡し、GitHub Apps トークンを指定するか、標準入力を使用してpersonal access tokenします。 1. GITHUB_TOKEN環境変数をGitHub Appsトークンまたはpersonal access tokenに設定します。

          CodeQL パックの発行

          CodeQL パックを他のユーザーと共有するには、Container registryに発行します。

公開前に qlpack.yml ファイルを構成する

発行する前に、 CodeQL パックの構成の詳細を確認して変更できます。 任意のテキスト エディターで qlpack.yml ファイルを開きます。

library: # set to true if the pack is a library. Set to false or omit for a query pack
name: <scope>/<pack>
version: <x.x.x>
description: <Description to publish with the package>
defaultSuite: # optional, one or more queries in the pack to run by default
    - query: <relative-path>/query-file>.ql
defaultSuiteFile: default-queries.qls # optional, a pointer to a query-suite in this pack
license: # optional, the license under which the pack is published
dependencies: # map from CodeQL pack name to version range
  •         `name:` は `<scope>/<pack>` 形式に従う必要があります。ここで、 `<scope>` は発行先の GitHub 組織で、 `<pack>` はパックの名前です。
    
  •         `defaultSuite` または `defaultSuiteFile` のうち、許可されるのは 1 つのみです。 この 2 つは、実行する既定のクエリ スイートを定義する異なる方法です。1 つ目は qlpack.yml ファイルにクエリを直接指定し、2 つ目はパックにクエリ スイートを指定します。
    

実行中 codeql pack publish

パックを GitHubContainer registryに発行する準備ができたら、pack ディレクトリのルートで次のコマンドを実行できます。

codeql pack publish

発行されたパッケージは、GitHub ファイルのスコープで指定qlpack.yml組織のパッケージ セクションに表示されます。

メモ

既定のセットアップ構成の一部として組織内のすべてのリポジトリにカバレッジを拡張するためにモデル パックを GitHubContainer registry に発行する場合は、コード スキャンを実行しているリポジトリがそれらのモデル パックにアクセスできることを確認する必要があります。 詳細については、「既定設定の構成を編集する」および「パッケージのアクセス制御と可視性の設定」を参照してください。

既存の CodeQL パックのダウンロード

他のユーザーが作成したパックを実行するには、まず次のコマンドを実行してダウンロードする必要があります。

codeql pack download <scope>/<pack>@x.x.x
  •         `<scope>`: ダウンロードする GitHub 組織の名前。
    
  •         `<pack>`: ダウンロードするパックの名前。
    
  •         `@x.x.x`: 省略可能なバージョン番号。 省略すると、最新バージョンがダウンロードされます。
    

このコマンドは、複数のパックの引数を受け入れます。

ダウンロードするクエリ パックの特定のバージョン番号を指定するスクリプトを記述する場合は、 CodeQL のバージョンを新しいバージョンに更新するときに、新しいバージョンのクエリ パックに切り替える必要がある場合があることに注意してください。 新しいバージョンの CodeQL_may_ は、非常に古いバージョンにピン留めされたクエリ パックで使用するとパフォーマンスが低下します。 詳細については、「CodeQL クエリパック参照」を参照してください。

          CodeQL パックを使用してCodeQL データベースを分析する

          CodeQL パックを使用してCodeQL データベースを分析するには、次のコマンドを実行します。
codeql database analyze <database> <scope>/<pack>@x.x.x:<path>
  •         `<database>`: CodeQL データベースを分析する。
    
  •         `<scope>`: パックが発行される GitHub 組織の名前。
    
  •         `<pack>`: 使うパックの名前。
    
  •         `@x.x.x`: 省略可能なバージョン番号。 省略すると、最新バージョンが使われます。
    
  •         `:<path>`: クエリ、ディレクトリ、またはクエリ スイートへの省略可能なパス。 省略すると、パックの既定のクエリ スイートが使われます。
    
            `analyze` コマンドは、指定したCodeQL パックの既定のスイートを実行します。 
            CodeQL データベースの分析に使用する複数のCodeQL パックを指定できます。 例えば次が挙げられます。
    
codeql <database> analyze <scope>/<pack> <scope>/<other-pack>

メモ

注: codeql pack download コマンドでは、ダウンロードされたパックが、ローカルの変更を意図していない内部の場所に格納されます。 パックをダウンロード後に変更すると、予期しない (トラブルシューティングが難しい) 動作が発生する可能性があります。 パックのカスタマイズの詳細については、「CodeQL パックの作成と操作」を参照してください。