mirror of
https://github.com/qodo-ai/pr-agent.git
synced 2025-07-02 11:50:37 +08:00
Add error handling for missing file paths in Bitbucket provider and improve file validation logic
This commit is contained in:
@ -14,7 +14,9 @@ def filter_bad_extensions(files):
|
|||||||
return [f for f in files if f.filename is not None and is_valid_file(f.filename, bad_extensions)]
|
return [f for f in files if f.filename is not None and is_valid_file(f.filename, bad_extensions)]
|
||||||
|
|
||||||
|
|
||||||
def is_valid_file(filename, bad_extensions=None):
|
def is_valid_file(filename:str, bad_extensions=None) -> bool:
|
||||||
|
if not filename:
|
||||||
|
return False
|
||||||
if not bad_extensions:
|
if not bad_extensions:
|
||||||
bad_extensions = get_settings().bad_extensions.default
|
bad_extensions = get_settings().bad_extensions.default
|
||||||
if get_settings().config.use_extra_bad_extensions:
|
if get_settings().config.use_extra_bad_extensions:
|
||||||
|
@ -15,6 +15,12 @@ from ..log import get_logger
|
|||||||
from .git_provider import GitProvider
|
from .git_provider import GitProvider
|
||||||
|
|
||||||
|
|
||||||
|
def _gef_filename(diff):
|
||||||
|
if diff.new.path:
|
||||||
|
return diff.new.path
|
||||||
|
return diff.old.path
|
||||||
|
|
||||||
|
|
||||||
class BitbucketProvider(GitProvider):
|
class BitbucketProvider(GitProvider):
|
||||||
def __init__(
|
def __init__(
|
||||||
self, pr_url: Optional[str] = None, incremental: Optional[bool] = False
|
self, pr_url: Optional[str] = None, incremental: Optional[bool] = False
|
||||||
@ -123,7 +129,18 @@ class BitbucketProvider(GitProvider):
|
|||||||
self.pr = self._get_pr()
|
self.pr = self._get_pr()
|
||||||
|
|
||||||
def get_files(self):
|
def get_files(self):
|
||||||
return [diff.new.path for diff in self.pr.diffstat()]
|
try:
|
||||||
|
git_files = context.get("git_files", None)
|
||||||
|
if git_files:
|
||||||
|
return git_files
|
||||||
|
self.git_files = [_gef_filename(diff) for diff in self.pr.diffstat()]
|
||||||
|
context["git_files"] = self.git_files
|
||||||
|
return self.git_files
|
||||||
|
except Exception:
|
||||||
|
if not self.git_files:
|
||||||
|
self.git_files = [_gef_filename(diff) for diff in self.pr.diffstat()]
|
||||||
|
return self.git_files
|
||||||
|
|
||||||
|
|
||||||
def get_diff_files(self) -> list[FilePatchInfo]:
|
def get_diff_files(self) -> list[FilePatchInfo]:
|
||||||
if self.diff_files:
|
if self.diff_files:
|
||||||
@ -181,8 +198,9 @@ class BitbucketProvider(GitProvider):
|
|||||||
invalid_files_names = []
|
invalid_files_names = []
|
||||||
diff_files = []
|
diff_files = []
|
||||||
for index, diff in enumerate(diffs):
|
for index, diff in enumerate(diffs):
|
||||||
if not is_valid_file(diff.new.path):
|
file_path = _gef_filename(diff)
|
||||||
invalid_files_names.append(diff.new.path)
|
if not is_valid_file(file_path):
|
||||||
|
invalid_files_names.append(file_path)
|
||||||
continue
|
continue
|
||||||
|
|
||||||
try:
|
try:
|
||||||
@ -203,7 +221,7 @@ class BitbucketProvider(GitProvider):
|
|||||||
original_file_content_str,
|
original_file_content_str,
|
||||||
new_file_content_str,
|
new_file_content_str,
|
||||||
diff_split[index],
|
diff_split[index],
|
||||||
diff.new.path,
|
file_path,
|
||||||
)
|
)
|
||||||
|
|
||||||
if diff.data['status'] == 'added':
|
if diff.data['status'] == 'added':
|
||||||
|
Reference in New Issue
Block a user