构建一个Python代码审查调度程序:审查跟进
在本系列的第三部分中,您了解了如何保存代码审查请求信息以供后续处理。您创建了一个名为 read_email
的方法来从收件箱中获取电子邮件,以检查审阅者是否已回复代码审阅请求。您还在代码审查调度程序代码中实现了错误处理。
在本系列的这一部分中,您将使用保存的代码审核信息和电子邮件中的信息来检查审核者是否已回复审核请求。如果请求尚未得到回复,您将向审核者发送一封后续电子邮件。
开始使用
首先克隆本教程系列第三部分的源代码。
git clone https://github.com/royagasthyan/CodeReviewer-Part3 CodeReviewer
修改 config.json
文件以包含一些相关的电子邮件地址,并保留 royagasthyan@gmail.com
电子邮件地址。这是因为 git 具有与此特定电子邮件地址相关的提交,这是代码按预期执行所必需的。修改 schedule.py
文件中的 SMTP
凭据:
FROM_EMAIL = "your_email_address@gmail.com" FROM_PWD = "your_password"
导航到项目目录 CodeReviewer
并尝试在终端中执行以下命令。
python scheduler.py -n 20 -p "project_x"
它应该将代码审查请求发送给随机开发人员进行审查,并创建一个包含审查信息的 reviewer.json
文件。
实施后续请求
我们首先创建一个名为 followup_request
的后续请求方法。在 followup_request
方法内,读取 reviewer.json
的后续请求方法。在
文件并将内容保存在列表中。代码如下:read_email
with open('reviewer.json','r') as jfile: review_info = json.load(jfile)
方法提取电子邮件信息。Re:
email_info = read_email(no_days)
标记。因此,迭代审阅信息列表,并将审阅主题与电子邮件主题进行比较,看看审阅者是否已回复请求。review_info
for review in review_info: review_replied = false expected_subject = 'RE: ' + review['subject'] for email in email_info: if expected_subject == email['subject']: review_replied = True print 'Reviewer has responded' break;
列表,并根据电子邮件主题检查了评论信息主题,以查看评论者是否已回复。reviewer.json
文件中保留特定的审阅信息。因此,创建一个名为 Delete_Info
的 Python 方法,以从 reviewer.json
文件中删除特定评论信息。以下是 Delete_Info
文件中保留特定的审阅信息。因此,创建一个名为
的 Python 方法,以从 文件中删除特定评论信息。以下是 Delete_Info
方法。调用 Delete_Info
方法时,需要传递 review_info
的副本,以免更改原始信息列表。您将需要原始评论信息列表以供稍后比较。因此导入 copy
的外观:
def Delete_Info(info, id): for i in xrange(len(info)): if info[i]['id'] == id: info.pop(i) break return info
如上面的代码所示,您已经迭代了评论信息列表并删除了与Id匹配的条目。从文件中删除信息后,返回列表。review_info
方法。调用 Delete_Info
方法时,需要传递
copy
Python 模块来创建原始评论信息列表的副本。
from copy import copy
followup_request
创建 列表的副本。
review_info_copy = copy(review_info)
review_info
列表被迭代,您需要检查 reviewer.json
文件中是否有任何更改。如果任何现有评论信息已被删除,您需要相应更新 reviewer.json
文件。因此,检查 review_info_copy
和 review_info
是否相同,并更新 reviewer.json
从原列表中删除已回复的评论信息时,将复制列表传递给方法。
review_info_copy = Delete_Info(review_info_copy,review['id'])
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_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;
followup_request
现在,一旦 列表被迭代,您需要检查 文件中是否有任何更改。如果任何现有评论信息已被删除,您需要相应更新 reviewer.json
文件。现在运行调度程序,以便将代码审查请求发送给随机开发人员。检查该信息是否已保存在 reviewer.json
文件。因此,检查 review_info_copy
和
文件。 reviewer.json
if review_info_copy != review_info: with open('reviewer.json','w') as outfile: json.dump(review_info_copy,outfile)
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_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 review_info_copy != review_info: with open('reviewer.json','w') as outfile: json.dump(review_info_copy,outfile)
try: commits = process_commits() # Added the follow Up Method followup_request() if len(commits) == 0: print 'No commits found ' else: schedule_review_request(commits) except Exception,e: print 'Error occurred. Check log for details.' logger.error(str(datetime.datetime.now()) + " - Error occurred : " + str(e) + "\n") logger.exception(str(e))
发送提醒电子邮件
审核者回复代码审核请求电子邮件后,需要从 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中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

