支持的语言和框架¶
查看 CodeQL 最新版本支持的语言、库和框架。
语言和编译器¶
CodeQL CLI 的当前版本 (变更日志, 版本)、CodeQL 库包 (源代码) 和 CodeQL 包 (版本) 支持以下语言和编译器。
| 语言 | 变体 | 编译器 | 扩展 |
|---|---|---|---|
| C/C++ | C89、C99、C11、C17、C++98、C++03、C++11、C++14、C++17、C++20 [1] [2] | Clang(包括 clang-cl [3] 和 armclang)扩展(最高支持 Clang 17.0)、 GNU 扩展(最高支持 GCC 13.2)、 Microsoft 扩展(最高支持 VS 2022)、 Arm Compiler 5 [4] |
.cpp, .c++, .cxx, .hpp, .hh, .h++, .hxx, .c, .cc, .h |
| C# | C# 最高支持 12 | Microsoft Visual Studio 最高支持 2019,.NET 最高支持 4.8、 .NET Core 最高支持 3.1 .NET 5、.NET 6、.NET 7、.NET 8 |
.sln, .csproj, .cs, .cshtml, .xaml |
| Go(又名 Golang) | Go 最高支持 1.22 | Go 1.11 或更新版本 | .go |
| Java | Java 7 到 22 [5] | javac(OpenJDK 和 Oracle JDK)、 Eclipse 编译器 for Java (ECJ) [6] |
.java |
| Kotlin [7] | Kotlin 1.5.0 到 2.0.0_x | kotlinc | .kt |
| JavaScript | ECMAScript 2022 或更低版本 | 不适用 | .js, .jsx, .mjs, .es, .es6, .htm, .html, .xhtm, .xhtml, .vue, .hbs, .ejs, .njk, .json, .yaml, .yml, .raml, .xml [8] |
| Python [9] | 2.7, 3.5, 3.6, 3.7, 3.8, 3.9, 3.10, 3.11, 3.12 | 不适用 | .py |
| Ruby [10] | 最高支持 3.3 | 不适用 | .rb, .erb, .gemspec, Gemfile |
| Swift [11] | Swift 5.4-5.10 | Swift 编译器 | .swift |
| TypeScript [12] | 2.6-5.5 | 标准 TypeScript 编译器 | .ts, .tsx, .mts, .cts |
| [1] | C++20 支持目前处于测试阶段。不支持模块。 |
| [2] | 不支持 Objective-C、Objective-C++、C++/CLI 和 C++/CX。 |
| [3] | 对 clang-cl 编译器的支持处于初步阶段。 |
| [4] | 对 Arm 编译器 (armcc) 的支持处于初步阶段。 |
| [5] | 可以分析在 Java 7 到 22 上执行的构建。分析理解 Java 22 标准语言功能。 |
| [6] | 当构建通过 Maven 编译器插件或 Takari 生命周期插件调用 ECJ 时,支持 ECJ。 |
| [7] | Kotlin 支持目前处于测试阶段。 |
| [8] | JSX 和 Flow 代码、YAML、JSON、HTML 和 XML 文件也可以与 JavaScript 文件一起进行分析。 |
| [9] | 提取器需要 Python 3 才能运行。要分析 Python 2.7,应安装 Python 的两个版本。 |
| [10] | 需要 glibc 2.17。 |
| [11] | Swift 支持目前处于测试阶段。对 Swift 的分析支持需要 macOS 或 Linux。 |
| [12] | 通过在启用 TypeScript 的情况下运行 JavaScript 提取器来执行 TypeScript 分析。这是默认设置。 |
框架和库¶
CodeQL 库和查询包的当前版本 (源代码) 已针对下面列出的库和框架进行明确检查。
提示
如果您对其他库或框架感兴趣,可以扩展分析以涵盖它们。例如,通过扩展数据流库以包含其他库或框架的数据源和接收器。
C 和 C++ 内置支持¶
由 CodeQL 查询包的当前版本 codeql/cpp-queries (变更日志, 源代码) 和 CodeQL 库包 codeql/cpp-all (变更日志, 源代码) 提供。
| 名称 | 类别 |
|---|---|
| Berkeley 套接字 API 库 | 网络通信器 |
| Bloomberg 标准库 | 实用程序库 |
| string.h | 字符串库 |
C# 内置支持¶
由 CodeQL 查询包的当前版本 codeql/csharp-queries (变更日志, 源代码) 和 CodeQL 库包 codeql/csharp-all (变更日志, 源代码) 提供。
| 名称 | 类别 |
|---|---|
| ASP.NET | Web 应用程序框架 |
| ASP.NET Core | Web 应用程序框架 |
| ASP.NET Razor 模板 | Web 应用程序框架 |
| Dapper | 数据库 ORM |
| EntityFramework | 数据库 ORM |
| EntityFramework Core | 数据库 ORM |
| Json.NET | 序列化 |
| NHibernate | 数据库 ORM |
| WinForms | 用户界面 |
Go 内置支持¶
由 CodeQL 查询包的当前版本 codeql/go-queries (变更日志, 源代码) 和 CodeQL 库包 codeql/go-all (变更日志, 源代码) 提供。
| 名称 | 类别 |
|---|---|
| AWS Lambda | 无服务器框架 |
| beego | Web/日志记录/数据库框架 |
| Chi | Web 框架 |
| Couchbase (gocb 和 go-couchbase) | 数据库 |
| Echo | Web 框架 |
| Gin | Web 框架 |
| glog | 日志记录库 |
| go-pg | 数据库 |
| go-restful | Web 应用程序框架 |
| go-sh | 实用程序库 |
| go-spew | 日志记录库 |
| GoKit | 微服务工具包 |
| Gokogiri | XPath 库 |
| golang.org/x/crypto/ssh | 网络通信器 |
| golang.org/x/net/websocket | 网络通信器 |
| goproxy | HTTP 代理库 |
| Gorilla mux | HTTP 请求路由器和调度程序 |
| Gorilla websocket | 网络通信器 |
| GORM | 数据库 |
| GoWebsocket | 网络通信器 |
| goxpath | XPath 库 |
| htmlquery | XPath 库 |
| json-iterator | 序列化 |
| jsonpatch | 序列化 |
| jsonquery | XPath 库 |
| klog | 日志记录库 |
| Logrus | 日志记录库 |
| Macaron | Web 框架 |
| mongo | 数据库 |
| nhooyr.io/websocket | 网络通信器 |
| protobuf | 序列化 |
| Revel | Web 框架 |
| SendGrid | 电子邮件库 |
| sqlx | 数据库 |
| Squirrel | 数据库 |
| ws | 网络通信器 |
| xmlpath | XPath 库 |
| xmlquery | XPath 库 |
| xpath | XPath 库 |
| xpathparser | XPath 库 |
| yaml | 序列化 |
| zap | 日志记录库 |
Java 和 Kotlin 内置支持¶
注意
CodeQL 对 Kotlin 的分析目前处于测试阶段。在测试阶段,Kotlin 代码的分析以及相关文档将不会像其他语言那样全面。
由 CodeQL 查询包的当前版本 codeql/java-queries (变更日志, 源代码) 和 CodeQL 库包 codeql/java-all (变更日志, 源代码) 提供。
| 名称 | 类别 |
|---|---|
| Apache Commons Collections | 数据结构实用程序库 |
| Apache Commons Lang | 实用程序库 |
| Apache HTTP 组件 | 网络通信器 |
| Guava | 实用程序和集合库 |
| Hibernate | 数据库 |
| iBatis / MyBatis | 数据库 |
| Jackson | 序列化 |
| Java 持久性 API (JPA) | 数据库 |
| JaxRS | Jakarta EE API 规范 |
| JDBC | 数据库 |
| JSON-java | 序列化 |
| Kryo 反序列化 | 序列化 |
| Project Lombok | 实用程序库 |
| Protobuf | 序列化 |
| SnakeYaml | 序列化 |
| Spring JDBC | 数据库 |
| Spring MVC | Web 应用程序框架 |
| Struts | Web 应用程序框架 |
| Thrift | RPC 框架 |
| XStream | 序列化 |
JavaScript 和 TypeScript 内置支持¶
由 CodeQL 查询包的当前版本 codeql/javascript-queries (变更日志, 源代码) 和 CodeQL 库包 codeql/javascript-all (变更日志, 源代码) 提供。
| 名称 | 类别 |
|---|---|
| angular(现代版本) | HTML 框架 |
| angular.js(旧版本) | HTML 框架 |
| AWS Lambda | 无服务器框架 |
| axios | 网络通信器 |
| 浏览器 | 运行时环境 |
| EJS | 模板语言 |
| 电子 | 运行时环境 |
| 快递 | 服务器 |
| Fastify | 服务器 |
| 手柄 | 模板语言 |
| Hapi | 服务器 |
| Hogan | 模板语言 |
| jQuery | 实用程序库 |
| Koa | 服务器 |
| lodash | 实用程序库 |
| MongoDB | 数据库 |
| MSSQL | 数据库 |
| 小胡子 | 模板语言 |
| MySQL | 数据库 |
| Nest.js | 服务器 |
| 节点 | 运行时环境 |
| Nunjucks | 模板语言 |
| PostgreSQL | 数据库 |
| Ramda | 实用程序库 |
| React | HTML 框架 |
| React Native | HTML 框架 |
| 请求 | 网络通信器 |
| Restify | 服务器 |
| Sequelize | 数据库 |
| Socket.io | 网络通信器 |
| SQLite3 | 数据库 |
| 超级代理 | 网络通信器 |
| Swig | 模板语言 |
| 下划线 | 实用程序库 |
| Vue | HTML 框架 |
Python 内置支持¶
由当前版本的 CodeQL 查询包 codeql/python-queries (变更日志, 源代码) 和 CodeQL 库包 codeql/python-all (变更日志, 源代码) 提供。
| 名称 | 类别 |
|---|---|
| AWS Lambda | 无服务器框架 |
| aiohttp.web | Web 框架 |
| Django | Web 框架 |
| djangorestframework | Web 框架 |
| FastAPI | Web 框架 |
| Flask | Web 框架 |
| Flask-Admin | Web 框架 |
| Tornado | Web 框架 |
| Twisted | Web 框架 |
| Gradio | Web 框架 |
| starlette | 异步服务器网关接口 (ASGI) |
| ldap3 | 轻量级目录访问协议 (LDAP) |
| python-ldap | 轻量级目录访问协议 (LDAP) |
| httpx | HTTP 客户端 |
| pycurl | HTTP 客户端 |
| 请求 | HTTP 客户端 |
| urllib | HTTP 客户端 |
| urllib2 | HTTP 客户端 |
| urllib3 | HTTP 客户端 |
| dill | 序列化 |
| PyYAML | 序列化 |
| ruamel.yaml | 序列化 |
| simplejson | 序列化 |
| toml | 序列化 |
| ujson | 序列化 |
| fabric | 实用程序库 |
| idna | 实用程序库 |
| invoke | 实用程序库 |
| jmespath | 实用程序库 |
| multidict | 实用程序库 |
| pydantic | 实用程序库 |
| yarl | 实用程序库 |
| aioch | 数据库 |
| aiomysql | 数据库 |
| aiopg | 数据库 |
| aiosqlite | 数据库 |
| asyncpg | 数据库 |
| cassandra-driver | 数据库 |
| clickhouse-driver | 数据库 |
| cx_Oracle | 数据库 |
| mysql-connector | 数据库 |
| mysql-connector-python | 数据库 |
| MySQL-python | 数据库 |
| mysqlclient | 数据库 |
| oracledb | 数据库 |
| phoenixdb | 数据库 |
| psycopg2 | 数据库 |
| pymssql | 数据库 |
| PyMySQL | 数据库 |
| pyodbc | 数据库 |
| SQLite3 | 数据库 |
| Flask-SQLAlchemy | 数据库 ORM |
| peewee | 数据库 ORM |
| SQLAlchemy | 数据库 ORM |
| cryptography | 密码学库 |
| pycryptodome | 密码学库 |
| pycryptodomex | 密码学库 |
| rsa | 密码学库 |
| MarkupSafe | 转义库 |
| libtaxii | TAXII 实用程序库 |
| libxml2 | XML 处理库 |
| lxml | XML 处理库 |
| xmltodict | XML 处理库 |
Ruby 内置支持¶
由当前版本的 CodeQL 查询包 codeql/ruby-queries (变更日志, 源代码) 和 CodeQL 库包 codeql/ruby-all (变更日志, 源代码) 提供。
| 名称 | 类别 |
|---|---|
| excon | HTTP 客户端 |
| faraday | HTTP 客户端 |
| http_client | HTTP 客户端 |
| httparty | HTTP 客户端 |
| libxml-ruby | XML 处理库 |
| nokogiri | XML 处理库 |
| open-uri | HTTP 客户端 |
| posix-spawn | 实用程序库 |
| rest-client | HTTP 客户端 |
| Ruby on Rails | Web 框架 |
| rubyzip | 压缩库 |
| typhoeus | HTTP 客户端 |
Swift 内置支持¶
注意
CodeQL 对 Swift 的分析目前处于测试阶段。在测试阶段,对 Swift 代码的分析以及相关文档将不像其他语言那样全面。
由当前版本的 CodeQL 查询包 codeql/swift-queries (变更日志, 源代码) 和 CodeQL 库包 codeql/swift-all (变更日志, 源代码) 提供。
| 名称 | 类别 |
|---|---|
| AEXML | XML 处理库 |
| Alamofire | 网络通信器 |
| 核心数据 | 数据库 |
| CryptoKit | 密码学库 |
| CryptoSwift | 密码学库 |
| 基础 | 实用程序库 |
| GRDB | 数据库 |
| JavaScriptCore | 脚本库 |
| Libxml2 | XML 处理库 |
| 网络 | 网络通信器 |
| Realm Swift | 数据库 |
| RNCryptor | 密码学库 |
| SQLite3 | 数据库 |
| SQLite.swift | 数据库 |
| UIKit | 用户界面库 |
| WebKit | 用户界面库 |