[論文閱讀] 人工智能 + 軟件工程 | 開源軟件中的GenAI自白:開發者如何用、項目如何管、代碼質量受何影響?

開源軟件中的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的“自白”

研究者的步驟很清晰,像在“篩沙子找金子”:

  1. 選倉庫:縮小范圍,鎖定有價值的樣本
    從73萬多個GitHub倉庫里,先挑出用Python、JavaScript等5種熱門語言的項目,再排除掉沒許可證、沒發布過、貢獻者太少的“不活躍”倉庫,最后留下14785個“正經”開源項目。

  2. 找“自白”:捕捉開發者的明確提及
    用腳本搜索這些倉庫里的代碼注釋、文檔和提交信息,找包含“ChatGPT”“Copilot”的內容。但不是所有提及都算——比如代碼里調用ChatGPT的API不算,只有“用它生成了內容”才算。最后手動篩選出1292條“真·自白”(來自156個倉庫)。

  3. 做分析:給“自白”分類,看政策,測代碼質量

    • 定性分析:給1292條“自白”貼標簽,總結出用GenAI做什么任務(比如寫代碼、翻譯)、生成什么內容(比如源文件、文檔)、為什么提它(比如承認使用、提醒注意)。
    • 政策研究:從“自白”里找出13個項目的GenAI使用規則(比如“禁止用AI”“必須說清楚用了AI”),再 survey 開發者了解背后的原因。
    • 代碼質量分析:用“代碼churn”(14天內被修改或回滾的代碼比例)當指標,對比項目用GenAI前后的變化,看AI是否讓代碼更“短命”。

主要貢獻:這3個發現,讓我們重新認識GenAI在開源中的角色

  1. 搞懂了開發者用GenAI干些啥
    總結出32種任務(最常見的是寫代碼、翻譯文字、重構代碼)、10種生成內容(主要是源文件和文檔)、11種目的(最多的是“承認用了AI”,還有提醒“這段AI生成的可能有問題”)。
    舉個例子:有開發者在注釋里寫“這段幾何變換代碼由ChatGPT生成,prompt是……”,也有人說“ChatGPT翻譯的文檔,我英語不好請多包涵”。

  2. 摸清了開源項目對GenAI的“規矩”
    項目態度兩極分化:有的完全禁止(比如怕版權糾紛),有的要求必須說清楚用了AI(比如PR里要注明),還有的鼓勵用(比如用AI寫PR描述)。開發者最擔心的是:AI訓練數據的版權、生成內容的許可證、敏感信息泄露(比如用AI時不小心把密碼傳上去了)。

  3. 推翻了“AI讓代碼質量下降”的傳言
    之前有報告說“用了AI后,代碼churn上升,質量變差”,但這里的研究發現:大部分項目用了AI后,代碼churn沒漲,甚至降了。只有少數項目有上升,但不是普遍現象——也就是說,AI沒那么“坑”,關鍵看怎么用。


思維導圖:

在這里插入圖片描述