如何使用Go语言进行代码审查实践引言:在软件开发过程中,代码审查(CodeReview)是一种重要的实践。通过互相检查和分析代码,团队成员可以发现潜在的问题、改进代码质量、增加团队合作和共享知识。本文将介绍如何使用Go语言进行代码审查实践,并附上代码示例。一、代码审查的重要性代码审查是一种促进代码质量的最佳实践。它可以发现和纠正代码中的潜在错误、提高代码可

Java开发中如何进行代码审查和性能优化,需要具体代码示例在日常的Java开发过程中,代码审查和性能优化是非常重要的环节。代码审查能够确保代码的质量和可维护性,而性能优化则能够提升系统的运行效率和响应速度。本文将介绍如何进行Java代码审查和性能优化,并且给出具体的代码示例。代码审查代码审查是在代码编写的过程中逐行检查代码,并修复潜在的问题和错误的过程。以下

Python开发经验分享:如何进行代码审查和质量保证导言:在软件开发过程中,代码审查和质量保证是至关重要的环节。良好的代码审查可以提高代码质量、减少错误和缺陷,提高程序的可维护性和可扩展性。本文将从以下几个方面分享Python开发中如何进行代码审查和质量保证的经验。一、制定代码审查规范代码审查是一种系统性的活动,需要对代码进行全面的检查和评估。为了规范代码审

是的,将代码审查与持续集成相结合可以提高代码质量和交付效率。具体工具包括:PHP_CodeSniffer:检查编码风格和最佳实践。PHPStan:检测错误和未使用的变量。Psalm:提供类型检查和高级代码分析。

在C#开发过程中,代码的质量保障是至关重要的。代码质量的高低直接影响着软件的稳定性、可维护性和可扩展性。而代码审查作为一种重要的质量保障手段,在软件开发中发挥着不可忽视的作用。本文将重点介绍C#开发中的代码审查注意事项,以帮助开发者提升代码质量。一、审查的目的与意义代码审查是指通过仔细阅读和检查代码,发现和纠正其中存在的问题和错误的过程。它的主要目的是提高代

React代码审查指南:如何确保前端代码的质量和可维护性引言:在今天的软件开发中,前端代码越来越重要。而React作为一种流行的前端开发框架,被广泛应用于各种类型的应用程序中。然而,由于React的灵活性和强大的功能,编写高质量和可维护的代码可能会成为一个挑战。为了解决这个问题,本文将介绍一些React代码审查的最佳实践,并提供一些具体的代码示例。一、代码风

如何在GitLab中进行代码审查和合并请求代码审查是一个重要的开发实践,可以帮助团队发现潜在的问题并改善代码质量。在GitLab中,通过合并请求(MergeRequest)功能,我们可以方便地进行代码审查和合并工作。本文将介绍如何在GitLab中执行代码审查和合并请求,同时提供具体的代码示例。准备工作:请确保您已经创建了一个GitLab项目,并且已经拥有相

如何进行C++代码的代码审查?代码审查是软件开发过程中非常重要的一环,它能够帮助开发团队识别并纠正潜在的错误,提高代码质量,减少后续维护和调试的工作量。对于C++这样的强类型静态语言来说,代码审查尤为重要。下面将介绍一些关键步骤和注意事项,帮助你进行有效的C++代码审查。设定代码审查标准:在进行代码审查之前,团队应该共同制定一份代码审查标准,约定各类错误和违
