このシリーズのパート 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_copy
と review_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 サイトの他の関連記事を参照してください。