이 시리즈의 3부에서는 나중에 처리하기 위해 코드 검토 요청 정보를 저장하는 방법을 배웠습니다. 검토자가 코드 검토 요청에 응답했는지 확인하기 위해 받은 편지함에서 이메일을 받는 read_email
라는 메서드를 만듭니다. 또한 코드 검토 스케줄러 코드에서 오류 처리를 구현했습니다.
이 시리즈에서는 저장된 코드 검토 정보와 이메일 정보를 사용하여 검토자가 검토 요청에 응답했는지 확인합니다. 요청에 응답하지 않은 경우 검토자에게 후속 이메일을 보내게 됩니다.
이 튜토리얼 시리즈 3부의 소스 코드를 복제하는 것부터 시작하세요.
으아악수정 config.json
文件以包含一些相关的电子邮件地址,并保留 royagasthyan@gmail.com
电子邮件地址。这是因为 git 具有与此特定电子邮件地址相关的提交,这是代码按预期执行所必需的。修改 schedule.py
文件中的 SMTP
자격 증명:
프로젝트 디렉터리 CodeReviewer
로 이동하여 터미널에서 다음 명령을 실행해 보세요.
심사를 위해 임의의 개발자에게 코드 검토 요청을 보내고 검토 정보가 포함된 reviewer.json
파일을 생성해야 합니다.
먼저 followup_request
的后续请求方法。在 followup_request
方法内,读取 reviewer.json
라는 후속 요청 메서드를 만드는 것부터 시작합니다.
파일을 읽고 내용을 목록에 저장합니다. 코드는 다음과 같습니다: read_email
으아악
메서드를 사용하여 이메일 정보를 추출합니다. Re:
으아악
표시가 있어야 합니다. 따라서 리뷰 메시지 목록을 반복하고 리뷰 제목을 이메일 제목과 비교하여 리뷰어가 요청에 응답했는지 확인하세요. review_info
으아악
목록을 반복하고 이메일 제목과 댓글 메시지 주제를 비교하여 댓글 작성자가 응답했는지 확인합니다. reviewer.json
文件中保留特定的审阅信息。因此,创建一个名为 Delete_Info
的 Python 方法,以从 reviewer.json
文件中删除特定评论信息。以下是 Delete_Info
파일에 특정 검토 정보를 보관할 필요가 없습니다. 따라서
파일에서 특정 주석 정보를 제거하려면라는 Python 메서드를 만듭니다. Delete_Info
方法。调用 Delete_Info
方法时,需要传递 review_info
的副本,以免更改原始信息列表。您将需要原始评论信息列表以供稍后比较。因此导入 copy
모습은 다음과 같습니다.
위 코드에서 볼 수 있듯이 댓글 정보 목록을 반복하고 ID와 일치하는 항목을 제거했습니다. 파일에서 정보를 제거한 후 목록으로 돌아갑니다. review_info
메소드를 호출해야 합니다. Delete_Info
메서드를 호출할 때 원래 메시지 목록이 변경되지 않도록
copy
Python 모듈을 가져와 원래 주석 메시지 목록의 복사본을 만듭니다.
으아악
followup_request
목록의
으아악
review_info
列表被迭代,您需要检查 reviewer.json
文件中是否有任何更改。如果任何现有评论信息已被删除,您需要相应更新 reviewer.json
文件。因此,检查 review_info_copy
和 review_info
是否相同,并更新 reviewer.json
원본 목록에서 답변한 댓글 정보를 삭제할 때 복사한 목록을
으아악
followup_request
다음은
으아악
followup_request
이제
파일에 변경 사항이 있는지 확인해야 합니다. 기존 댓글 정보가 제거된 경우 그에 따라 reviewer.json
文件。现在运行调度程序,以便将代码审查请求发送给随机开发人员。检查该信息是否已保存在 reviewer.json
파일을 업데이트해야 합니다. 따라서 review_info_copy
와
파일을 업데이트하세요. reviewer.json
으아악
审核者回复代码审核请求电子邮件后,需要从 reviewer.json
文件中删除该信息,因为您不需要进一步跟踪它。如果审核者尚未回复代码审核请求,您需要发送后续邮件提醒他或她审核请求。
代码审查调度程序将每天运行。当它运行时,您首先需要检查开发人员响应审核请求是否已经过去了一定时间。在项目配置中,您可以设置一个审核周期,在此期间,如果审核者没有回复,调度程序将发送提醒电子邮件。
让我们首先在项目配置中添加配置。在配置文件中添加一个名为 followup_Frequency
的新配置。
{ "name": "project_x", "git_url": "https://github.com/royagasthyan/project_x", "followup_frequency":2, "members": [ "royagasthyan@gmail.com", "samon@gmail.com", "sualonni@gmail.com", "restuni@gmail.com" ] }
因此,当审阅者在 followup_Frequency
天数内没有回复时,您将发送一封提醒电子邮件。读取配置的同时将配置读入全局变量:
for p in main_config: if p['name'] == project: project_url = p['git_url'] project_members = p['members'] followup_frequency = p['followup_frequency'] break
在 followup_request
方法内部,当审稿人在 followup_frequest
天数内没有回复后续请求时,发送提醒邮件。计算自评论发送以来的天数。
review_date = datetime.datetime.strptime(review['sendDate'],'%Y-%m-%d') today = datetime.datetime.today() days_since_review = (today - review_date).days
如果天数大于配置中的后续频率日期,请发送提醒电子邮件。
if not review_replied: if days_since_review > followup_frequency: send_email(review['reviewer'],'Reminder: ' + review['subject'],'\nYou have not responded to the review request\n')
这是完整的 followup_request
方法:
def followup_request(): with open('reviewer.json','r') as jfile: review_info = json.load(jfile) review_info_copy = copy(review_info) email_info = read_email(no_days) for review in review_info: review_date = datetime.datetime.strptime(review['sendDate'],'%Y-%m-%d') today = datetime.datetime.today() days_since_review = (today - review_date).days review_replied = False expected_subject = 'Re: ' + review['subject'] for email in email_info: if expected_subject == email['Subject']: review_replied = True review_info_copy = Delete_Info(review_info_copy,review['id']) break; if not review_replied: if days_since_review > followup_frequency: send_email(review['reviewer'],'Reminder: ' + review['subject'],'\nYou have not responded to the review request\n') if review_info_copy != review_info: with open('reviewer.json','w') as outfile: json.dump(review_info_copy,outfile)
在本教程中,您了解了如何实现跟进代码审核请求的逻辑。您还添加了如果审阅者在一定天数内没有回复电子邮件的情况下发送提醒电子邮件的功能。
这个 Python 代码审查器可以进一步增强以满足您的需求。请分叉存储库并添加新功能,并在下面的评论中告诉我们。
本教程的源代码可在 GitHub 上获取。
위 내용은 Python 코드 검토 스케줄러 구축: 후속 조치 검토의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!