目錄
開始使用
實作後續請求
发送提醒电子邮件
总结
首頁 後端開發 Python教學 建立一個Python程式碼審查排程:審查跟進

建立一個Python程式碼審查排程:審查跟進

Aug 30, 2023 pm 08:09 PM
程式碼審查 調度程式 審查跟進

建立一個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 檔案並將內容保存在清單中。程式碼如下:

with open('reviewer.json','r') as jfile:
    review_info = json.load(jfile)
登入後複製

接下來,使用您在上一個教學中實現的 read_email 方法來提取電子郵件資訊。

email_info = read_email(no_days)
登入後複製

如果審閱者已回覆審閱請求,則應該有一封具有相同主題的電子郵件,並在其前面添加 Re: 標記。因此,迭代審閱資訊列表,並將審閱主題與電子郵件主題進行比較,看看審閱者是否已回覆請求。

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;
登入後複製

如上面的程式碼所示,您迭代了 review_info 列表,並根據電子郵件主題檢查了評論訊息主題,以查看評論者是否已回覆。

現在,一旦審閱者回應了程式碼審閱請求,您就無需在 reviewer.json 檔案中保留特定的審查資訊。因此,建立一個名為 Delete_Info 的 Python 方法,以從 reviewer.json 檔案中刪除特定評論資訊。以下是 Delete_Info 的外觀:

def Delete_Info(info, id):
    for i in xrange(len(info)):
        if info[i]['id'] == id:
            info.pop(i)
            break
    return info
登入後複製

如上面的程式碼所示,您已經迭代了評論資訊清單並刪除了與Id相符的條目。從文件中刪除資訊後,返回清單。

回覆某一則評論訊息時,需要呼叫 Delete_Info 方法。當呼叫 Delete_Info 方法時,需要傳遞 review_info 的副本,以免更改原始資訊清單。您將需要原始評論資訊清單以供稍後比較。因此導入 copy Python 模組來建立原始評論資訊清單的副本。

from copy import copy
登入後複製

建立 review_info 清單的副本。

review_info_copy = copy(review_info)
登入後複製

從原始清單中刪除已回覆的評論資訊時,將複製清單傳遞給Delete_Info方法。

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;
登入後複製

現在,一旦 review_info 清單被迭代,您需要檢查 reviewer.json 檔案中是否有任何變更。如果任何現有評論資訊已被刪除,您需要相應更新 reviewer.json 檔案。因此,檢查 review_info_copyreview_info 是否相同,並更新 reviewer.json 檔案。

if review_info_copy != review_info:
    with open('reviewer.json','w') as outfile:
        json.dump(review_info_copy,outfile)
登入後複製

這是完整的 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;

    if review_info_copy != review_info:
        with open('reviewer.json','w') as outfile:
            json.dump(review_info_copy,outfile)
登入後複製

呼叫 followup_request 方法來跟進已傳送的審核請求。

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 檔案。現在運行調度程序,以便將程式碼審查請求發送給隨機開發人員。檢查該資訊是否已保存在 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中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
4 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

如何使用Go語言進行程式碼審查實踐 如何使用Go語言進行程式碼審查實踐 Aug 02, 2023 pm 11:10 PM

如何使用Go語言進行程式碼審查實踐引言:在軟體開發過程中,程式碼審查(CodeReview)是一種重要的實踐。透過互相檢查和分析程式碼,團隊成員可以發現潛在的問題、改善程式碼品質、增加團隊合作和共享知識。本文將介紹如何使用Go語言進行程式碼審查實踐,並附上程式碼範例。一、程式碼審查的重要性程式碼審查是一種促進程式碼品質的最佳實踐。它可以發現和糾正程式碼中的潛在錯誤、提高程式碼可

Python開發經驗分享:如何進行程式碼審查和品質保證 Python開發經驗分享:如何進行程式碼審查和品質保證 Nov 22, 2023 am 08:18 AM

