開源軟件中的GenAI自白:開發者如何用、項目如何管、代碼質量受何影響?
論文:Self-Admitted GenAI Usage in Open-Source Software
arXiv:2507.10422
Self-Admitted GenAI Usage in Open-Source Software
Tao Xiao, Youmei Fan, Fabio Calefato, Christoph Treude, Raula Gaikovina Kula, Hideaki Hata, Sebastian Baltes
Comments: 17 pages, 8 tables, 1 figures, currently under review
Subjects: Software Engineering (cs.SE)
一段話總結:
該研究以自承認的GenAI使用(開發者在代碼注釋、提交信息和文檔中明確提及使用GenAI工具)為視角,分析了25萬+GitHub開源倉庫,識別出156個倉庫中的1292次相關提及。通過混合方法研究,得出包含32項任務、10種內容類型和11種使用目的的分類體系;分析了13項GenAI使用政策及開發者調查,揭示項目對GenAI的規范;同時發現GenAI采用后代碼 churn 未普遍增加,與流行觀點相悖。
研究背景:當AI寫代碼成常態,我們卻看不清它的“真面目”
打開GitHub,你可能會看到一段完美運行的代碼,但你很難分辨:這是開發者一行行敲出來的,還是ChatGPT、GitHub Copilot“一鍵生成”的。
近年來,生成式AI(GenAI)工具像一陣旋風席卷了軟件開發圈。開發者用它們寫代碼、查bug、翻文檔,甚至自動生成提交信息——但問題來了:這些AI生成的代碼和人工代碼長得太像,我們根本不知道它在開源項目里到底被用了多少、怎么用的,更說不清它對代碼質量是好是壞。
就像我們吃外賣時,想知道食材是否新鮮、烹飪是否衛生,但如果商家不標注“半成品加熱”還是“現做”,我們永遠只能猜。開源項目里的AI代碼也是如此:沒有明確的“自白”,開發者、維護者和使用者都像在“盲盒”里開發。
這篇論文就想解決這個問題:通過開發者主動“承認”使用GenAI的痕跡(比如代碼注釋里寫“這段由ChatGPT生成”),來揭開GenAI在開源世界的真實面貌。
主要作者及單位信息
- Tao Xiao(九州大學,日本)
- Youmei Fan(奈良先端科學技術大學院大學,日本)
- Fabio Calefato(巴里大學,意大利)
- Christoph Treude(新加坡管理大學,新加坡)
- Raula Gaikovina Kula(大阪大學,日本)
- Hideaki Hata(信州大學,日本)
- Sebastian Baltes(拜羅伊特大學,德國,通訊作者)
創新點:從“被動猜測”到“主動承認”,換個角度看GenAI
這篇論文最亮的地方,是提出了**“自承認的GenAI使用”**這個概念——簡單說,就是開發者在代碼注釋、提交信息或項目文檔里,明確寫了“我用了ChatGPT”“這段由Copilot生成”。
以前研究GenAI在開發中的使用,要么靠工具廠商的內部數據(普通人拿不到),要么靠猜(因為AI代碼和人工代碼難區分)。但這次,研究者直接“抓”那些主動“坦白”的案例,相當于讓開發者自己告訴我們:“我用了AI,用它做了這些事”。
這種視角的好處是:真實、直接,能繞過“區分AI和人工代碼”這個技術難題,直接聚焦開發者的真實行為。
研究方法:從25萬+倉庫里,“挖”出1292條GenAI的“自白”
研究者的步驟很清晰,像在“篩沙子找金子”:
-
選倉庫:縮小范圍,鎖定有價值的樣本
從73萬多個GitHub倉庫里,先挑出用Python、JavaScript等5種熱門語言的項目,再排除掉沒許可證、沒發布過、貢獻者太少的“不活躍”倉庫,最后留下14785個“正經”開源項目。 -
找“自白”:捕捉開發者的明確提及
用腳本搜索這些倉庫里的代碼注釋、文檔和提交信息,找包含“ChatGPT”“Copilot”的內容。但不是所有提及都算——比如代碼里調用ChatGPT的API不算,只有“用它生成了內容”才算。最后手動篩選出1292條“真·自白”(來自156個倉庫)。 -
做分析:給“自白”分類,看政策,測代碼質量
- 定性分析:給1292條“自白”貼標簽,總結出用GenAI做什么任務(比如寫代碼、翻譯)、生成什么內容(比如源文件、文檔)、為什么提它(比如承認使用、提醒注意)。
- 政策研究:從“自白”里找出13個項目的GenAI使用規則(比如“禁止用AI”“必須說清楚用了AI”),再 survey 開發者了解背后的原因。
- 代碼質量分析:用“代碼churn”(14天內被修改或回滾的代碼比例)當指標,對比項目用GenAI前后的變化,看AI是否讓代碼更“短命”。
主要貢獻:這3個發現,讓我們重新認識GenAI在開源中的角色
-
搞懂了開發者用GenAI干些啥
總結出32種任務(最常見的是寫代碼、翻譯文字、重構代碼)、10種生成內容(主要是源文件和文檔)、11種目的(最多的是“承認用了AI”,還有提醒“這段AI生成的可能有問題”)。
舉個例子:有開發者在注釋里寫“這段幾何變換代碼由ChatGPT生成,prompt是……”,也有人說“ChatGPT翻譯的文檔,我英語不好請多包涵”。 -
摸清了開源項目對GenAI的“規矩”
項目態度兩極分化:有的完全禁止(比如怕版權糾紛),有的要求必須說清楚用了AI(比如PR里要注明),還有的鼓勵用(比如用AI寫PR描述)。開發者最擔心的是:AI訓練數據的版權、生成內容的許可證、敏感信息泄露(比如用AI時不小心把密碼傳上去了)。 -
推翻了“AI讓代碼質量下降”的傳言
之前有報告說“用了AI后,代碼churn上升,質量變差”,但這里的研究發現:大部分項目用了AI后,代碼churn沒漲,甚至降了。只有少數項目有上升,但不是普遍現象——也就是說,AI沒那么“坑”,關鍵看怎么用。
思維導圖:
詳細總結:
-
引言
- 背景:生成式AI工具(如ChatGPT、GitHub Copilot)改變軟件開發,但實際使用模式研究較少,因生成代碼與人工代碼難區分。
- 核心概念:自承認的GenAI使用(開發者明確提及使用GenAI),類比自承認的技術債務。
- 研究問題:聚焦三個RQ,旨在理解GenAI使用場景、規范及對代碼質量的影響。
-
研究方法
- 樣本選取:從735,669個倉庫篩選,最終保留14,785個,涵蓋Python、JavaScript等5種語言,排除非標準許可、無發布等倉庫。
- 數據收集:檢索ChatGPT和GitHub Copilot的提及,通過Python腳本搜索代碼注釋、文檔、提交信息,手動篩選出1292個真陽性提及(來自156個倉庫)。
- 分析方法:定性編碼(任務、內容、目的)、政策分析、開發者調查、回歸不連續性設計(RDD)分析代碼churn。
-
RQ1:GenAI使用的任務、內容和目的
- 任務:32項,主要包括代碼生成(105次)、翻譯(50次)、代碼重構(29次)等,且存在人類后續修正行為(如修復AI生成代碼的bug)。
- 內容類型:10種,主要為源文件(176次)、文檔文件(106次)、提交信息(1003次,多來自單一倉庫)。
- 目的:11種,主要為承認使用(1236次)、質量保證(如請求同行評審)、規范使用等。
-
RQ2:GenAI使用的現有規范
- 政策與指南:13項,分為兩類:
- 禁止使用:如jqwik-team/jqwik禁止GenAI生成內容,因版權問題。
- 規范使用:如graycoreio/daffodil要求PR中披露GenAI使用;avaloniaui/avalonia鼓勵用GenAI寫PR描述。
- 開發者調查:開發者對規范需求存在分歧,部分關注版權、數據隱私,部分擔憂限制創新。
- 政策與指南:13項,分為兩類:
-
RQ3:GenAI使用對代碼churn的影響
- 代碼churn定義:14天內被修改或回滾的代碼比例。
- 結果:與GitClear報告相反,151個倉庫中,整體代碼churn平均下降(文件級從0.17→0.06,行級從0.68→0.50),僅少數倉庫上升。
- RDD分析:149個倉庫中,僅26-30個有顯著趨勢,無系統性上升。
-
研究貢獻
- 提出GenAI使用的分類體系(32任務、10內容、11目的)。
- 基于13項政策和調查,提供負責任使用建議。
- 揭示GenAI對代碼churn的多樣化影響,挑戰質量下降觀點。
關鍵問題:
-
什么是“自承認的GenAI使用”?其在研究中的作用是什么?
答:“自承認的GenAI使用”指開發者在代碼注釋、提交信息或項目文檔中明確提及使用GenAI工具(如ChatGPT、GitHub Copilot)進行內容創作的行為,靈感來自“自承認的技術債務”概念。其作用是作為研究GenAI在開源項目中實際使用的視角,幫助識別GenAI的使用場景、規范及影響,因生成代碼與人工代碼難以區分,需依賴開發者的明確提及。 -
開源項目對GenAI使用的規范主要有哪些類型?各有什么代表性案例?
答:主要分為兩類:- 禁止使用:如jqwik-team/jqwik在貢獻者協議中禁止使用GitHub Copilot等工具,因版權問題;shoelace-style/shoelace禁止AI生成代碼,擔憂倫理和許可問題。
- 規范使用:如graycoreio/daffodil要求PR中披露GenAI使用;avaloniaui/avalonia鼓勵用GenAI翻譯PR描述;owasp/wrongsecrets警告GenAI可能導致敏感信息泄露。
-
該研究關于GenAI使用對代碼churn的影響與GitClear報告有何不同?原因可能是什么?
答:差異在于:GitClear報告稱GenAI采用后代碼churn增加,暗示代碼質量下降;而該研究發現代碼churn無普遍增加,整體平均下降,僅少數倉庫上升。原因可能是方法不同:GitClear使用全球截止日期,而該研究以倉庫首次自承認GenAI使用為時間點,更精細;且該研究區分了文件級和行級churn,并分析了具體倉庫模式。
總結:GenAI在開源里的“自白”,告訴我們什么?
這篇論文通過“開發者主動承認用GenAI”的痕跡,第一次清晰地展示了:
- 開發者用GenAI做的最多的是寫代碼、翻譯和重構,而且會主動提醒“這是AI生成的,注意檢查”;
- 開源項目對GenAI的態度從“完全禁止”到“鼓勵使用”都有,核心是怕法律風險和質量問題;
- 說“AI讓代碼質量下降”太絕對,實際影響五花八門,沒有統一的“變壞”趨勢。
簡單說,GenAI已經成了開源開發的“常規工具”,但怎么用好、管好,還需要更多規范——而開發者的“自白”,正是透明化的第一步。