此版本包括以下功能增强:
发布日期:2024 年 11 月 4 日
其他 LLM 提供者支持
扩展 Jtest 对 LLM 集成的支持,除 OpenAI 和 Azure OpenAI 之外,现在还支持聊天补全端点兼容 OpenAI REST API 的其他 LLM 提供者。用户可以通过与本地部署模型而非云端模型集成来提高隐私性。更多信息,请参阅 LLM 集成。
AI 集成功能增强
- 现在,您可以将 AI 修复建议直接应用到您的代码中,在差异编辑器中可以查看变更内容,完整应用修复建议或选择一部分应用。请参阅使用 AI 优化测试、生成修复建议和建议的使用方法。
- 新增一个功能,能够让 AI 改进单元测试助手(UTA)生成的单元测试。UTA 可能会创建一定数量的失败测试,这些测试虽然失败了,但仍然能够提供一些覆盖率。有了这个新选项,UTA 就能利用 LLM 集成更新失败的测试,使其通过。请参阅使用 AI 修复生成的测试失败。
- AI 快速修复现已添加到失败单元测试的断言和异常建议中。使用 AI 修复操作链接提供了有关如何修复测试的建议以及对测试直接应用修复内容的功能。
- Visual Studio Code 插件现已支持利用 AI 生成的修复建议解决静态分析违规。请参阅生成修复建议。
单元测试创建功能增强
- 单元测试创建功能在创建测试时会分析更广泛的类集,从而生成初始化更完善、构造更合理的测试。
- 当启用静态方法和构造函数模拟时,默认情况下会在单元测试创建期间自动生成所有需要的静态模拟,同时支持配置排除项。(此前,用户必须手动指定需要进行静态模拟的实体。)可以在 UTA 首选项中调整模拟设置。请参阅配置模拟选项。
- 在生成的测试中,对于不需要特定值的数值,其默认值已从 0 更改为 1。
单元测试建议功能增强
- 新增一个建议,用于在多个测试因相同的异常或类似的原因失败时识别潜在的设置问题。这有助于在运行一组测试时诊断报告的重复性失败的根本原因。请参阅潜在设置问题。
- 新增一个用于静态模拟建议的操作,允许从模拟中排除特定模式。详细信息,请参阅模拟静态方法。
实时静态分析和实时单元测试
您可以通过实时静态分析和实时单元测试持续监控代码质量和变更。
- 进行代码更改时,实时静态分析功能能够在后台自动分析代码。Jtest 会在处理的代码不符合您的开发策略时通知您;请参阅实时静态分析。
- 对代码进行更改时,实时单元测试功能会持续识别并执行受影响的测试。您将收到与您的更改相关的测试失败警报消息;请参阅实时单元测试。
代码覆盖率功能增强
- 提高处理应用程序覆盖率时的内存效率。
- 默认情况下,不会在 IDE 中收集测试类的覆盖率(可以在设置中更改;请参阅在覆盖率范围内包含测试)。
文件内抑制功能增强
- 新增在 CLI 和 IDE 中轻松自定义抑制文件位置的功能。
- 增强抑制定义功能:
- 现在,您可以对文件属性使用包含通配符的文件路径。
- 现在,您可以为 rule-id 属性指定规则类别(可以选择添加严重度后缀)。
详细信息,请参阅在抑制文件中定义抑制。
Security Compliance Pack 功能增强
- 现已支持 CWE 4.15 版本并更新了一些配置。请参阅新增和更新的测试配置部分。
- 为 CERT for Java 和 CERT for Java Guidelines 测试配置扩展了几条新规则。请参阅新增和更新的测试配置以及新增和更新的静态分析规则部分。
新增和更新的测试配置
添加对以下测试配置的支持,以扩展 Security Compliance Pack:
- CWE 4.15
更新以下测试配置:
- CERT for Java
- CERT for Java Guidelines
- CWE Top 25 2023
- CWE Top 25 + On the Cusp 2023
- Recommended Rules
- UL 2900
删除以下测试配置:
- CWE 4.14
新增和更新的静态分析规则
添加以下规则:
规则 ID | 标题 |
---|---|
CODSTA.EPC.DNURT | 不要使用原始类型。 |
CODSTA.NTX | 移除对已弃用的解析器 API 的使用。 |
CODSTA.ORG.EASE | 断言中使用的表达式不得产生副作用。 |
PB.RE.COLNULL | 返回空数组或集合而不是 null。 |
PB.USC.NASSIGIO | 确保使用指定文件 I/O 方法的返回值。 |
PB.USC.NSIF | if、for 或 while 条件后面不应紧跟分号。 |
SECURITY.WSC.ASNF | 当字符串作为参数传递时,避免隐式文件创建。 |
SECURITY.WSC.CFAP | 以适当的访问权限创建文件。 |
TRS.SGAS | 在 getter 和 setter 方法中都使用或都不使用 synchronized 关键字。 |
更新以下规则:
规则 ID | 更新 |
---|---|
CODSTA.NTX | 移除对已弃用的解析器 API 的使用。 |
EJB.CPIM | 移除对已弃用的解析器 API 的使用。 |
EXCEPT.NFE | 移除对已弃用的解析器 API 的使用。 |
FORMAT.IND | 移除对已弃用的解析器 API 的使用。 |
GLOBAL.AUT | 移除对已弃用的解析器 API 的使用。 |
INTER.SEO | 优化对 Java 11 及更高版本的支持。 |
PB.API.CMMT | 扩展已验证方法的列表。 |
PB.USC.AES | 提高准确性。 |
SECURITY.WSC.DSER | 添加一个允许验证抽象类的参数。 |
SECURITY.WSC.SER | 添加一个允许验证抽象类的参数。 |
PROPS.PLAIN | 提高准确性。 |
UC.ARTD | 移除对已弃用的解析器 API 的使用。 |
UC.PM | 添加一个参数,用于忽略 readObject 和 writeObject 方法,无论是否实现了 Serializable 接口。 |
IDE 支持
现已支持以下 IDE:
- Eclipse 4.32 (2024-06)
- Eclipse 4.33 (2024-09)
- IntelliJ 2024.2
其他更新
- 现已支持 Lombok 1.18.34 。
- 现已支持最高 2.46 版本的 Git。
- 现已支持使用 Java 21 运行 Jtest。
- 任务视图新增 DTP 详细信息,允许在任务视图中显示从 DTP 导入的违规的额外元数据(包括 AI 生成的元数据)。
- 为 Jtest Maven 和 Gradle 插件添加 includeTestSources 命令行选项。使用此选项可以在分析中包括测试源代码。详细信息,请参阅使用 jtest.includeTestSources 选项修改范围。为 Maven 和 Gradle 插件删除 excludeTestSources 插件选项。
- 现已支持在共享属性文件中使用单元测试助手设置。请参阅导出和导入设置。
- 现在,您可以通过命令行为 Jtest 配置系统代理设置。请参阅如何通过代理使用 Jtest?。
对不支持的规则(度量指标和代码重复)禁用 AI 建议。
解决的 Bug 和 FR
Bug/FR ID | 说明 |
---|---|
FA-9934 | 改进包含“foo()throw E”条件的方法,使其更易于被生成引擎解析 |
JT-76414 | UL 2900 内建规则集阐明 - SECURITY.WSC.SER |
JT-76534 | 修复 CWE SER 违规会导致多个其他 CWE 违规 |
JT-76607 | 2024.1 和 2023.1 版本分析范围不同 |
JT-76619 | 静态分析中的编译错误 |
JT-76843 | SECURITY.WSC.DSER、SECURITY.WSC.SER 规则针对抽象类和接口漏报 |
UTA-7944 | java.lang.Throwable:IntelliJ 的写操作中不允许 AWT 事件 |