Skip to main content
We publish frequent updates to our documentation, and translation of this page may still be in progress. For the most current information, please visit the English documentation.

关于使用 CodeQL 进行代码扫描

可以使用 CodeQL 来识别代码中的漏洞和错误。 结果在 GitHub 中显示为 code scanning 警报。

Code scanning 可用于 GitHub Enterprise Server 中的组织拥有的存储库。 此功能需要 GitHub Advanced Security 的许可证。 有关详细信息,请参阅“关于 GitHub Advanced Security”。

注意:网站管理员必须为 your GitHub Enterprise Server instance 启用 code scanning,然后你才能使用此功能。 有关详细信息,请参阅“为设备配置 code scanning”。

关于使用 CodeQL 进行 code scanning

CodeQL 是 GitHub 开发的代码分析引擎,用于自动执行安全检查。 可使用 CodeQL 分析代码,并将结果显示为 code scanning 警报。

对 code scanning 使用 CodeQL 有两种主要方法:

在 GitHub Enterprise Server 3.7 上, CodeQL 操作默认使用 CodeQL CLI 版本 2.10.5。 如果在外部 CI 系统中运行分析,建议使用 CodeQL CLI 的相同版本。

关于 CodeQL

CodeQL 将代码视为数据,允许您在代码中查找潜在漏洞,比传统的静态分析工具更可靠。

  1. 生成 CodeQL 数据库来代表您的代码库。
  2. 然后,对该数据库运行 CodeQL 查询,以确定代码库中的问题。
  3. 将 CodeQL 与 code scanning一起使用时,查询结果在 GitHub Enterprise Server 中显示为 code scanning 警报。

CodeQL 支持编译的语言和解释的语言,并且可以在使用支持的语言编写的代码中发现漏洞和错误。

  • C/C++
  • C#
  • Go
  • Java
  • JavaScript/TypeScript
  • Python
  • Ruby

注意:

  • 用于 Ruby 的 CodeQL 分析目前为 beta 版。 在 beta 版中,Ruby 的分析将不如其他语言的 CodeQL 分析全面。
  • 使用 javascript 分析用 JavaScript、TypeScript 或两者编写的代码。

有关详细信息,请参阅 CodeQL 网站上的文档:“支持的语言和框架”。

关于 CodeQL 查询

GitHub 专家、安全研究人员和社区贡献者编写和维护用于 code scanning 的默认 CodeQL 查询。 查询会定期更新,以改进分析并减少任何误报结果。 这些查询是开源查询,因此你可以在 github/codeql 存储库中查看和参与它们。 有关详细信息,请参阅 CodeQL 网站上的 CodeQL。 你也可以编写自己的查询。 有关详细信息,请参阅 CodeQL 文档中的“关于 CodeQL 查询”。

如果使用高级设置或外部 CI 系统扫描代码,则可以在分析过程中运行其他查询。 这些查询必须属于已发布的 CodeQL 查询包(beta 版)或存储库中的 CodeQL 包。 与传统的 QL 包相比,CodeQL 包(beta 版)具有以下优势:

  • 当 CodeQL 查询包(测试版)发布到 GitHub Container registry 时,查询所需的所有可传递依赖项和编译缓存都包含在包中。 这可以提高性能,并确保在包中运行查询每次都会提供相同的结果,直到升级到新版本的包或 CLI。
  • QL 包不包含可传递的依赖项,因此包中的查询只能依赖于标准库(即,查询中的 import LANGUAGE 语句引用的库),或查询所在的 QL 包中的库。
  • CodeQL 查询包(beta 版)可从多个 GitHub 容器注册表下载。 有关详细信息,请参阅“自定义 code scanning”。

有关详细信息,请参阅 CodeQL 文档中的“关于 CodeQL 包”。