Python開發經驗分享:如何進行程式碼審查和品質保證導言:在軟體開發過程中,程式碼審查和品質保證是至關重要的環節。良好的程式碼審查可以提高程式碼品質、減少錯誤和缺陷,提高程式的可維護性和可擴展性。本文將從以下幾個方面分享Python開發中如何進行程式碼審查和品質保證的經驗。一、制定代碼審查規範代碼審查是一種系統性的活動,需要對代碼進行全面的檢查和評估。為了規範代碼審

Java開發中如何進行程式碼審查與效能優化 Java開發中如何進行程式碼審查與效能優化 Oct 10, 2023 pm 03:05 PM

Java開發中如何進行程式碼審查和效能最佳化,需要具體程式碼範例在日常的Java開發過程中,程式碼審查和效能優化是非常重要的環節。程式碼審查能夠確保程式碼的品質和可維護性,而效能最佳化則能夠提升系統的運作效率和回應速度。本文將介紹如何進行Java程式碼審查和效能最佳化,並給出具體的程式碼範例。程式碼審查程式碼審查是在程式碼編寫的過程中逐行檢查程式碼,並修復潛在的問題和錯誤的過程。以下

PHP 程式碼審查與持續集成 PHP 程式碼審查與持續集成 May 06, 2024 pm 03:00 PM

是的,將程式碼審查與持續整合相結合可以提高程式碼品質和交付效率。具體工具包括:PHP_CodeSniffer:檢查編碼風格和最佳實踐。 PHPStan:偵測錯誤和未使用的變數。 Psalm:提供類型檢查和高階程式碼分析。

React程式碼審查指南:如何確保前端程式碼的品質和可維護性 React程式碼審查指南:如何確保前端程式碼的品質和可維護性 Sep 27, 2023 pm 02:45 PM

React程式碼審查指南:如何確保前端程式碼的品質和可維護性引言:在今天的軟體開發中,前端程式碼越來越重要。而React作為一種流行的前端開發框架,被廣泛應用於各種類型的應用程式中。然而,由於React的靈活性和強大的功能,編寫高品質和可維護的程式碼可能會成為一個挑戰。為了解決這個問題,本文將介紹一些React程式碼審查的最佳實踐,並提供一些具體的程式碼範例。一、代碼風

C#開發注意事項:程式碼審查與品質保障 C#開發注意事項:程式碼審查與品質保障 Nov 22, 2023 pm 05:00 PM

在C#開發過程中,程式碼的品質保障是至關重要的。程式碼品質的高低直接影響軟體的穩定性、可維護性和可擴展性。而程式碼審查作為一種重要的品質保障手段,在軟體開發中扮演著不可忽視的角色。本文將重點放在C#開發中的程式碼審查注意事項,以協助開發者提升程式碼品質。一、審查的目的與意義代碼審查是指透過仔細閱讀和檢查程式碼,發現並修正其中存在的問題和錯誤的過程。它的主要目的是提高代

如何在GitLab中進行程式碼審查和合併請求 如何在GitLab中進行程式碼審查和合併請求 Oct 20, 2023 pm 04:03 PM

如何在GitLab中進行程式碼審查和合併請求程式碼審查是一個重要的開發實踐,可以幫助團隊發現潛在的問題並改善程式碼品質。在GitLab中,透過合併請求(MergeRequest)功能,我們可以輕鬆地進行程式碼審查和合併工作。本文將介紹如何在GitLab中執行程式碼審查和合併請求,同時提供具體的程式碼範例。準備工作:請確保您已經創建了一個GitLab項目,並且已經擁有相

如何進行C++程式碼的程式碼審查? 如何進行C++程式碼的程式碼審查? Nov 02, 2023 am 09:12 AM

如何進行C++程式碼的程式碼審查?程式碼審查是軟體開發過程中非常重要的一環,它能夠幫助開發團隊識別並糾正潛在的錯誤,提高程式碼質量,減少後續維護和調試的工作量。對於C++這樣的強型別靜態語言來說,程式碼審查特別重要。以下將介紹一些關鍵步驟和注意事項,幫助你進行有效的C++程式碼審查。設定代碼審查標準:在進行程式碼審查之前,團隊應該共同製定一份代碼審查標準,約定各類錯誤和違

See all articles