AI智能化的程式碼審查:充分利用ChatGPT和CR.GPT進行增強程式碼審查和PR🔃🔍💻

Runa's story
AI 精選指南
Published in
9 min readJun 14, 2023

在不斷發展的軟體工程領域中保持競爭力需要靈活性、遠見和對新興技術和方法論的深入了解。當今軟體開發工作流程的基石是使用PR(Pull Request)。PR不僅維護了程式碼庫的耐用性,還促進協作,確保所有程式碼修改在合併到主分支之前經過嚴格審查和驗證。

然而,創建、審查和管理PR常常是一項繁瑣的任務,給開發人員帶來很大的認知負擔。本篇內容將詳細介紹OpenAI的ChatGPT&GitHub Action App-CR.GPT如何融入你的軟體開發流程,濃縮PR的管理和程式碼審查的執行流程。

PR(Pull Request)協作的核心❤️

Pull Request(PRs)在軟體開發生命周期中起著至關重要的作用。它們為協作團隊提供了一個平台,確保所有團隊成員都了解程式碼庫的任何變更。PR增強了程式碼的透明度,改善了程式碼質量,並防止任何錯誤進入工作生產環節。

然而,管理PR可能是一項具有挑戰性的任務。開發人員通常很難撰寫清晰且有訊息內容的描述,因此可能無法有效地傳達他們所做的變更、可能對整個開發的影響,以及其他審查者理解修改所必需的重要細節。因此,開發人員高效且有效地撰寫PR至關重要。✍️

識別好&不好的PR之間的區別🚫🆚✅

在深入探討ChatGPT如何簡化PR之前,讓我們先了解好&不好的PR之間有什麼區別。精心製作的PR可以確保有效的協作、清晰度和流程化的程式碼審查。相反,執行不良的PR可能導致團隊混亂、延遲和挫折。😕⏳🤔

不好的PR範例❌

讓我們來看一個不好的PR的示例:

描述:「修復程式碼中的錯誤。」

🔍 在這種情況下,描述模糊且缺乏關鍵信息。它未提供有關正在解決的錯誤、所做的具體變更以及這些變更的影響的細節。審查者將很難理解PR的目的和範圍,這可能導致延遲和誤解。

好的PR範例✅

現在,讓我們看一個好的PR的示例:

描述:「修復問題#123:在calculateTotal()方法中解決空指針異常。」🐛

所做的變更:

  1. 在calculateTotal()方法中添加了對輸入參數的空值檢查。
  2. 更新錯誤處理以提供有意義的錯誤消息。
  3. 撰寫單元測試以涵蓋邊界情況。🧪

🔍 在這種情況下,描述清楚地說明了PR的目的並參考了相關問題。所做的變更以條列式的方式列出,全面概述了修改。審查者可以輕松理解PR的意圖,從而實現更高效的程式碼審查過程。

通過了解不好和好的PR之間的區別,我們現在可以探索ChatGPT如何簡化創建準確且具有信息量的PR描述的過程。

使用ChatGPT簡化PR請求✨

ChatGPT是OpenAI開發的一款先進的語言模型,可幫助開發人員創建清晰、簡潔且全面的PR描述。讓我們來看看ChatGPT如何優化你的PR工作流程。

撰寫連貫的PR描述📝

生成有價值的PR的初始步驟是撰寫詳盡且連貫的描述。ChatGPT可以簡化這個過程。你只需提供一個簡單的提示,它就會返回一個結構完整、易於理解的PR描述。

例如,假設你修改了BillingService類中的calculateTax函數,以處理總金額為負數的邊界情況。你可以向ChatGPT提供以下提示:

為以下任務生成PR描述:我已經重構BillingService類中的calculateTax函數,以處理總金額可能為負數的邊界情況。

ChatGPT將生成一個詳盡且清晰的描述,詳細說明所做的變更、其原因以及對現有程式碼庫的潛在影響。這種功能減輕了開發人員的認知負擔,並確保審查者可以理解PR。

處理複雜的程式碼變更🔄

儘管上面的範例展示了一個簡單的情景,但PR可能涉及各種複雜的修改,涵蓋多個函數、文件甚至整個模塊。ChatGPT能夠處理複雜情況並為不同的情況生成詳盡的描述。

想象一下,你已經重新組織了一個大型程式碼模塊的結構,以提高性能和可維護性。你可以向ChatGPT提供對變更的整體描述,例如:

為以下任務生成拉取請求描述:我已經重新組織OrderProcessing模塊,以提高性能和可維護性。這些變更包括優化數據檢索、重構驗證邏輯以及將主要處理函數分解為更小、更易管理的函數。

ChatGPT將生成一個詳盡的PR描述,對變更進行細致解析並解釋其目的,從而提高了你的PR的清晰度,使審查者更容易理解你的修改。📊

用CR.GPT加速你的程式碼審查⚡️