詳細總結:

  1. 引言

    • 背景:生成式AI工具(如ChatGPT、GitHub Copilot)改變軟件開發,但實際使用模式研究較少,因生成代碼與人工代碼難區分。
    • 核心概念:自承認的GenAI使用(開發者明確提及使用GenAI),類比自承認的技術債務。
    • 研究問題:聚焦三個RQ,旨在理解GenAI使用場景、規范及對代碼質量的影響。
  2. 研究方法

    • 樣本選取:從735,669個倉庫篩選,最終保留14,785個,涵蓋Python、JavaScript等5種語言,排除非標準許可、無發布等倉庫。
    • 數據收集:檢索ChatGPT和GitHub Copilot的提及,通過Python腳本搜索代碼注釋、文檔、提交信息,手動篩選出1292個真陽性提及(來自156個倉庫)。
    • 分析方法:定性編碼(任務、內容、目的)、政策分析、開發者調查、回歸不連續性設計(RDD)分析代碼churn。
  3. RQ1:GenAI使用的任務、內容和目的

    • 任務:32項,主要包括代碼生成(105次)、翻譯(50次)、代碼重構(29次)等,且存在人類后續修正行為(如修復AI生成代碼的bug)。
    • 內容類型:10種,主要為源文件(176次)、文檔文件(106次)、提交信息(1003次,多來自單一倉庫)。
    • 目的:11種,主要為承認使用(1236次)、質量保證(如請求同行評審)、規范使用等。
  4. RQ2:GenAI使用的現有規范

    • 政策與指南:13項,分為兩類:
      • 禁止使用:如jqwik-team/jqwik禁止GenAI生成內容,因版權問題。
      • 規范使用:如graycoreio/daffodil要求PR中披露GenAI使用;avaloniaui/avalonia鼓勵用GenAI寫PR描述。
    • 開發者調查:開發者對規范需求存在分歧,部分關注版權、數據隱私,部分擔憂限制創新。
  5. RQ3:GenAI使用對代碼churn的影響

    • 代碼churn定義:14天內被修改或回滾的代碼比例。
    • 結果:與GitClear報告相反,151個倉庫中,整體代碼churn平均下降(文件級從0.17→0.06,行級從0.68→0.50),僅少數倉庫上升。
    • RDD分析:149個倉庫中,僅26-30個有顯著趨勢,無系統性上升。
  6. 研究貢獻

    • 提出GenAI使用的分類體系(32任務、10內容、11目的)。
    • 基于13項政策和調查,提供負責任使用建議。
    • 揭示GenAI對代碼churn的多樣化影響,挑戰質量下降觀點。

關鍵問題:

  1. 什么是“自承認的GenAI使用”?其在研究中的作用是什么?
    答:“自承認的GenAI使用”指開發者在代碼注釋、提交信息或項目文檔中明確提及使用GenAI工具(如ChatGPT、GitHub Copilot)進行內容創作的行為,靈感來自“自承認的技術債務”概念。其作用是作為研究GenAI在開源項目中實際使用的視角,幫助識別GenAI的使用場景、規范及影響,因生成代碼與人工代碼難以區分,需依賴開發者的明確提及。

  2. 開源項目對GenAI使用的規范主要有哪些類型?各有什么代表性案例?
    答:主要分為兩類:

    • 禁止使用:如jqwik-team/jqwik在貢獻者協議中禁止使用GitHub Copilot等工具,因版權問題;shoelace-style/shoelace禁止AI生成代碼,擔憂倫理和許可問題。
    • 規范使用:如graycoreio/daffodil要求PR中披露GenAI使用;avaloniaui/avalonia鼓勵用GenAI翻譯PR描述;owasp/wrongsecrets警告GenAI可能導致敏感信息泄露。
  3. 該研究關于GenAI使用對代碼churn的影響與GitClear報告有何不同?原因可能是什么?
    答:差異在于:GitClear報告稱GenAI采用后代碼churn增加,暗示代碼質量下降;而該研究發現代碼churn無普遍增加,整體平均下降,僅少數倉庫上升。原因可能是方法不同:GitClear使用全球截止日期,而該研究以倉庫首次自承認GenAI使用為時間點,更精細;且該研究區分了文件級和行級churn,并分析了具體倉庫模式。

總結:GenAI在開源里的“自白”,告訴我們什么?

這篇論文通過“開發者主動承認用GenAI”的痕跡,第一次清晰地展示了:

  • 開發者用GenAI做的最多的是寫代碼、翻譯和重構,而且會主動提醒“這是AI生成的,注意檢查”;
  • 開源項目對GenAI的態度從“完全禁止”到“鼓勵使用”都有,核心是怕法律風險和質量問題;
  • 說“AI讓代碼質量下降”太絕對,實際影響五花八門,沒有統一的“變壞”趨勢。

