Table des matières
Commencer
Mettre en œuvre les demandes de suivi
发送提醒电子邮件
总结
Maison développement back-end Tutoriel Python Construire un planificateur de révision de code Python : suivi des révisions

Construire un planificateur de révision de code Python : suivi des révisions

Aug 30, 2023 pm 08:09 PM
代码审查 调度程序 suivi de l'examen

Construire un planificateur de révision de code Python : suivi des révisions

Dans la troisième partie de cette série, vous avez appris à enregistrer les informations de demande de révision de code pour un traitement ultérieur. Vous créez une méthode appelée read_email pour recevoir un e-mail de la boîte de réception afin de vérifier si le réviseur a répondu à la demande de révision du code. Vous avez également implémenté la gestion des erreurs dans le code du planificateur de révision de code.

Dans cette partie de la série, vous utiliserez les informations de révision de code enregistrées et les informations de votre courrier électronique pour vérifier si le réviseur a répondu à la demande de révision. Si la demande n’a pas reçu de réponse, vous enverrez un e-mail de suivi au réviseur.

Commencer

Commencez par cloner le code source de la troisième partie de cette série de didacticiels.

git clone https://github.com/royagasthyan/CodeReviewer-Part3 CodeReviewer
Copier après la connexion

Modifier config.json 文件以包含一些相关的电子邮件地址,并保留 royagasthyan@gmail.com 电子邮件地址。这是因为 git 具有与此特定电子邮件地址相关的提交,这是代码按预期执行所必需的。修改 schedule.py 文件中的 SMTP Identifiants :

FROM_EMAIL      = "your_email_address@gmail.com"
FROM_PWD        = "your_password"
Copier après la connexion

Accédez au répertoire du projet CodeReviewer et essayez d'exécuter la commande suivante dans le terminal.

python scheduler.py -n 20 -p "project_x"
Copier après la connexion

Il doit envoyer la demande de révision du code à un développeur aléatoire pour examen et créer un fichier reviewer.json contenant les informations de révision.

Mettre en œuvre les demandes de suivi

Nous commençons par créer une méthode de demande de suivi nommée followup_request 的后续请求方法。在 followup_request 方法内,读取 reviewer.json. Dans la méthode

, lisez le fichier

et enregistrez le contenu dans une liste. Le code est le suivant : read_email

with open('reviewer.json','r') as jfile:
    review_info = json.load(jfile)
Copier après la connexion

Ensuite, extrayez les informations de courrier électronique en utilisant la méthode

que vous avez implémentée dans le didacticiel précédent. Re:

email_info = read_email(no_days)
Copier après la connexion

Si l'évaluateur a répondu à la demande d'avis, il devrait y avoir un e-mail avec le même sujet et une marque

devant. Alors, parcourez la liste des messages d'avis et comparez le sujet de l'avis au sujet de l'e-mail pour voir si le réviseur a répondu à la demande. 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;
Copier après la connexion

Comme le montre le code ci-dessus, vous parcourez la liste

et vérifiez le sujet du message de commentaire par rapport au sujet de l'e-mail pour voir si le commentateur a répondu. reviewer.json 文件中保留特定的审阅信息。因此,创建一个名为 Delete_Info 的 Python 方法,以从 reviewer.json 文件中删除特定评论信息。以下是 Delete_Info

Désormais, une fois qu'un réviseur répond à une demande de révision de code, vous n'avez plus besoin de conserver des informations de révision spécifiques dans le fichier

. Par conséquent, créez une méthode Python nommée

pour supprimer les informations de commentaire spécifiques du fichier

. Voici à quoi ressemble 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
Copier après la connexion

Comme le montre le code ci-dessus, vous avez parcouru la liste des informations de commentaire et supprimé les entrées correspondant à l'ID. Après avoir supprimé les informations du fichier, revenez à la liste. review_info

Lorsque vous répondez à un message de commentaire, vous devez appeler la méthode

. Lors de l'appel de la méthode Delete_Info, vous devez transmettre une copie de

afin de ne pas altérer la liste originale des messages. Vous aurez besoin de la liste originale des informations sur les avis pour une comparaison ultérieure. Importez donc le module Python copy pour créer une copie de la liste originale des messages de commentaires.

from copy import copy
Copier après la connexion
followup_requestCréez une copie de la

liste.

