关于使用 CodeQL 进行 code scanning
CodeQL 是 GitHub 开发的代码分析引擎,用于自动执行安全检查。 可使用 CodeQL 分析代码,并将结果显示为 code scanning 警报。
对 code scanning 使用 CodeQL 有两种主要方法:
-
将 CodeQL 工作流程添加到存储库。 这使用 github/codeql-action 运行 CodeQL CLI。 有关详细信息,请参阅“为存储库配置代码扫描”。
-
直接在外部 CI 系统中运行 CodeQL CLI 并将结果上传到 GitHub。 有关详细信息,请参阅“关于 CI 系统中的 CodeQL 代码扫描”。
关于 CodeQL
CodeQL 将代码视为数据,允许您在代码中查找潜在漏洞,比传统的静态分析工具更可靠。
- 生成 CodeQL 数据库来代表您的代码库。
- 然后,对该数据库运行 CodeQL 查询,以确定代码库中的问题。
- 将 CodeQL 与 code scanning一起使用时,查询结果在 GitHub AE 中显示为 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 系统扫描代码,则可以在分析过程中运行其他查询。 要运行的查询必须属于存储库中的 QL 包。 查询只能依赖于标准库(即,查询中的 import LANGUAGE
语句引用的库)或查询所在的 QL 包中的库。