mirror of
https://github.com/qodo-ai/pr-agent.git
synced 2025-07-04 04:40:38 +08:00
More refactoring....
This commit is contained in:
@ -17,21 +17,16 @@ class PRAgent:
|
|||||||
if any(cmd == action for cmd in ["/answer"]):
|
if any(cmd == action for cmd in ["/answer"]):
|
||||||
await PRReviewer(pr_url, is_answer=True).review()
|
await PRReviewer(pr_url, is_answer=True).review()
|
||||||
elif any(cmd == action for cmd in ["/review", "/review_pr", "/reflect_and_review"]):
|
elif any(cmd == action for cmd in ["/review", "/review_pr", "/reflect_and_review"]):
|
||||||
incremental_review = await self.parse_args(request)
|
|
||||||
if settings.pr_reviewer.ask_and_reflect or "/reflect_and_review" in request:
|
if settings.pr_reviewer.ask_and_reflect or "/reflect_and_review" in request:
|
||||||
await PRInformationFromUser(pr_url).generate_questions()
|
await PRInformationFromUser(pr_url).generate_questions()
|
||||||
else:
|
else:
|
||||||
await PRReviewer(pr_url, is_incremental=incremental_review).review()
|
await PRReviewer(pr_url, args=args).review()
|
||||||
elif any(cmd == action for cmd in ["/describe", "/describe_pr"]):
|
elif any(cmd == action for cmd in ["/describe", "/describe_pr"]):
|
||||||
await PRDescription(pr_url).describe()
|
await PRDescription(pr_url).describe()
|
||||||
elif any(cmd == action for cmd in ["/improve", "/improve_code"]):
|
elif any(cmd == action for cmd in ["/improve", "/improve_code"]):
|
||||||
await PRCodeSuggestions(pr_url).suggest()
|
await PRCodeSuggestions(pr_url).suggest()
|
||||||
elif any(cmd == action for cmd in ["/ask", "/ask_question"]):
|
elif any(cmd == action for cmd in ["/ask", "/ask_question"]):
|
||||||
pattern = r'(/ask|/ask_question)\s*(.*)'
|
await PRQuestions(pr_url, args).answer()
|
||||||
matches = re.findall(pattern, request, re.IGNORECASE)
|
|
||||||
if matches:
|
|
||||||
question = matches[0][1]
|
|
||||||
await PRQuestions(pr_url, question).answer()
|
|
||||||
else:
|
else:
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
@ -30,6 +30,9 @@ class GithubProvider(GitProvider):
|
|||||||
def is_supported(self, capability: str) -> bool:
|
def is_supported(self, capability: str) -> bool:
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
def get_pr_url(self) -> str:
|
||||||
|
return f"https://github.com/{self.repo}/pull/{self.pr_num}"
|
||||||
|
|
||||||
def set_pr(self, pr_url: str):
|
def set_pr(self, pr_url: str):
|
||||||
self.repo, self.pr_num = self._parse_pr_url(pr_url)
|
self.repo, self.pr_num = self._parse_pr_url(pr_url)
|
||||||
self.pr = self._get_pr()
|
self.pr = self._get_pr()
|
||||||
|
@ -12,7 +12,8 @@ from pr_agent.git_providers.git_provider import get_main_pr_language
|
|||||||
|
|
||||||
|
|
||||||
class PRQuestions:
|
class PRQuestions:
|
||||||
def __init__(self, pr_url: str, question_str: str):
|
def __init__(self, pr_url: str, args=None):
|
||||||
|
question_str = self.parse_args(args)
|
||||||
self.git_provider = get_git_provider()(pr_url)
|
self.git_provider = get_git_provider()(pr_url)
|
||||||
self.main_pr_language = get_main_pr_language(
|
self.main_pr_language = get_main_pr_language(
|
||||||
self.git_provider.get_languages(), self.git_provider.get_files()
|
self.git_provider.get_languages(), self.git_provider.get_files()
|
||||||
@ -34,6 +35,13 @@ class PRQuestions:
|
|||||||
self.patches_diff = None
|
self.patches_diff = None
|
||||||
self.prediction = None
|
self.prediction = None
|
||||||
|
|
||||||
|
def parse_args(self, args):
|
||||||
|
if args and len(args) > 0:
|
||||||
|
question_str = " ".join(args)
|
||||||
|
else:
|
||||||
|
question_str = ""
|
||||||
|
return question_str
|
||||||
|
|
||||||
async def answer(self):
|
async def answer(self):
|
||||||
logging.info('Answering a PR question...')
|
logging.info('Answering a PR question...')
|
||||||
if settings.config.publish_output:
|
if settings.config.publish_output:
|
||||||
|
@ -120,7 +120,7 @@ class PRReviewer:
|
|||||||
|
|
||||||
if self.incremental.is_incremental:
|
if self.incremental.is_incremental:
|
||||||
# Rename title when incremental review - Add to the beginning of the dict
|
# Rename title when incremental review - Add to the beginning of the dict
|
||||||
last_commit_url = f"{self.pr_url}/commits/{self.git_provider.incremental.first_new_commit_sha}"
|
last_commit_url = f"{self.git_provider.get_pr_url()}/commits/{self.git_provider.incremental.first_new_commit_sha}"
|
||||||
data = OrderedDict(data)
|
data = OrderedDict(data)
|
||||||
data.update({'Incremental PR Review': {
|
data.update({'Incremental PR Review': {
|
||||||
"⏮️ Review for commits since previous PR-Agent review": f"Starting from commit {last_commit_url}"}})
|
"⏮️ Review for commits since previous PR-Agent review": f"Starting from commit {last_commit_url}"}})
|
||||||
|
Reference in New Issue
Block a user