在此版本中,我们专注于优化桌面版使用体验,添加大量新功能并改进现有功能:
在桌面版中自定义规则和测试配置
此版本针对在桌面版中自定义静态分析做了大幅改进。我们引入了一个基于浏览器的界面,允许根据组织的开发策略,在本地修改和保存代码分析规则和测试配置。请参阅自定义静态分析规则和创建自定义测试配置。
此外,您现在可以配置 Jtest 应用本地或 DTP 中存储的规则映射。
在 IDE 中执行基于变更的测试
现在,您可以轻松识别和运行受本地修改代码影响的测试,无需运行大量未受变更影响的测试。这有助于优化测试工作,加快测试执行过程。请参阅测试影响分析。
在 IntelliJ IDEA 中收集单元测试覆盖率
扩展对 IntelliJ IDEA 中运行的单元测试收集覆盖率信息的支持。请参阅在 IntelliJ IDEA 中收集单元测试覆盖率。
单元测试助手功能增强
IntelliJ IDEA 支持
现已支持在 IntelliJ IDEA 中使用单元测试助手的功能。
检测未覆盖的代码
现在,您可以配置 UTA 识别未覆盖的代码。这有助于针对未覆盖的代码行创建测试,增加整体的代码覆盖率。请参阅未覆盖的代码。
克隆测试用例
新增克隆现有测试方法的功能,提升测试创建过程的效率。克隆测试选项用于快速复制现有测试方法,并根据需要修改克隆的测试。请参阅创建基本单元测试。
IDE 支持
- 支持 IntelliJ 2018.1
- 删除对过时 IDE 的支持。
其他变更
- 使用 DTP 功能和工作流程需要 DTP 5.4.0。
- 在 DTP 上标记“不显示”优先级的任务不再模拟抑制,应转换为真实抑制;请参阅 DTP 5.4.0 发布说明。
- 现已弃用 Maven、Gradle 和 Ant 的
instrument
目标/任务。使用agent
目标/任务收集覆盖率信息。 - 改进合并覆盖率信息的范例,可增加您的覆盖率结果。
新增和更新的测试配置
添加以下内建测试配置:
- UL 2900
- OWASP Top 10 2017
删除已过时标准的测试配置:
- 过时的 OWASP Top 10 测试配置(2007、2010、2013)
- 过时的 JDK 配置(JDK 1.5 和 7 中的新功能)
- CWE-SANS Top 25 2009
- DISA-STIG for Java
- Juliet 1.1 2011
- SAMATE NIST 2010
优化 GLOBAL 规则,可帮助您更高效地解决潜在缺陷。精确度的提高可能会影响性能。
新增代码分析规则
添加以下规则:
规则 ID | 标题 |
---|---|
BD.API.ARGWRITE | 请勿依赖 write() 方法输出 0 到 255 范围之外的整数 |
BD.PB.MULBUF | 请勿在单字节或字符流上创建多个缓冲包装器 |
BD.PB.VREADOBJ | 请勿在 readObject() 中调用可重写方法 |
BD.SECURITY.FPEXC | 检查浮点输入是否有异常值 |
BD.SECURITY.LOG | 避免将未经验证的二进制数据传递给日志方法 |
BD.TRS.INSTLOCK | 请勿使用实例锁来保护共享静态数据 |
CODSTA.ORG.ASSERT | 不要在生产代码中使用断言 |
PB.IKICO | 确保比较操作中使用的键是不可变的 |
TRS.ISTART | 不要直接在 Thread 类实例上调用 'start()' 方法 |
TRS.SGC | 不要在 'getClass' 方法返回的类对象上进行同步 |
TRS.SOBC | 如果可以访问支持集合,则不要在集合视图上进行同步 |
更新代码分析规则
- BD.PB.VOVR
BD.TRS.ORDER
- OPT.USCL
FORMAT.U2B
GLOBAL.ASI
GLOBAL.DPPM
GLOBAL.UPAC
SECURITY.WSC.PPKG
SECURITY.WSC.INIVF
PB.NUM.UBD
PB.CUB.IMM
UC.AAI
DTP 处理以下规则的方式可能会不同,之前的抑制可能不再可用:
- INTER.CCL
- CODSTA.BP.EXIT
解决的 Bug 和 FR
Bug/FR ID | 说明 |
---|---|
FA-5994 | 无法将构造函数定义为 null,BD.EXCEPT.NP 不接受这种方法 |
FA-6140 | 在报告 flowanalysis.output.performance.info 中的某些规则时,并非所有路径都被计数。 |
JT-47125 | PB.CLOSE 针对 try-with-resources 误报 |
JT-48547 | PB.CUB.IMM 潜在误报 |
JT-48635 | SECURITY.IBA.VPPD-2 未正确触发 |
JT-69723 | lambda 相关的误报 |
JT-69873 | UC.AAI - 与 Java 8 不兼容 |
JT-69939 | 9.5 和 10.3.1+ 行为不同 |
UTA-1028 | 不显示潜在可模拟方法的建议 |
UTA-2296 | 一些通过 UTA 创建的单元测试在客户的项目中失败 |
XT-35411 | CVS 报告中从第二行开始存在的空格 |