Qodana 2026.1:Rust EAP、稳定 C/C++ 支持与新代码检查

TL;DR · AI 摘要
Qodana 2026.1 正式发布 C/C++ 支持,Rust 进入 EAP 阶段,并新增 150+ 条新代码检查规则,显著提升多语言静态分析能力。
核心要点
- C/C++ 分析器已从 EAP 进入正式版,支持 CMake 并可配置 10 分钟超时时间。
- Rust EAP 版本提供超过 150 项检查,涵盖生命周期、未使用代码、不安全代码等场景。
- 新增 Kotlin `::javaClass` 和 Python 协程布尔上下文等关键检查,防止隐蔽运行时错误。
结构提纲
按章节快速跳转。
Qodana 2026.1 正式推出对 C/C++ 的稳定支持,开启 Rust 的早期访问计划,并引入多个语言的新代码检查规则。
Qodana for C/C++ 已从 EAP 转为通用可用,支持 CMake 构建系统并可配置最大 10 分钟启动超时。
Rust 版本进入早期访问阶段,提供超过 150 项检查,包括 cargo check 与 clippy 集成支持。
新增 Kotlin 中 `::javaClass` 可疑调用和 Python 协程布尔上下文等检查,预防运行时逻辑错误。
通过忽略 `.idea` 缓存文件和建议清理本地 IDE 实例,避免构建冲突,提升大型项目分析稳定性。
思维导图
用一张图看清主题之间的关系。
查看大纲文本(无障碍 / 无 JS 友好)
- Qodana 2026.1 新特性
- C/C++ 稳定支持
- EAP 结束,正式发布
- 支持 CMake 构建系统
- 可配置 10 分钟超时
- Rust EAP 启动
- 150+ 代码检查规则
- 集成 cargo check/clippy
- 支持多工作区与 proc macros
- 新代码检查
- Kotlin: ::javaClass 悬念引用
- Python: 协程用于布尔条件
- C#: 新增类型安全检查
金句 / Highlights
值得收藏与分享的关键句。
Qodana for C/C++ is now generally available with support for CMake and configurable timeouts up to 10 minutes.
Over 150 inspections for Rust, including dead code, lifetime issues, unsafe code, and built-in cargo check/clippy integration.
Suspicious use of `::javaClass` creates a KProperty0<Class<T>> instead of Class<T>, leading to hard-to-detect bugs.
代码质量平台,专为团队打造
Qodana 2026.1 版本:Rust 早期访问版、稳定版 C/C++ 支持及全新代码检查功能

2026年5月12日

