Senior Developers are Vibe Coding Now (With SCARY results) — 資深開發者也在 Vibe Coding 了(結果令人擔憂)

AI 生成的程式碼正在帶來嚴重問題:安全漏洞、冗餘程式碼、膨脹的 Pull Request。多份研究報告顯示,AI 程式碼的安全測試失敗率高達 45%,每個 PR 的問題數量是人工程式碼的 1.7 倍。本影片探討了 AI 程式碼的品質隱憂、開發者常犯的錯誤、Code Review 為何比以往更重要,並實際演示了如何使用 CodeRabbit 進行自動化程式碼審查來建立防護網。


原影片連結:https://www.youtube.com/watch?v=nGxpctRd2OQ

影片重點

  • 45% 的 AI 生成程式碼未通過安全測試,存在 OWASP Top 10 安全漏洞
  • AI 生成的 PR 平均問題數量是人工程式碼的 1.7 倍
  • AI 擅長寫程式碼,但缺乏領域知識、架構理解和專案整體規劃能力
  • AI 生成的 Pull Request 平均比人工大 18%,增加審查負擔
  • 應將 AI 視為「能力很強的初級工程師」,絕不能跳過人工審查
  • AI Code Review 工具應作為「第一道過濾」而非最終審查
  • CodeRabbit CLI 可在本地和 GitHub 兩個階段進行雙重審查
  • 程式碼審查的信任基礎是:提交者必須理解自己的程式碼

詳細內容

[00:00] AI 程式碼的品質危機

AI 生成的程式碼正在造成嚴重問題——安全漏洞正威脅著真實的應用程式,程式碼品質低落,Pull Request 越來越臃腫。報告顯示,雖然 AI 幫助我們更快地寫程式碼,但同時也在降低程式碼品質,不僅產生更多 Bug,還製造了一種全新類型的問題。即使你還沒有使用 AI 寫程式碼,也應該了解這些問題,因為它們影響著每一個人。

[00:39] 資深開發者的態度轉變

從 2025 年初到下半年,AI 的發展讓人無法再忽視。年初還把 AI 嗤之以鼻、說它只是「AI 垃圾」或「花俏的自動補全」的資深開發者,到了年底紛紛開始擁抱它。一份雲端服務商的報告調查了 791 名擁有 10 年以上經驗的資深開發者,其中 32% 表示他們已經交付過 AI 生成的程式碼。不管你認為這是好是壞,這已經是事實——許多決策者正在買單,這就是我們前進的方向。

[01:40] 報告揭露的安全隱患

Veracode 的報告發現,45% 的 AI 生成程式碼未通過安全測試,並且引入了 OWASP Top 10 的安全漏洞。OWASP 是全球公認的軟體安全組織,定期發布應用程式面臨的十大安全漏洞(約每 3-4 年更新一次),包括跨站腳本攻擊(XSS)、SQL 注入、存取控制配置錯誤等。這些都不是小問題,更令人擔憂的是,即使模型大幅改進,這些結果基本沒有改善。

CodeRabbit 的另一份報告審查了 470 個開源 GitHub Pull Request,得到了類似的發現。AI 生成的 PR 平均每個有 10.83 個問題,而人工程式碼只有 6.45 個——AI 程式碼的問題數量是人工的 1.7 倍。按嚴重程度分析:關鍵問題高 1.4 倍,重大問題高 1.7 倍,輕微問題幾乎翻倍。

[03:17] 四大問題類別深入分析

報告將問題分為四大類別:

邏輯與正確性:最突出的是錯誤的依賴關係和配置問題。使用較新的函式庫或套件時,AI 常常無法判斷最新版本的 API,導致使用舊版本的 import 或過時的文件。AI 很難區分什麼是現代的做法、什麼應該被使用。

程式碼品質與可維護性:問題包括可讀性差、命名不清晰、格式錯誤、冗餘程式碼。其中冗餘程式碼最為常見。人類開發者會考慮元件復用,遵循 DRY(Don’t Repeat Yourself)原則。但 AI 傾向找最快路徑,會在同一頁面中重複生成 UI 元件,而不會考慮其他頁面是否需要共用。這種冗餘程式碼會累積大量技術債。

安全漏洞:與 Veracode 報告一致,包括不當的密碼處理、跨站腳本攻擊、不安全的反序列化等 OWASP Top 10 漏洞。

效能問題:AI 生成的程式碼在效能方面也表現不佳。

[05:04] 開發者常犯的兩大錯誤

第一:高估 AI 的能力。 開發者對 AI 能做什麼和不能做什麼缺乏理解,給它太多期望。AI 已經很擅長寫實際的程式碼,但它缺乏領域專業知識、對整體架構的理解、專案需求的掌握,以及各部分如何協作的認知。如果讓 AI 替我們思考,它會失控並做出大量假設,隨著應用程式增長,效能會不斷下降。

