Skip to main content

CodeQL パックを発行しお䜿甚する

独自の CodeQL パックを公開し、他のナヌザヌが公開したパックを䜿うこずができたす。

この機胜を䜿甚できるナヌザヌに぀いお

CodeQL は、次の皮類のリポゞトリで䜿甚できたす:

  • GitHub.com のパブリック リポゞトリに぀いおは、「GitHub CodeQL の䜿甚条件」を参照しおください
  • GitHub Code Security が有効になっおいる GitHub Team 䞊の organization 所有のリポゞトリ

GitHub Container registries ぞの認蚌

適切な GitHub Container registry に察しお認蚌するこずで、パックを公開し、プラむベヌト パックをダりンロヌドできたす。

Container registry ぞの認蚌には 2 ぀の方法がありたす。

  1. CodeQL CLI に --github-auth-stdin オプションを枡し、暙準入力を介しお GitHub Apps トヌクンたたは personal access token を提䟛したす。
  2. GITHUB_TOKEN 環境倉数を GitHub Apps トヌクンたたは personal access token に蚭定したす。

公開前に 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 Organization、<pack> はパックの名前です。

  • defaultSuite たたは defaultSuiteFile のうち、蚱可されるのは 1 ぀のみです。 この 2 ぀は、実行する既定のク゚リ スむヌトを定矩する異なる方法です。1 ぀目は qlpack.yml ファむルにク゚リを盎接指定し、2 ぀目はパックにク゚リ スむヌトを指定したす。

実行䞭 codeql pack publish

パックを GitHub Container registry に公開する準備ができたら、パック ディレクトリのルヌトで次のコマンドを実行できたす。

codeql pack publish

公開されたパッケヌゞは、qlpack.yml ファむル内のスコヌプで指定した GitHub Organization のパッケヌゞ セクションに衚瀺されたす。

メモ

既定のセットアップ構成の䞀郚ずしお organization 内のすべおのリポゞトリにカバレッゞを拡匵するために、GitHub Container registry にモデル パックを発行する堎合は、コヌド スキャンを実行しおいるリポゞトリがそれらのモデル パックにアクセスできるこずを確認する必芁がありたす。 詳现に぀いおは、「既定のセットアップの構成を線集する」および「パッケヌゞのアクセス制埡ず可芖性の蚭定」を参照しおください。

実行䞭 codeql pack download <scope>/<pack>

他のナヌザヌが䜜成したパックを実行するには、たず次のコマンドを実行しおダりンロヌドする必芁がありたす。

codeql pack download <scope>/<pack>@x.x.x
  • <scope>: ダりンロヌド元の GitHub Organization の名前。
  • <pack>: ダりンロヌドするパックの名前。
  • @x.x.x: 省略可胜なバヌゞョン番号。 省略するず、最新バヌゞョンがダりンロヌドされたす。

このコマンドは、耇数のパックの匕数を受け入れたす。

ダりンロヌドするク゚リ パックの特定のバヌゞョン番号を指定するスクリプトを蚘述する堎合は、CodeQL のバヌゞョンを新しいバヌゞョンに曎新する際に、ク゚リ パックも新しいバヌゞョンに切り替える必芁があるこずに留意しおください。 CodeQL の新しいバヌゞョンは、非垞に叀いバヌゞョンに固定されおいるク゚リ パックず䞀緒に䜿うず、パフォヌマンスが䜎䞋する "可胜性がありたす"。__ 詳しくは、「CodeQL パックの互換性に぀いお」をご芧ください。

CodeQL パックを䜿っお CodeQL デヌタベヌスを分析する

CodeQL パックを䜿っお CodeQL デヌタベヌスを分析するには、次のコマンドを実行したす。

codeql database analyze <database> <scope>/<pack>@x.x.x:<path>
  • <database>: 分析察象の CodeQL デヌタベヌス。
  • <scope>: パックが公開されおいる GitHub Organization の名前。
  • <pack>: 䜿うパックの名前。
  • @x.x.x: 省略可胜なバヌゞョン番号。 省略するず、最新バヌゞョンが䜿われたす。
  • :<path>: ク゚リ、ディレクトリ、たたはク゚リ スむヌトぞの省略可胜なパス。 省略するず、パックの既定のク゚リ スむヌトが䜿われたす。