review_info_copy = copy(review_info)
Copier après la connexion
review_info 列表被迭代,您需要检查 reviewer.json 文件中是否有任何更改。如果任何现有评论信息已被删除,您需要相应更新 reviewer.json 文件。因此,检查 review_info_copyreview_info 是否相同,并更新 reviewer.jsonLors de la suppression des informations sur les commentaires répondus de la liste d'origine, transmettez la liste copiée à la méthode

.

review_info_copy = Delete_Info(review_info_copy,review['id'])
Copier après la connexion
followup_requestVoici la

méthode :

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;
Copier après la connexion
followup_requestMaintenant, une fois la liste

itérée, vous devez vérifier s'il y a des changements dans le fichier

. Si des informations de commentaire existantes ont été supprimées, vous devrez mettre à jour votre fichier reviewer.json 文件。现在运行调度程序,以便将代码审查请求发送给随机开发人员。检查该信息是否已保存在 reviewer.json en conséquence. Alors, vérifiez si review_info_copy et

sont identiques et mettez à jour le fichier

. reviewer.json

if review_info_copy != review_info:
    with open('reviewer.json','w') as outfile:
        json.dump(review_info_copy,outfile)
Copier après la connexion

Voici la méthode 🎜 complète : 🎜
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)
Copier après la connexion
🎜Appelez la méthode 🎜 pour donner suite à une demande d'avis envoyée. 🎜
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))
Copier après la connexion
🎜Enregistrez les modifications ci-dessus. Afin de tester les fonctionnalités ultérieures, veuillez supprimer le fichier 🎜 du répertoire du projet. Exécutez maintenant le planificateur pour envoyer des demandes de révision de code à des développeurs aléatoires. Vérifiez si les informations ont été enregistrées dans le fichier 🎜. 🎜 🎜Exiger des développeurs spécifiques qu'ils répondent aux demandes de révision de code en répondant aux e-mails. Maintenant, exécutez à nouveau le planificateur et cette fois, le planificateur devrait être capable de trouver la réponse et de la supprimer du fichier 🎜. 🎜

发送提醒电子邮件

审核者回复代码审核请求电子邮件后,需要从 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"
    ]
}
Copier après la connexion

因此,当审阅者在 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
Copier après la connexion

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
Copier après la connexion

如果天数大于配置中的后续频率日期,请发送提醒电子邮件。

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')
Copier après la connexion

这是完整的 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)
Copier après la connexion

总结

在本教程中,您了解了如何实现跟进代码审核请求的逻辑。您还添加了如果审阅者在一定天数内没有回复电子邮件的情况下发送提醒电子邮件的功能。

这个 Python 代码审查器可以进一步增强以满足您的需求。请分叉存储库并添加新功能,并在下面的评论中告诉我们。

本教程的源代码可在 GitHub 上获取。

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment utiliser le langage Go pour la pratique de la révision de code Comment utiliser le langage Go pour la pratique de la révision de code Aug 02, 2023 pm 11:10 PM

Comment utiliser le langage Go pour la pratique de révision de code Introduction : Dans le processus de développement logiciel, la révision de code (CodeReview) est une pratique importante. En examinant et en analysant le code de chacun, les membres de l'équipe peuvent identifier les problèmes potentiels, améliorer la qualité du code, accroître le travail d'équipe et partager leurs connaissances. Cet article expliquera comment utiliser le langage Go pour les pratiques de révision de code et joindra des exemples de code. 1. L'importance de la révision du code La révision du code est une bonne pratique pour promouvoir la qualité du code. Il peut trouver et corriger les erreurs potentielles dans le code, améliorer le code

Partage d'expérience de développement Python : comment effectuer la révision du code et l'assurance qualité Partage d'expérience de développement Python : comment effectuer la révision du code et l'assurance qualité Nov 22, 2023 am 08:18 AM

Partage d'expériences de développement Python : Comment effectuer la révision du code et l'assurance qualité Introduction : Dans le processus de développement logiciel, la révision du code et l'assurance qualité sont des liens cruciaux. Une bonne révision du code peut améliorer la qualité du code, réduire les erreurs et les défauts, et améliorer la maintenabilité et l’évolutivité du programme. Cet article partagera l'expérience de la révision du code et de l'assurance qualité dans le développement Python sous les aspects suivants. 1. Élaborer des spécifications de révision du code La révision du code est une activité systématique qui nécessite une inspection et une évaluation complètes du code. Afin de normaliser la révision du code