Qodana 2026.1 版本带来了两项重要的 linter 更新以及一组全新的代码检查功能,帮助您在开发早期更早地发现更多问题。本次发布中,Qodana for C/C++ 已正式推出(不再处于 EAP 阶段),Qodana for Rust 正式开启早期访问计划(EAP),同时新增多项检查功能,可有效防范 Kotlin、Python 和 C# 中的细微缺陷。
如果您是首次接触 Qodana,欢迎通过我们之前的博文了解更多内容:深入了解 Qodana。
Qodana for C/C++ 已正式发布
Qodana for C/C++ 现已全面可用,显著提升了其在原生代码开发中的生产就绪能力。我们早在 2025.1 版本中便引入了对 C/C++ 项目的支持,此后根据您的反馈持续扩展和优化该 linter。如今,它已完全准备好用于生产环境中的原生代码开发。
感谢所有在 EAP 阶段试用 qodana-cpp 的用户!基于大家的反馈,我们进行了以下改进:
- Qodana 现已能正确检测构建系统失败情况,包括 CMake 等多种构建工具,并帮助您诊断问题。
- 对于大型项目,Qodana 现可通过
qd.cpp.startup.timeout.minutes配置启动超时时间:
# qodana.yaml
properties:
qd.cpp.startup.timeout.minutes: "10".idea文件夹中的缓存构建配置将被直接忽略。我们仍建议在运行分析前清理缓存文件,并关闭所有本地 IDE 实例,以避免对.idea文件夹产生访问冲突。
如需了解更多详情,请参阅 C/C++ 官方文档,或查看我们关于该 linter 的此前发布文章。
[Qodana For C++ Info](https://www.jetbrains.com/help/qodana/clang.html "Qodana For C++ Info")
Qodana for Rust 早期访问计划现已开放
随着 Qodana 2026.1 版本的发布,我们正式启动 Qodana for Rust 的早期访问计划(EAP)。Rust 的采用率在过去一年中显著增长,已有超过 250 万名开发者使用该语言。根据 Stack Overflow 调查,Rust 已连续十年位居最受欢迎语言榜首。同时,越来越多从事基础设施与性能敏感系统开发的 Rust 团队也迫切需要可靠的静态分析保障。
本次发布旨在简化静态分析在 Rust 工作流中的集成,更好地支持 Rust 在基础设施和高性能应用中的广泛应用。
我们为您带来:
- 超过 150 项检查,涵盖死代码、生命周期问题、不安全代码等场景,同时内置
cargo check与cargo clippy检查。 - 支持条件编译、特性门控(feature gating)及 proc macro 处理。
- 可通过
bootstrap块中的rustup配置自定义 Rust 工具链。 - 原生支持多工作区(multiple workspaces)。
您的团队现在即可在 CI 流水线中开始探索 Rust 项目的自动化检查,并随着 linter 的演进提供反馈。当前 Rust 检查列表可在 Inspectopedia 上查阅。
[Qodana For Rust Info](https://www.jetbrains.com/help/qodana/rust.html "Qodana For Rust Info")
2026.1 版本新增检查功能
本次版本还为多个开发生态引入了新的检查规则,帮助您捕捉那些在代码审查阶段容易被忽略、但在生产环境中可能导致混乱行为的问题。
Kotlin:可疑的 `::javaClass` 可调用引用
此检查会报告对 kotlin.jvm.javaClass 扩展函数的可疑使用方式。
使用 ::javaClass 语法并不会生成预期的 Class<T> 实例,而是创建一个类型为 KProperty0<Class<T>> 的属性引用。这种行为几乎从不是开发者的本意,可能导致难以察觉的错误。
fun test(a: String) {
val classRef = a::javaClass // KProperty0<Class<String>>
println(classRef) // 输出 "property javaClass",而非 "class java.lang.String"
}Python:可疑的布尔条件
此检查会报告在布尔上下文(如 if、while 或三元表达式)中使用的协程,即使未使用 await 关键字。
协程对象本身始终为真值,因此直接在条件中使用时,无论实际逻辑如何,都会评估为 True。只有在 await 后才能获取真实结果。实践中,该检查有助于防止异步代码因误将协程作为条件判断而无声地表现异常。
错误示例:
async def check() -> bool:
return True
async def main():
if check(): # 总是 True - 协程对象为真值
print("hi")正确写法:
async def main():
if await check(): # 正确地等待协程执行
print("hi")C#:生命周期过短的 `HttpClient`
此检查会报告 HttpClient 的短暂使用情况。频繁创建新的 HttpClient 实例可能导致套接字耗尽和不必要的资源压力。在大多数情况下,推荐使用 IHttpClientFactory 或共享的长期存活 HttpClient 实例。
这类问题在开发阶段可能不会立即显现,但在真实流量压力下可能演变为可靠性问题。
public class C
{
static async Task<string> GetDataAsync(string url)
{
var client = new HttpClient() { Timeout = TimeSpan.FromMinutes(10) }; // 建议将其移至属性中
var response = await client.GetAsync(url);
response.EnsureSuccessStatusCode();
return await response.Content.ReadAsStringAsync();
}
}
## 即将推出…
* Laravel 的代码质量与安全支持
* 针对项目的代码质量规则
* Insights 功能的新增,例如代码来源追踪
## 接下来对你意味着什么?
如果你已经使用最新版本,现在就可以立即开始体验 Qodana 2026.1 中的改进。如果尚未更新,请升级到 2026.1 版本,以试用稳定的 C/C++ 语法检查器,参与 Rust 的早期访问计划(EAP),并开始享受针对 Kotlin、Python 和 C# 新增的检测功能。
如需设置详情和特定功能指引,请前往文档页面。如果你想了解 Qodana 在你自身环境中的实际表现,可以尝试在你的项目中使用,并通过 Qodana 博客探索最新的更新内容。
[切换至 Qodana](https://www.jetbrains.com/qodana/request-a-demo/ "切换至 Qodana")
[](https://blog.jetbrains.com/qodana/2026/05/qodana-2026-1-release/#)
1. [Qodana for C/C++ 已退出早期访问计划](https://blog.jetbrains.com/qodana/2026/05/qodana-2026-1-release/#qodana-for-c-c++-is-out-of-eap)
2. [Qodana for Rust 的 EAP 现已开放](https://blog.jetbrains.com/qodana/2026/05/qodana-2026-1-release/#the-qodana-for-rust-eap-is-now-open)
3. [2026.1 版本中的新检测项](https://blog.jetbrains.com/qodana/2026/05/qodana-2026-1-release/#new-inspections-in-2026.1)
1. [Kotlin:可疑的 ::javaClass 可调用引用](https://blog.jetbrains.com/qodana/2026/05/qodana-2026-1-release/#kotlin-suspicious-javaclass-callable-reference)
2. [Python:可疑的布尔条件](https://blog.jetbrains.com/qodana/2026/05/qodana-2026-1-release/#python-suspicious-boolean-condition)
3. [C#:生命周期过短的 HttpClient](https://blog.jetbrains.com/qodana/2026/05/qodana-2026-1-release/#c-short-lived-httpclient)
4. [即将推出…](https://blog.jetbrains.com/qodana/2026/05/qodana-2026-1-release/#coming-soon%E2%80%A6)
5. [接下来对你意味着什么?](https://blog.jetbrains.com/qodana/2026/05/qodana-2026-1-release/#whats-next-for-you)
## 发现更多精彩