mirror of
https://github.com/qodo-ai/pr-agent.git
synced 2025-07-02 03:40:38 +08:00
Merge pull request #1289 from Codium-ai/tr/ticket_review
fix: handle missing issue body and improve error logging in ticket co…
This commit is contained in:
@ -32,22 +32,25 @@ def extract_ticket_links_from_pr_description(pr_description, repo_path):
|
|||||||
"""
|
"""
|
||||||
Extract all ticket links from PR description
|
Extract all ticket links from PR description
|
||||||
"""
|
"""
|
||||||
|
github_tickets = []
|
||||||
|
try:
|
||||||
|
# example link to search for: https://github.com/Codium-ai/pr-agent-pro/issues/525
|
||||||
|
pattern = r'https://github[^/]+/[^/]+/[^/]+/issues/\d+' # should support also github server (for example 'https://github.company.ai/Codium-ai/pr-agent-pro/issues/525')
|
||||||
|
|
||||||
# example link to search for: https://github.com/Codium-ai/pr-agent-pro/issues/525
|
# Find all matches in the text
|
||||||
pattern = r'https://github[^/]+/[^/]+/[^/]+/issues/\d+' # should support also github server (for example 'https://github.company.ai/Codium-ai/pr-agent-pro/issues/525')
|
github_tickets = re.findall(pattern, pr_description)
|
||||||
|
|
||||||
# Find all matches in the text
|
# Find all issues referenced like #123 and add them as https://github.com/{repo_path}/issues/{issue_number}
|
||||||
github_tickets = re.findall(pattern, pr_description)
|
issue_number_pattern = r'#\d+'
|
||||||
|
issue_numbers = re.findall(issue_number_pattern, pr_description)
|
||||||
# Find all issues referenced like #123 and add them as https://github.com/{repo_path}/issues/{issue_number}
|
for issue_number in issue_numbers:
|
||||||
# (unneeded, since when you pull the actual comment, it appears as a full link)
|
issue_number = issue_number[1:] # remove #
|
||||||
# issue_number_pattern = r'#\d+'
|
# check if issue_number is a valid number and len(issue_number) < 5
|
||||||
# issue_numbers = re.findall(issue_number_pattern, pr_description)
|
if issue_number.isdigit() and len(issue_number) < 5:
|
||||||
# for issue_number in issue_numbers:
|
github_tickets.append(f'https://github.com/{repo_path}/issues/{issue_number}')
|
||||||
# issue_number = issue_number[1:] # remove #
|
except Exception as e:
|
||||||
# # check if issue_number is a valid number and len(issue_number) < 5
|
get_logger().error(f"Error extracting tickets error= {e}",
|
||||||
# if issue_number.isdigit() and len(issue_number) < 5:
|
artifact={"traceback": traceback.format_exc()})
|
||||||
# github_tickets.append(f'https://github.com/{repo_path}/issues/{issue_number}')
|
|
||||||
|
|
||||||
return github_tickets
|
return github_tickets
|
||||||
|
|
||||||
@ -65,12 +68,19 @@ async def extract_tickets(git_provider):
|
|||||||
repo_name, original_issue_number = git_provider._parse_issue_url(ticket)
|
repo_name, original_issue_number = git_provider._parse_issue_url(ticket)
|
||||||
|
|
||||||
# get the ticket object
|
# get the ticket object
|
||||||
issue_main = git_provider.repo_obj.get_issue(original_issue_number)
|
try:
|
||||||
|
issue_main = git_provider.repo_obj.get_issue(original_issue_number)
|
||||||
|
except Exception as e:
|
||||||
|
get_logger().error(f"Error getting issue_main error= {e}",
|
||||||
|
artifact={"traceback": traceback.format_exc()})
|
||||||
|
continue
|
||||||
|
|
||||||
# clip issue_main.body max length
|
# clip issue_main.body max length
|
||||||
issue_body = issue_main.body
|
issue_body_str = issue_main.body
|
||||||
if len(issue_main.body) > MAX_TICKET_CHARACTERS:
|
if not issue_body_str:
|
||||||
issue_body = issue_main.body[:MAX_TICKET_CHARACTERS] + "..."
|
issue_body_str = ""
|
||||||
|
if len(issue_body_str) > MAX_TICKET_CHARACTERS:
|
||||||
|
issue_body_str = issue_body_str[:MAX_TICKET_CHARACTERS] + "..."
|
||||||
|
|
||||||
# extract labels
|
# extract labels
|
||||||
labels = []
|
labels = []
|
||||||
@ -85,7 +95,7 @@ async def extract_tickets(git_provider):
|
|||||||
artifact={"traceback": traceback.format_exc()})
|
artifact={"traceback": traceback.format_exc()})
|
||||||
tickets_content.append(
|
tickets_content.append(
|
||||||
{'ticket_id': issue_main.number,
|
{'ticket_id': issue_main.number,
|
||||||
'ticket_url': ticket, 'title': issue_main.title, 'body': issue_body,
|
'ticket_url': ticket, 'title': issue_main.title, 'body': issue_body_str,
|
||||||
'labels': ", ".join(labels)})
|
'labels': ", ".join(labels)})
|
||||||
return tickets_content
|
return tickets_content
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user