Comment effectuer la révision du code et l'optimisation des performances dans le développement Java Comment effectuer la révision du code et l'optimisation des performances dans le développement Java Oct 10, 2023 pm 03:05 PM

Comment effectuer la révision du code et l'optimisation des performances dans le développement Java nécessite des exemples de code spécifiques. Dans le processus de développement Java quotidien, la révision du code et l'optimisation des performances sont des liens très importants. La révision du code peut garantir la qualité et la maintenabilité du code, tandis que l'optimisation des performances peut améliorer l'efficacité opérationnelle et la vitesse de réponse du système. Cet article explique comment procéder à la révision du code Java et à l'optimisation des performances, et donne des exemples de code spécifiques. Révision du code La révision du code est le processus de vérification du code ligne par ligne au fur et à mesure de son écriture et de résolution des problèmes et erreurs potentiels. ce qui suit

Révision du code PHP et intégration continue Révision du code PHP et intégration continue May 06, 2024 pm 03:00 PM

Oui, combiner les révisions de code avec l’intégration continue peut améliorer la qualité du code et l’efficacité de sa livraison. Les outils spécifiques incluent : PHP_CodeSniffer : vérifiez le style de codage et les meilleures pratiques. PHPStan : Détectez les erreurs et les variables inutilisées. Psaume : fournit une vérification de type et une analyse avancée du code.

Guide de révision du code React : Comment garantir la qualité et la maintenabilité de votre code front-end Guide de révision du code React : Comment garantir la qualité et la maintenabilité de votre code front-end Sep 27, 2023 pm 02:45 PM

Guide de révision du code React : Comment garantir la qualité et la maintenabilité du code front-end Introduction : Dans le développement logiciel actuel, le code front-end est de plus en plus important. En tant que framework de développement front-end populaire, React est largement utilisé dans divers types d'applications. Cependant, en raison de la flexibilité et de la puissance de React, écrire du code de haute qualité et maintenable peut devenir un défi. Pour résoudre ce problème, cet article présentera quelques bonnes pratiques pour la révision du code React et fournira quelques exemples de code concrets. 1. Style de code

Notes de développement C# : révision du code et assurance qualité Notes de développement C# : révision du code et assurance qualité Nov 22, 2023 pm 05:00 PM

Dans le processus de développement C#, l’assurance qualité du code est cruciale. La qualité du code affecte directement la stabilité, la maintenabilité et l'évolutivité du logiciel. En tant que méthode importante d’assurance qualité, la révision du code joue un rôle qui ne peut être ignoré dans le développement de logiciels. Cet article se concentrera sur les considérations relatives à la révision du code dans le développement C# pour aider les développeurs à améliorer la qualité du code. 1. Le but et l'importance de la révision La révision du code fait référence au processus de découverte et de correction des problèmes et des erreurs existants en lisant et en inspectant attentivement le code. Son objectif principal est d'améliorer

Comment effectuer des révisions de code et des demandes de fusion dans GitLab Comment effectuer des révisions de code et des demandes de fusion dans GitLab Oct 20, 2023 pm 04:03 PM

Comment effectuer des révisions de code et des demandes de fusion dans GitLab La révision de code est une pratique de développement importante qui peut aider les équipes à identifier les problèmes potentiels et à améliorer la qualité du code. Dans GitLab, grâce à la fonction de demande de fusion (MergeRequest), nous pouvons facilement effectuer une révision de code et fusionner des travaux. Cet article explique comment effectuer des révisions de code et des demandes de fusion dans GitLab, tout en fournissant des exemples de code spécifiques. Préparation : assurez-vous d'avoir créé un projet GitLab et de disposer des informations nécessaires.

Comment effectuer une révision de code du code C++ ? Comment effectuer une révision de code du code C++ ? Nov 02, 2023 am 09:12 AM

Comment effectuer une révision de code du code C++ ? La révision du code est une partie très importante du processus de développement logiciel. Elle peut aider l'équipe de développement à identifier et à corriger les erreurs potentielles, à améliorer la qualité du code et à réduire la charge de travail de maintenance et de débogage ultérieurs. Pour les langages statiques fortement typés comme le C++, la révision du code est particulièrement importante. Voici quelques étapes et considérations clés pour vous aider à effectuer une révision efficace du code C++. Définir des normes de révision du code : avant de procéder à une révision du code, l’équipe doit développer conjointement une norme de révision du code pour se mettre d’accord sur diverses erreurs et violations.

See all articles