第二:Pull Request 膨脹與審查不足。 AI 讓產出程式碼變得更容易,我們傾向寫更多程式碼、建立更大的 PR,而這些 PR 更難審查。報告顯示 AI 生成的 PR 平均比人工大 18%。AI 看似給了我們速度的幻覺——寫程式碼更快了,但在確保品質時卻要付出代價。

[06:15] 解決方案:嚴格的防護措施

解決方案不是「不用 AI」——那不太現實。正確做法是對 AI 建立嚴格的防護機制:把任務拆成小塊以避免失控,建立強力的流程和文件。簡單來說,把 AI 當作一個能力很強的初級工程師——它能寫程式碼,但絕不能在沒有徹底審查的情況下信任它

[06:59] Code Review 中的信任問題

作者分享了一次令他非常不滿的經歷:審查一個 PR 時,發現程式碼有 AI 生成的特徵(例如到處都是註解)。向原作者詢問某段程式碼的邏輯時,對方回答「我不太清楚,只是想讓 AI 做到 X」。原作者完全不了解自己程式碼的運作方式。

這破壞了開發者之間的信任基礎。舉證責任在原作者身上——確保 PR 中的程式碼能正常運作是作者的責任,不是審查者的。如果你無法解釋自己的程式碼或證明它能運作,就不該請別人來批准它。

更嚴重的是,當越來越多開發者交付自己不理解的程式碼,知識傳遞機制就被破壞了。如果原作者都無法解釋程式碼如何運作,凌晨兩點服務中斷時,值班工程師要怎麼解決問題?

正如 Google 工程總監 Addy Osmani 所寫:「如果你跳過審查,你不是消除了工作,你只是推遲了它。」IBM 的培訓手冊也寫道:「電腦永遠無法被問責,那是你作為人類的職責。」

[08:46] AI Code Review 工具的正確定位

AI 能否自己審查自己的程式碼?絕對不行——至少不能作為最終審查。AI Code Review 工具(如 CodeRabbit)適合用來強化程式碼規範、確保結構一致性,以及作為第一輪審查的額外眼睛。但開發者容易走兩個極端:要麼完全不信任 AI 審查,要麼過度信任。

正確的定位是:這些工具是第一輪審查者,不是最終審查。 就像拼字檢查一樣——你不會把一份到處是紅色波浪線的文件直接丟給別人審閱,你會先修正拼字錯誤、評估建議是否合理,然後再送出去。AI Code Review 工具也該這樣使用:先讓 AI 做初步檢查,你根據建議修正後,再提交給同事做人工審查。這樣你尊重了審查者的時間,不讓他們處理那些你自己就能清理的基本問題。

一位 Reddit 使用者精準地說:「引入 AI 回饋的正確時機是在 PR 提交審查之前。讓原作者先審閱 AI 的建議並採取行動,強迫所有人同時審查程式碼和 AI 建議是浪費時間。」

[11:04] CodeRabbit 實戰演示

CodeRabbit 的審查流程分為兩個階段:

第一階段:本地開發審查。 使用 CodeRabbit CLI,在程式碼推送到 GitHub 之前就進行審查。安裝完成後,在終端機執行 coderabbit 命令,會顯示專案資訊(分支、修改的檔案數、插入和刪除等),然後按 Enter 開始審查。審查完成後可以用方向鍵瀏覽建議,並直接按 A 鍵套用修正。

另一種使用方式是與 AI Agent 結合——在 Cursor 等工具中,寫完功能後在 prompt 中加入 run coderabbit review -prompt-only,AI Agent 會自動執行 CodeRabbit 審查作為自我驗證流程。

第二階段:GitHub 審查。 程式碼推送到 GitHub 後,CodeRabbit 會進行第二輪審查,捕捉本地可能遺漏的問題。通過這兩輪檢查後,再交給人類審查者,讓他們可以專注在真正重要的事情上。

[16:42] 自訂規則與團隊規範

CodeRabbit 的亮點是高度可自訂且能學習你的程式碼庫。例如,如果團隊習慣用兩個空格縮排而有人用了四個,它會標記警告。如果團隊用 snake_case 而非 camelCase,它也會捕捉。你還可以給 CodeRabbit 設定一套規則和模式讓它在團隊中強制執行。不過最後的結論是:AI Code Review 是幫助修復 AI 程式碼問題的一個解決方案,但永遠無法取代人工審查。請謹慎使用。

我的想法

這部影片精準點出了當前 Vibe Coding 最核心的矛盾:AI 讓寫程式碼的速度變快了,但品質保證的成本並沒有降低,反而因為程式碼量增加和理解度降低而上升。「速度的幻覺」這個概念很值得深思——表面上看寫程式碼更快了,但加上除錯、審查、修復安全漏洞的時間,整體效率是否真的提升了?

