You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SonarQube自定义XML规则:如何简化XPath 1.0版本校验表达式?

简化XPath 1.0表达式的方案

针对校验Maven父项目版本不低于4.12.*的需求,你可以通过字符串截取与数值比较的方式,大幅简化原有的冗长表达式:

/project/parent/version[
  number(substring-before(text(), '.')) < 4 
  or 
  (number(substring-before(text(), '.')) = 4 and number(substring-before(substring-after(text(), '.'), '.')) < 12)
]

逻辑说明

  1. 主版本低于4的情况:通过substring-before(text(), '.')提取版本号的第一部分(主版本),转为数字后判断是否小于4,这类版本直接不符合要求。
  2. 主版本为4但次版本低于12的情况:先确认主版本是4,再通过substring-before(substring-after(text(), '.'), '.')提取第二部分(次版本),转为数字后判断是否小于12,覆盖原表达式中的4.2到4.11所有场景,同时还包含了原表达式未覆盖的4.0、4.1版本。

优势对比

  • 原表达式需要逐个枚举所有不符合的次版本,扩展性差(比如后续要支持5.x版本时,修改成本高)。
  • 简化后的表达式通过数值比较实现逻辑判断,自动覆盖所有低于4.12的版本场景,维护性更强。

内容的提问来源于stack exchange,提问作者Alan Michel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 08:55:26