ドキュメントには頻繁に更新が加えられ、その都度公開されています。本ページの翻訳はまだ未完成な部分があることをご了承ください。最新の情報については、英語のドキュメンテーションをご参照ください。本ページの翻訳に問題がある場合はこちらまでご連絡ください。

CIシステムへのCodeQL CLIのインストール

サードパーティの継続的インテグレーションシステムにCodeQL CLIをインストールし、CodeQL code scanningを実行するために使用できます。

Code scanning is available for all public repositories, and for private repositories owned by organizations where GitHub Advanced Security is enabled. 詳しい情報については、「GitHub Advanced Security について」を参照してください。

code scanningのためのCodeQL CLIの利用について

CodeQL CLI を使用して、サードパーティ継続的インテグレーション (CI) システムで処理しているコード上で code scanning を実行できます。 Code scanning は、開発者が GitHub リポジトリ内のコードを分析して、セキュリティの脆弱性とコーディングエラーを見つけることができる機能です。 分析によって特定されたすべての問題はGitHubに表示されます。 For information, see "About code scanning with CodeQL."

CodeQL CLIは、コードの分析に利用できるスタンドアローンの製品です。 その主な目的は、コードベースのデータベース表現であるCodeQLデータベースを生成することです。 データベースの準備ができれば、それに対してインタラクティブにクエリを実行したり、SARIFフォーマットで結果セットを生成するためのクエリのスイートを実行して、結果をGitHub.comにアップロードしたりできます。

あるいは、GitHub Actionsを使ってGitHub内でcode scanningを実行することもできます。 Actionsを使ったcode scanningに関する情報については「リポジトリでのcode scanningのセットアップ」を参照してください。 CIシステムでのオプションの概要については「CIシステムでのCodeQL code scanningについて」を参照してください。

ノート:GitHub.com上で管理されるパブリックリポジトリでのCodeQL CLIの使用は無料であり、Advanced Securityライセンスを持つお客様が所有するプライベートリポジトリ上で使用できます。 詳細については「GitHub CodeQLの利用規約」及び「CodeQL CLI」を参照してください。

CodeQL CLI をダウンロードする

https://github.com/github/codeql-action/releases からCodeQLバンドルをダウンロードしてください。 このバンドルには以下が含まれます。

  • CodeQL CLI製品
  • https://github.com/github/codeql からのクエリとライブラリの互換性のあるバージョン
  • バンドルに含まれるすべてのクエリのプリコンパイル済みバージョン

CodeQLバンドルは互換性を保証し、CodeQL CLIを個別にダウンロードし、CodeQLクエリをチェックアウトするのに比べてはるかに優れたパフォーマンスが得られるので、常にこのバンドルを利用すべきです。 特定の1つのプラットフォームでのみCLIを実行するなら、適切なcodeql-bundle-PLATFORM.tar.gzファイルをダウンロードしてください。 あるいは、サポートされているすべてのプラットフォームのCLIが含まれているcodeql-bundle.tar.gzをダウンロードできます。

Note: The CodeQL package management functionality, including CodeQL packs, is currently in beta and subject to change.

CIシステムでのCodeQL CLIのセットアップ

CodeQL code scanning分析を実行したいすべてのCIサーバーで、CodeQL CLIバンドルの完全な内容が利用できるようにしなければなりません。 たとえば、内部的な中央の場所からバンドルをコピーして展開するよう、各サーバーを設定することになるでしょう。 あるいはREST APIを使ってバンドルをGitHubから直接取得し、クエリに対する最新の改善を活用できるようにすることもできます。 CodeQL CLIのアップデートは、2-3週ごとにリリースされます。 例:

$ wget https://github.com/github/codeql-action/releases/latest/download/codeql-bundle-linux64.tar.gz
$ tar -xvzf ../codeql-bundle-linux64.tar.gz

CodeQL CLIバンドルを展開したら、サーバー上でcodeqlの実行可能ファイルを実行できます。

  • /<extraction-root>/codeql/codeqlを実行。ここで<extraction-root>はCodeQL CLIバンドルを展開したフォルダー。
  • /<extraction-root>/codeqlPATHに追加して、codeqlとするだけで実行できるようにする。

