{"meta":{"title":"关于 CodeQL CLI","intro":"可以使用 CodeQL CLI 本地运行软件项目中的 CodeQL 流程，或者生成 code scanning 结果并上传到 GitHub。","product":"安全性和代码质量","breadcrumbs":[{"href":"/zh/enterprise-cloud@latest/code-security","title":"安全性和代码质量"},{"href":"/zh/enterprise-cloud@latest/code-security/concepts","title":"Concepts"},{"href":"/zh/enterprise-cloud@latest/code-security/concepts/code-scanning","title":"代码扫描"},{"href":"/zh/enterprise-cloud@latest/code-security/concepts/code-scanning/codeql","title":"CodeQL"},{"href":"/zh/enterprise-cloud@latest/code-security/concepts/code-scanning/codeql/about-the-codeql-cli","title":"CodeQL命令行界面 (CLI)"}],"documentType":"article"},"body":"# 关于 CodeQL CLI\n\n可以使用 CodeQL CLI 本地运行软件项目中的 CodeQL 流程，或者生成 code scanning 结果并上传到 GitHub。\n\n软件开发人员和安全研究人员可以使用 CodeQL 分析来保护其代码。 有关 CodeQL 的详细信息，请参阅“[关于使用 CodeQL 进行代码扫描](/zh/enterprise-cloud@latest/code-security/code-scanning/introduction-to-code-scanning/about-code-scanning-with-codeql#about-codeql)”。\n\nCodeQL CLI 是可用于分析代码的独立代码行工具。 其主要用途是生成代码库的数据库表示形式，即 CodeQL 数据库。 数据库准备就绪后，你可以进行交互式查询，或者运行一系列查询以生成一组 SARIF 格式的结果，然后将结果上传到 GitHub。\n\n可以使用 CodeQL 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## 关于将 CodeQL CLI 用于 code scanning\n\n可以使用 CodeQL CLI 在第三方持续集成 (CI) 系统中处理的代码上运行 code scanning。 Code scanning 是一项功能，可用于分析 GitHub 仓库中的代码，以查找安全漏洞和编码错误。 分析标识的任何问题都显示在存储库中。 有关将代码扫描与外部 CI 系统结合使用的概述，请参阅 [在现有 CI 系统上使用代码扫描](/zh/enterprise-cloud@latest/code-security/code-scanning/integrating-with-code-scanning/using-code-scanning-with-your-existing-ci-system)。 有关运行 CodeQL 分析的建议规范（RAM、CPU 核心和磁盘），请参阅“[推荐用于运行 CodeQL 的硬件资源](/zh/enterprise-cloud@latest/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 扫描代码。 有关详细信息，请参阅 Microsoft Learn 中的“[配置代码扫描的默认设置](/zh/enterprise-cloud@latest/code-security/code-scanning/enabling-code-scanning/configuring-default-setup-for-code-scanning)”或[配置 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 进行代码扫描](/zh/enterprise-cloud@latest/code-security/code-scanning/introduction-to-code-scanning/about-code-scanning-with-codeql)”。\n\n> \\[!NOTE]\n>\n> * CodeQL CLI 可免费用于 GitHub.com 上维护的公共仓库，也可用于具有 GitHub Code Security 许可证的客户所拥有的专用仓库。 有关信息，请参阅 [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\n如果选择直接运行 CodeQL CLI，则首先必须在本地安装 CodeQL CLI。 如果计划将 CodeQL CLI 与外部 CI 系统配合使用，则需要使 CodeQL CLI 可供 CI 系统中的服务器使用。\n\n设置 CodeQL CLI 后，可以使用三个不同的命令生成结果并将其上传到 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. 使用 `database analyze` 运行查询以分析每个 CodeQL 数据库，并将结果汇总到 SARIF 文件中。 有关详细信息，请参阅“[使用 CodeQL 查询分析代码](/zh/enterprise-cloud@latest/code-security/codeql-cli/getting-started-with-the-codeql-cli/analyzing-your-code-with-codeql-queries)”。\n3. ```\n          `github upload-results` 将生成的 SARIF 文件上传到 GitHub，在那里结果会与分支或拉取请求匹配，并显示为 code scanning 警报。 有关详细信息，请参阅“[AUTOTITLE](/code-security/codeql-cli/getting-started-with-the-codeql-cli/uploading-codeql-analysis-results-to-github)”。\n   ```\n\n> \\[!NOTE]\n> 上传 SARIF 数据以显示为 GitHub 中的 code scanning 结果适用于启用了 GitHub Code Security 的组织拥有的仓库和 GitHub.com 上的公共仓库。 有关详细信息，请参阅“[管理存储库的安全和分析设置](/zh/enterprise-cloud@latest/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 的完整系列命令的示例，你可以使用两种支持的语言分析代码库，然后将结果上传到 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 来设置提取程序配置选项，从而自定义提取程序的行为。 请参阅“[抽取器选项](/zh/enterprise-cloud@latest/code-security/reference/code-scanning/codeql/codeql-cli/extractor-options)”。\n\n## 关于 GitHub CodeQL 许可证\n\n许可证声明：如果没有 GitHub Code Security 许可证，则通过安装此产品，即表示你同意 [GitHub CodeQL 条款和条件](https://github.com/github/codeql-cli-binaries/blob/main/LICENSE.md)\\*\\*\\*\\*。\n\n有关如何免费试用 GitHub Advanced Security 的信息，请参阅 [安装 GitHub Advanced Security 试用版](/zh/enterprise-cloud@latest/billing/managing-billing-for-your-products/managing-billing-for-github-advanced-security/setting-up-a-trial-of-github-advanced-security)。\n\n## 关于 CodeQL CLI 数据库捆绑包\n\nCodeQL CLI 数据库捆绑命令可用于创建 CodeQL 数据库的可重定位存档。\n\n数据库捆绑包的副本可用于与团队成员或 GitHub 支持 共享故障排除信息。 请参阅“[创建 CodeQL CLI 数据库捆绑包](/zh/enterprise-cloud@latest/code-security/how-tos/scan-code-for-vulnerabilities/scan-from-the-command-line/creating-database-bundle-for-troubleshooting)”。\n\n## 入门指南\n\n有关入门的最简单方法，请参阅 [设置 CodeQL CLI](/zh/enterprise-cloud@latest/code-security/codeql-cli/getting-started-with-the-codeql-cli/setting-up-the-codeql-cli)。\n\n如果需要，可以使用更高级的设置选项。 例如，如果你：\n\n* 如果要参与开放源代码共享的 CodeQL 查询，建议直接使用 CodeQL 源代码。 请参阅“[查看 CodeQL CLI 源代码](/zh/enterprise-cloud@latest/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 数据库](/zh/enterprise-cloud@latest/code-security/how-tos/scan-code-for-vulnerabilities/scan-from-the-command-line/download-databases)”。"}