在JIRA查询中使用保留的JQL关键字进行修复的最佳方法是什么?

时间:2015-01-29 14:58:30

标签: jira keyword jql python-jira

我正在尝试编写一个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 )

如果缺陷包含以下字词,则会失败:' update'。现在这是一个糟糕的数据错误,但我想确保查询能够容忍恶意输入。

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

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

谢谢!

1 个答案:

答案 0 :(得分:1)

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

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

如果你要替换“#34;更新"在那里,它会消除你抱怨的具体错误......但不幸的是,你得到另一个错误:The issue key 'update' for field 'key' is invalid.

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

<PROJECT>-<ISSUENUM>

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

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

您可以将与问题密钥正则表达式匹配的任何内容列入白名单,而不是将所有其他内容列入白名单。

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