在此版本中,我们专注于优化桌面版使用体验,添加大量新功能并改进现有功能:

在桌面版中自定义规则和测试配置

此版本针对在桌面版中自定义静态分析做了大幅改进。我们引入了一个基于浏览器的界面,允许根据组织的开发策略,在本地修改和保存代码分析规则和测试配置。请参阅自定义静态分析规则创建自定义测试配置

此外,您现在可以配置 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-47125PB.CLOSE 针对 try-with-resources 误报
JT-48547PB.CUB.IMM 潜在误报
JT-48635SECURITY.IBA.VPPD-2 未正确触发

JT-69723

lambda 相关的误报
JT-69873UC.AAI - 与 Java 8 不兼容
JT-699399.5 和 10.3.1+ 行为不同
UTA-1028不显示潜在可模拟方法的建议
UTA-2296一些通过 UTA 创建的单元测试在客户的项目中失败
XT-35411CVS 报告中从第二行开始存在的空格

 

有关此版本的信息,请参阅 https://docs.parasoft.com/display/JTEST1040/Updates+in+10.4.0。