AI 帮你修 Bug!Klocwork 2026.1 新版发布:Rust 支持、质量门禁、智能修复,一网打尽
Klocwork 2026.1版本带来了众多激动人心的新特性,包括AI辅助代码修复、Rust语言支持以及增强的合规性报告等功能,为开发者提供更高效、更智能的静态代码分析体验。
Klocwork和Validate的增强功能
借助Perforce SA MCP服务器加快修复处理
Perforce SA MCP 服务器已结合Visual Studio Code与GitHub Copilot Chat扩展完成部署。该服务器以标准化格式向人工智能助手提供静态分析数据(包括缺陷信息、修复指导以及检查器文档等内容),助力用户快速完成精准且符合规范的代码修复工作。
在持续集成构建中强制执行自定义质量门禁
CI质量门禁功能可根据你设定的判定标准,自动判定CI构建任务通过或失败。
Validate会对每一次CI构建执行自定义问题查询,并依据查询结果标记任务通过或失败。CI构建会展示专属的质量门禁状态,同时Kwciagent、qacli等工具会针对执行成功、任务失败或处理异常返回对应的专属退出码。
使用Klocwork分析Rust代码
Klocwork 现已为Rust项目提供抢先体验支持,可通过Klocwork原生Rust检查工具与集成的Clippy代码检查工具,对Rust代码开展分析工作。
启用反向代理基础URL配置
使用基础网址(base.url)属性,可让Validate在反向代理部署环境下生成正确的外部链接。管理员可通过Kwservice或Validate配置对外公开的主机名,确保所有链接(例如持续集成构建链接、托管安装包下载链接以及应用程序接口参考链接)均指向外部可访问地址,而非内部服务器地址。
在合规报告中附上理由说明
现在用户可以为所有问题和缺陷状态编辑并启用理由说明字段,确保合规报告的内容清晰统一。
以SARIF格式获取Web API搜索结果
用户现在可以以SARIF格式输出Web API搜索结果。
新增关于调用结构、goto使用及递归的HIS指标
我们新增了更多HIS指标,以提升代码结构分析的覆盖范围。
Java增强功能
此版本最高支持《Java语言规范》19版。
插件和扩展
借助适用于VS Code的MCP服务器与Microsoft Copilot Chat扩展程序,用户现在可以在人工智能的辅助下修复代码缺陷。
扩展编码规范的覆盖范围
在本次版本更新中,你将看到以下分类规则与建议的优化升级:
-
HIS度量指标(100%覆盖)
-
MISRA C Mandatory(100%覆盖)和Required规则
-
MISRA C Mandatory(100%覆盖)和Required规则
-
OWASP Top 10检查器改进
检查器改进
本次版本更新新增并优化了C/C++与Rust语言的检测器。部分检查器仅适用于现代分析引擎,仅支持现代引擎的检测器已在文档中明确标注。
新增检查器
此版本中新增了以下检查器:
| 检查器 | 描述 |
|---|---|
| MISRA.GENERIC.ASSOCIATION_TYPE.2023 | |
| 该MISRA检查器可检测左值转换后_Generic关联表达式中的不可选类型。 | |
| MISRA.GENERIC.ETYPE.2023 | |
| 该MISRA检查器会检查泛型选择控制表达式的本质类型是否与其标准类型相匹配。 | |
| MISRA.GENERIC_DEFAULT_POSITION.2023 | |
| 该MISRA检查器会检查默认关联在关联列表中是排在首位还是末位。 | |
| MISRA.GENERIC_SELECTION_HAS_SIDE_EFFECT.2023 | |
| 该MISRA检查器会标记出:非宏展开生成的泛型选择,若其控制表达式中存在潜在副作用,将触发告警。 | |
| MISRA.INIT.ATOMIC.2023 | |
| 该MISRA检查器会检测原子对象在被访问前是否已完成合理初始化。 | |
| MISRA.LANG.OBSOLESCENT.UNGETC_STREAM_START.2023 | |
| 该MISRA检查器会检测被认定为已淘汰的C语言特性使用情况,具体为:在二进制流上调用ungetc函数前,文件位置指示器为零时使用该函数的行为。 | |
| MISRA.NORET.VOID.2023 | |
| 该MISRA检查器会检查声明为_Noreturn的函数是否为无返回值类型。 | |
| MISRA.OBJ_ALIGNAS_INCONSISTENT | |
| 该MISRA检查器会检查一个对象的所有声明是否指定了相同的显式对齐方式。 | |
| RS.DBZ.CONST.CALL | |
| 该Rust检查器会检测是否有显式的零常量值被直接传入函数调用中。 | |
| RS.DBZ.GENERAL | |
| 该Rust检查器会检测值为零的变量是否在未做零值校验的情况下,后续被用作除数。 | |
| RS.DBZ.GENERAL.FLOAT | |
| 该Rust检查器会检测值为零的浮点型变量,是否在未做零值校验的情况下,后续被用作除数。 | |
| RS.DBZ.ITERATOR | |
| 该Rust检查器会检测值变为零的循环迭代器,是否在未做零值校验的情况下,后续被用作除数。 | |
| RS.DBZ.ITERATOR.FLOAT | |
| 该Rust检查器会检测值变为零的浮点类型循环迭代器,是否在未做零值校验的情况下,后续被用作除数。 | |
| RS.DBZ.PANIC.UNCONDITIONAL | |
| 该Rust检查器会检测Rust编译器是否会针对除零运算,无条件插入其恐慌函数的调用指令。 | |
| RS.NPD.CHECK.CALL.MIGHT | |
| 该Rust检查器会检测:已做空值校验的指针,后续是否可能被传入未做空值校验就直接解引用该指针的函数中。 | |
| RS.NPD.CHECK.CALL.MUST | |
| 该Rust检查器会检测:已做空值校验的指针,后续是否被传入未做空值校验就直接解引用该指针的函数中。 | |
| RS.NPD.CHECK.MIGHT | |
| 该Rust检查器会检测:已做空值校验的指针,后续是否可能被直接解引用,或是可能被传入未做空值校验就会对其执行解引用操作的函数中。 | |
| RS.NPD.CHECK.MUST | |
| 该Rust检查器会检测:已做空值校验的指针,后续是否被直接解引用,或是被传入未做空值校验就会对其执行解引用操作的函数中。 | |
| RS.NPD.CONST.CALL | |
| 该Rust检查器会检测是否存在将空指针常量传入未做空值校验就直接解引用该指针的函数的情况。 | |
| RS.NPD.CONST.DEREF | |
| 该Rust检查器会检测空指针常量是被直接解引用,还是通过函数调用的方式被解引用。 | |
| RS.NPD.FUNC.CALL.MIGHT | |
| 该Rust检查器会检测:源自可能返回空值的函数调用所产生的指针,是否可能会被传入未做空值校验就直接对该指针进行解引用操作的函数中。 | |
| RS.NPD.FUNC.CALL.MUST | |
| 该Rust检查器会检测:源自可能返回空值的函数调用所产生的指针,是否会被传入未做空值校验就直接对该指针进行解引用操作的函数中。 | |
| RS.NPD.FUNC.MIGHT | |
| 该Rust检查器会检测:来自可能返回空值的函数调用所产生的指针,是否可能会在后续未做空值校验的情况下被解引用,或是可能被传入会对其执行解引用操作的函数中。 | |
| RS.NPD.FUNC.MUST | |
| 该Rust检查器会检测:来自可能返回空值的函数调用所产生的指针,是否会在后续未做空值校验的情况下被解引用,或是被传入会对其执行解引用操作的函数中。 | |
| RS.NPD.GEN.CALL.MIGHT | |
| 该Rust检查器会检测:被赋值为空常量的指针,是否可能被传入未做空值校验就直接解引用该指针的函数中。 | |
| RS.NPD.GEN.CALL.MUST | |
| 该Rust检查器会检测:被赋值为空常量的指针,是否被传入未做空值校验就直接解引用该指针的函数中。 | |
| RS.NPD.GEN.MIGHT | |
| 该Rust检查器会检测:被赋值为空常量的指针,后续是否可能被解引用,或是可能被传入未做空值校验就直接解引用该指针的函数中。 | |
| RS.NPD.GEN.MUST | |
| 该Rust检查器会检测:被赋值为空常量的指针,后续是否被解引用,或是被传入未做空值校验就直接解引用该指针的函数中。 | |
| Rust Clippy (RS.DBZ.*) 检查器 | |
| 这些基于Clippy的Rust检查器,是由Rust项目贡献者打造的Clippy lint。 | |
修改的检查器
| 检查器 | 描述 |
|---|---|
| ABV.STACK | |
| 减少误报 | |
| MISRA.CAST.INCOMPLETE_PTR_TO_ANY.2012 | |
| 减少误报 | |
| MISRA.FUNC.RECUR | |
| 减少误报 | |
| MISRA.LANG.OBSOLESCENT.REALLOC_ZERO_SIZE.2023 | |
| 将检查器映射至cert_c_all.tconf分类体系中的MEM04-C规则 | |
| MISRA.PTR.ARITH | |
| 减少误报 | |
| MISRA.VAR.MIN.VIS | |
| 减少误报 | |
| RH.LEAK | |
| 减少误报 | |
| SV.FMT_STR.PRINT_FORMAT_MISMATCH.BAD | |
| 减少误报 | |
| UNINIT.CTOR.MUST | |
| 减少误报 | |
| UNINIT.STACK.MUST | |
| 减少误报 | |
启用或禁用的检查器
本次版本中,已将以下检查器添加至检查器配置文件的默认启用项中:
-
Rust数据流(RS.NPD._)检查器
-
Rust Clippy(RS.DBZ._)检查器
编译器支持
对以下编译器的额外或改进支持:
-
CL ( Visual Studio )
-
Clang
-
Clang-cl
-
GCC
-
QNX
许可
-
2024许可证与Klocwork 2025.1或更新版本不兼容。要使用最新版本的产品,联系 Perforce 获取新许可证。
-
RLM命令行工具rlmstat可从Validate或RLM许可证服务器包中安装。
对系统要求的变更
新增了对以下环境的支持:
-
Amazon Linux 2 (2.0.20260216.0 Update)
-
CLion 2025.2 (up to 2025.2.6), 2025.3 (up to 2025.3.3)
-
Debian 12.13
-
Eclipse 4.38 (2025-12)
-
Fedora 42 to 43
-
Google Chrome 134.x to 145.x
-
Gradle 8.14.4
-
Java 18 and 19
-
Maven 3.9.12
-
Microsoft Edge 134.x to 145.x
-
Mozilla Firefox 136.x to 148.x
-
Oracle Linux 10 to 10.1
-
Red Hat Enterprise Linux 10 to 10.1
-
Rocky Linux 10 to 10.1
-
Ubuntu 24.04 to 24.04.4 LTS
-
Visual Studio 2022 (up to 17.14.27)
-
VS Code 1.100.3 to 1.110
-
Windows Server 2025
终止了对以下环境的支持:
-
Fedora 41
-
Google Chrome 131.x to 133.x
-
Microsoft Edge 131.x to 133.x
-
Mozilla Firefox 133.x to 135.x
2026.1移除混合分析引擎
从2026.1版本开始,Visual Studio对应的Klocwork插件已移除混合分析引擎。
VS 2015插件终止支持通知
从2025.4版本开始,与微软对Visual Studio 2015的扩展支持终止保持一致,针对Visual Studio 2015的Klocwork Desktop插件将不再提供和支持。
了解更多有关Klocwork的技术信息及商务服务,请访问http://www.softtest.cn/留言,或按以下方式联系旋极智能:

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)