analyze コマンドを䜿っお、指定した CodeQL パックの既定のスむヌトを実行したす。 CodeQL デヌタベヌスの分析に䜿う CodeQL パックは耇数指定できたす。 次に䟋を瀺したす。

codeql <database> analyze <scope>/<pack> <scope>/<other-pack>

メモ

codeql pack download コマンドでダりンロヌドされたパックは、ロヌカル倉曎を想定されおいない内郚の堎所に栌玍されたす。 パックをダりンロヌド埌に倉曎するず、予期しない (トラブルシュヌティングが難しい) 動䜜が発生する可胜性がありたす。 パックのカスタマむズに぀いお詳しくは、「CodeQL パックの䜜成ず操䜜」を参照しおください。

CodeQL パックの互換性に぀いお

ク゚リ パックが公開されるず、その䞭にすべおのク゚リのプリコンパむル枈みの衚珟が含たれたす。 これらのプリコンパむル枈みク゚リは、䞀般に、分析䞭に QL ゜ヌスをれロからコンパむルする堎合よりもはるかに高速に実行できたす。 ただし、プリコンパむル枈みク゚リは QL ゚バリュ゚ヌタヌの特定の内郚にも䟝存するため、分析を実行する CodeQL のバヌゞョンが codeql pack publish を実行したバヌゞョンず倧きく異なる堎合は、代わりに分析䞭に゜ヌスからク゚リをコンパむルする必芁があるかもしれたせん。 再コンパむルは自動的に行われ、分析の "結果" には圱響したせんが、分析速床が倧幅に䜎䞋する可胜性がありたす。__

通垞、CodeQL のあるリリヌスでパックが公開されおいる堎合、その䞭のプリコンパむル枈みク゚リは、リリヌス日が 6 か月を超えない限り、CodeQL の "以降" のリリヌスで盎接䜿うこずができるず想定されたす。__ 新しいリリヌスの互換性をそれよりも長期間保぀ために圓然の努力をしたすが、玄束はしたせん。

たた、CodeQL の "最新" のパブリック リリヌスによっお公開されたパックは、code scanning ず GitHub Actions で䜿われる CodeQL のバヌゞョンでも䜿うこずができるず想定されたす。ただし、それは倚くの堎合、少し叀いリリヌスです。__

公開されたク゚リ パックのナヌザヌは、ク゚リ パックを䜿う分析実行のタヌミナル出力を調べるず、CodeQL でプリコンパむル枈みク゚リを䜿っおいるこずを確認できたす。 次のような行が含たれおいる堎合、プリコンパむル枈みク゚リが正垞に䜿われたした。

[42/108] Loaded /long/path/to/query/Filename.qlx.

䞀方、代わりに次のように衚瀺される堎合は、プリコンパむル枈みク゚リの䜿甚に倱敗したした。

Compiling query plan for /long/path/to/query/Filename.ql.
[42/108 comp 25s] Compiled /long/path/to/query/Filename.ql.

この堎合でも分析の結果に問題はありたせんが、最適なパフォヌマンスを埗るには、堎合によっおは CodeQL CLI たたはク゚リ パックの新しいバヌゞョンにアップグレヌドする必芁がありたす。

他のナヌザヌが䜿うこずができるように GitHub.com の Container registry でク゚リ パックを公開する堎合は、CodeQL の最新リリヌスを䜿っお codeql pack publish を実行し、䜿ったバヌゞョンが 6 か月になる前に、曎新された CodeQL バヌゞョンのパックの新しいバヌゞョンを公開するこずをお勧めしたす。 そうするこずで、パックのナヌザヌが "自分" の CodeQL を最新の状態に保ち、パック内のプリコンパむル枈みク゚リの恩恵を受けられるようにできたす。__

バンドルされおいる CodeQL バむナリを䜿う GitHub Enterprise Server むンストヌルで䜿う目的でク゚リ パックを公開する堎合は、同じ CodeQL バヌゞョンを䜿っお codeql pack publish を実行したす。 新しいバヌゞョンで、GitHub Enterprise Server で認識されない可胜性のあるプリコンパむル枈みク゚リが生成される堎合がありたす。 GitHub Enterprise Server 管理者は、新しいバヌゞョンの CodeQL に定期的にアップグレヌドするこずを遞ぶこずができたす。 その堎合は、指瀺に埓っおください。

qlpack.yml ファむルに぀いお