簡單說,GenAI已經成了開源開發的“常規工具”,但怎么用好、管好,還需要更多規范——而開發者的“自白”,正是透明化的第一步。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/91685.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/91685.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/91685.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

AI繪畫版權問題全解析:你的作品真的屬于你嗎?

AI繪畫版權問題全解析:你的作品真的屬于你嗎? 關鍵詞:AI繪畫、版權歸屬、生成式AI、訓練數據、獨創性、法律合規、知識產權 摘要:當你用MidJourney生成一張“賽博朋克風格的熊貓”,或用Stable Diffusion畫出“梵高筆觸的星空咖啡館”時,你是否想過:這張圖的版權屬于你、…

深入理解Linux文件I/O:系統調用與標志位應用

目錄 一、引入 二、標志位 1、什么是標志位? 2、標志位傳遞示例 輸出結果分析 關鍵點解釋 三、文件描述符(File Descriptor)(先大概了解) 四、接口介紹:open()函數 1、命令查看 2、頭文件 3、函數原型 4、參數說明 …

海康線掃相機通過采集卡的取圖設置

目錄 1、掃描高度小于65000行 1.1 軟觸發 1、采集卡設置項 2、相機設置項 1.2 硬觸發 1、采集卡設置項 2、相機設置項 2、掃描高度大于65000行 1.1 軟觸發 1、采集卡設置項 2、相機設置 1.2 硬觸發 1、采集卡設置項 2、相機設置 2.1 幀掃描 2.2 行掃描 3、注意…

InfluxDB 3與Apache Parquet:打造高性能時序數據存儲與分析解決方案

在當今數據驅動的時代,各行業產生的數據量呈爆炸式增長,如何高效存儲和管理海量數據成為企業和開發者面臨的重大挑戰。對于時序數據而言,其具有數據量大、寫入頻繁、查詢模式多樣等特點,對存儲系統的性能和效率提出了更高的要求。…

20250718-4-Kubernetes 應用程序生命周期管理-Pod對象:實現機制_筆記