CodeQL CLIのセットアップのテスト

CodeQL CLIバンドルを展開したら、CLIがデータベースを作成して分析できるよう正しくセットアップされたことを、以下のコマンドを実行して確認できます。

  • /<extraction-root>/codeqlPATH上にあるならcodeql resolve qlpacks
  • そうでない場合は/<extraction-root>/codeql/codeql resolve qlpacks

成功した出力からの抜粋:

codeql-cpp (/<extraction-root>/codeql/qlpacks/codeql-cpp)
codeql-cpp-examples (/<extraction-root>/codeql/qlpacks/codeql-cpp-examples)
codeql-cpp-upgrades (/<extraction-root>/codeql/qlpacks/codeql-cpp-upgrades)
codeql-csharp (/<extraction-root>/codeql/qlpacks/codeql-csharp)
codeql-csharp-examples (/<extraction-root>/codeql/qlpacks/codeql-csharp-examples)
codeql-csharp-upgrades (/<extraction-root>/codeql/qlpacks/codeql-csharp-upgrades)
codeql-go (/<extraction-root>/codeql/qlpacks/codeql-go)
codeql-go-examples (/<extraction-root>/codeql/qlpacks/codeql-go-examples)
codeql-go-upgrades (/<extraction-root>/codeql/qlpacks/codeql-go-upgrades)
codeql-java (/<extraction-root>/codeql/qlpacks/codeql-java)
codeql-java-examples (/<extraction-root>/codeql/qlpacks/codeql-java-examples)
codeql-java-upgrades (/<extraction-root>/codeql/qlpacks/codeql-java-upgrades)
codeql-javascript (/<extraction-root>/codeql/qlpacks/codeql-javascript)
codeql-javascript-examples (/<extraction-root>/codeql/qlpacks/codeql-javascript-examples)
codeql-javascript-upgrades (/<extraction-root>/codeql/qlpacks/codeql-javascript-upgrades)
codeql-python (/<extraction-root>/codeql/qlpacks/codeql-python)
codeql-python-examples (/<extraction-root>/codeql/qlpacks/codeql-python-examples)
codeql-python-upgrades (/<extraction-root>/codeql/qlpacks/codeql-python-upgrades)
...

出力が期待した言語を含んでいるか、そしてqlpackファイルのディレクトリの場所が正しいかもチェックする必要があります。 github/codeql.をチェックアウトして使っているのでなければ、この場所は展開されたCodeQL CLIバンドル内であるべきで、これは上では<extraction root>で示されています。 CodeQL CLIが期待された言語のqlpackの場所を知ることができないなら、CodeQL CLIのスタンドアローンのコピーではなくCodeQLバンドルをダウンロードしたかを確認してください。

GitHubでの認証のためのトークンの生成

それぞれのCIサーバーには、結果をGitHubにアップロードするために使うGitHub AppもしくはCodeQL CLIのための個人アクセストークンが必要です。 アクセストークンもしくはsecurity_events書き込み権限を持つGitHub Appを使わなければなりません。 CIサーバーが既にGitHubからのリポジトリのチェックアウトのためのこのスコープを持つトークンを使っているなら、CodeQL CLIに同じトークンを使わせることができるかもしれません。 そうでない場合は、security_events書き込み権限を持つ新しいトークンを作成し、これをCIシステムのシークレットストアに追加しなければなりません。 詳細は「GitHub Apps をビルドする」および「個人アクセストークンを作成する」を参照してください。

次のステップ

これでCIシステムでCodeQL分析を実行し、結果を生成し、それらをGitHubにアップロードする準備ができました。結果はそこでブランチもしくはPull Requestとマッチさせられ、code scanningアラートとして表示されます。 詳細な情報については「CIシステムでのCodeQL CLIの設定」を参照してください。

このドキュメントは役立ちましたか?

プライバシーポリシー

これらのドキュメントを素晴らしいものにするのを手伝ってください!

GitHubのすべてのドキュメントはオープンソースです。間違っていたり、はっきりしないところがありましたか?Pull Requestをお送りください。

コントリビューションを行う

OR, コントリビューションの方法を学んでください。

問題がまだ解決していませんか?