程式碼審查是軟體開發過程的重要組成部分。它有助於維護程式碼的質量,確保符合編碼標準,及早發現錯誤並促進團隊間的知識共享。然而,進行高效且全面的程式碼審查可能具有挑戰性且耗時。這就是CR.GPT發揮作用的地方。

CR.GPT是一個GitHub Action App,使用ChatGPT為你的程式碼審查提供即時反饋。它可以幫助你檢查程式碼中的問題、提供最佳實踐建議,重新升級你審查程式碼的方法。

將CR.GPT整合到您的工作流程中🔄

將CR.GPT整合到你的開發工作流程中是一個簡單的任務。以下是在其GitHub存儲庫中概述的步驟:

  1. 設置CR.GPT:首先在您的GitHub存儲庫中安裝該應用程序。
  2. 創建新的PR:每次你或團隊創建新的PR時,CR.GPT都會自動開始審查的修改。
  3. 接收反饋:CR.GPT將直接在你的PR上提供評論和建議。

這個流程與你現有的工作流程完美融合,CR.GPT充當自動化的程式碼審查工具。

設置CR.GPT

在你的存儲庫中設置CR.GPT是一個簡單的任務。請按照以下步驟進行操作:

  1. 從GitHub市場安裝CR.GPT:apps/cr-gpt。
  2. 進入要將機器人整合到的存儲庫的主頁。
  3. 點擊”settings”,移動到”actions”下的”secrets and variables”。
  4. 切換到”Variables”選項卡,創建一個名為”OPENAI_API_KEY”的新變量,其值為你的OpenAI API金鑰(用於Github Action整合,請在”secrets”中設置)。

使用CR.GPT和Github Actions 🤖

CR.GPT也可以與Github Actions一起使用。將OPENAI_API_KEY添加到你的Github Actions secrets中,並創建一個名為”.github/workflows/cr.yml”的文件,內容如下:

yamlCopy code
ymlCopy code
name: Code Review

permissions:
contents: read
pull-requests: write

on:
pull_request:
types: [opened, reopened, synchronize]

jobs:
test:
if: ${{ contains(github.event.*.labels.*.name, 'gpt review') }} # Optional; to run only when a label is attached
runs-on: ubuntu-latest
steps:
- uses: anc95/ChatGPT-CodeReview@main
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
# Optional
LANGUAGE: Chinese
OPENAI_API_ENDPOINT: <https://api.openai.com/v1>
MODEL:
top_p: 1
temperature: 1

你還可以選擇通過克隆代碼並使用npm和pm2運行機器人來自主托管應用程序。

使用CR.GPT的優點🌟

  1. 提升程式碼質量
    CR.GPT逐行審查你的更改,識別潛在問題,如違反編碼標準、反模式、邏輯錯誤或性能瓶頸。通過這樣做,它使你能夠在開發過程的早期識別並修正這些問題,從而提高程式碼質量。
  2. 加快程式碼審查速度
    CR.GPT通過自動審查你的PR顯著加快了程式碼審查過程。通過處理例行檢查和審查,它為你的團隊節省時間,使其能夠專注於更複雜且具有高價值的任務。
  3. 一致的反饋
    作為一個AI模型,CR.GPT不受疲勞、情緒或偏見等因素的影響。它提供一致且客觀的反饋,確保每個PR都得到公正和徹底的評估。
  4. 學習與發展
    CR.GPT的建議和反饋可以成為開發人員的學習要點,尤其是對於相對新手的開發人員。隨著時間的推移,開發人員可以學習避免常見錯誤,撰寫更好、更乾淨、更高效的程式碼。

結語💡

將人工智慧整合到軟體開發工作流程中,尤其是通過ChatGPT和CR.GPT等工具,可以大大提高效率和生產力。這些人工智慧工具可以協助你完成各種任務,包括:

  1. 撰寫簡潔的PR描述:ChatGPT幫助開發人員創建清晰而全面的PR描述,減輕開發人員的認知負荷,確保審查者易於理解PR。
  2. 進行全面的程式碼審查:CR.GPT自動化程式碼審查,幫助識別編碼標準違規、反模式、邏輯錯誤和性能瓶頸。這加速了程式碼審查過程並提高了程式碼質量。
  3. 維護程式碼質量:通過在開發過程的早期發現和解決潛在問題,以AI為基礎的工具有助於維護較高的程式碼質量。
  4. 提供一致且客觀的反饋:CR.GPT等AI模型提供一致且無偏見的反饋,確保對每個PR進行公正評估。
  5. 促進學習和發展:AI工具提供的建議和反饋對開發人員來說是寶貴的學習要點,使他們能夠逐步改善編碼技能。

通過利用這些AI工具,你可以建立一個更智能、更高效和更有效的軟體開發工作流程。隨著我們繼續開發了解人工智慧的潛力,我們會發現這些技術展現了軟體開發的未來,其中人工智慧在促進效率和品質方面發揮了不可或缺的作用。🌟👩‍💻👨‍💻

--

--

Runa's story
AI 精選指南

Here’re my life stories. Including startup, exercise, and daily record.