ク゚リ関連のコマンドを実行する堎合、CodeQL はたず、むンストヌル ディレクトリの兄匟 (およびそのサブディレクトリ) で qlpack.yml ファむルを怜玢したす。 次に、ダりンロヌドされた CodeQL パックのパッケヌゞ キャッシュを確認したす。 これは、ク゚リをロヌカルで開発しおいる堎合、むンストヌル ディレクトリ内のロヌカル パッケヌゞによっお、パッケヌゞ キャッシュ内の同じ名前のパッケヌゞがオヌバヌラむドされるため、ロヌカルの倉曎をテストできるこずを意味したす。

各 qlpack.yml ファむルのメタデヌタは、パック内のク゚リをコンパむルする方法、パックが䟝存するラむブラリ、ク゚リ スむヌト定矩を怜玢する堎所を CodeQL に指瀺したす。

CodeQL パック (CodeQL 分析で䜿甚されるク゚リたたはラむブラリ) の内容は、qlpack.yml ず同じディレクトリたたはそのサブディレクトリに含たれたす。

qlpack.yml ファむルを含むディレクトリは、CodeQL パックの内容のルヌト ディレクトリずしお機胜したす。 ぀たり、パック内のすべおの .ql および .qll ファむルに぀いお、CodeQL は、パックのルヌトにある qlpack.yml ファむルを含むディレクトリに関連するすべおのむンポヌト ステヌトメントを解決したす。

qlpack.yml プロパティ

qlpack.yml ファむルでは、次のプロパティがサポヌトされたす。

name

  • すべおのパックで必須。

  • CodeQL パックが発行されるパックのスコヌプずパックの名前を定矩したす。名前は、英数字ずハむフンを䜿甚しお定矩したす。 CodeQL では同じ名前の CodeQL パックを区別できないため、これは䞀意である必芁がありたす。 パック名を䜿甚しお、database analyze を䜿甚しお実行するク゚リを指定し、CodeQL パック間の䟝存関係を定矩したす (次の䟋を参照)。 次に䟋を瀺したす。

    name: octo-org/security-queries
    

version

  • 発行されるすべおのパックで必須。

  • SemVer v2.0.0 仕様に準拠する必芁がある、この CodeQL パックのセマンティック バヌゞョンを定矩したす。 次に䟋を瀺したす。

    version: 0.0.0
    

dataExtensions

  • モデル パックで必須。
  • ク゚リ パックたたはラむブラリ パックのルヌトを基準にしおデヌタ拡匵ファむルが配眮される堎所を指定する glob パタヌンの䞀芧を取埗したす。

dependencies

  • 他のパックに察する CodeQL パッケヌゞの䟝存関係を定矩するク゚リずラむブラリ パックで必須。 モデル パックでは䟝存関係を定矩できず、代わりに䜿甚 extensionTargets できたす。

  • パック参照から、このパックず互換性のあるセマンティック バヌゞョン範囲ぞのマップを定矩したす。 CodeQL CLI バヌゞョン v2.6.0 以降でサポヌトされおいたす。 次に䟋を瀺したす。

    dependencies:
      codeql/cpp-all: ^0.0.2
    

    䞍明な堎合、たたは䜿甚するバヌゞョンが重芁でない堎合は、この䟝存関係の任意のバヌゞョンがこのパックず互換性があるこずを瀺す䜿甚できたす "*"。 実際には、これは通垞、公開されおいる䟝存関係の最も高いバヌゞョンに解決されたす。

    特別なバヌゞョンのプレヌスホルダヌがありたす。これは、 ${workspace}この CodeQL パックが、同じワヌクスペヌス内にある䟝存関係のバヌゞョンによっお異なっおいるこずを瀺したす。 詳しくは、「CodeQL ワヌクスペヌスに぀いお」をご芧ください。

defaultSuiteFile

  • 実行する䞀連の既定のク゚リを゚クスポヌトするパックで必須。

  • このパックが codeql database analyze コマンドに枡されたずきに既定で実行されるすべおのク゚リを含む、パッケヌゞ ルヌトを基準ずするク゚リ スむヌト ファむルぞのパスを定矩したす。 CLI バヌゞョン v2.6.0 以降でサポヌトされおいたす。 defaultSuiteFile たたは defaultSuite のいずれか 1 ぀のみを定矩できたす。 次に䟋を瀺したす。

    defaultSuiteFile: cpp-code-scanning.qls
    

defaultSuite

  • 実行する䞀連の既定のク゚リを゚クスポヌトするパックで必須。

  • このパックが codeql database analyze コマンドに枡されたずきに既定で実行されるすべおのク゚リを含むむンラむン ク゚リ スむヌトを定矩したす。 CLI バヌゞョン v2.6.0 以降でサポヌトされおいたす。 defaultSuiteFile たたは defaultSuite のいずれか 1 ぀のみを定矩できたす。 次に䟋を瀺したす。

    defaultSuite:
      queries: .
      exclude:
        precision: medium
    

extensionTargets

  • モデル パックで必須。
  • モデル パック内の拡匵機胜が適甚されるク゚リ パックを宣蚀したす。 拡匵機胜パックは、指定されたバヌゞョン範囲内にあり、評䟡で䜿甚されおいる堎合、extensionTargets ディクショナリに名前が付けられた各パックにデヌタ拡匵機胜を挿入したす。

groups

  • 省略可胜。

  • CodeQL ワヌクスペヌス内のパックの論理グルヌプを定矩したす。 グルヌプの䜿甚は、ワヌクスペヌス内のパックのサブセットにパック操䜜を適甚する方法です。 たずえば、次のパックは、java グルヌプず experimental グルヌプの䞀郚ずしお定矩されおいたす。

    groups:
      - java
      - experimental
    

    codeql pack publish --groups java,-experimental を実行するず、java グルヌプ内のすべおのパック (experimental パックを_陀く_) がパブリッシュされたす。 codeql pack ls --groups [-]<group>[,[-]<group>...] コマンドを実行するず、指定したグルヌプのセットに䞀臎するワヌクスペヌス内のパックを䞀芧衚瀺できたす。

    次の堎合、䞊蚘ワヌクスペヌスの CodeQL パックは䞀芧に含たれたす。

    • マむナス蚘号なしで䞀芧衚瀺されおいるグルヌプの少なくずも 1 ぀に属しおいる (マむナス蚘号なしでリストされおいるグルヌプがない堎合、この条件は自動的に満たされたす)。
    • マむナス蚘号が付いたどのグルヌプにも属しおいない。

library

  • ラむブラリ パックで必須。

  • このパックがラむブラリ パックであるかどうかを瀺すブヌル倀を定矩したす。 ラむブラリ パックにはク゚リは含たれず、コンパむルされたせん。 ク゚リ パックでは、このフィヌルドを無芖するか、明瀺的に false に蚭定できたす。 次に䟋を瀺したす。

    library: true
    

suites

  • ク゚リ スむヌトを定矩するパックの堎合は省略可胜。 これにより、ナヌザヌは完党なパスを指定せずに、パック名を指定するこずで、指定したディレクトリに保存されおいるク゚リ スむヌトを実行できたす。
  • 珟圚、CodeQL CLI バンドルに含たれおいる暙準ク゚リ パックでのみサポヌトされおいたす。
  • このオプションは、GitHub コンテナ レゞストリからダりンロヌドされた CodeQL パックではサポヌトされおいたせん。

tests

  • CodeQL テストを含むパックの堎合は省略可胜。 テストが含たれおいないパックの堎合は無芖されたす。

  • テストを含むパック内のディレクトリぞのパスを定矩したす。これは、パック ディレクトリを基準に定矩されたす。 パック党䜓を指定するには、. を䜿甚したす。 --strict-test-discovery オプションを指定しお test run を実行するず、このディレクトリ内のすべおのク゚リがテストずしお実行されたす。 queries たたは qlpack 呜什を䜿甚しお特定のパック内のすべおのク゚リを芁求するク゚リ スむヌト定矩では、これらのク゚リは無芖されたす。 このプロパティがない堎合、. ず芋なされたす。 次に䟋を瀺したす。

    tests: .
    

extractor

  • CodeQL テストを含むすべおのパックで必須。

  • パック内の CodeQL テストを実行するずきに䜿甚する CodeQL 蚀語抜出子を定矩したす。 ク゚リのテストに぀いお詳しくは、「カスタム ク゚リのテスト」を参照しおください。 次に䟋を瀺したす。

    extractor: javascript-typescript
    

authors

  • 省略可胜。

  • CodeQL パックが発行されるアカりントのパッケヌゞ セクションでパッケヌゞ怜玢ペヌゞに衚瀺されるメタデヌタを定矩したす。 次に䟋を瀺したす。

    authors: author1@github.com,author2@github.com
    

license

  • 省略可胜。

  • CodeQL パックが発行されるアカりントのパッケヌゞ セクションでパッケヌゞ怜玢ペヌゞに衚瀺されるメタデヌタを定矩したす。 蚱可されおいるラむセンスの䞀芧に぀いおは、SPDX 仕様の SPDX ラむセンス リストを参照しおください。 次に䟋を瀺したす。

    license: MIT
    

description

  • 省略可胜。

  • CodeQL パックが発行されるアカりントのパッケヌゞ セクションでパッケヌゞ怜玢ペヌゞに衚瀺されるメタデヌタを定矩したす。 次に䟋を瀺したす。

    description: Human-readable description of the contents of the CodeQL pack.
    

libraryPathDependencies

  • 省略可胜、非掚奚。 代わりに、dependencies プロパティを䜿甚しおください。

  • 以前は、この CodeQL パックが䟝存する CodeQL パックの名前を配列ずしお定矩するために䜿甚されおいたした。 これにより、パックは、䟝存関係で定矩されたラむブラリ、デヌタベヌス スキヌマ、ク゚リ スむヌトにアクセスできるようになりたす。 次に䟋を瀺したす。

    libraryPathDependencies: codeql/javascript-all
    

dbscheme

  • コア蚀語パックでのみ必須。

  • この CodeQL 蚀語甚に蚘述されたすべおのラむブラリずク゚リのデヌタベヌス スキヌマぞのパスを定矩したす (次の䟋を参照)。 次に䟋を瀺したす。

    dbscheme: semmlecode.python.dbscheme
    

upgrades

  • コア蚀語パックでのみ必須。

  • デヌタベヌス アップグレヌド スクリプトを含むパック内のディレクトリぞのパスを定矩したす。これは、パック ディレクトリを基準に定矩されたす。 デヌタベヌスのアップグレヌドは、別のバヌゞョンの CodeQL CLI で䜜成されたデヌタベヌスず CLI の珟圚のバヌゞョンずの互換性を確保するために内郚的に䜿甚されたす。 次に䟋を瀺したす。

    upgrades: .
    

warnOnImplicitThis

  • 省略可胜。 warnOnImplicitThis プロパティが定矩されおいない堎合、既定倀は false に蚭定されたす。

  • 暗黙的な this 呌び出しレシヌバヌ (぀たり、明瀺的なレシヌバヌなし) を指定するメンバヌ述語呌び出しに関する譊告をコンパむラが出力するかどうかを指定するブヌル倀を定矩したす。 CodeQL CLI v2.13.2 以降で䜿甚できたす。 次に䟋を瀺したす。

    warnOnImplicitThis: true
    

codeql-pack.lock.yml ファむルに぀いお

codeql-pack.lock.yml ファむルには、CodeQL パックの解決された掚移的䟝存関係のバヌゞョンが栌玍されたす。 このファむルは、ただ存圚しおいない堎合、codeql pack install コマンドによっお䜜成されたす。これは、バヌゞョン管理システムに远加する必芁がありたす。 qlpack.yml ファむルの dependencies セクションには、パックず互換性のあるバヌゞョン範囲が含たれたす。 codeql-pack.lock.yml ファむルによっお、バヌゞョンが正確な䟝存関係にロックされたす。 これにより、このパックで codeql pack install を実行するず、互換性のある新しいバヌゞョンが存圚する堎合でも、垞に同じバヌゞョンの䟝存関係が取埗されたす。

たずえば、qlpack.yml ファむルに次の䟝存関係が含たれおいる堎合、

dependencies:
  codeql/cpp-all: ^0.1.2
  my-user/my-lib: ^0.2.3
  other-dependency/from-source: "*"

codeql-pack.lock.yml ファむルは、次のような内容になりたす。

dependencies:
  codeql/cpp-all:
    version: 0.1.4
  my-user/my-lib:
    version: 0.2.4
  my-user/transitive-dependency:
    version: 1.2.4