影片中把 AI 比作「能力很強的初級工程師」是個非常恰當的比喻,但我認為還可以延伸:初級工程師會隨著經驗成長,但 AI 不會因為你用得多就對你的專案更了解(至少在沒有良好上下文管理的情況下)。這意味著你每次都需要提供足夠的脈絡和約束,否則 AI 會反覆犯同樣的架構錯誤。

比較務實的做法可能是:將 AI 的使用範圍限制在你完全理解的領域,而不是用它來探索你不熟悉的技術。AI 更適合加速你已知的工作流程,而不是替你做技術決策。

0

進階測驗:AI 程式碼品質與 Code Review

測驗目標:驗證你是否能在實際情境中正確應對 AI 生成程式碼的品質與審查問題。
共 5 題,包含情境題與錯誤診斷題。

1. AI 生成程式碼的 PR 審查策略 情境題

你是團隊的 Tech Lead。一位資深同事提交了一個 PR,包含使用 AI 生成的購物車功能。 你在 Code Review 時詢問他某段複雜的折扣計算邏輯,他回答: 「我不太確定這段具體怎麼運作,AI 生成的,但我測試過結果是對的。」
  • A. 只要測試通過就直接核准,結果正確比理解程式碼更重要
  • B. 自己花時間理解這段邏輯後再核准,畢竟你是 Tech Lead
  • C. 要求原作者先理解並能解釋自己的程式碼後,再重新提交審查
  • D. 使用 AI Code Review 工具自動審查,如果工具沒報錯就核准

2. AI 程式碼的冗餘問題處理 情境題

你使用 AI 幫你建立一個電商網站,目前已完成了首頁、產品列表頁、購物車頁。 你發現 AI 在每個頁面都重複生成了幾乎一樣的商品卡片元件程式碼, 而不是建立可共用的元件。這已造成三份相同邏輯的程式碼分散在不同檔案中。 你應該如何處理?
  • A. 這是正常現象,AI 本來就會這樣,先不管它繼續開發新功能
  • B. 手動重構為共用元件,並在後續 prompt 中明確告訴 AI 專案已有哪些共用元件
  • C. 刪除所有 AI 程式碼,自己全部手寫以確保品質
  • D. 再用 AI 生成一個新頁面,希望它這次自動發現並復用之前的元件

3. CodeRabbit 在團隊工作流的正確定位 情境題

你的團隊決定導入 CodeRabbit 作為 AI Code Review 工具。 團隊中出現了兩派意見: – A 派:「有了 CodeRabbit,我們可以減少人工 Code Review 的時間了!」 – B 派:「AI 審 AI 的程式碼根本不可靠,不如不要用。」 作為團隊決策者,你應該如何定位這個工具?
  • A. 同意 A 派,用 CodeRabbit 取代大部分人工 Code Review 以提升效率
  • B. 同意 B 派,AI Code Review 不可信賴,完全移除
  • C. 讓 CodeRabbit 作為最終審查工具,人工只在有爭議時介入
  • D. 將 CodeRabbit 定位為第一道過濾,開發者先根據 AI 建議修正,再提交人工審查

4. AI 生成程式碼的安全漏洞 錯誤診斷

你讓 AI 幫你生成一個使用者登入功能,AI 產出了以下程式碼: app.post(‘/login’, (req, res) => { const { username, password } = req.body; const query = `SELECT * FROM users WHERE username=’${username}’ AND password=’${password}’`; db.query(query, (err, results) => { if (results.length > 0) { res.json({ token: generateToken(results[0]) }); } }); }); 根據報告指出的 OWASP Top 10 安全漏洞,這段程式碼最嚴重的問題是什麼?
  • A. 沒有對錯誤進行處理(缺少 error handling)
  • B. 直接將使用者輸入拼接進 SQL 查詢,存在 SQL 注入漏洞
  • C. 密碼以明文方式進行比對,沒有使用雜湊(hash)
  • D. 缺少 CORS 設定,可能遭受跨站請求

5. AI Code Review 工具的錯誤使用方式 錯誤診斷

小明的團隊導入了 AI Code Review 工具,但最近問題反而變多了。 以下是小明的工作流程: 1. 用 AI 快速生成整個功能的程式碼 2. 直接推送到 GitHub,觸發 AI Code Review 3. AI Code Review 工具提出了 12 條建議 4. 小明沒有處理這些建議,直接請同事進行人工 Review 5. 同事看到 AI 建議和程式碼一起需要審查,感到不滿 這個工作流程中最根本的問題出在哪一步?
  • A. 第 1 步:不應該用 AI 生成整個功能
  • B. 第 2 步:應該先在本地用 CodeRabbit CLI 審查再推送
  • C. 第 4 步:應該先處理 AI 建議並修正後,再交給同事做人工審查
  • D. 第 5 步:同事不該抱怨,審查包含 AI 建議是正常的

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *