mirror of
https://github.com/qodo-ai/pr-agent.git
synced 2025-07-05 21:30:40 +08:00
bug fixes in gitlab code suggestion
This commit is contained in:
@ -140,11 +140,13 @@ class GitLabProvider(GitProvider):
|
|||||||
else:
|
else:
|
||||||
pos_obj['new_line'] = target_line_no - 1
|
pos_obj['new_line'] = target_line_no - 1
|
||||||
pos_obj['old_line'] = source_line_no - 1
|
pos_obj['old_line'] = source_line_no - 1
|
||||||
|
logging.debug(f"Creating comment in {self.id_mr} with body {body} and position {pos_obj}")
|
||||||
self.mr.discussions.create({'body': body,
|
self.mr.discussions.create({'body': body,
|
||||||
'position': pos_obj})
|
'position': pos_obj})
|
||||||
|
|
||||||
def publish_code_suggestions(self, code_suggestions: list):
|
def publish_code_suggestions(self, code_suggestions: list):
|
||||||
for suggestion in code_suggestions:
|
for suggestion in code_suggestions:
|
||||||
|
try:
|
||||||
body = suggestion['body']
|
body = suggestion['body']
|
||||||
relevant_file = suggestion['relevant_file']
|
relevant_file = suggestion['relevant_file']
|
||||||
relevant_lines_start = suggestion['relevant_lines_start']
|
relevant_lines_start = suggestion['relevant_lines_start']
|
||||||
@ -157,15 +159,23 @@ class GitLabProvider(GitProvider):
|
|||||||
if file.filename == relevant_file:
|
if file.filename == relevant_file:
|
||||||
target_file = file
|
target_file = file
|
||||||
break
|
break
|
||||||
range = relevant_lines_end - relevant_lines_start + 1
|
range = relevant_lines_end - relevant_lines_start # no need to add 1
|
||||||
body = body.replace('```suggestion', f'```suggestion:-0+{range}')
|
body = body.replace('```suggestion', f'```suggestion:-0+{range}')
|
||||||
|
|
||||||
lines = target_file.head_file.splitlines()
|
lines = target_file.head_file.splitlines()
|
||||||
relevant_line_in_file = lines[relevant_lines_start - 1]
|
relevant_line_in_file = lines[relevant_lines_start - 1]
|
||||||
edit_type, found, source_line_no, target_file, target_line_no = self.find_in_file(target_file,
|
|
||||||
relevant_line_in_file)
|
# edit_type, found, source_line_no, target_file, target_line_no = self.find_in_file(target_file,
|
||||||
|
# relevant_line_in_file)
|
||||||
|
# for code suggestions, we want to edit the new code
|
||||||
|
source_line_no = None
|
||||||
|
target_line_no = relevant_lines_start + 1
|
||||||
|
found = True
|
||||||
|
edit_type = 'addition'
|
||||||
|
|
||||||
self.send_inline_comment(body, edit_type, found, relevant_file, relevant_line_in_file, source_line_no,
|
self.send_inline_comment(body, edit_type, found, relevant_file, relevant_line_in_file, source_line_no,
|
||||||
target_file, target_line_no)
|
target_file, target_line_no)
|
||||||
|
except Exception as e:
|
||||||
|
logging.exception(f"Could not publish code suggestion:\nsuggestion: {suggestion}\nerror: {e}")
|
||||||
|
|
||||||
def search_line(self, relevant_file, relevant_line_in_file):
|
def search_line(self, relevant_file, relevant_line_in_file):
|
||||||
target_file = None
|
target_file = None
|
||||||
|
@ -96,8 +96,8 @@ class PRCodeSuggestions:
|
|||||||
logging.info(f"suggestion: {d}")
|
logging.info(f"suggestion: {d}")
|
||||||
relevant_file = d['relevant file'].strip()
|
relevant_file = d['relevant file'].strip()
|
||||||
relevant_lines_str = d['relevant lines'].strip()
|
relevant_lines_str = d['relevant lines'].strip()
|
||||||
if ',' in relevant_lines_str: # 'relevant lines': '181, 190'
|
if ',' in relevant_lines_str: # handling 'relevant lines': '181, 190' or '178-184, 188-194'
|
||||||
relevant_lines_str = int(relevant_lines_str.split(',')[0])
|
relevant_lines_str = relevant_lines_str.split(',')[0]
|
||||||
relevant_lines_start = int(relevant_lines_str.split('-')[0]) # absolute position
|
relevant_lines_start = int(relevant_lines_str.split('-')[0]) # absolute position
|
||||||
relevant_lines_end = int(relevant_lines_str.split('-')[-1])
|
relevant_lines_end = int(relevant_lines_str.split('-')[-1])
|
||||||
content = d['suggestion content']
|
content = d['suggestion content']
|
||||||
|
Reference in New Issue
Block a user