JQL语法及Python查询 Jira issue信息

一、JQL语法

1.1 JQL语法简介

JIRA 的 JQL 语法由以下几个元素组成:

  • field (字段) : 就是要搜索的JIRA Issue 的各个字段
  • operator(运算符或者也叫操作符):如 =, < , > , in 等
  • value(值):具体要查询的字段匹配的值
  • keyword(关键字): keyword这个字面上理解可能会带来些歧义, 主要有以下作用
    (1)连接两个表达式,即通常我们所说的逻辑运算符:AND, OR, NOT
    (2)排序运算符:ORDERBY
    (3)还有一部分就是表示空的关键字: NULL 和 EMPTY,这两个貌似才是通常意义上的关键字
  • function(方法):即JIRA提供的一些方法,如 now()表示当前时间,currentUser()表示当前用户等

语法示例如下:
在这里插入图片描述
其中field可用接口中获取:
在这里插入图片描述

1.2 Jira中常用的JQL搜索语句

序号 搜索需求 JQL语句
1 分配给我的待处理任务 assignee = currentUser() AND resolution is EMPTY
2 我报告的并且没处理完成的任务 reporter = currentUser() AND resolution is EMPTY
3 某项目中已经过期的任务 project = “XXX” AND due < now()
4 某项目中3天后要过期的任务 project = “XXX” AND due <= endOfDay(3d)
5 某项目中待办和处理中状态上的任务 project = “XXX” AND status in (待办, 处理中)
6 某项目中48小时内没变化过的任务 project = “XXX” AND updated <= -48h ORDER BY updated DESC
7 某项目中没上传附件的Bug project = “XXX” and type= Bug and attachments is EMPTY
8 某项目中测试组用户处理完成的任务 project = “XXX” and assignee in membersOf(“testers”) and status = 已完成
9 某项目中最近30天解决的任务 project = “XXX” and resolved >= startOfDay(-30d)
10 某项目上即将发布的版本中还没解决的任务 project = “XXX” and fixVersion = earliestUnreleasedVersion() and resolution is EMPTY
11 某项目中重新打开的Bug project = “XXX” and type = Bug and resolution changed from fixed to empty
12 某项目中标题包含“服务器异常”的Bug project = “XXX” and type = Bug and summary ~ “服务器异常”
13 某项目上当前进行的Sprint中被标记的任务 project = “XXX” and Sprint in openSprints() and Flagged = Impediment
14 昨天我将状态从待办改为处理中的任务 status changed FROM 待办 TO 处理中 BY currentUser() AFTER startOfDay(-1d)
15 用户User1在2019年修改过的Issue issue in updatedBy(User1, 2019-1-1, 2019-12-31)
16 某项目中已发布版本中包含的任务 project = “XXX” and fixVersion in releasedVersions()
17 上周发生状态变化的Issue status changed DURING (startOfWeek(-1), endOfWeek(-1))
18 以"is duplicated by"关系链接到某个Issue的任务 issue in linkedIssues(PRO-1,“is duplicated by”)
19 3天以来关闭的Issue status = Closed and status was not Closed ON startOfDay(-3)

二、查询issue信息

2.1 安装JIRA依赖库

pip3 install jira

2.2 登录JIRA

JIRA都有访问限制,在访问Jira项目时首先要进行认证,Jira Python库提供了3种认证方式:

  • 通过Cookis方式认证(用户名,密码)
  • 通过Basic Auth方式认证(用户名,密码)
  • 通过OAuth方式认证