一、Pod對象1. 資源共享實現機制1)共享網絡基本概念實現方式:通過將業務容器網絡加入到負責網絡的容器(infra container)實現網絡共享核心特點:共享網絡協議棧(包括TC…

防爆手機是什么?能用普通手機改裝嗎?

在石油開采平臺的井架之上,在化工車間的反應釜旁,在煤礦深達千米的巷道中,一群特殊的工作人員正使用著看似普通的通訊設備。這些設備外殼上醒目的Ex防爆認證標志,揭示著其與眾不同的身份——防爆手機。這類專為易燃易爆環境設計的…

gem install報錯解析

報錯內容 [rootlocalhost ~]# gem install bundler Fetching: bundler-2.6.9.gem (100%) ERROR: Error installing bundler:bundler requires Ruby version > 3.1.0. The current ruby version is 2.5.0.解決方案(任選其一) 這個錯誤表明你當前的 Ru…

css 如何實現大屏4個占位 中屏2個 小屏幕1個

1、 使用grid.container {display: grid;grid-template-columns: repeat(4, 1fr);gap: 20px;border: 1px solid red;width: 400px;height: 400px;}media (max-width: 768px) {.container {grid-template-columns: 1fr;}}media (min-width: 768px) and (max-width: 992px) {.con…

Redis學習系列之—— JDHotKey 熱點緩存探測系統

一、為什么需要熱點緩存探測 在回答這個問題前,我們先考慮一下:為什么光用 Redis 還不夠,還需要使用本地緩存? 一般來說,Redis 集群的性能能抗住幾十萬并發,能夠應付大部分情況。但對于一些頭部 APP&#x…

Linux 安全加固

Linux 安全加固需要從??用戶權限、系統服務、網絡防護、日志審計、文件系統、訪問控制??等多個維度入手,目標是減少攻擊面、限制未授權訪問、提升系統健壯性。以下是??詳細步驟實操示例??,覆蓋主流 Linux 發行版(如 CentOS/Ubuntu&am…

【Docker#2】容器歷史發展 | 虛擬化實現方式

一、前言 – 容器技術發展史 容器技術是現今計算技術的重要組成部分,其發展歷程可以追溯到很早的計算機系統提供的進程隔離工具。以下是容器技術的發展歷程,其中涵蓋了從早期的進程隔離技術到現代云計算和云原生的演變: ① Jail 時代 1979 年…

React + Mermaid 圖表渲染消失問題剖析及 4 種代碼級修復方案

Mermaid 是一個流行的庫&#xff0c;它可以將文本圖表&#xff08;例如 graph LR; A-->B;&#xff09;轉換為 SVG 圖表。在靜態 HTML 頁面中&#xff0c;Mermaid 會查找 <pre class"mermaid"> 代碼塊&#xff0c;并在頁面加載時將它們替換為渲染后的圖表。它…

[Element]修改el-pagination背景色

[Element]修改el-pagination背景色 代碼 <el-pagination:current-page.sync"queryParams.current":page-size.sync"queryParams.size":page-sizes"[10, 20, 50, 100]"layout"prev, pager, next, jumper, sizes":total"queryP…

Docker 可用鏡像列表

Docker 鏡像源列表&#xff08;7月15日更新-長期&免費&#xff09;_dockerhub國內鏡像源列表-CSDN博客

低代碼可視化工作流的系統設計與實現路徑研究

一、背景分析在數字化轉型不斷深化的背景下&#xff0c;企業業務流程呈現出高度定制化與動態調整的趨勢&#xff0c;傳統信息系統在開發周期、實施成本與擴展能力上的局限性日益凸顯&#xff0c;已難以支撐快速響應和敏捷迭代的實際需求。面向這一現實挑戰&#xff0c;基于 BPM…

mac mlx大模型框架的安裝和使用

mlx是apple平臺的大模型推理框架&#xff0c;對mac m1系列處理器支持較好。 這里記錄mlx安裝和運行示例。 1 安裝mlx框架 conda create -n mlx python3.12 conda activate mlx pip install mlx-lm 2 運行mlx測試例 以下是測試程序&#xff0c;使用方法和hf、vllm等推理框架基…

JAVA 使用Apache POI合并Word文檔并保留批注的實現

一、需求背景 在實際工作中&#xff0c;我們經常需要將多個Word文檔合并成一個文件。但當文檔中包含批注&#xff08;Comments&#xff09;時&#xff0c;傳統的復制粘貼會導致批注丟失或引用錯亂。本文將介紹如何通過Java和Apache POI庫實現保留批注及引用關系的文檔合并功能。…

Linux的服務管理工具:`systemd`(`systemctl`)和`SysVinit ` 筆記250718

Linux的服務管理工具:systemd(systemctl)和SysVinit 筆記250718 Linux的服務管理工具 Linux 的服務管理工具隨著發行版和初始化系統的發展而演變。以下是主要的服務管理工具及其對應的初始化系統&#xff1a; 1. systemd (現代主流標準) 初始化系統&#xff1a; 是絕大多數…

Couchbase 可觀測性最佳實踐

Couchbase 介紹 Couchbase 是一個開源的分布式 NoSQL 數據庫&#xff0c;專為高性能和高可擴展性設計&#xff0c;適用于實時數據處理的企業應用。它結合鍵值存儲和文檔數據庫的優勢&#xff0c;支持 JSON 文檔存儲&#xff0c;并通過 N1QL&#xff08;類 SQL 查詢語言&#x…

構建基于MCP的LLM聊天機器人客戶端開發指南

引言 在當今人工智能技術快速發展的時代&#xff0c;大型語言模型(LLM)已成為構建智能應用的核心組件。MCP(Modular Conversational Platform)作為一個強大的對話平臺&#xff0c;為開發者提供了將LLM能力與自定義工具集成的標準化方式。本文將詳細介紹如何使用Python開發一個…