如何在Groovy(Scriptrunner)中实现Jira关联问题数组的类型校验?
解决Groovy(Scriptrunner)处理Jira关联问题数组的问题
可行代码实现
import com.atlassian.jira.component.ComponentAccessor // 获取当前问题的所有关联问题集合 def linkedIssues = issue.getLinkedIssues() // 检查集合中是否存在类型为Bug的关联问题 def hasBugLinkedIssue = linkedIssues.any { linkedIssue -> linkedIssue.issueType.name == 'Bug' } return hasBugLinkedIssue
代码说明
- 获取关联问题:
issue.getLinkedIssues()直接返回当前问题的所有关联Issue对象集合(类型为ArrayList),无需再通过issueManager单独查询每个issue。 - 高效判断存在性:Groovy集合的
any()方法会遍历集合,只要有一个元素满足条件就立即返回true,无需遍历全部元素,性能更优。 - 类型判断:直接通过Issue对象的
issueType.name获取问题类型名称,和'Bug'做等值判断即可。如果你的Jira实例是多语言环境,建议用issueType.id判断(比如默认Bug的id是1,可根据自己实例调整),避免名称翻译差异导致判断失效。
原代码问题分析
- 未遍历关联问题数组:原代码仅手动指定了单个issue(
TENDER-25941),没有处理arrLinkedIssue这个关联问题集合。 - 条件判断错误:
issType in 'Bug'的写法是检查字符串是否包含子串,正确的等值判断应该用issType == 'Bug'。
内容的提问来源于stack exchange,提问作者Alex_Borovskii
相关产品推荐
相关产品推荐