from jira import JIRA
# 通过jira域名和账户密码登录
<think>好的,用户想了解如何在Jira Software中使用JQL定义筛选条件,需要教程和示例语法。首先,我需要回忆JQL的基本结构和常用语法JQLJira Query Language,用于创建筛选器,搜索特定的问题。 用户可能需要基础语法,比如字段、运算符、关键字的使用。例如,像project = "项目名"这样的基本查询。还要注意JQL的运算符,比如等于、不等于、IN、NOT IN,以及比较运算符如>、<等。日期函数也是常见的需求,比如使用created > -7d来查找最近一周创建的问题。 然后,组合查询条件,使用AND、OR来连接多个条件,以及使用括号来分组逻辑。例如,status = Open AND (assignee = currentUser() OR priority = High)。这部分需要详细说明,确保用户理解如何构建复杂的查询。 高级用法可能包括使用ORDER BY排序,使用WAS运算符跟踪状态变化历史,或者使用函数如currentUser()。例如,project = PROJ AND assignee = currentUser() ORDER BY updated DESC。 示例部分需要给出几个典型场景,比如查找未解决的Bug,特定迭代的任务,或者报告逾期问题。这些例子能帮助用户快速应用JQL到实际工作中。 另外,用户可能对保存和分享筛选器感兴趣,需要简要说明如何保存JQL查询,方便以后使用。同时,注意提示Jira的字段名称可能需要根据实际配置调整,比如自定义字段可能需要使用“cf_XXXXX”来引用。 还要检查是否有相关的引用内容可以支持回答。查看用户提供的引用,引用[3]提到了Jira的REST API文档,可能和JQL的使用相关,可以指出如果需要自动化或集成,可以结合REST API使用JQL,但当前问题主要关注查询语言本身,所以可能不需要深入API部分,但可以提及作为扩展知识。 确保回答结构清晰,分点说明基础语法、运算符、组合条件、高级用法和示例,最后总结最佳实践,比如测试查询和保存常用筛选器。同时,避免使用Markdown格式,使用自然的中文段落,但根据用户要求,数学表达式需要使用$...$,不过JQL不涉及数学公式,所以可能用不上。但如果有涉及到版本号之类的,比如Jira 7.7.1,可以引用对应的文档[^3]。 最后,生成相关问题,考虑用户可能的后续问题,比如优化JQL性能、处理复杂逻辑、自定义字段的使用,或者与REST API的结合,这样能帮助用户进一步学习。</think>### Jira Software中使用JQL定义筛选条件教程 JQLJira Query Language)是Jira中用于精确搜索问题的查询语言,支持通过字段、运算符和函数组合条件。以下是核心语法和示例: --- #### **一、基础语法与运算符** 1. **字段匹配** - `project = "项目名称"`:筛选指定项目的问题。 - `issuetype = Bug`:筛选类型为Bug的问题。 - `status IN ("进行中", "待验收")`:匹配多个状态值。 2. **比较运算符** - `priority > High`:优先级高于High(需字段支持顺序)。 - `created >= -7d`:最近7天内创建的问题(日期函数)。 - `updated < startOfDay()`:今天之前更新的问题。 3. **逻辑运算符** - `AND`:同时满足多个条件,如 `status = Open AND assignee = john`。 - `OR`:满足任意条件,如 `priority = High OR labels = urgent`。 - `NOT`:排除条件,如 `NOT component = "API"`。 --- #### **二、组合条件与分组** 使用括号明确逻辑优先级: ```jql (status = Open OR status = Reopened) AND (assignee = currentUser() OR reporter = currentUser()) ``` 表示:当前用户负责或报告的问题,且状态为“打开”或“重新打开”。 --- #### **三、常用函数与高级用法** 1. **时间函数** - `created >= startOfWeek()`:本周创建的问题。 - `dueDate <= endOfMonth()`:本月到期的任务。 2. **状态追踪** - `status WAS "已完成" DURING ("2023-10-01", "2023-10-31")`:10月内曾处于“已完成”状态的问题。 3. **排序与分页** ```jql project = PROJ ORDER BY updated DESC, priority ASC ``` 按更新时间降序、优先级升序排列。 --- #### **四、示例语法** 1. **查找未解决的Bug** ```jql issuetype = Bug AND resolution = Unresolved ``` 2. **筛选当前用户负责的逾期任务** ```jql assignee = currentUser() AND dueDate < now() ``` 3. **跨项目查询** ```jql (project = PROJ_A OR project = PROJ_B) AND labels = "security" ``` --- #### **五、保存与共享筛选器** 1. 在Jira的“问题搜索”页面输入JQL后,点击 **Save as** 保存为命名筛选器。 2. 通过 **Share** 功能将筛选器共享给团队。 --- #### **注意事项** - 字段名称需与Jira配置完全一致(如区分大小写)。 - 自定义字段需通过ID引用(如 `cf_12345 = "值"`)。 - 测试复杂查询时,建议逐步添加条件验证结果。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值