{"meta":{"title":"CodeQL CLI について","intro":"CodeQL CLI を使うと、ソフトウェア プロジェクトで CodeQL プロセスをローカル実行したり、code scanning の結果を生成し、GitHub にアップロードしたりできます。","product":"セキュリティとコードの品質","breadcrumbs":[{"href":"/ja/code-security","title":"セキュリティとコードの品質"},{"href":"/ja/code-security/concepts","title":"Concepts"},{"href":"/ja/code-security/concepts/code-scanning","title":"コード スキャン"},{"href":"/ja/code-security/concepts/code-scanning/codeql","title":"CodeQL"},{"href":"/ja/code-security/concepts/code-scanning/codeql/about-the-codeql-cli","title":"CodeQL コマンドラインインターフェース (CLI)"}],"documentType":"article"},"body":"# CodeQL CLI について\n\nCodeQL CLI を使うと、ソフトウェア プロジェクトで CodeQL プロセスをローカル実行したり、code scanning の結果を生成し、GitHub にアップロードしたりできます。\n\nソフトウェア開発者とセキュリティ研究者は、CodeQL 分析を使ってコードをセキュリティ保護できます。 CodeQL の詳細については、「[CodeQL によるコード スキャンについて](/ja/code-security/code-scanning/introduction-to-code-scanning/about-code-scanning-with-codeql#about-codeql)」を参照してください。\n\nCodeQL CLI は、コードの分析に利用できるスタンドアロンのコマンドライン ツールです。 その主な目的は、コードベースのデータベース表現であるCodeQLデータベースを生成することです。 データベースの準備ができたら、それに対して対話形式でクエリを実行することや、一連のクエリを実行して SARIF 形式で結果セットを生成し、結果を GitHub にアップロードすることができます。\n\nCodeQL CLI を使って次のことができます。\n\n* GitHub エンジニアとオープンソース コミュニティによって提供されるクエリを使って、CodeQL の分析を実行します\n* GitHub に表示する目的でアップロードできるコード スキャン アラートを生成する\n* CodeQL 用のデータベースを作成し、Visual Studio Code の拡張機能として CodeQL で使用します。\n* 独自の分析で使うカスタム CodeQL クエリを開発してテストします\n\nCodeQL CLI では、次を分析できます。\n\n* JavaScript や Python などの動的言語。\n* コンパイル型言語（例: C/C++、C#、Go、Java、Kotlin、Rust、、Swift）\n* 複数言語を組み合わせて書かれたコードベース。\n\n## code scanningのためのCodeQL CLIの利用について\n\nCodeQL CLI を使用すると、サードパーティの継続的インテグレーション (CI) システム内で処理するコードに code scanning を実行できます。 Code scanning は、GitHub リポジトリ内のコードを分析して、セキュリティの脆弱性とコーディング エラーを見つけることができる機能です。 分析によって特定された問題は、リポジトリに表示されます。 外部 CI システムでのコード スキャンの使用の概要については、「[既存の CI システムでコード スキャンを使用する](/ja/code-security/code-scanning/integrating-with-code-scanning/using-code-scanning-with-your-existing-ci-system)」を参照してください。 CodeQL 分析を実行するための推奨仕様 (RAM、CPU コア数、ディスク) については、「[CodeQL を実行するための推奨ハードウェア リソース](/ja/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/recommended-hardware-resources-for-running-codeql)」を参照してください。\n\nまたは、GitHub Actions または Azure DevOps パイプラインを使用して、 CodeQL CLI を使用してコードをスキャンすることもできます。 詳細については、「[コード スキャンの既定セットアップの構成](/ja/code-security/code-scanning/enabling-code-scanning/configuring-default-setup-for-code-scanning)」または Microsoft Learn で「[GitHub Advanced Security for Azure DevOps を構成する](https://learn.microsoft.com/en-us/azure/devops/repos/security/configure-github-advanced-security-features)」を参照してください。\n\nコード スキャンに CodeQL 分析を使用するためのすべてのオプションの概要については、「[CodeQL によるコード スキャンについて](/ja/code-security/code-scanning/introduction-to-code-scanning/about-code-scanning-with-codeql)」を参照してください。\n\n> \\[!NOTE]\n>\n> * CodeQL CLI は、パブリック リポジトリ上で無料で使うことができます。 CodeQL CLI は、GitHub Team または GitHub Enterprise Cloud を使い、GitHub Code Security のライセンスを持っている organization によって所有されるプライベート リポジトリでも使用できます。 詳しくは、「[GitHub CodeQL の使用条件](https://securitylab.github.com/tools/codeql/license)」と「[CodeQL CLI](https://codeql.github.com/docs/codeql-cli/)」をご覧ください。\n> * CodeQL CLI は現在、glibc 以外の Linux ディストリビューション ((musl ベースの) Alpine Linux など) との互換性がありません。\n\n## CodeQL CLI を使用したコード スキャン結果の生成について\n\nCodeQL CLI を直接実行する場合、まず、CodeQL CLI をローカルにインストールする必要があります。 外部 CI システムで CodeQL CLI を使用する予定の場合は、CI システム内のサーバーで CodeQL CLI を使用できるようにする必要があります。\n\nCodeQL CLI が設定されたら、3 つの異なるコマンドを使って結果を生成し、それを GitHub にアップロードできます。\n\n1. ```\n          `database create` では、リポジトリのサポートされている各プログラミング言語の階層構造を表すために CodeQL データベースを作成します。 詳しくは、「[AUTOTITLE](/code-security/codeql-cli/getting-started-with-the-codeql-cli/preparing-your-code-for-codeql-analysis)」をご覧ください。\n   ```\n2. ```\n          `database analyze` では、クエリを実行して各 CodeQL データベースを分析し、結果を SARIF ファイルにまとめます。 詳しくは、「[AUTOTITLE](/code-security/codeql-cli/getting-started-with-the-codeql-cli/analyzing-your-code-with-codeql-queries)」をご覧ください。\n   ```\n3. ```\n          `github upload-results` を使うと、結果の SARIF ファイルを GitHub にアップロードできます。そこで結果はブランチまたは pull request と照合され、code scanning アラートとして表示されます。 詳しくは、「[AUTOTITLE](/code-security/codeql-cli/getting-started-with-the-codeql-cli/uploading-codeql-analysis-results-to-github)」をご覧ください。\n   ```\n\n> \\[!NOTE]\n> GitHub で code scanning の結果として表示する SARIF データのアップロードは、GitHub Code Security が有効になっている organization 所有のリポジトリと、GitHub.com 上のパブリック リポジトリでサポートされます。 詳しくは、「[リポジトリのセキュリティと分析設定を管理する](/ja/repositories/managing-your-repositorys-settings-and-features/enabling-features-for-your-repository/managing-security-and-analysis-settings-for-your-repository)」をご覧ください。\n\n### CodeQL分析のためのCIの設定例\n\nこれは、CodeQL CLI の一連のコマンドの例です。これを使用して、サポートされている 2 つの言語でコードベースを分析し、その結果を GitHub にアップロードできます。\n\n```shell\n# Create CodeQL databases for Java and Python in the 'codeql-dbs' directory\n# Call the normal build script for the codebase: 'myBuildScript'\n\ncodeql database create codeql-dbs --source-root=src \\\n    --db-cluster --language=java,python --command=./myBuildScript\n\n# Analyze the CodeQL database for Java, 'codeql-dbs/java'\n# Tag the data as 'java' results and store in: 'java-results.sarif'\n\ncodeql database analyze codeql-dbs/java java-code-scanning.qls \\\n    --format=sarif-latest --sarif-category=java --output=java-results.sarif\n\n# Analyze the CodeQL database for Python, 'codeql-dbs/python'\n# Tag the data as 'python' results and store in: 'python-results.sarif'\n\ncodeql database analyze codeql-dbs/python python-code-scanning.qls \\\n    --format=sarif-latest --sarif-category=python --output=python-results.sarif\n\n# Upload the SARIF file with the Java results: 'java-results.sarif'\n# The GitHub App or personal access token created for authentication\n# with GitHub's REST API is available in the `GITHUB_TOKEN` environment variable.\n\ncodeql github upload-results \\\n    --repository=my-org/example-repo \\\n    --ref=refs/heads/main --commit=deb275d2d5fe9a522a0b7bd8b6b6a1c939552718 \\\n    --sarif=java-results.sarif\n\n# Upload the SARIF file with the Python results: 'python-results.sarif'\n\ncodeql github upload-results \\\n    --repository=my-org/example-repo \\\n    --ref=refs/heads/main --commit=deb275d2d5fe9a522a0b7bd8b6b6a1c939552718 \\\n    --sarif=python-results.sarif\n```\n\n### データベースの抽出\n\nCodeQL CLI では、エクストラクターと呼ばれる特別なプログラムを使って、ソフトウェア システムのソース コードからクエリを実行できるデータベースに情報を抽出します。 エクストラクターの動作をカスタマイズするには、CodeQL CLI を使ってエクストラクターの構成オプションを設定します。 「[エクストラクターのオプション](/ja/code-security/reference/code-scanning/codeql/codeql-cli/extractor-options)」を参照してください。\n\n## GitHub CodeQL のライセンスについて\n\n**ライセンスに関する注意:** GitHub Code Security のライセンスをお持ちでない場合、この製品をインストールすると、[GitHubCodeQL の使用条件](https://github.com/github/codeql-cli-binaries/blob/main/LICENSE.md)に同意したものと見なされます。\n\nGitHub Advanced Security で GitHub Enterprise を無料で試用する方法については、GitHub Enterprise Cloud ドキュメントの「[GitHub Enterprise Cloud の試用版の設定](/ja/enterprise-cloud@latest/admin/overview/setting-up-a-trial-of-github-enterprise-cloud)」と「[GitHub Advanced Security の試用版を設定する](/ja/enterprise-cloud@latest/billing/managing-billing-for-your-products/managing-billing-for-github-advanced-security/setting-up-a-trial-of-github-advanced-security#setting-up-your-trial-of-github-advanced-security)」を参照してください。\n\n## CodeQL CLI データベースバンドルについて\n\nCodeQL CLI データベース バンドル コマンドを使用すると、CodeQL データベースの再配置可能なアーカイブを作成できます。\n\nデータベース バンドルのコピーを使用すると、チーム メンバーまたは GitHub のサポート にトラブルシューティング情報を共有できます。 「[CodeQL CLI データベース バンドルを作成する](/ja/code-security/how-tos/scan-code-for-vulnerabilities/scan-from-the-command-line/creating-database-bundle-for-troubleshooting)」を参照してください。\n\n## 作業の開始\n\n最も簡単な作業を開始する方法については、 [CodeQL CLI を設定する](/ja/code-security/codeql-cli/getting-started-with-the-codeql-cli/setting-up-the-codeql-cli) を参照してください。\n\n必要に応じて、より高度なセットアップ オプションを使用できます。 たとえば、次の場合です。\n\n* オープンソースの共有 CodeQL クエリに貢献したい場合、および CodeQL ソース コードを直接操作したい場合。 「[CodeQL CLI ソース コードの取得](/ja/code-security/how-tos/scan-code-for-vulnerabilities/scan-from-the-command-line/check-out-source-code)」を参照してください。\n* 複数のバージョンの CodeQL CLI を並行してインストールする必要がある場合。 たとえば、あるコードベースで特定のバージョンが必要で、別のコードベースが最新バージョンを使用する場合などです。 各バージョンをダウンロードし、両方の CLI アーカイブを同じ親ディレクトリにアンパックできます。\n* クエリを調査または開発しており、GitHub.com からデータベースをダウンロードしたいと考えています。 「[GitHubから CodeQL データベースをダウンロードする](/ja/code-security/how-tos/scan-code-for-vulnerabilities/scan-from-the-command-line/download-databases)」を参照してください。"}