>  기사  >  백엔드 개발  >  Python 코드 검토 스케줄러 구축: 후속 조치 검토

Python 코드 검토 스케줄러 구축: 후속 조치 검토

WBOY
WBOY원래의
2023-08-30 20:09:181102검색

Python 코드 검토 스케줄러 구축: 후속 조치 검토

이 시리즈의 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_copyreview_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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.