【问题标题】:Best way to fix using a reserved JQL keyword in a JIRA query?在 JIRA 查询中使用保留的 JQL 关键字修复的最佳方法是什么?
【发布时间】:2015-03-28 20:34:42
【问题描述】:

我正在尝试编写一个 JIRA 查询来查询一堆缺陷。我遇到的问题是,如果我正在查询的缺陷列表中有 JQL 关键字,则整个查询将失败并吐出以下错误:

JiraError HTTP 400 - text: Error in the JQL Query: 'update' is a reserved JQL word. 
You must surround it in quotation marks to use it in a query.

我的查询:

jira.search_issues( 'key in ({})'.format(','.join(defects))),
                     validate_query=false, 
                     maxResults = MAX_JIRA_RESULTS )

当缺陷包含“更新”一词时,此操作将失败。现在这是一个错误的数据错误,但我想确保查询能够容忍恶意输入。

现在我能想到的确保此错误不再发生的唯一方法是确保每个包含 JIRA 关键字的缺陷都已转义该关键字。这显然很繁琐,如果添加任何新的 JQL 关键字,可能会失败。

除了转义我在字符串中找到的每个 JIRA 关键字之外,还有更好的方法吗?另外,在 Python 中是否有一种简单的方法来获取 JIRA 关键字?

谢谢!

【问题讨论】:

    标签: jira keyword jql python-jira


    【解决方案1】:

    首先,您可以引用传递给特定查询的任何内容,因此您不必关心什么是保留字。例如,这有效:

    key in ("abc-1","def-2")
    

    如果您要在其中替换“更新”一词,它将消除您所抱怨的特定错误...但是,不幸的是,您会得到另一个错误:The issue key 'update' for field 'key' is invalid.

    幸运的是,有更好的解决方案。您的问题表明您正在使用问题密钥。 JIRA 问题密钥的格式始终为:

    <PROJECT>-<ISSUENUM>
    

    其中PROJECT的格式为explicitly defined by JIRA,即:

    • 第一个字符必须是字母,
    • 项目密钥中使用的所有字母必须来自现代罗马字母和大写,并且
    • 只能使用字母、数字或下划线字符。

    除了将关键字列入黑名单之外,您还可以将与问题键正则表达式匹配的任何内容列入白名单并拒绝其他所有内容。

    请注意,虽然 JIRA 系统管理员可以在这些准则之外更改项目正则表达式格式,但这相对不常见(而且 Atlassian 不支持在该配置中运行 JIRA)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-08
      • 1970-01-01
      • 1970-01-01
      • 2015-05-10
      • 1970-01-01
      相关资源
      最近更新 更多