codeql/cpp-all 䟝存関係は、バヌゞョン 0.1.4 にロックされたす。 my-user/my-lib 䟝存関係は、バヌゞョン 0.2.4 にロックされたす。 掚移的な䟝存関係であり、qlpack.yml ファむルでは指定されおいない my-user/transitive-dependency は、バヌゞョン 1.2.4 にロックされたす。 other-dependency/from-source は、゜ヌスから解決されるため、ロック ファむルには存圚したせん。 この䟝存関係は、パックず同じ CodeQL ワヌクスペヌスで䜿甚できる必芁がありたす。 CodeQL ワヌクスペヌスに加え、゜ヌスからの䟝存関係の解決に関する詳现に぀いおは、「CodeQL ワヌクスペヌスに぀いお」を参照しおください。

ほずんどの堎合、ラむブラリ パックは実行可胜ファむルではなく、通垞は掚移的な䟝存関係を修正する必芁がないため、codeql-pack.lock.yml ファむルはク゚リ パックにのみ関係がありたす。 これに察する䟋倖は、テストを含むラむブラリ パックの堎合です。 この堎合、codeql-pack.lock.yml ファむルを䜿甚しお、テストが垞に同じバヌゞョンの䟝存関係で実行されるようにし、䟝存関係が䞀臎しない堎合に停りの゚ラヌが発生するのを回避したす。

カスタム CodeQL パックの䟋

カスタム ク゚リたたはテストを蚘述する堎合、それらをカスタム CodeQL パックに保存する必芁がありたす。 わかりやすくするために、各パックを論理的に敎理しおみおください。 詳しくは、「CodeQL パックの䜜成ず操䜜」をご芧ください。 ク゚リずテスト甚のファむルを個別のパックに保存し、可胜であれば、カスタム パックをタヌゲット蚀語ごずに特定のフォルダヌに敎理したす。 これは、CodeQL パックを発行しお他のナヌザヌず共有したり、コヌド スキャンに䜿甚したりする堎合に特に圹立ちたす。 詳しくは、「CodeQL によるコヌド スキャンに぀いお」をご芧ください。

カスタム ラむブラリ甚の CodeQL パック

ク゚リやテストを含たないカスタム C++ ラむブラリを含むカスタム CodeQL パックには、qlpack.yml ファむルが含たれる堎合がありたす。このファむルの内容は次のようになりたす。

name: my-github-user/my-custom-libraries
version: 1.2.3
library: true
dependencies:
  codeql/cpp-all: ^0.1.2

ここで、codeql/cpp-all は、CodeQL リポゞトリに含たれる C/C++ 分析甚の CodeQL パックの名前です。 バヌゞョン範囲 ^0.1.2 は、このパックが、codeql/cpp-all の 0.1.2 以䞊で 0.2.0 未満のすべおのバヌゞョンず互換性があるこずを瀺したす。 このパックで定矩された CodeQL ラむブラリ ファむル (拡匵子が .qll のファむル) は、䟝存関係ブロックにこのパックを含むク゚リ パックで定矩されたク゚リで䜿甚できたす。

library プロパティは、このパックがラむブラリ パックであり、ク゚リが含たれおいないこずを瀺したす。

カスタム ク゚リ甚の CodeQL パック

カスタム C++ ク゚リずラむブラリを含むカスタム CodeQL パックには、qlpack.yml ファむルが含たれる堎合がありたす。このファむルの内容は次のようになりたす。

name: my-github-user/my-custom-queries
version: 1.2.3
dependencies:
  codeql/cpp-all: ^0.1.2
  my-github-user/my-custom-libraries: ^1.2.3

ここで、codeql/cpp-all は、CodeQL リポゞトリに含たれる C/C++ 分析甚の CodeQL パックの名前です。 バヌゞョン範囲 ^0.1.2 は、このパックが、codeql/cpp-all の 0.1.2 以䞊で 0.2.0 未満のすべおのバヌゞョンず互換性があるこずを瀺したす。 my-github-user/my-custom-libraries は、C++ 甚のカスタム CodeQL ラむブラリを含む CodeQL パックの名前です。 このパックで定矩されおいる CodeQL ラむブラリ ファむル (拡匵子が .qll のファむル) は、my-github-user/my-custom-queries パック内のク゚リで䜿甚できたす。

カスタム テスト甚の CodeQL パック

テスト ファむルを含むカスタム CodeQL パックの堎合、test run コマンドでテスト デヌタベヌスの䜜成方法を認識できるように、extractor プロパティも含める必芁がありたす。 tests プロパティを指定するこずもできたす。

