如何在 JIRA 中查询具有特定标签且仅具有该标签的问题?

How do I query for issues in JIRA that have a specific label and only that label?

我在 JIRA 中有一个标签,比如 Foo。我想查询所有具有该标签和该标签 only 的问题。我该怎么做?

我试过了

labels = Foo AND NOT(labels NOT IN (Foo))

但是 returns 问题也标记为 Foo Bar。我想要标记为 only Foo.

的问题

如何在 JIRA 中查询具有特定标签且该标签的问题?

我认为不在 JQL 中。如果我真的必须这样做,我会使用 python 脚本来获取该标签的所有问题,然后检查其他标签。或者也许在服务器中使用自定义 ScriptRunner JQL 函数。没有简单的方法

据我所知,没有 JQL 方法可以做到这一点(显然,很难证明是否定的,但我对 JQL 相当了解)。

明显的方法不起作用:

  • labels != Foo 根本不会退回具有 Foo 的票证(根据设计,因为根据文档 != 100% 等同于 NOT ... =),这样做 labels != Foo AND labels = Foo return 的空集。

  • 不能使用文本匹配 ~!~ ,JIRA 将抛出 JQL 错误:The operator '!~' is not supported by 'labels' field。那是因为它是一个 picker/multiple 选择字段,而不是文本字段。

  • 您可以将 "labels" 与使用 IS/IS NOT 进行比较的唯一值是 "EMPTY"

2.5 解决方法(无可否认,这一切都很糟糕)是:

  1. 找到最常用的 "extra" 标签,并构建排除它们的查询

    ... AND labels = Foo AND labels NOT IN (Bar1, Bar2, ...)
    

    优点:纯 JQL,简单

    缺点:不捕捉 less-used 标签;添加更多标签时需要更新;如果您有太多与 Foo 配对的额外标签,则可能无法很好地扩展。

  2. 使用宏。这个Atlassian Q&A details

    • 安装JIRA Misc Custom Fields plugin
    • 创建自定义数值字段 labels_count,使用公式 @@Formula: issue.get("labels").size()
    • Re-index JIRA
    • 在您的 JQL 中包含 AND labels_count = 1

    优点:应该有效

    缺点:我没有实际测试过,所以不确定它是否有效。它需要安装一个新插件(一个有用的插件!)并重建索引。而且我不知道它是否会在没有进一步重新索引的情况下保持字段更新 - 我认为它会但不是 100% 确定。

  3. 不确定这是否有效,但您可以look at another way to create custom fields

    • 使用Script Runner plugin

    • 使用 Groovy 代码创建一个字段,标签数量 return。

      据我所知,最好是 return issue.getlabels().size()

    • 一些与ScriptRunner和标签相关的示例代码:ex1; ex2

    优点:???

    缺点:付费插件,不确定如何让它工作。