mirror of
https://github.com/qodo-ai/pr-agent.git
synced 2025-07-03 12:20:38 +08:00
Merge pull request #1133 from Codium-ai/tr/err_protections
Add error handling for empty diff files in utils.py and optimize file…
This commit is contained in:
@ -781,6 +781,9 @@ def find_line_number_of_relevant_line_in_file(diff_files: List[FilePatchInfo],
|
|||||||
re_hunk_header = re.compile(
|
re_hunk_header = re.compile(
|
||||||
r"^@@ -(\d+)(?:,(\d+))? \+(\d+)(?:,(\d+))? @@[ ]?(.*)")
|
r"^@@ -(\d+)(?:,(\d+))? \+(\d+)(?:,(\d+))? @@[ ]?(.*)")
|
||||||
|
|
||||||
|
if not diff_files:
|
||||||
|
return position, absolute_position
|
||||||
|
|
||||||
for file in diff_files:
|
for file in diff_files:
|
||||||
if file.filename and (file.filename.strip() == relevant_file):
|
if file.filename and (file.filename.strip() == relevant_file):
|
||||||
patch = file.patch
|
patch = file.patch
|
||||||
|
@ -12,7 +12,7 @@ from ..algo.language_handler import is_valid_file
|
|||||||
from ..algo.utils import find_line_number_of_relevant_line_in_file
|
from ..algo.utils import find_line_number_of_relevant_line_in_file
|
||||||
from ..config_loader import get_settings
|
from ..config_loader import get_settings
|
||||||
from ..log import get_logger
|
from ..log import get_logger
|
||||||
from .git_provider import GitProvider
|
from .git_provider import GitProvider, MAX_FILES_ALLOWED_FULL
|
||||||
|
|
||||||
|
|
||||||
def _gef_filename(diff):
|
def _gef_filename(diff):
|
||||||
@ -198,6 +198,7 @@ class BitbucketProvider(GitProvider):
|
|||||||
|
|
||||||
invalid_files_names = []
|
invalid_files_names = []
|
||||||
diff_files = []
|
diff_files = []
|
||||||
|
counter_valid = 0
|
||||||
for index, diff in enumerate(diffs):
|
for index, diff in enumerate(diffs):
|
||||||
file_path = _gef_filename(diff)
|
file_path = _gef_filename(diff)
|
||||||
if not is_valid_file(file_path):
|
if not is_valid_file(file_path):
|
||||||
@ -205,14 +206,23 @@ class BitbucketProvider(GitProvider):
|
|||||||
continue
|
continue
|
||||||
|
|
||||||
try:
|
try:
|
||||||
|
counter_valid += 1
|
||||||
|
if counter_valid < MAX_FILES_ALLOWED_FULL // 2: # factor 2 because bitbucket has limited API calls
|
||||||
if diff.old.get_data("links"):
|
if diff.old.get_data("links"):
|
||||||
original_file_content_str = self._get_pr_file_content(diff.old.get_data("links")['self']['href'])
|
original_file_content_str = self._get_pr_file_content(
|
||||||
|
diff.old.get_data("links")['self']['href'])
|
||||||
else:
|
else:
|
||||||
original_file_content_str = ""
|
original_file_content_str = ""
|
||||||
if diff.new.get_data("links"):
|
if diff.new.get_data("links"):
|
||||||
new_file_content_str = self._get_pr_file_content(diff.new.get_data("links")['self']['href'])
|
new_file_content_str = self._get_pr_file_content(diff.new.get_data("links")['self']['href'])
|
||||||
else:
|
else:
|
||||||
new_file_content_str = ""
|
new_file_content_str = ""
|
||||||
|
else:
|
||||||
|
if counter_valid == MAX_FILES_ALLOWED_FULL // 2:
|
||||||
|
get_logger().info(
|
||||||
|
f"Bitbucket too many files in PR, will avoid loading full content for rest of files")
|
||||||
|
original_file_content_str = ""
|
||||||
|
new_file_content_str = ""
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
get_logger().exception(f"Error - bitbucket failed to get file content, error: {e}")
|
get_logger().exception(f"Error - bitbucket failed to get file content, error: {e}")
|
||||||
original_file_content_str = ""
|
original_file_content_str = ""
|
||||||
|
Reference in New Issue
Block a user