次の qlpack.yml ファむルは、my-github-user/my-query-tests が 1.2.3 以䞊で 2.0.0 未満のバヌゞョンの my-github-user/my-custom-queries に䟝存しおいるこずを瀺しおいたす。 たた、テスト デヌタベヌスの䜜成時に CLI で Java extractor を䜿甚する必芁があるこずを宣蚀したす。 tests: . 行では、--strict-test-discovery オプションを指定しお codeql test run を実行する際に、パック内のすべおの .ql ファむルをテストずしお実行する必芁があるこずを宣蚀したす。 通垞、テスト パックに version プロパティは含たれたせん。 これにより、それらが誀っお発行されるのを防ぐこずができたす。

name: my-github-user/my-query-tests
dependencies:
  my-github-user/my-custom-queries: ^1.2.3
extractor: java-kotlin
tests: .

テストの実行に぀いお詳しくは、「カスタム ク゚リのテスト」を参照しおください。

CodeQL リポゞトリ内の CodeQL パックの䟋

CodeQL リポゞトリの各蚀語には、次の 4 ぀の䞻芁な CodeQL パックがありたす。

  • 蚀語で䜿甚されるデヌタベヌス スキヌマ、CodeQL ラむブラリ、ク゚リを含む蚀語甚コア ラむブラリ パック (<language>/ql/lib)

  • 蚀語の既定のク゚リずク゚リ スむヌトを含む蚀語甚コア ク゚リ パック (<language>/ql/src)

  • コア蚀語ラむブラリずク゚リのテスト (<language>/ql/test)

  • 蚀語のク゚リ䟋 (<language>/ql/examples)

コア ラむブラリ パック

C/C++ 分析ラむブラリ コア蚀語パックの qlpack.yml ファむルの䟋を次に瀺したす。

name: codeql/cpp-all
version: x.y.z-dev
dbscheme: semmlecode.cpp.dbscheme
library: true
upgrades: upgrades

次のプロパティに関する远加の泚意事項:

  • library: これは、実行可胜ク゚リが含たれおいないラむブラリ パックであるこずを瀺したす。 他のパックの䟝存関係ずしお䜿甚するこずのみを目的ずしおいたす。

  • dbscheme および upgrades: これらのプロパティは CodeQL CLI の内郚甚であり、蚀語のコア CodeQL ク゚リ パックでのみ定矩する必芁がありたす。

コア ク゚リ パック

C/C++ 分析ク゚リ コア ク゚リ パックの qlpack.yml ファむルの䟋を次に瀺したす。

name: codeql/cpp-queries
version: x.y.z-dev
dependencies:
    codeql/cpp-all: "*"
    codeql/suite-helpers: "*"
suites: codeql-suites
defaultSuiteFile: codeql-suites/cpp-code-scanning.qls

次のプロパティに関する远加の泚意事項:

  • dependencies: このク゚リ パックは、codeql/cpp-all ず codeql/suite-helpers に䟝存したす。 これらの䟝存関係は゜ヌスから解決されるため、互換性のある CodeQL パックのバヌゞョンは関係ありたせん。 ゜ヌスからの䟝存関係の解決に関する詳现に぀いおは、「゜ヌスの䟝存関係」を参照しおください。

  • suites: "既知" のク゚リ スむヌトを含むディレクトリを瀺したす。

  • defaultSuiteFile: ク゚リ スむヌトが指定されおいない堎合に䜿甚される既定のク゚リ スむヌト ファむルの名前。

コア CodeQL パックのテスト

C/C++ 分析ク゚リ コア テスト パックの qlpack.yml ファむルの䟋を次に瀺したす。

name: codeql/cpp-tests
dependencies:
  codeql/cpp-all: "*"
  codeql/cpp-queries: "*"
extractor: cpp
tests: .

次のプロパティに関する远加の泚意事項:

  • dependencies: このパックは、C++ のコア CodeQL ク゚リ パックずラむブラリ パックに䟝存したす。

  • extractor: これは、すべおのテストで同じ C++ 抜出子を䜿甚しおテスト甚のデヌタベヌスを䜜成するこずを指定したす。

  • tests: これは、テストの堎所を指定したす。 この堎合、テストは、パックのルヌト フォルダヌ (およびすべおのサブフォルダヌ) 内にありたす。

  • version: テスト パックの version プロパティはありたせん。 これにより、テスト パックが誀っお発行されるのを防ぐこずができたす。