ホームページ  >  記事  >  バックエンド開発  >  Python コードレビュースケジューラーの構築: レビューのフォローアップ

Python コードレビュースケジューラーの構築: レビューのフォローアップ

WBOY
WBOYオリジナル
2023-08-30 20:09:181106ブラウズ

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 は次のようになります:

リーリー

上記のコードに示されているように、レビュー情報のリストを繰り返し処理し、ID に一致するエントリを削除しました。ファイルから情報を削除した後、リストに戻ります。

コメント メッセージに返信するときは、Delete_Info メソッドを呼び出す必要があります。 Delete_Info メソッドを呼び出すときは、元の情報リストを変更しないように、review_info のコピーを渡す必要があります。後で比較するために、元のレビュー情報リストが必要になります。したがって、copy Python モジュールをインポートして、コメント メッセージの元のリストのコピーを作成します。

リーリー

review_info リストのコピーを作成します。

リーリー

返信されたコメント情報を元のリストから削除する場合は、コピーしたリストを Delete_Info メソッドに渡します。

リーリー

これは followup_request メソッド:

リーリー

ここで、review_info リストが繰り返されたら、reviewer.json ファイルに変更があるかどうかを確認する必要があります。既存のレビュー情報が削除された場合は、それに応じて reviewer.json ファイルを更新する必要があります。したがって、review_info_copyreview_info が同じかどうかを確認し、reviewer.json ファイルを更新します。

リーリー

これは完全な followup_request メソッドです:

リーリー

followup_request メソッドを呼び出して、送信された監査リクエストをフォローアップします。

リーリー

上記の変更を保存します。後続の機能をテストするには、プロジェクト ディレクトリから reviewer.json ファイルを削除してください。次に、スケジューラを実行して、ランダムな開発者にコード レビュー リクエストを送信します。この情報が reviewer.json ファイルに保存されていることを確認してください。

特定の開発者に、電子メールに返信することでコード レビュー リクエストに応答するよう要求します。ここでスケジューラを再度実行すると、今度はスケジューラが応答を見つけて、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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。