From 40db6b7ff239b01d8cb0bc1c4b7f4c68bd3d1e5b Mon Sep 17 00:00:00 2001 From: kaede10 Date: Wed, 29 Nov 2023 16:16:22 +0800 Subject: [PATCH 1/2] update --- pr_review/src/review_code/review.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pr_review/src/review_code/review.py b/pr_review/src/review_code/review.py index 4268912..80d30b1 100644 --- a/pr_review/src/review_code/review.py +++ b/pr_review/src/review_code/review.py @@ -375,6 +375,6 @@ class CodeReview: # Modifications were made to the first four lines of the file or not def modifications_position(self, patch): patch_lines = self.patchStartEndLine(patch) - if patch_lines['newHunk']['startLine'] <= 4 or patch_lines['newHunk']['startLine'] <= 4: + if patch_lines['oldHunk']['startLine'] <= 4 or patch_lines['newHunk']['startLine'] <= 4: return True return False \ No newline at end of file -- Gitee From 8247f256fc462c89cba23189045ba8e3e6dfb998 Mon Sep 17 00:00:00 2001 From: kaede10 Date: Tue, 5 Dec 2023 19:24:09 +0800 Subject: [PATCH 2/2] add parameter language to pr-review service --- pr_review/src/handle/pull_request.py | 17 +++++++++++++---- pr_review/src/review_code/input.py | 5 ++++- pr_review/src/review_code/prompts.py | 1 + pr_review/src/review_code/review.py | 4 ++-- pr_review/src/review_code/review_task.py | 4 ++-- 5 files changed, 22 insertions(+), 9 deletions(-) diff --git a/pr_review/src/handle/pull_request.py b/pr_review/src/handle/pull_request.py index 3139f48..6b2c793 100644 --- a/pr_review/src/handle/pull_request.py +++ b/pr_review/src/handle/pull_request.py @@ -2,8 +2,8 @@ from loguru import logger from review_code.review_task import review_task -comment_method = {"@pr-review": review_task} - +comment_method = {"/pr-review": review_task} +language_map = {"zh": "Chinese", "en": "English"} def merge_request_hooks(data): pass @@ -35,9 +35,18 @@ def note_hooks(data): logger.error("no comment body") return - comment_fuc = comment_method.get(str(comment_body).strip()) + comments = comment_body.lower().split(" ") + comment_fuc = comment_method.get(comments[0].strip()) if comment_fuc is None: logger.error("system not suport this comment") return - comment_fuc(data) + language = 'Chinese' + if len(comments) > 1: + language = language_map.get(comments[1]) + + if not language: + logger.error("language error") + return + + comment_fuc(data, language) diff --git a/pr_review/src/review_code/input.py b/pr_review/src/review_code/input.py index f12af0e..a484836 100644 --- a/pr_review/src/review_code/input.py +++ b/pr_review/src/review_code/input.py @@ -2,7 +2,7 @@ from loguru import logger import requests class Input: - def __init__(self, data): + def __init__(self, data, language): self.systemMessage = '' self.title = data.get("title", None) self.description = '' @@ -17,10 +17,13 @@ class Input: self.diff = '' self.commentChain = '' self.comment = '' + self.language = language def render(self, content): if not content: return '' + if self.language: + content = content.replace('$language', self.language) if self.systemMessage: content = content.replace('$systemMessage', self.systemMessage) if self.title: diff --git a/pr_review/src/review_code/prompts.py b/pr_review/src/review_code/prompts.py index fc34dc6..b105556 100644 --- a/pr_review/src/review_code/prompts.py +++ b/pr_review/src/review_code/prompts.py @@ -33,6 +33,7 @@ class Prompts: - Focus solely on offering specific, objective insights based on the given context and refrain from making broad comments about potential impacts on the system or question intentions behind the changes. + - You MUST respond in $language. If there are no issues found on a line range, you MUST respond with the text `LGTM!` for that line range in the review section. diff --git a/pr_review/src/review_code/review.py b/pr_review/src/review_code/review.py index 80d30b1..0db4855 100644 --- a/pr_review/src/review_code/review.py +++ b/pr_review/src/review_code/review.py @@ -13,12 +13,12 @@ IGNORE_KEYWORD = '@PRReviewAI: ignore' class CodeReview: - def __init__(self, data): + def __init__(self, data, language): self.options = Options() self.prompts = Prompts() self.bot = Bot() self.giteeApi = GiteeApi(data) - self.input = Input(data) + self.input = Input(data, language) self.commenter = Commenter(self.giteeApi) self.commits = [] self.pr_diff = data.get("pull_request").get("diff_url", None) diff --git a/pr_review/src/review_code/review_task.py b/pr_review/src/review_code/review_task.py index 2e974e4..03f2b67 100644 --- a/pr_review/src/review_code/review_task.py +++ b/pr_review/src/review_code/review_task.py @@ -2,8 +2,8 @@ from review_code.review import CodeReview -def review_task(data): +def review_task(data, language): if data.get('noteable_type', None) == 'PullRequest': - codeReview = CodeReview(data) + codeReview = CodeReview(data, language) codeReview.code_review() -- Gitee