{"id":1655,"date":"2026-09-14T21:09:53","date_gmt":"2026-09-14T13:09:53","guid":{"rendered":"https:\/\/lingbo.online\/?p=1655"},"modified":"2026-09-14T21:22:31","modified_gmt":"2026-09-14T13:22:31","slug":"pr-agent","status":"publish","type":"post","link":"https:\/\/lingbo.online\/index.php\/learning_note\/pr-agent\/","title":{"rendered":"Automated Code Review In Practice"},"content":{"rendered":"<h3>Meta Data<\/h3>\n<ul>\n<li>\u53d1\u8868\u65f6\u95f4\uff1a2024-12-24<\/li>\n<li>\u4f5c\u8005\uff1aUmut Cihan, Vahid Haratian, Arda \u0130\u00e7\u00f6z, Mert Kaan G\u00fcl, \u00d6mercan Devran, Emircan Furkan Bayendur, Baykal Mehmet U\u00e7ar, Eray T\u00fcz\u00fcn\uff08\u6bd4\u5c14\u80af\u7279\u5927\u5b66\u3001\u500d\u79d1\uff09<\/li>\n<li>\u8bba\u6587\u94fe\u63a5\uff1a<a href=\"https:\/\/arxiv.org\/pdf\/2412.18531.pdf\" target=\"_blank\"  rel=\"nofollow\" >https:\/\/arxiv.org\/pdf\/2412.18531.pdf<\/a><\/li>\n<li>arXiv \u9875\u9762\uff1a<a href=\"https:\/\/arxiv.org\/abs\/2412.18531\" target=\"_blank\"  rel=\"nofollow\" >https:\/\/arxiv.org\/abs\/2412.18531<\/a><\/li>\n<li>\u9879\u76ee\u94fe\u63a5\uff1a<a href=\"https:\/\/doi.org\/10.5281\/zenodo.13917481\" target=\"_blank\"  rel=\"nofollow\" >https:\/\/doi.org\/10.5281\/zenodo.13917481<\/a><\/li>\n<\/ul>\n<h1>\u5b9e\u8df5\u4e2d\u7684\u81ea\u52a8\u5316\u4ee3\u7801\u8bc4\u5ba1<\/h1>\n<blockquote>\n<p>\u539f\u6587\u6807\u9898\uff1aAutomated Code Review In Practice<\/p>\n<\/blockquote>\n<p><strong>Umut Cihan*<\/strong>, Vahid Haratian*, Arda \u0130\u00e7\u00f6z*, Mert Kaan G\u00fcl\u2020, \u00d6mercan Devran\u2020, Emircan Furkan Bayendur\u2020, Baykal Mehmet U\u00e7ar\u2020, Eray T\u00fcz\u00fcn*<\/p>\n<p>* \u6bd4\u5c14\u80af\u7279\u5927\u5b66\uff08Bilkent University\uff09\uff0c\u5b89\u5361\u62c9\uff0c\u571f\u8033\u5176<br \/>\n\u2020 \u500d\u79d1\uff08Beko\uff09\uff0c\u4f0a\u65af\u5766\u5e03\u5c14\uff0c\u571f\u8033\u5176<\/p>\n<h2>\u6458\u8981<\/h2>\n<p><strong>\u80cc\u666f\uff1a<\/strong> \u4ee3\u7801\u8bc4\u5ba1\uff08code review\uff09\u662f\u5b9e\u8df5\u8005\u5e7f\u6cdb\u91c7\u7528\u7684\u505a\u6cd5\uff0c\u7528\u4e8e\u63d0\u5347\u8f6f\u4ef6\u8d28\u91cf\u5e76\u4f20\u9012\u77e5\u8bc6\u3002\u7531\u4e8e\u9700\u8981\u4eba\u5de5\u6295\u5165\uff0c\u4e14\u53ef\u80fd\u62d6\u6162\u5f00\u53d1\u8fdb\u5ea6\uff0c\u5b83\u5e38\u88ab\u89c6\u4e3a\u8017\u65f6\u3002\u82e5\u5e72 AI \u8f85\u52a9\u4ee3\u7801\u8bc4\u5ba1\u5de5\u5177\uff08Qodo\u3001GitHub Copilot\u3001Coderabbit \u7b49\uff09\u5229\u7528\u5927\u8bed\u8a00\u6a21\u578b\uff08LLM\uff09\u63d0\u4f9b\u81ea\u52a8\u5316\u8bc4\u5ba1\u3002\u8fd9\u7c7b\u5de5\u5177\u5728\u5de5\u4e1a\u573a\u666f\u4e2d\u7684\u603b\u4f53\u6548\u679c\u5c1a\u5f85\u68c0\u9a8c\u3002<\/p>\n<p><strong>\u76ee\u6807\uff1a<\/strong> \u672c\u7814\u7a76\u8003\u5bdf\u57fa\u4e8e LLM \u7684\u81ea\u52a8\u5316\u4ee3\u7801\u8bc4\u5ba1\u5de5\u5177\u5728\u5de5\u4e1a\u73af\u5883\u4e2d\u7684\u5f71\u54cd\u3002<\/p>\n<p><strong>\u65b9\u6cd5\uff1a<\/strong> \u7814\u7a76\u5728\u4e00\u5bb6\u5df2\u91c7\u7528 AI \u8f85\u52a9\u4ee3\u7801\u8bc4\u5ba1\u5de5\u5177\uff08\u57fa\u4e8e\u5f00\u6e90 Qodo PR Agent\uff09\u7684\u5de5\u4e1a\u8f6f\u4ef6\u5f00\u53d1\u73af\u5883\u4e2d\u5f00\u5c55\u300210 \u4e2a\u9879\u76ee\u4e2d\u5171 238 \u540d\u5b9e\u8df5\u8005\u53ef\u4ee5\u4f7f\u7528\u8be5\u5de5\u5177\u3002\u6211\u4eec\u91cd\u70b9\u5206\u6790\u4e86\u5176\u4e2d 3 \u4e2a\u9879\u76ee\uff0c\u6db5\u76d6 4,335 \u4e2a pull request\uff0c\u5176\u4e2d 1,568 \u4e2a\u7ecf\u8fc7\u4e86\u81ea\u52a8\u5316\u8bc4\u5ba1\u3002\u6570\u636e\u6536\u96c6\u4e3b\u8981\u6765\u81ea\u4e09\u65b9\u9762\uff1a\uff081\uff09\u5bf9 pull request \u6570\u636e\u7684\u5b9a\u91cf\u5206\u6790\uff0c\u5305\u62ec\u6807\u660e\u5f00\u53d1\u8005\u662f\u5426\u91c7\u7eb3\u81ea\u52a8\u5316\u8bc4\u8bba\u7684\u8bc4\u8bba\u6807\u7b7e\uff1b\uff082\uff09\u5c31\u5355\u4e2a pull request \u4e0a\u7684\u8bc4\u5ba1\u4f53\u9a8c\u5411\u5f00\u53d1\u8005\u53d1\u653e\u95ee\u5377\uff1b\uff083\uff09\u5bf9 22 \u540d\u5b9e\u8df5\u8005\u7684\u66f4\u5e7f\u6cdb\u8c03\u67e5\uff0c\u6536\u96c6\u5176\u5bf9\u81ea\u52a8\u5316\u4ee3\u7801\u8bc4\u5ba1\u7684\u603b\u4f53\u770b\u6cd5\u3002<\/p>\n<p><strong>\u7ed3\u679c\uff1a<\/strong> 73.8% \u7684\u81ea\u52a8\u5316\u4ee3\u7801\u8bc4\u5ba1\u8bc4\u8bba\u88ab\u6807\u8bb0\u4e3a\u5df2\u89e3\u51b3\uff08Resolved\uff09\u3002\u7136\u800c\uff0cpull request \u7684\u603b\u4f53\u5e73\u5747\u5173\u95ed\u65f6\u957f\u4ece 5 \u5c0f\u65f6 52 \u5206\u949f\u589e\u52a0\u5230 8 \u5c0f\u65f6 20 \u5206\u949f\uff0c\u4e0d\u540c\u9879\u76ee\u8d8b\u52bf\u4e0d\u4e00\u3002\u95ee\u5377\u663e\u793a\uff0c\u591a\u6570\u5b9e\u8df5\u8005\u8ba4\u4e3a\u81ea\u52a8\u5316\u4ee3\u7801\u8bc4\u5ba1\u4ec5\u5e26\u6765\u4ee3\u7801\u8d28\u91cf\u7684\u8f7b\u5fae\u6539\u5584\u3002<\/p>\n<p><strong>\u7ed3\u8bba\uff1a<\/strong> \u57fa\u4e8e LLM \u7684\u81ea\u52a8\u5316\u4ee3\u7801\u8bc4\u5ba1\u5de5\u5177\u5728\u8f6f\u4ef6\u5f00\u53d1\u4e2d\u88ab\u8bc1\u660e\u6709\u7528\uff0c\u80fd\u591f\u52a0\u5f3a\u7f3a\u9677\u53d1\u73b0\u3001\u63d0\u9ad8\u4ee3\u7801\u8d28\u91cf\u610f\u8bc6\u5e76\u63a8\u5e7f\u6700\u4f73\u5b9e\u8df5\u3002\u4f46\u5b83\u4e5f\u62c9\u957f\u4e86 pull request \u5173\u95ed\u65f6\u95f4\uff0c\u5e76\u5e26\u6765\u9519\u8bef\u8bc4\u5ba1\u3001\u4e0d\u5fc5\u8981\u7684\u4fee\u6539\u4ee5\u53ca\u4e0d\u76f8\u5173\u8bc4\u8bba\u7b49\u5f0a\u7aef\u3002\u57fa\u4e8e\u8fd9\u4e9b\u53d1\u73b0\uff0c\u6211\u4eec\u8ba8\u8bba\u4e86\u5b9e\u8df5\u8005\u5982\u4f55\u66f4\u6709\u6548\u5730\u4f7f\u7528\u81ea\u52a8\u5316\u4ee3\u7801\u8bc4\u5ba1\u6280\u672f\u3002<\/p>\n<p><strong>\u7d22\u5f15\u8bcd\uff1a<\/strong> \u4ee3\u7801\u8bc4\u5ba1\uff0c\u5927\u8bed\u8a00\u6a21\u578b\uff0cpull request\uff0cAI \u8f85\u52a9\u4ee3\u7801\u8bc4\u5ba1\uff0c\u5de5\u4e1a\u6848\u4f8b\u7814\u7a76\uff0c\u4ee3\u7801\u8bc4\u5ba1\u81ea\u52a8\u5316<\/p>\n<h2>I \u5f15\u8a00<\/h2>\n<p>\u4ee3\u7801\u8bc4\u5ba1\u662f\u4e00\u79cd\u8d28\u91cf\u4fdd\u8bc1\u8fc7\u7a0b\uff0c\u5de5\u4e1a\u754c\u6709\u4e0d\u540c\u53d8\u4f53\uff0c\u7531\u5f00\u53d1\u8005\u4e92\u76f8\u68c0\u67e5\u5f7c\u6b64\u7684\u4ee3\u7801\u53d8\u66f4 [1]\u3002\u5b83\u6e90\u4e8e\u6b63\u5f0f\u7684\u4ee3\u7801\u5ba1\u67e5\uff08formal code inspections\uff09[2]\uff0c\u968f\u540e\u6f14\u5316\u4e3a\u66f4\u8f7b\u91cf\u7684\u8fc7\u7a0b\uff0c\u5e38\u88ab\u79f0\u4e3a\u73b0\u4ee3\u4ee3\u7801\u8bc4\u5ba1\uff08Modern Code Review, MCR\uff09[3]\u3002MCR \u7684\u7279\u70b9\u662f\u975e\u6b63\u5f0f\u3001\u57fa\u4e8e\u5de5\u5177\u3001\u4e14\u5b9a\u671f\u8fdb\u884c [4]\u3002\u8be5\u8fc7\u7a0b\u7684\u5e38\u89c1\u6536\u76ca\u5305\u62ec\u77e5\u8bc6\u5171\u4eab\u3001\u5b66\u4e60\u3001\u7f3a\u9677\u8bc6\u522b\u4e0e\u4ee3\u7801\u6539\u8fdb [5], [6]\u3002<\/p>\n<p>\u4e3a\u8fdb\u884c\u4ee3\u7801\u8bc4\u5ba1\uff0c\u5f00\u53d1\u8005\u9700\u8981\u82b1\u65f6\u95f4\u7406\u89e3\u4ed6\u4eba\u7684\u5de5\u4f5c\u53ca\u5176\u5728\u6574\u4f53\u9879\u76ee\u4e2d\u7684\u4f4d\u7f6e\u3002\u5f00\u6e90\u8f6f\u4ef6\uff08OSS\uff09\u5f00\u53d1\u8005\u81ea\u62a5\u6bcf\u5468\u5e73\u5747\u82b1\u8d39 6.4 \u5c0f\u65f6\u505a\u4ee3\u7801\u8bc4\u5ba1 [7]\uff0c\u800c Google \u7684\u6848\u4f8b\u7814\u7a76\u663e\u793a\u66f4\u4f4e\uff0c\u4e3a 3.2 \u5c0f\u65f6 [6]\u3002\u8fd9\u4e9b\u6570\u5b57\u8868\u660e\u5f00\u53d1\u8005\u5728\u8bc4\u5ba1\u4e0a\u6295\u5165\u4e86\u76f8\u5f53\u591a\u65f6\u95f4\u3002<\/p>\n<p>\u7531\u4e8e\u5de5\u4f5c\u8d1f\u8377\uff0c\u5f00\u53d1\u8005\u5e38\u5e38\u63a8\u8fdf\u4ee3\u7801\u8bc4\u5ba1\u4efb\u52a1\uff0c\u4ece\u800c\u63a8\u8fdf\u4ee3\u7801\u53d8\u66f4\u7684\u5408\u5e76\u3002\u5728\u540c\u4e00\u9879 Google \u6848\u4f8b\u7814\u7a76\u4e2d\uff0c\u5408\u5e76\u6279\u51c6\u7684\u4e2d\u4f4d\u65f6\u95f4\u4e0d\u5230 4 \u5c0f\u65f6\uff0c\u5927\u578b\u53d8\u66f4\u96c6\u5219\u4e3a 5 \u5c0f\u65f6 [6]\u3002\u591a\u5bb6\u516c\u53f8\u62a5\u544a\u4e86\u66f4\u9ad8\u7684\u4e2d\u4f4d\u6279\u51c6\u65f6\u95f4\uff1aGoogle Chrome 15.7 \u5c0f\u65f6\u3001Google \u7684 Android 20.8 \u5c0f\u65f6\u3001AMD 17.5 \u5c0f\u65f6\uff0c\u4ee5\u53ca\u5fae\u8f6f\u7684 Bing 14.7 \u5c0f\u65f6\u3001SQL 19.8 \u5c0f\u65f6\u3001Office 18.9 \u5c0f\u65f6 [8]\u3002\u6279\u51c6\u65f6\u95f4\u7684\u5dee\u5f02\u8bf4\u660e\u516c\u53f8\u4e0e\u9879\u76ee\u4e4b\u95f4\u5b58\u5728\u4e0d\u540c\u3002\u7136\u800c\uff0c\u5173\u952e\u4ee3\u7801\u53d8\u66f4\u5ef6\u8bef\u7684\u5b9e\u9645\u6210\u672c\u5e76\u672a\u53cd\u6620\u5728\u4e2d\u4f4d\u6570\u6216\u5e73\u5747\u503c\u4e2d\uff0c\u53ef\u80fd\u66f4\u5177\u7834\u574f\u6027\u3002\u5728\u4e00\u9879\u9488\u5bf9\u5fae\u8f6f\u5f00\u53d1\u8005\u7684\u7814\u7a76\u4e2d\uff0c\u300c\u53ca\u65f6\u83b7\u5f97\u53cd\u9988\u300d\u88ab\u5217\u4e3a\u4ee3\u7801\u8bc4\u5ba1\u5b9e\u8df5\u7684\u9996\u8981\u6311\u6218 [5]\u3002<\/p>\n<p>\u81ea\u52a8\u5316\u6709\u53ef\u80fd\u7f29\u77ed\u4ee3\u7801\u6279\u51c6\u65f6\u95f4\u5e76\u51cf\u8f7b\u5f00\u53d1\u8005\u7684\u4eba\u5de5\u8d1f\u62c5\u3002\u4e3a\u6b64\uff0c\u5df2\u6709\u591a\u9879\u5c1d\u8bd5\u81ea\u52a8\u5316\u4ee3\u7801\u8bc4\u5ba1\u8fc7\u7a0b [9]\u2013[19]\uff0c\u4e3b\u8981\u96c6\u4e2d\u5728\u8bc4\u5ba1\u4eba\u6307\u6d3e [20]\u3002\u8fd9\u4e9b\u5de5\u4f5c\u5305\u62ec\u751f\u6210\u4ee3\u7801\u8bc4\u5ba1\u7684\u5de5\u5177 [10]\u2013[12]\u3001\u9884\u6d4b\u4ee3\u7801\u53d8\u66f4\u662f\u5426\u4f1a\u88ab\u6279\u51c6 [21], [22]\uff0c\u4ee5\u53ca\u6839\u636e\u8bc4\u5ba1\u4fee\u590d\u4ee3\u7801 [23], [24]\u3002\u672c\u7814\u7a76\u5173\u6ce8\u7684\u662f\u4ee3\u7801\u8bc4\u5ba1\u751f\u6210\u7684\u81ea\u52a8\u5316\u3002<\/p>\n<p>\u4e3a\u751f\u6210\u4ee3\u7801\u8bc4\u5ba1\uff0c\u5f00\u53d1\u8005\u9700\u8981\u82b1\u65f6\u95f4\u7406\u89e3\u4ee3\u7801\u53d8\u66f4\u3001\u5bfb\u627e\u9519\u8bef\u3001\u53d1\u73b0\u6027\u80fd\u74f6\u9888\u6216\u5bf9\u7f16\u7801\u89c4\u8303\u7684\u504f\u79bb\u3002\u5df2\u6709\u82e5\u5e72\u57fa\u4e8e\u9884\u8bad\u7ec3\u6a21\u578b\u63d0\u4f9b\u4ee3\u7801\u8bc4\u5ba1\u7684\u5c1d\u8bd5 [21], [22], [25]\u3002ChatGPT [26] \u63a8\u51fa\u540e\uff0c\u81ea\u52a8\u5316\u4ee3\u7801\u8bc4\u5ba1\u751f\u6210\u51fa\u73b0\u4e86\u5927\u91cf\u52aa\u529b [27]\u3002\u82e5\u5e72\u5177\u5907\u4ee3\u7801\u8bc4\u5ba1\u80fd\u529b\u7684\u5de5\u5177\u88ab\u521b\u5efa\uff0c\u901a\u5e38\u4f7f\u7528 OpenAI \u7684 LLM\uff0c\u5982 GPT-4 [28], [29]\u3002<\/p>\n<p>\u81ea\u52a8\u5316\u4ee3\u7801\u8bc4\u5ba1\u5de5\u5177\u5728\u5de5\u4e1a\u754c\u7684\u4f7f\u7528\u65e5\u76ca\u589e\u591a [27]\u3002\u7136\u800c\uff0c\u5173\u4e8e\u5176\u6f5c\u5728\u6536\u76ca\u7684\u5b9e\u8bc1\u8bc1\u636e\u4ecd\u7136\u4e0d\u8db3\u3002\u4f8b\u5982\uff0c\u81ea\u52a8\u5316\u8bc4\u5ba1\u8282\u7701\u7684\u65f6\u95f4\u53ef\u80fd\u88ab\u5176\u5f15\u5165\u7684\u65b0\u95ee\u9898\u62b5\u6d88\u3002\u6b64\u5916\uff0c\u51cf\u5c11\u5f00\u53d1\u8005\u6295\u5165\u6240\u5e26\u6765\u7684\u8d22\u52a1\u6536\u76ca\uff0c\u76f8\u6bd4\u8fd0\u884c\u8fd9\u7c7b\u5de5\u5177\u7684\u6210\u672c\u53ef\u80fd\u5fae\u4e0d\u8db3\u9053\u3002\u4e3a\u586b\u8865\u8fd9\u4e00\u7814\u7a76\u7a7a\u767d\uff0c\u6211\u4eec\u5f00\u5c55\u7814\u7a76\u4ee5\u56de\u7b54\u4e0b\u5217\u95ee\u9898\uff1a<\/p>\n<ul>\n<li><strong>RQ1\uff1a<\/strong> \u57fa\u4e8e LLM \u7684\u81ea\u52a8\u5316\u4ee3\u7801\u8bc4\u5ba1\u5728\u8f6f\u4ef6\u5de5\u4e1a\u60c5\u5883\u4e2d\u6709\u591a\u5927\u7528\u5904\uff1f<\/li>\n<li><strong>RQ2\uff1a<\/strong> \u57fa\u4e8e LLM \u7684\u81ea\u52a8\u5316\u4ee3\u7801\u8bc4\u5ba1\u5982\u4f55\u5f71\u54cd pull request \u5173\u95ed\u8fc7\u7a0b\u7684\u8282\u594f\uff1f<\/li>\n<li><strong>RQ3\uff1a<\/strong> \u5f15\u5165\u57fa\u4e8e LLM \u7684\u81ea\u52a8\u5316\u4ee3\u7801\u8bc4\u5ba1\u5982\u4f55\u5f71\u54cd\u4eba\u5de5\u4ee3\u7801\u8bc4\u5ba1\u6d3b\u52a8\u7684\u6570\u91cf\uff1f<\/li>\n<li><strong>RQ4\uff1a<\/strong> \u5f00\u53d1\u8005\u5982\u4f55\u770b\u5f85\u57fa\u4e8e LLM \u7684\u81ea\u52a8\u5316\u4ee3\u7801\u8bc4\u5ba1\u5de5\u5177\uff1f<\/li>\n<\/ul>\n<p>\u6211\u4eec\u4e0e\u500d\u79d1\uff08Beko\uff09\u5408\u4f5c\u3002\u500d\u79d1\u662f\u4e00\u5bb6\u8de8\u56fd\u5bb6\u7535\u516c\u53f8\uff0c\u5176\u8f6f\u4ef6\u90e8\u95e8\u91c7\u7528\u4e86\u57fa\u4e8e\u5f00\u6e90 Qodo\uff08\u539f CodiumAI\uff09PR Agent [29]\u3001\u4f7f\u7528 GPT-4 Turbo \u6a21\u578b [30] \u7684\u81ea\u52a8\u4ee3\u7801\u8bc4\u5ba1\u5de5\u5177\u3002\u8be5\u5de5\u5177\u4e3a 10 \u4e2a\u9879\u76ee\u300122 \u4e2a\u9879\u76ee\u4ed3\u5e93\u4e2d\u7684\u6bcf\u4e2a pull request \u63d0\u4f9b\u81ea\u52a8\u4ee3\u7801\u8bc4\u5ba1\u8bc4\u8bba\u3002<\/p>\n<p>\u6570\u636e\u6536\u96c6\u5305\u62ec\u4e09\u4e2a\u6765\u6e90\u3002\u9996\u5148\uff0c\u6211\u4eec\u4ece\u6258\u7ba1\u9879\u76ee\u4ed3\u5e93\u7684\u7248\u672c\u63a7\u5236\u7cfb\u7edf\u4e0e\u5f00\u53d1\u5e73\u53f0 Azure DevOps \u63d0\u53d6\u6570\u636e\uff0c\u6db5\u76d6 pull request \u4fe1\u606f\u3001\u8bc4\u5ba1\u8bc4\u8bba\u3001\u8bc4\u5ba1\u8bc4\u8bba\u6807\u7b7e\uff0c\u4ee5\u53ca pull request \u521d\u59cb\u7248\u672c\u4e0e\u6700\u7ec8\u7248\u672c\u7684\u5bf9\u6bd4\u3002\u5f00\u53d1\u8005\u88ab\u8981\u6c42\u4e3a\u6bcf\u6761\u8bc4\u5ba1\u8bc4\u8bba\u6253\u6807\u7b7e\uff0c\u4ee5\u6807\u660e\u662f\u5426\u5df2\u5c06\u5efa\u8bae\u843d\u5b9e\u5230\u4ee3\u7801\u4e2d\u3002\u5176\u6b21\uff0c\u4f5c\u8005\u4f1a\u5c31\u6bcf\u4e2a pull request \u6536\u5230\u4e00\u4efd\u7b80\u77ed\u95ee\u5377\u3002\u6700\u540e\uff0c\u6211\u4eec\u5bf9 22 \u540d\u5b9e\u8df5\u8005\u8fdb\u884c\u4e86\u66f4\u5e7f\u6cdb\u7684\u8c03\u67e5\uff0c\u4ee5\u6536\u96c6\u603b\u4f53\u770b\u6cd5\u3002<\/p>\n<h2>II \u76f8\u5173\u5de5\u4f5c<\/h2>\n<p>\u4ee3\u7801\u8bc4\u5ba1\u9700\u8981\u5f00\u53d1\u8005\u6295\u5165\u5927\u91cf\u7cbe\u529b\u4e0e\u65f6\u95f4 [5], [7]\u3002\u8fd9\u4e9b\u9700\u6c42\uff0c\u518d\u52a0\u4e0a\u9891\u7e41\u7684\u4e0a\u4e0b\u6587\u5207\u6362\uff0c\u63a8\u52a8\u4e86\u81ea\u52a8\u5316 [31]\u3002\u4ee3\u7801\u8bc4\u5ba1\u81ea\u52a8\u5316\u662f\u7814\u7a76\u4e2d\u88ab\u5145\u5206\u63a2\u8ba8\u7684\u90e8\u5206\uff0c\u5176\u4e2d\u5927\u90e8\u5206\u5de5\u4f5c\u5904\u7406\u8bc4\u5ba1\u4eba\u6307\u6d3e\u95ee\u9898 [32]\u2013[40]\u3002\u5176\u4ed6\u4ee3\u7801\u8bc4\u5ba1\u73af\u8282\u4e5f\u6709\u76f8\u5f53\u6295\u5165\u30022018 \u5e74\uff0cGupta \u7b49\u4eba [25] \u63d0\u51fa\u7528\u6709\u76d1\u7763\u6df1\u5ea6\u5b66\u4e60\u5c06\u5386\u53f2\u8bc4\u5ba1\u4e0e\u4ee3\u7801\u7247\u6bb5\u5339\u914d\u30022019 \u5e74\uff0cLi \u7b49\u4eba [22] \u63d0\u51fa\u57fa\u4e8e\u5377\u79ef\u795e\u7ecf\u7f51\u7edc\uff08CNN\uff09\u7684\u6a21\u578b\uff0cShi \u7b49\u4eba [21] \u63d0\u51fa\u5229\u7528 CNN \u4e0e LSTM \u7684\u6846\u67b6\uff0c\u7528\u4e8e\u9884\u6d4b\u4ee3\u7801\u53d8\u66f4\u662f\u5426\u4f1a\u88ab\u6279\u51c6\u30022022 \u5e74\uff0cThongtanunam \u7b49\u4eba [24] \u63d0\u51fa\u5728\u4ee3\u7801\u8bc4\u5ba1\u8fc7\u7a0b\u4e2d\u81ea\u52a8\u4fee\u6539\u6e90\u4ee3\u7801\u7684\u6a21\u578b\u3002<\/p>\n<p>\u9664\u4e0a\u8ff0\u5de5\u4f5c\u5916\uff0c\u4ee3\u7801\u8bc4\u5ba1\u751f\u6210\u7684\u81ea\u52a8\u5316\u8fd8\u8003\u5bdf\u4e86\u591a\u79cd\u6280\u672f\uff0c\u5305\u62ec\u4fe1\u606f\u68c0\u7d22 [9]\u3001\u9884\u8bad\u7ec3\u6a21\u578b [10]\u2013[12]\u3001LLM [13]\u2013[15]\u3001LLM prompt \u5fae\u8c03 [16]\u3001\u7528\u4eba\u7c7b\u53cd\u9988\u5fae\u8c03 LLM [17]\uff0c\u4ee5\u53ca LLM agent [18], [19]\u3002Tufano \u7b49\u4eba [20] \u8003\u5bdf\u4e86\u5f53\u65f6\u6700\u5148\u8fdb\u7684\u4ee3\u7801\u8bc4\u5ba1\u81ea\u52a8\u5316\u6548\u679c\u3002\u4ed6\u4eec\u7814\u7a76\u4e86\u57fa\u4e8e\u9884\u8bad\u7ec3 Text-To-Text Transfer Transformer\uff08T5\uff09\u7684\u6a21\u578b [11], [41]\u3001\u7528\u4fe1\u606f\u68c0\u7d22\u63a8\u8350\u4ee3\u7801\u8bc4\u5ba1\u7684 CommentFinder [9]\u3001\u4f7f\u7528\u9884\u8bad\u7ec3\u6280\u672f\u7684 CodeReview Model [10]\uff0c\u4ee5\u53ca\u672a\u6307\u660e\u7248\u672c\u7684 ChatGPT [26]\u3002\u4ed6\u4eec\u53d1\u73b0 ChatGPT \u53ef\u4f5c\u4e3a\u6539\u8fdb\u4ee3\u7801\u7684\u6709\u7ade\u4e89\u529b\u57fa\u7ebf\uff0c\u65e0\u8bba\u662f\u76f4\u63a5\u7684 code-to-code \u53d8\u6362\uff0c\u8fd8\u662f\u57fa\u4e8e\u8bc4\u8bba\u751f\u6210\u4ee3\u7801\uff08comment-to-code\uff09\u3002\u76f8\u6bd4\u4e4b\u4e0b\uff0cChatGPT \u5728\u8bc4\u8bba\u751f\u6210\uff08code-to-comment\uff09\u4e0a\u5e76\u672a\u8d85\u8fc7\u5f53\u65f6\u7684\u6700\u5148\u8fdb\u65b9\u6cd5\u3002<\/p>\n<p>\u5c06 LLM \u4e0e\u751f\u6210\u5f0f\u4eba\u5de5\u667a\u80fd\u7528\u4e8e\u4ee3\u7801\u8bc4\u5ba1\u751f\u6210\u4e5f\u5438\u5f15\u4e86\u5176\u4ed6\u7814\u7a76\u3002Davila \u7b49\u4eba [27] \u5bf9\u751f\u6210\u5f0f\u4eba\u5de5\u667a\u80fd\u7528\u4e8e\u4ee3\u7801\u8bc4\u5ba1\u7684\u7070\u8272\u6587\u732e\u505a\u4e86\u7efc\u8ff0\uff0c\u5c55\u793a\u4e86 ChatGPT \u4e00\u7c7b\u57fa\u4e8e LLM \u7684\u5de5\u5177\u5982\u4f55\u88ab\u63a2\u7d22\u7528\u4e8e\u4ee3\u7801\u8bc4\u5ba1\u3002Fan \u7b49\u4eba [14] \u8003\u5bdf\u4e86 LLM \u5728\u4e09\u9879\u4e0e\u4ee3\u7801\u53d8\u66f4\u76f8\u5173\u7684\u4efb\u52a1\u4e0a\u7684\u80fd\u529b\uff1a\u4ee3\u7801\u8bc4\u5ba1\u751f\u6210\u3001commit message \u751f\u6210\uff0c\u4ee5\u53ca\u5373\u65f6\u8bc4\u8bba\u66f4\u65b0\u3002\u4ed6\u4eec\u7684\u7ed3\u8bba\u662f LLM \u5728\u8fd9\u4e9b\u4efb\u52a1\u4e0a\u5f88\u6709\u524d\u666f\u3002Watanabe \u7b49\u4eba [42] \u8c03\u67e5\u4e86 179 \u4e2a GitHub \u9879\u76ee\u4e2d 229 \u6761\u5305\u542b ChatGPT \u5bf9\u8bdd\u94fe\u63a5\u7684\u8bc4\u5ba1\u8bc4\u8bba\u3002\u5206\u6790\u663e\u793a\uff0c\u5bf9 ChatGPT \u56de\u7b54\u7684\u53cd\u5e94\u4e2d\u6709 30.7% \u4e3a\u8d1f\u9762\uff0c\u5f00\u53d1\u8005\u5e38\u79f0\u5176\u7f3a\u5c11\u989d\u5916\u6536\u76ca\u30022024 \u5e74\uff0c\u6765\u81ea Google \u4e0e\u534e\u76db\u987f\u5927\u5b66\u7684 Vijayvergiya \u7b49\u4eba [15] \u5c55\u793a\u4e86 AutoCommenter \u7684\u5f00\u53d1\u4e0e\u5927\u89c4\u6a21\u5de5\u4e1a\u843d\u5730\u3002AutoCommenter \u662f\u9762\u5411\u56db\u79cd\u7f16\u7a0b\u8bed\u8a00\uff08C++\u3001Java\u3001Python \u548c Go\uff09\u7684 LLM \u652f\u6301\u7684\u81ea\u52a8\u5316\u4ee3\u7801\u8bc4\u5ba1\u7cfb\u7edf\u3002\u4ed6\u4eec\u7684\u53d1\u73b0\u8868\u660e\uff0c\u5728\u83b7\u5f97\u8f83\u9ad8\u7ec8\u7aef\u7528\u6237\u63a5\u53d7\u5ea6\u7684\u540c\u65f6\uff0c\u5f00\u53d1\u7aef\u5230\u7aef\u81ea\u52a8\u5316\u4ee3\u7801\u8bc4\u5ba1\u7cfb\u7edf\u662f\u53ef\u884c\u7684\u3002<\/p>\n<p>\u672c\u7814\u7a76\u65e8\u5728\u586b\u8865\u5173\u4e8e\u81ea\u52a8\u5316\u4ee3\u7801\u8bc4\u5ba1\u5de5\u5177\u5bf9\u8f6f\u4ef6\u5f00\u53d1\u5f71\u54cd\u7684\u7eb5\u5411\u7814\u7a76\u4e0d\u8db3\u3002\u4e0e\u4ee5\u5f80\u7814\u7a76\u4e0d\u540c\uff0c\u6211\u4eec\u8003\u5bdf\u5546\u7528\u3001\u57fa\u4e8e LLM \u7684\u81ea\u52a8\u5316\u4ee3\u7801\u8bc4\u5ba1\u5de5\u5177 [29] \u5728\u771f\u5b9e\u5de5\u4e1a\u73af\u5883\u4e2d\u5bf9\u5f00\u53d1\u4ea7\u7269\u4e0e\u5f00\u53d1\u8005\u611f\u77e5\u7684\u5f71\u54cd\u3002\u672c\u7814\u7a76\u5e0c\u671b\u4e3a\u5b9e\u8df5\u8005\u63d0\u4f9b\u5173\u4e8e\u662f\u5426\u4ee5\u53ca\u5982\u4f55\u91c7\u7528\u57fa\u4e8e LLM \u7684\u81ea\u52a8\u5316\u4ee3\u7801\u8bc4\u5ba1\u5de5\u5177\u7684\u6709\u4ef7\u503c\u89c1\u89e3\u3002<\/p>\n<h2>III \u7814\u7a76\u8bbe\u7f6e<\/h2>\n<p>\u672c\u7814\u7a76\u901a\u8fc7\u8bc4\u4f30\u6027\u6848\u4f8b\u7814\u7a76\uff0c\u8bc4\u4f30\u57fa\u4e8e LLM \u7684\u81ea\u52a8\u5316\u4ee3\u7801\u8bc4\u5ba1\u5bf9\u8f6f\u4ef6\u5f00\u53d1\u7684\u5f71\u54cd\u3002\u6211\u4eec\u8bc4\u4f30\u5176\u6709\u6548\u6027\u3001\u5bf9 pull request \u5173\u95ed\u901f\u5ea6\u7684\u5f71\u54cd\uff0c\u4ee5\u53ca\u4eba\u5de5\u4ee3\u7801\u8bc4\u5ba1\u6570\u91cf\u7684\u53d8\u5316\u3002\u672c\u8282\u4ecb\u7ecd\u7814\u7a76\u8bbe\u7f6e\u3002\u7b2c III-A \u8282\u4ecb\u7ecd\u7814\u7a76\u5bf9\u8c61\u3002\u7b2c III-B \u8282\u7ed9\u51fa\u7814\u7a76\u76ee\u6807\u4e0e\u7814\u7a76\u95ee\u9898\u3002\u672c\u7814\u7a76\u540c\u65f6\u5305\u542b\u5b9a\u91cf\u4e0e\u5b9a\u6027\u6570\u636e\u3002\u7b2c III-C \u8282\u63cf\u8ff0\u5982\u4f55\u4ece\u9879\u76ee\u4ed3\u5e93\u6536\u96c6\u5b9a\u91cf\u6570\u636e\u3002\u7b2c III-D \u8282\u63cf\u8ff0\u901a\u8fc7\u95ee\u5377\u8fdb\u884c\u7684\u5b9a\u6027\u6570\u636e\u6536\u96c6\u3002\u7b2c III-E \u8282\u63cf\u8ff0\u6211\u4eec\u5bf9\u7814\u7a76\u95ee\u9898\u7684\u5904\u7406\u65b9\u5f0f\u3002<\/p>\n<h3>III-A \u7814\u7a76\u5bf9\u8c61<\/h3>\n<p><img decoding=\"async\" src=\"https:\/\/youpaiyun.lingbo.online\/paper-read\/2412.18531\/fig01.png\" alt=\"\u56fe 1\uff1a\u6570\u636e\u6536\u96c6\u65f6\u95f4\u7ebf\" \/><\/p>\n<p><strong>\u56fe 1\uff1a<\/strong> \u6570\u636e\u6536\u96c6\u65f6\u95f4\u7ebf<\/p>\n<p>\u6211\u4eec\u5728\u8de8\u56fd\u4f01\u4e1a\u500d\u79d1\u7684\u8f6f\u4ef6\u5f00\u53d1\u90e8\u95e8\u5f00\u5c55\u7814\u7a76\u3002\u8be5\u516c\u53f8\u7ecf\u8425\u8010\u7528\u6d88\u8d39\u54c1\u4e0e\u7535\u5b50\u4ea7\u54c1\u3002\u500d\u79d1\u8f6f\u4ef6\u5f00\u53d1\u90e8\u95e8\u8d1f\u8d23\u9762\u5411\u5ba2\u6237\u4e0e\u5458\u5de5\u7684\u8f6f\u4ef6\uff0c\u5171\u6709 238 \u540d\u5b9e\u8df5\u8005\u3002<\/p>\n<p>\u56fe 1 \u6982\u8ff0\u4e86\u500d\u79d1\u843d\u5730 CodeReviewBot \u7684\u5386\u7a0b\uff1a\u59cb\u4e8e 2023 \u5e74 8 \u6708 25 \u65e5\u7684\u8c03\u7814\u9636\u6bb5\uff0c\u9a71\u52a8\u56e0\u7d20\u662f\u63d0\u5347\u4ee3\u7801\u8d28\u91cf\u4e0e\u6548\u7387\u3002\u500d\u79d1\u8bc4\u4f30\u4e86\u82e5\u5e72\u5f00\u6e90\u9879\u76ee\uff0c\u5305\u62ec CodeRabbit [28]\u3001Qodo\uff08\u539f CodiumAI\uff09[29]\uff0c\u4ee5\u53ca\u6d41\u6c34\u7ebf\u6269\u5c55\u7c7b\u5de5\u5177\uff0c\u5982 Reviewbot<a href=\"https:\/\/github.com\/reviewboard\/ReviewBot\" target=\"_blank\"  rel=\"nofollow\" >^1<\/a>\u3001ChatGPT-CodeReview<a href=\"https:\/\/github.com\/anc95\/ChatGPT-CodeReview\" target=\"_blank\"  rel=\"nofollow\" >^2<\/a> \u548c Codereview.gpt<a href=\"https:\/\/github.com\/sturdy-dev\/codereview.gpt\" target=\"_blank\"  rel=\"nofollow\" >^3<\/a>\u3002\u7ecf\u5ba1\u614e\u8003\u8651\uff0c\u500d\u79d1\u9009\u62e9\u4e86 Qodo PR-Agent [29]\uff0c\u56e0\u5176\u6027\u80fd\u9ad8\u4e14\u96c6\u6210\u987a\u7545\u3002\u4ed6\u4eec\u6309\u81ea\u8eab\u9700\u6c42\u5b9a\u5236\u529f\u80fd\uff0c\u5e76\u5728\u5185\u90e8\u547d\u540d\u4e3a \u201cCode Review Bot\u201d\u3002\u540e\u6587\u4e3a\u4fbf\u4e8e\u9605\u8bfb\uff0c\u7edf\u4e00\u4f7f\u7528 \u201cCodeReviewBot\u201d\u3002\u7b2c\u4e00\u4e2a\u8bd5\u70b9\u9879\u76ee\u4e8e 2023 \u5e74 11 \u6708 7 \u65e5\u4e0a\u7ebf\u3002\u5230 2024 \u5e74 6 \u6708 5 \u65e5\uff0c\u500d\u79d1\u5df2\u5728 10 \u4e2a\u9879\u76ee\u300122 \u4e2a\u4ed3\u5e93\u4e2d\u91c7\u7528 CodeReviewBot\u30022024 \u5e74 5 \u6708 24 \u65e5\uff0c\u5b9e\u8df5\u8005\u901a\u8fc7\u90ae\u4ef6\u6d3b\u52a8\u83b7\u77e5\u8bc4\u8bba\u89e3\u51b3\u7b56\u7565\uff08commit\/comment resolution policy\uff09\u5df2\u751f\u6548\uff1b2024 \u5e74 9 \u6708 20 \u65e5\u662f\u672c\u7814\u7a76\u7684\u6700\u7ec8\u6570\u636e\u6536\u96c6\u65e5\u3002\u56fe 2 \u7ed9\u51fa\u4e00\u6761 CodeReviewBot \u8bc4\u8bba\u793a\u4f8b\u3002<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/youpaiyun.lingbo.online\/paper-read\/2412.18531\/fig02.png\" alt=\"\u56fe 2\uff1aCodeReviewBot \u8bc4\u5ba1\u793a\u4f8b\" \/><\/p>\n<p><strong>\u56fe 2\uff1a<\/strong> CodeReviewBot \u8bc4\u5ba1\u793a\u4f8b<\/p>\n<p>CodeReviewBot \u4f7f\u7528 GPT-4-32K \u6a21\u578b\uff0c\u4e3a\u6bcf\u4e2a pull request \u63d0\u4f9b\u81ea\u52a8\u4ee3\u7801\u8bc4\u5ba1\u8bc4\u8bba\u3002\u8be5\u5de5\u5177\u8865\u5145\u4ee3\u7801\u8bc4\u5ba1\u8fc7\u7a0b\uff1b\u5f00\u53d1\u8005\u4ecd\u53ef\u6dfb\u52a0\u81ea\u5df1\u7684\u8bc4\u5ba1\u3002\u56fe 3 \u63cf\u7ed8\u4e86 pull request \u6d41\u7a0b\u3002\u8be5\u5de5\u5177\u8fd0\u884c\u5728\u8de8\u8d8a 10 \u4e2a\u4e0d\u540c\u9879\u76ee\u7684 22 \u4e2a\u4ed3\u5e93\u4e0a\u3002\u8fd9\u4e9b\u4ed3\u5e93\u5305\u542b Java\u3001JavaScript\u3001C\u3001HTML\u3001SQL\u3001C# \u548c TypeScript \u4ee3\u7801\u3002<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/youpaiyun.lingbo.online\/paper-read\/2412.18531\/fig03.png\" alt=\"\u56fe 3\uff1aPull Request \u6d41\u7a0b\" \/><\/p>\n<p><strong>\u56fe 3\uff1a<\/strong> Pull Request \u6d41\u7a0b<\/p>\n<p><strong>\u8868 I\uff1a<\/strong> \u7eb3\u5165\u672c\u7814\u7a76\u7684\u9879\u76ee<\/p>\n<table>\n<thead>\n<tr>\n<th>\u9879\u76ee<\/th>\n<th>\u8bf4\u660e<\/th>\n<th>\u5f00\u53d1\u8005\u4eba\u6570<\/th>\n<th>\u8bed\u8a00<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Project #1<\/td>\n<td>B2B \u7535\u5546\u95e8\u6237<\/td>\n<td>21<\/td>\n<td>TypeScript, Java, JavaScript<\/td>\n<\/tr>\n<tr>\n<td>Project #2<\/td>\n<td>\u4f01\u4e1a\u7ba1\u7406\u5e73\u53f0<\/td>\n<td>51<\/td>\n<td>HTML, JavaScript, C#<\/td>\n<\/tr>\n<tr>\n<td>Project #3<\/td>\n<td>\u53ef\u5b9a\u5236 AI \u89e3\u51b3\u65b9\u6848\u4e2d\u5fc3<\/td>\n<td>22<\/td>\n<td>C#, HTML, JavaScript, SQL<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>\u9009\u62e9\u500d\u79d1\u4f5c\u4e3a\u7814\u7a76\u5bf9\u8c61\uff0c\u662f\u56e0\u4e3a\u4ed6\u4eec\u5df2\u4f7f\u7528 CodeReviewBot \u76f8\u5f53\u957f\u65f6\u95f4\u3002\u5f00\u53d1\u56e2\u961f\u89c4\u6a21\uff08103 \u540d\u5f00\u53d1\u8005\uff09\u4ee5\u53ca\u4f7f\u7528\u8be5\u5de5\u5177\u7684\u9879\u76ee\u591a\u6837\u6027\uff0810 \u4e2a\u9879\u76ee\uff09\u4e5f\u662f\u4fc3\u4f7f\u6211\u4eec\u9009\u62e9\u4ed6\u4eec\u7684\u539f\u56e0\u3002\u4e3a\u907f\u514d\u6536\u96c6\u771f\u5b9e\u6570\u636e\u53ef\u80fd\u5e26\u6765\u7684\u98ce\u9669\u6216\u610f\u5916\u540e\u679c\uff0c\u6211\u4eec\u672a\u5c06\u4efb\u4f55\u7ed3\u679c\u4e0e\u4e2a\u522b\u5b9e\u8df5\u8005\u5173\u8054\uff0c\u4e2a\u4f53\u95ee\u5377\u7ed3\u679c\u4e5f\u672a\u4e0e\u500d\u79d1\u65b9\u9762\u7684\u4f5c\u8005\u5171\u4eab\u3002\u6570\u636e\u5206\u6790\u9488\u5bf9\u91c7\u7528 CodeReviewBot \u7684 10 \u4e2a\u9879\u76ee\u4e2d\u7684 3 \u4e2a\u3002\u8fd9\u662f\u56e0\u4e3a\u8fd9 3 \u4e2a\u9879\u76ee\u66f4\u65e9\u5f00\u59cb\u4f7f\u7528 CodeReviewBot\uff08Project #1\uff1a2023 \u5e74 11 \u6708 7 \u65e5\uff1bProject #2\uff1a2023 \u5e74 11 \u6708 13 \u65e5\uff1bProject #3\uff1a2024 \u5e74 4 \u6708 3 \u65e5\uff09\u3002\u5176\u4f59 7 \u4e2a\u9879\u76ee\u7ea6\u5728 2024 \u5e74 6 \u6708\u624d\u91c7\u7528 CodeReviewBot\uff0c\u56e0\u800c\u5c1a\u672a\u79ef\u7d2f\u53ef\u89c2\u6570\u636e\u3002\u8868 I \u7ed9\u51fa\u8fd9 3 \u4e2a\u9879\u76ee\u7684\u4fe1\u606f\u3002<\/p>\n<h3>III-B \u7814\u7a76\u76ee\u6807\u4e0e\u7814\u7a76\u95ee\u9898<\/h3>\n<p>\u672c\u7814\u7a76\u4ece\u591a\u4e2a\u89c6\u89d2\u8003\u5bdf\u81ea\u52a8\u5316\u4ee3\u7801\u8bc4\u5ba1\u5bf9\u8f6f\u4ef6\u5f00\u53d1\u7684\u5f71\u54cd\u3002\u5728\u5b66\u672f\u4e0a\uff0c\u5b83\u63d0\u4f9b\u5b9e\u8bc1\u6570\u636e\u4ee5\u7406\u89e3\u73b0\u4ee3\u4ee3\u7801\u8bc4\u5ba1\u7684\u672a\u6765\u65b9\u5411\uff0c\u5e76\u63ed\u793a\u6709\u524d\u666f\u7684\u81ea\u52a8\u5316\u4ee3\u7801\u8bc4\u5ba1\u5de5\u5177\u7684\u6f5c\u529b\u3002\u5bf9\u5b9e\u8df5\u8005\u800c\u8a00\uff0c\u5173\u952e\u5728\u4e8e\u81ea\u52a8\u5316\u4ee3\u7801\u8bc4\u5ba1\u662f\u5426\u5bf9\u5f00\u53d1\u8fc7\u7a0b\u4ea7\u751f\u6b63\u9762\u5f71\u54cd\u3002\u4ece\u4e1a\u52a1\u89d2\u5ea6\u770b\uff0c\u5b9e\u65bd\u6b64\u7c7b\u5de5\u5177\u6d89\u53ca\u6210\u672c\uff0c\u5fc5\u987b\u7531\u5176\u6536\u76ca\u6765\u8bc1\u660e\u3002\u4ece\u8d28\u91cf\u4e0a\u770b\uff0c\u81ea\u52a8\u5316\u4ee3\u7801\u8bc4\u5ba1\u5e94\u589e\u5f3a\u800c\u975e\u524a\u5f31\u73b0\u6709\u4ee3\u7801\u8bc4\u5ba1\u8fc7\u7a0b\u3002\u56e0\u6b64\uff0c\u672c\u7814\u7a76\u5bf9\u5de5\u4e1a\u754c\u4e13\u4e1a\u4eba\u58eb\u4e0e\u5b66\u8005\u90fd\u662f\u52a8\u673a\u5145\u5206\u4e14\u6709\u4ef7\u503c\u7684\u8c03\u67e5\u3002<\/p>\n<p>\u6211\u4eec\u901a\u8fc7\u4ece\u9879\u76ee\u4ed3\u5e93\u4e0e\u95ee\u5377\u6536\u96c6\u6570\u636e\u6765\u56de\u7b54\u4e0b\u5217\u7814\u7a76\u95ee\u9898\uff1a<\/p>\n<p><strong>\u7814\u7a76\u95ee\u9898 1\uff1a<\/strong> \u57fa\u4e8e LLM \u7684\u81ea\u52a8\u5316\u4ee3\u7801\u8bc4\u5ba1\u5728\u8f6f\u4ef6\u5de5\u4e1a\u60c5\u5883\u4e2d\u6709\u591a\u5927\u7528\u5904\uff1f<\/p>\n<p>\u8be5\u95ee\u9898\u8bc4\u4f30\u57fa\u4e8e LLM \u7684\u81ea\u52a8\u5316\u4ee3\u7801\u8bc4\u5ba1\u5728\u8f6f\u4ef6\u5f00\u53d1\u4e2d\u7684\u6548\u7528\u3002\u5177\u4f53\u800c\u8a00\uff0c\u6211\u4eec\u60f3\u786e\u5b9a\u81ea\u52a8\u5316\u4ee3\u7801\u8bc4\u5ba1\u5de5\u5177\u751f\u6210\u7684\u8bc4\u8bba\u662f\u5426\u88ab\u6709\u6548\u7eb3\u5165\u4ee3\u7801\u3002\u8fd9\u65e2\u53d6\u51b3\u4e8e\u81ea\u52a8\u5316\u8bc4\u5ba1\u662f\u5426\u6709\u7528\uff0c\u4e5f\u53d6\u51b3\u4e8e\u5f00\u53d1\u8005\u5bf9\u5176\u7684\u63a5\u53d7\u7a0b\u5ea6\u3002<\/p>\n<p><strong>\u7814\u7a76\u95ee\u9898 2\uff1a<\/strong> \u57fa\u4e8e LLM \u7684\u81ea\u52a8\u5316\u4ee3\u7801\u8bc4\u5ba1\u5982\u4f55\u5f71\u54cd pull request \u5173\u95ed\u8fc7\u7a0b\u7684\u8282\u594f\uff1f<\/p>\n<p>\u81ea\u52a8\u5316\u7684\u4e3b\u8981\u52a8\u673a\u4e4b\u4e00\u662f\u8282\u7701\u65f6\u95f4\u3002\u901a\u8fc7\u8be5\u95ee\u9898\uff0c\u6211\u4eec\u8003\u5bdf\u57fa\u4e8e LLM \u7684\u81ea\u52a8\u5316\u4ee3\u7801\u8bc4\u5ba1\u5bf9\u5f00\u53d1\u8282\u594f\u7684\u5f71\u54cd\u3002\u5177\u4f53\u800c\u8a00\uff0c\u6211\u4eec\u60f3\u786e\u5b9a\u5f15\u5165\u81ea\u52a8\u5316\u4ee3\u7801\u8bc4\u5ba1\u662f\u5426\u4f1a\u52a0\u5feb pull request \u5173\u95ed\u3002\u901a\u8fc7\u5206\u6790\u8fd9\u4e00\u5f71\u54cd\uff0c\u6211\u4eec\u8bd5\u56fe\u7406\u89e3\u57fa\u4e8e LLM \u7684\u5de5\u5177\u662f\u5426\u6709\u52a9\u4e8e\u66f4\u9ad8\u6548\u7684\u5f00\u53d1\u5de5\u4f5c\u6d41\u3002<\/p>\n<p><strong>\u7814\u7a76\u95ee\u9898 3\uff1a<\/strong> \u5f15\u5165\u57fa\u4e8e LLM \u7684\u81ea\u52a8\u5316\u4ee3\u7801\u8bc4\u5ba1\u5982\u4f55\u5f71\u54cd\u4eba\u5de5\u4ee3\u7801\u8bc4\u5ba1\u6d3b\u52a8\u7684\u6570\u91cf\uff1f<\/p>\n<p>\u4eba\u5de5\u4ee3\u7801\u8bc4\u5ba1\u9700\u8981\u5927\u91cf\u6295\u5165\u3002\u5f15\u5165\u57fa\u4e8e LLM \u7684\u81ea\u52a8\u5316\u4ee3\u7801\u8bc4\u5ba1\u540e\uff0c\u8bc4\u4f30\u5176\u5bf9\u4eba\u5de5\u8bc4\u5ba1\u6570\u91cf\u7684\u5f71\u54cd\u81f3\u5173\u91cd\u8981\u3002\u8be5\u95ee\u9898\u65e8\u5728\u786e\u5b9a\u81ea\u52a8\u5316\u5de5\u5177\u4f1a\u5bfc\u81f4\u4eba\u5de5\u8bc4\u5ba1\u6d3b\u52a8\u589e\u52a0\u8fd8\u662f\u51cf\u5c11\u3002\u6211\u4eec\u5e0c\u671b\u7406\u89e3\u81ea\u52a8\u5316\u5982\u4f55\u5f71\u54cd\u4e0e\u4eba\u5de5\u4ee3\u7801\u8bc4\u5ba1\u76f8\u5173\u7684\u5de5\u4f5c\u91cf\u3002<\/p>\n<p><strong>\u7814\u7a76\u95ee\u9898 4\uff1a<\/strong> \u5f00\u53d1\u8005\u5982\u4f55\u770b\u5f85\u57fa\u4e8e LLM \u7684\u81ea\u52a8\u5316\u4ee3\u7801\u8bc4\u5ba1\u5de5\u5177\uff1f<\/p>\n<p>\u5f00\u53d1\u8005\u662f\u4ee3\u7801\u8bc4\u5ba1\u8fc7\u7a0b\u4e2d\u7684\u91cd\u8981\u53c2\u4e0e\u8005\u3002\u4ed6\u4eec\u5bf9\u81ea\u52a8\u5316\u4ee3\u7801\u8bc4\u5ba1\u5de5\u5177\u7684\u611f\u77e5\uff0c\u5bf9\u4e8e\u5b9e\u73b0\u9884\u671f\u6536\u76ca\u81f3\u5173\u91cd\u8981\u3002\u8be5\u95ee\u9898\u65e8\u5728\u901a\u8fc7\u4e09\u89d2\u4e92\u8bc1\u4e0d\u540c\u6570\u636e\u6765\u6e90\uff0c\u5206\u6790\u5f00\u53d1\u8005\u5982\u4f55\u770b\u5f85\u6240\u6536\u5230\u7684\u8bc4\u8bba\u4ee5\u53ca\u6574\u4e2a\u8fc7\u7a0b\u3002\u8fd9\u4e00\u7efc\u5408\u8bc4\u4f30\u5c06\u63ed\u793a\u5f00\u53d1\u8005\u5bf9\u81ea\u52a8\u5316\u53ca\u5176\u5728\u4ee3\u7801\u8bc4\u5ba1\u4e2d\u89d2\u8272\u7684\u6001\u5ea6\u3002<\/p>\n<p>\u4e3a\u5b9e\u73b0\u7814\u7a76\u76ee\u6807\u5e76\u56de\u7b54\u95ee\u9898\uff0c\u6211\u4eec\u4f7f\u7528\u4e86\u5b9a\u6027\u4e0e\u5b9a\u91cf\u6570\u636e\u3002\u5b9e\u8df5\u8005\u4e0e\u81ea\u52a8\u5316\u4ee3\u7801\u8bc4\u5ba1\u7684\u4ea4\u4e92\u662f\u7814\u7a76\u91cd\u70b9\uff0c\u56e0\u800c\u9700\u8981\u5b9a\u6027\u6570\u636e\u3002\u4e3a\u6b64\uff0c\u6211\u4eec\u8bbe\u8ba1\u4e86 pull request \u95ee\u5377\u4e0e\u603b\u4f53\u610f\u89c1\u95ee\u5377\uff0c\u5e76\u5b9e\u65bd\u4e86\u5f3a\u5236\u8bc4\u8bba\u89e3\u51b3\u7b56\u7565\uff0c\u8981\u6c42\u5f00\u53d1\u8005\u6807\u6ce8\u8bc4\u8bba\u5982\u4f55\u88ab\u5904\u7406\u3002\u5b9a\u91cf\u6570\u636e\u65b9\u9762\uff0c\u6211\u4eec\u9009\u62e9\u4ed3\u5e93\u6316\u6398\uff0c\u901a\u8fc7\u7cfb\u7edf\u8bb0\u5f55\u6570\u5b57\u6d3b\u52a8\u6765\u6d1e\u5bdf\u771f\u5b9e\u4f7f\u7528\u60c5\u51b5\u3002\u6211\u4eec\u901a\u8fc7\u5206\u6790\u5386\u53f2 commit \u6570\u636e\u3001pull request \u53ca\u76f8\u5173\u8bc4\u8bba\uff0c\u5bf9\u95ee\u5377\u4e0e\u8bc4\u8bba\u89e3\u51b3\u6807\u7b7e\u7684\u53d1\u73b0\u8fdb\u884c\u4e09\u89d2\u4e92\u8bc1\u3002\u56fe 4 \u7ed9\u51fa\u6570\u636e\u6536\u96c6\u6982\u89c8\u3002<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/youpaiyun.lingbo.online\/paper-read\/2412.18531\/fig04.png\" alt=\"\u56fe 4\uff1a\u6570\u636e\u6536\u96c6\u6982\u89c8\" \/><\/p>\n<p><strong>\u56fe 4\uff1a<\/strong> \u6570\u636e\u6536\u96c6\u6982\u89c8<\/p>\n<h3>III-C \u6765\u81ea Azure DevOps \u7684\u6570\u636e\u6536\u96c6<\/h3>\n<p>\u6211\u4eec\u4ece\u9879\u76ee\u7684\u7248\u672c\u63a7\u5236\u7cfb\u7edf\uff08Azure DevOps\uff09\u6536\u96c6\u6570\u636e\uff0c\u5305\u62ec pull request \u4fe1\u606f\u3001\u8bc4\u5ba1\u8bc4\u8bba\uff0c\u4ee5\u53ca\u9488\u5bf9 pull request \u7684 commit\u3002\u4e3a\u66f4\u597d\u5730\u7406\u89e3\u6570\u636e\u63d0\u53d6\u8fc7\u7a0b\uff0c\u6211\u4eec\u63cf\u8ff0\u56fe 4 \u4e2d\u7684\u7ec4\u6210\u90e8\u5206\u3002<\/p>\n<p><strong>1\uff09\u521d\u59cb Pull Request\uff1a<\/strong> Pull request \u662f\u5c06\u53d8\u66f4\u5f15\u5165\u4ee3\u7801\u5e93\u7684\u673a\u5236\u3002\u4e00\u65e6\u521b\u5efa pull request\uff0c\u5176\u4ed6\u5f00\u53d1\u8005\u4f1a\u83b7\u77e5\u62df\u8bae\u53d8\u66f4\u3002\u4ed6\u4eec\u6dfb\u52a0\u8bc4\u5ba1\u8bc4\u8bba\u901a\u77e5\u4f5c\u8005\uff0c\u4f5c\u8005\u5e94\u6839\u636e\u8bc4\u5ba1\u505a\u5fc5\u8981\u4fee\u6539\u3002\u5f53\u4ee3\u7801\u8fbe\u5230\u53ef\u63a5\u53d7\u8d28\u91cf\u3001\u53d8\u66f4\u5408\u5e76\u5165\u4ee3\u7801\u5e93\u540e\uff0cpull request \u88ab\u63a5\u53d7\u3002<\/p>\n<p>\u5728\u6211\u4eec\u7684\u6848\u4f8b\u4e2d\uff0cpull request \u4f5c\u8005\u4f1a\u540c\u65f6\u6536\u5230\u81ea\u52a8\u8bc4\u5ba1\u8bc4\u8bba\u4e0e\u5176\u4ed6\u8bc4\u5ba1\u8005\u7684\u8bc4\u8bba\u3002\u672c\u7814\u7a76\u8003\u8651 4,335 \u4e2a pull request\uff0c\u5176\u4e2d 1,568 \u4e2a\u662f\u5728\u91c7\u7528\u81ea\u52a8\u5316\u4ee3\u7801\u8bc4\u5ba1\u4e4b\u540e\u521b\u5efa\u7684\u3002<\/p>\n<p><strong>2\uff09Pull Request \u8bc4\u8bba\uff1a<\/strong> Pull request \u8bc4\u8bba\u662f\u4ee3\u7801\u8bc4\u5ba1\u8fc7\u7a0b\u7684\u4ea7\u7269\u3002\u4eba\u5de5\u8bc4\u5ba1\u8005\u4ee5\u8bc4\u8bba\u5f62\u5f0f\u6dfb\u52a0\u8bc4\u5ba1\u3002CodeReviewBot \u5219\u5c06\u5176\u8bc4\u5ba1\u4f5c\u4e3a\u5355\u72ec\u8bc4\u8bba\u6dfb\u52a0\u3002\u6211\u4eec\u4ece\u6570\u91cf\u4e0e\u65f6\u95f4\u3001\u7531\u8c01\u751f\u6210\uff0c\u4ee5\u53ca pull request \u4f5c\u8005\u5982\u4f55\u4ece\u4e2d\u53d7\u76ca\u7b49\u89d2\u5ea6\u5206\u6790\u8fd9\u4e9b\u8bc4\u8bba\u3002<\/p>\n<p>\u8bc4\u8bba\u7684\u5b58\u5728\u5e76\u4e0d\u610f\u5473\u7740\u5b83\u88ab\u8ba4\u771f\u5bf9\u5f85\u3002\u4e3a\u8003\u5bdf pull request \u4f5c\u8005\u662f\u5426\u4ece\u8bc4\u5ba1\u8bc4\u8bba\u4e2d\u53d7\u76ca\uff0c\u6211\u4eec\u914d\u7f6e\u4e86\u5f3a\u5236\u8bc4\u8bba\u89e3\u51b3\u7b56\u7565 [43]\u3002\u8be5\u673a\u5236\u8981\u6c42\u4f5c\u8005\u6807\u660e\u5982\u4f55\u5904\u7406 pull request \u8bc4\u8bba\u3002\u9057\u61be\u7684\u662f\uff0c\u8be5\u7b56\u7565\u662f\u5728 CodeReviewBot \u4e4b\u540e\u624d\u843d\u5730\uff0c\u56e0\u6b64\u6211\u4eec\u6ca1\u6709\u7b56\u7565\u5b9e\u65bd\u524d pull request \u7684\u540c\u7c7b\u6570\u636e\u3002\u8868 II \u7ed9\u51fa\u6bcf\u6761\u8bc4\u5ba1\u8bc4\u8bba\u7684\u72b6\u6001\u9009\u9879\u53ca\u5176\u6309\u8bc4\u8bba\u89e3\u51b3\u7b56\u7565\u7684\u8bf4\u660e\u3002<\/p>\n<p><strong>\u8868 II\uff1a<\/strong> Azure DevOps \u4e2d\u7684\u8bc4\u8bba\u89e3\u51b3\u7b56\u7565<\/p>\n<table>\n<thead>\n<tr>\n<th>\u72b6\u6001<\/th>\n<th>\u8bf4\u660e<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Active<\/td>\n<td>\u65b0\u8bc4\u8bba\u7684\u9ed8\u8ba4\u72b6\u6001\u3002<\/td>\n<\/tr>\n<tr>\n<td>Pending<\/td>\n<td>\u5bf9\u5e94\u8bc4\u8bba\u6b63\u5728\u5206\u6790\u4e2d\uff0c\u6216\u5728\u7b49\u5f85\u5176\u4ed6\u4e8b\u9879\u3002<\/td>\n<\/tr>\n<tr>\n<td>Resolved<\/td>\n<td>\u5bf9\u5e94\u8bc4\u8bba\u6210\u529f\uff0c\u5176\u5efa\u8bae\u5df2\u88ab\u843d\u5b9e\u3002<\/td>\n<\/tr>\n<tr>\n<td>Won't fix<\/td>\n<td>\u5bf9\u5e94\u8bc4\u8bba\u6709\u8bef\uff0c\u6216\u65e0\u6cd5\u843d\u5b9e\u3002<\/td>\n<\/tr>\n<tr>\n<td>Closed<\/td>\n<td>\u5bf9\u5e94\u8bc4\u8bba\u56e0 \u201cWon't Fix\u201d \u4ee5\u5916\u7684\u5176\u4ed6\u539f\u56e0\u672a\u88ab\u843d\u5b9e\u3002<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><strong>3\uff09\u5df2\u5173\u95ed\u7684 Pull Request\uff1a<\/strong> \u521d\u59cb pull request \u4e2d\u63d0\u51fa\u7684\u4ee3\u7801\u53d8\u66f4\u53ef\u80fd\u968f\u8bc4\u5ba1\u8bc4\u8bba\u800c\u6539\u53d8\u3002\u82e5\u8bc4\u5ba1\u6307\u51fa\u4e86\u95ee\u9898\uff0c\u8fd9\u662f\u9884\u671f\u4e8b\u4ef6\u3002\u4ee3\u7801\u53d8\u66f4\u4f53\u73b0\u4e3a\u989d\u5916 commit\u3002Pull request \u88ab\u63a5\u53d7\u6216\u62d2\u7edd\u3002\u500d\u79d1\u7684\u5b9e\u8df5\u8005\u5e76\u4e0d\u628a\u62d2\u7edd\u5f53\u4f5c\u8d28\u91cf\u4fdd\u8bc1\u673a\u5236\uff0c\u800c\u662f\u5728\u53d8\u66f4\u88ab\u8ba4\u4e3a\u4e0d\u5fc5\u8981\u6216\u4e0d\u5408\u65f6\u5b9c\u65f6\u4f7f\u7528\u62d2\u7edd\u3002\u56e0\u6b64\uff0c\u6211\u4eec\u672a\u5c06\u63a5\u53d7\u89c6\u4e3a\u8d28\u91cf\u6307\u6807\uff0c\u800c\u5c06\u5176\u4f5c\u4e3a\u5206\u7c7b\u6570\u636e\u3002<\/p>\n<p><strong>4\uff09\u6570\u636e\u63d0\u53d6\u4e0e\u5206\u6790\uff1a<\/strong> \u6570\u636e\u5206\u6790\u4ece\u4f7f\u7528 API \u4ece Azure DevOps \u670d\u52a1\u5668\u63d0\u53d6\u539f\u59cb\u6570\u636e\u5f00\u59cb\u3002\u6211\u4eec\u5efa\u7acb\u4e86\u6570\u636e\u6a21\u5f0f\uff0c\u4ee5\u4fbf\u5728\u5173\u7cfb\u6570\u636e\u5e93\u4e2d\u5b58\u50a8\u9879\u76ee\u3001\u4ed3\u5e93\u3001commit\u3001pull request \u4e0e pull request \u8bc4\u8bba\u7684\u4fe1\u606f\uff0c\u5e76\u7528\u8be5\u6a21\u5f0f\u5b58\u50a8 API \u54cd\u5e94\u3002<\/p>\n<p>\u4e0b\u4e00\u6b65\u662f\u9884\u5904\u7406\u6570\u636e\u4ee5\u786e\u4fdd\u5b8c\u6574\u6027\u4e0e\u51c6\u786e\u6027\u3002\u9996\u5148\uff0c\u6211\u4eec\u5c06\u8868\u8f6c\u6362\u4e3a CSV\uff0c\u4f7f\u7528 pandas \u5e93<a href=\"https:\/\/pandas.pydata.org\/pandas-docs\/stable\/index.html\" target=\"_blank\"  rel=\"nofollow\" >^4<\/a> \u4e0a\u4f20\u6570\u636e\uff0c\u5e76\u7f16\u5199\u811a\u672c\u63d0\u53d6\u76f8\u5173\u6307\u6807\u3002\u6211\u4eec\u53d1\u73b0\u7684\u7b2c\u4e00\u4e2a\u95ee\u9898\u662f Active \u8bc4\u8bba\u6570\u91cf\u5f88\u9ad8\uff0c\u8fd9\u672c\u4e0d\u5e94\u51fa\u73b0\u5728\u8bc4\u8bba\u89e3\u51b3\u7b56\u7565\u4e4b\u4e0b\u3002\u6211\u4eec\u4eba\u5de5\u68c0\u67e5 pull request\uff0c\u89c2\u5bdf\u5230\u6709\u4e9b pull request \u5728 CodeReviewBot \u80fd\u591f\u8bc4\u8bba\u4e4b\u524d\u5c31\u5df2\u5173\u95ed\u3002\u5de5\u5177\u521b\u5efa\u7684\u8bc4\u8bba\u5728 pull request \u5173\u95ed\u4e4b\u540e\u624d\u5230\u8fbe\uff0c\u56e0\u800c\u65e0\u9700\u88ab\u89e3\u51b3\u3002\u6211\u4eec\u5ba1\u89c6\u4e86\u5408\u5e76 PR \u6240\u9700\u65f6\u95f4\uff0c\u5e76\u7528\u8098\u90e8\u6cd5\u5219\u786e\u5b9a\u4e86\u4e00\u4e2a\u8986\u76d6 93% PR \u7684\u9608\u503c\uff0c\u7136\u540e\u5c06\u6b64\u8fc7\u6ee4\u5e94\u7528\u5230\u5168\u90e8\u5386\u53f2\u4ee5\u4fbf\u516c\u5e73\u8bc4\u4f30\u3002\u6700\u540e\uff0c\u6211\u4eec\u4eba\u5de5\u5254\u9664\u5269\u4f59 7%\uff0c\u4ee5\u6d88\u9664\u5168\u90e8\u5f02\u5e38\u503c\u3002<\/p>\n<p>\u7b2c\u4e8c\u4e2a\u95ee\u9898\u662f\u90e8\u5206\u5f00\u53d1\u8005\u7684\u8bc4\u8bba\u6570\u5f02\u5e38\u9ad8\u3002\u4e24\u540d\u5f00\u53d1\u8005\u7684\u8bc4\u8bba\u6570\u4e0d\u5408\u7406\u5730\u9ad8\u4e8e\u5176\u4ed6\u4eba\u3002\u6211\u4eec\u68c0\u67e5\u5176\u8bc4\u8bba\u540e\u53d1\u73b0\uff0c\u4ed6\u4eec\u7684 Azure DevOps \u8d26\u53f7\u88ab\u7528\u4e8e\u4e0d\u540c\u7684\u8f6f\u4ef6\u673a\u5668\u4eba\uff0c\u4f8b\u5982 SonarQube<a href=\"https:\/\/www.sonarsource.com\/products\/sonarqube\/\" target=\"_blank\"  rel=\"nofollow\" >^5<\/a>\u3002\u6211\u4eec\u4e5f\u4ece\u7814\u7a76\u4e2d\u6392\u9664\u4e86\u8fd9\u4e9b\u8d26\u53f7\u3002<\/p>\n<p>\u6700\u540e\uff0c\u6211\u4eec\u89c2\u5bdf\u5230\u8bb8\u591a\u8bc4\u8bba\u56e0\u88ab\u5220\u9664\u3001\u6216\u5305\u542b CodeReviewBot \u751f\u6210\u7684 pull request \u63cf\u8ff0\u800c\u5e26\u6709\u672a\u77e5\u7684\u8bc4\u8bba\u89e3\u51b3\u6807\u7b7e\u3002\u5bf9\u6b64\uff0c\u6211\u4eec\u6392\u9664\u4e86\u8fd9\u7c7b\u8bc4\u8bba\u3002\u6b64\u5916\uff0c\u8bc4\u8bba\u89e3\u51b3\u7b56\u7565\u4ec5\u5728 pull request \u9762\u5411\u4ed3\u5e93\u4e3b\u5206\u652f\u65f6\u751f\u6548\uff0c\u56e0\u6b64\u6211\u4eec\u6392\u9664\u4e86\u9762\u5411\u4e3b\u5206\u652f\u4ee5\u5916\u5176\u4ed6\u5206\u652f\u7684 pull request\u3002\u6570\u636e\u6e05\u6d17\u8fc7\u7a0b\u5305\u542b\u975e\u5b9e\u8df5\u8005\u4f5c\u8005\u4e0e\u500d\u79d1\u53c2\u4e0e\u8005\u7684\u591a\u6b21\u534f\u4f5c\u4f1a\u8bae\uff0c\u4e4b\u540e\u6211\u4eec\u786e\u8ba4\u6570\u636e\u96c6\u6ca1\u6709\u635f\u574f\u3002\u6700\u7ec8\uff0c\u6211\u4eec\u5206\u6790\u4e86 4,335 \u4e2a pull request\uff0c\u5176\u4e2d 1,568 \u4e2a\u63a5\u53d7\u4e86\u81ea\u52a8\u5316\u8bc4\u5ba1\u3002<\/p>\n<h3>III-D \u6765\u81ea\u95ee\u5377\u7684\u6570\u636e\u6536\u96c6<\/h3>\n<p><strong>1\uff09\u4ee3\u7801\u8bc4\u5ba1\u95ee\u5377\uff1a<\/strong> \u5bf9\u6bcf\u4e2a pull request\uff0c\u4f5c\u8005\u88ab\u8981\u6c42\u4e3a\u81ea\u52a8\u5316\u8bc4\u5ba1\u8bc4\u8bba\u6253 0 \u5230 5 \u5206\uff0c\u5e76\u6536\u5230\u4e00\u4efd\u542b\u4e09\u4e2a\u95ee\u9898\u7684\u95ee\u5377\u3002\u8fd9\u4e9b\u95ee\u5377\u662f\u6211\u4eec\u7684\u7b2c\u4e8c\u6570\u636e\u6e90\u3002\u524d\u4e24\u4e2a\u95ee\u9898\u4e3a 1 \u5230 5 \u5206\u91cf\u8868\uff0c\u6700\u540e\u4e00\u4e2a\u4e3a\u5f00\u653e\u9898\u3002\u4ee3\u7801\u8bc4\u5ba1\u95ee\u5377\u9898\u76ee\u6536\u5f55\u4e8e\u590d\u73b0\u5305\u4e2d\u3002<\/p>\n<p><strong>2\uff09\u603b\u4f53\u610f\u89c1\u95ee\u5377\uff1a<\/strong> \u6211\u4eec\u5236\u4f5c\u4e86\u603b\u4f53\u610f\u89c1\u95ee\u5377\uff0c\u5e76\u6536\u5230\u5bf9\u672c\u7814\u7a76\u6240\u6d89\u4e09\u4e2a\u9879\u76ee\u6709\u8d21\u732e\u7684 22 \u540d\u5f00\u53d1\u8005\u7684\u56de\u590d\u3002\u8fd9\u4e9b\u5b9e\u8df5\u8005\u7684\u4ece\u4e1a\u5e74\u9650\u4e0e\u5728\u7ec4\u7ec7\u4e2d\u7684\u804c\u4f4d\u5404\u4e0d\u76f8\u540c\u3002\u8868 III \u7ed9\u51fa\u53c2\u4e0e\u8005\u4fe1\u606f\u3002\u95ee\u5377\u805a\u7126\u81ea\u52a8\u5316\u4ee3\u7801\u8bc4\u5ba1\u5bf9\u5f00\u53d1\u8005\u7684\u5f71\u54cd\u53ca\u5176\u770b\u6cd5\u3002\u603b\u4f53\u610f\u89c1\u95ee\u5377\u9898\u76ee\u4ea6\u6536\u5f55\u4e8e\u590d\u73b0\u5305\u4e2d\u3002<\/p>\n<p><strong>\u8868 III\uff1a<\/strong> \u95ee\u5377\u53c2\u4e0e\u8005<\/p>\n<table>\n<thead>\n<tr>\n<th>\u8f6f\u4ef6\u5f00\u53d1\u7ecf\u9a8c<\/th>\n<th>\u53c2\u4e0e\u4eba\u6570<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>0\u20132<\/td>\n<td>4<\/td>\n<\/tr>\n<tr>\n<td>2\u20135<\/td>\n<td>9<\/td>\n<\/tr>\n<tr>\n<td>5\u201310<\/td>\n<td>6<\/td>\n<\/tr>\n<tr>\n<td>10+<\/td>\n<td>3<\/td>\n<\/tr>\n<tr>\n<td><strong>\u5728\u500d\u79d1\u7684\u804c\u4f4d<\/strong><\/td>\n<td><strong>\u53c2\u4e0e\u4eba\u6570<\/strong><\/td>\n<\/tr>\n<tr>\n<td>\u4e2a\u4eba\u8d21\u732e\u8005<\/td>\n<td>16<\/td>\n<\/tr>\n<tr>\n<td>\u4e3b\u7ba1\/\u7ecf\u7406<\/td>\n<td>6<\/td>\n<\/tr>\n<tr>\n<td><strong>\u5b9e\u8df5\u8005\u5408\u8ba1<\/strong><\/td>\n<td><strong>22<\/strong><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3>III-E \u7814\u7a76\u95ee\u9898\u7684\u5206\u6790\u65b9\u6cd5<\/h3>\n<p>\u7531\u4e8e\u7814\u7a76\u95ee\u9898\u5177\u6709\u591a\u4e2a\u65b9\u9762\uff0c\u6211\u4eec\u4f9d\u8d56\u591a\u4e2a\u6570\u636e\u6e90\u7684\u53d1\u73b0\u3002\u6211\u4eec\u4f7f\u7528\u8bc4\u5ba1\u8bc4\u8bba\u6807\u7b7e\u3001\u8bc4\u5ba1\u4e4b\u540e\u9488\u5bf9 pull request \u7684 commit\uff0c\u4ee5\u53ca\u603b\u4f53\u610f\u89c1\u95ee\u5377\u7b54\u6848\uff0c\u4e3a\u7b2c\u4e00\u4e2a\u7814\u7a76\u95ee\u9898\u5efa\u7acb\u591a\u65b9\u9762\u8bc4\u4f30\u3002\u6211\u4eec\u4ece Azure DevOps \u63d0\u53d6 pull request \u5173\u95ed\u65f6\u957f\u4ee5\u56de\u7b54\u7b2c\u4e8c\u4e2a\u7814\u7a76\u95ee\u9898\u3002\u5728\u603b\u4f53\u610f\u89c1\u95ee\u5377\u4e2d\uff0c\u6211\u4eec\u8be2\u95ee\u5b9e\u8df5\u8005\u81ea\u52a8\u5316\u4ee3\u7801\u8bc4\u5ba1\u662f\u5426\u5f71\u54cd\u4e86\u5f00\u53d1\u8282\u594f\u3002<\/p>\n<p>\u5bf9\u7b2c\u4e09\u4e2a\u7814\u7a76\u95ee\u9898\uff0c\u6211\u4eec\u4ece Azure DevOps \u63d0\u53d6\u4eba\u5de5\u4ee3\u7801\u8bc4\u5ba1\u6570\u91cf\uff0c\u5e76\u5728\u95ee\u5377\u4e2d\u8be2\u95ee\u5f00\u53d1\u8005\u662f\u5426\u80fd\u624b\u52a8\u5199\u51fa\u540c\u6837\u7684\u8bc4\u8bba\u3002\u6700\u540e\u4e00\u4e2a\u7814\u7a76\u95ee\u9898\u56f4\u7ed5\u5f00\u53d1\u8005\u4e0e pull request \u95ee\u5377\u3002\u6211\u4eec\u7684\u6570\u636e\u5206\u6790\u811a\u672c\u3001\u95ee\u5377\u9898\u76ee\u4e0e\u7ed3\u679c\u5df2\u5728\u590d\u73b0\u5305\u4e2d\u5171\u4eab<a href=\"https:\/\/doi.org\/10.5281\/zenodo.13917481\" target=\"_blank\"  rel=\"nofollow\" >^6<\/a>\u3002<\/p>\n<h2>IV \u7ed3\u679c<\/h2>\n<h3>IV-A \u4ee3\u7801\u8bc4\u5ba1\u95ee\u5377<\/h3>\n<p>\u7814\u7a76\u671f\u95f4\uff0c\u6211\u4eec\u6536\u96c6\u4e86 38 \u4e2a\u63a5\u53d7\u81ea\u52a8\u5316\u4ee3\u7801\u8bc4\u5ba1\u7684 pull request \u7684\u8bc4\u5206\u3002Pull request \u4f5c\u8005\u8fd8\u88ab\u8981\u6c42\u586b\u5199\u5305\u542b\u4e24\u9053\u9009\u62e9\u9898\u4e0e\u4e00\u9053\u5f00\u653e\u9898\u7684\u95ee\u5377\uff0c\u6709 10 \u4eba\u5b8c\u6210\u3002<\/p>\n<p>\u81ea\u52a8\u5316\u8bc4\u5ba1\u8bc4\u8bba\u7684\u5e73\u5747\u8bc4\u5206\u4e3a 3.46\uff0c\u6807\u51c6\u5dee\u4e3a 1.79\u3002\u56fe 5 \u7ed9\u51fa\u4e0d\u540c\u9879\u76ee\u53ca\u603b\u4f53\u8bc4\u5206\u3002\u9879\u76ee\u4e4b\u95f4\u8bc4\u5206\u5dee\u5f02\u76f8\u5f53\u5927\uff1aProject #1\u3001#2\u3001#3 \u7684\u5e73\u5747\u5206\u5206\u522b\u4e3a 4.04\u30012.72 \u548c 3.00\u3002\u8fd9\u53ef\u80fd\u8868\u660e\u4e0d\u540c\u9879\u76ee\u6761\u4ef6\u4e0b\u8bc4\u5ba1\u8d28\u91cf\u5b58\u5728\u5dee\u5f02\uff0c\u4e5f\u53ef\u80fd\u6e90\u4e8e\u4e0d\u540c\u9879\u76ee\u5f00\u53d1\u8005\u4e4b\u95f4\u7684\u5dee\u5f02\u3002<\/p>\n<p>\u6211\u4eec\u53d1\u7ed9\u4f5c\u8005\u7684\u95ee\u5377\u5305\u542b\u4e09\u4e2a\u95ee\u9898\u3002\u524d\u4e24\u4e2a\u95ee\u9898\u5206\u522b\u5173\u4e8e\u4f5c\u8005\u662f\u5426\u8ba4\u540c\u8fd9\u4e9b\u8bc4\u5ba1\uff0c\u4ee5\u53ca\u4ed6\u4eec\u8ba4\u4e3a\u8bc4\u5ba1\u8bc4\u8bba\u7684\u5448\u73b0\u5982\u4f55\u3002\u7b2c\u4e09\u4e2a\u95ee\u9898\u4e3a\u5f00\u653e\u9898\uff0c\u5f81\u6c42\u989d\u5916\u53cd\u9988\u3002<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/youpaiyun.lingbo.online\/paper-read\/2412.18531\/fig05.png\" alt=\"\u56fe 5\uff1a\u4ee3\u7801\u8bc4\u5ba1\u95ee\u5377\u4e2d\u7684\u81ea\u52a8\u5316\u4ee3\u7801\u8bc4\u5ba1\u8bc4\u5206\" \/><\/p>\n<p><strong>\u56fe 5\uff1a<\/strong> \u4ee3\u7801\u8bc4\u5ba1\u95ee\u5377\u4e2d\u7684\u81ea\u52a8\u5316\u4ee3\u7801\u8bc4\u5ba1\u8bc4\u5206<\/p>\n<p>\u9057\u61be\u7684\u662f\uff0c\u7b2c\u4e09\u4e2a\u95ee\u9898\u6536\u5230\u7684\u56de\u7b54\u4e0d\u591a\u3002\u591a\u6570\u56de\u7b54\u662f \u201cGreat.\u201d \u4e00\u7c7b\u7b80\u77ed\u8bc4\u8bed\u300210 \u540d\u5b9e\u8df5\u8005\u56de\u7b54\u4e86\u524d\u4e24\u4e2a\u95ee\u9898\uff0c\u6211\u4eec\u5728\u56fe 6 \u4e2d\u62a5\u544a\u3002\u5f53\u88ab\u95ee\u53ca\u8bc4\u8bba\u6709\u591a\u300c\u53ef\u8ba4\u540c\u300d\u65f6\uff0c8 \u4eba\u7b54 \u201c5\u201d\uff1b\u5f53\u88ab\u95ee\u53ca\u8bc4\u8bba\u5448\u73b0\u5f97\u6709\u591a\u597d\u65f6\uff0c9 \u4eba\u7b54 \u201c5\u201d\u3002\u6709 1 \u4eba\u5bf9\u4e24\u4e2a\u95ee\u9898\u90fd\u7b54 \u201c1\u201d\u3002\u8bc4\u5206\u6570\u91cf\u4e0e\u95ee\u5377\u56de\u590d\u6570\u91cf\u5b58\u5728\u5dee\u5f02\u3002\u7531\u4e8e\u95ee\u5377\u9700\u8981\u989d\u5916\u6295\u5165\uff0c\u4e0d\u6ee1\u610f\u7684\u5f00\u53d1\u8005\u53ef\u80fd\u66f4\u7f3a\u4e4f\u52a8\u529b\u53bb\u5b8c\u6210\u95ee\u5377\u3002\u603b\u4f53\u800c\u8a00\uff0c\u8bc4\u5206\u4e0e pull request \u95ee\u5377\u8868\u660e\u5f00\u53d1\u8005\u8ba4\u4e3a\u8bc4\u8bba\u53ef\u8ba4\u540c\u4e14\u5448\u73b0\u826f\u597d\u3002<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/youpaiyun.lingbo.online\/paper-read\/2412.18531\/fig06.png\" alt=\"\u56fe 6\uff1a\u4ee3\u7801\u8bc4\u5ba1\u95ee\u5377\" \/><\/p>\n<p><strong>\u56fe 6\uff1a<\/strong> \u4ee3\u7801\u8bc4\u5ba1\u95ee\u5377<\/p>\n<h3>IV-B \u603b\u4f53\u610f\u89c1\u95ee\u5377<\/h3>\n<p>\u6211\u4eec\u5411\u53c2\u4e0e\u8fd9\u4e9b\u9879\u76ee\u7684\u5f00\u53d1\u8005\u53d1\u9001\u4e86\u542b 8 \u4e2a\u95ee\u9898\u7684\u95ee\u5377\u3002\u6536\u5230 23 \u4efd\u56de\u590d\uff0c\u5176\u4e2d 22 \u540d\u53d7\u8bbf\u8005\u540c\u610f\u5c06\u5176\u7eb3\u5165\u53d1\u8868\u7ed3\u679c\u3002\u8be5\u95ee\u5377\u65e8\u5728\u6536\u96c6\u5f00\u53d1\u8005\u7684\u603b\u4f53\u770b\u6cd5\u3002<\/p>\n<p>\u95ee\u5377\u5305\u542b 6 \u9053\u9009\u62e9\u9898\u4e0e 2 \u9053\u5f00\u653e\u9898\u3002\u56fe 7 \u4e0e\u56fe 8 \u7ed9\u51fa\u7ed3\u679c\u3002\u7b2c\u4e00\u4e2a\u95ee\u9898\u9488\u5bf9\u81ea\u52a8\u5316\u4ee3\u7801\u8bc4\u5ba1\u5bf9\u5f00\u53d1\u901f\u5ea6\u7684\u5f71\u54cd\u30028 \u540d\u5f00\u53d1\u8005\u8ba4\u4e3a\u81ea\u52a8\u5316\u4ee3\u7801\u8bc4\u5ba1\u4f7f\u5f00\u53d1\u8282\u594f\u6709\u8f7b\u5fae\u6539\u5584\uff0c4 \u4eba\u8ba4\u4e3a\u6ca1\u6709\u5f71\u54cd\uff0c3 \u4eba\u8ba4\u4e3a\u6709\u8f7b\u5fae\u6076\u5316\uff0c2 \u4eba\u8ba4\u4e3a\u6709\u91cd\u5927\u6539\u5584\u3002<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/youpaiyun.lingbo.online\/paper-read\/2412.18531\/fig07.png\" alt=\"\u56fe 7\uff1a\u603b\u4f53\u610f\u89c1\u95ee\u5377\u56de\u590d\uff08\u95ee\u9898 1\u20133\uff09\" \/><\/p>\n<p><strong>\u56fe 7\uff1a<\/strong> \u603b\u4f53\u610f\u89c1\u95ee\u5377\u56de\u590d\uff08\u95ee\u9898 1\u20133\uff09<\/p>\n<p>\u7b2c\u4e8c\u4e2a\u95ee\u9898\u805a\u7126\u77e5\u8bc6\u5171\u4eab\u30029 \u540d\u5b9e\u8df5\u8005\u8ba4\u4e3a\u5bf9\u5f00\u53d1\u8005\u4e4b\u95f4\u7684\u77e5\u8bc6\u5171\u4eab\u6ca1\u6709\u5f71\u54cd\uff0c\u540c\u65f6\u6709 8 \u540d\u5f00\u53d1\u8005\u8ba4\u4e3a\u6709\u6b63\u9762\u5f71\u54cd\u3002\u7b2c\u4e09\u4e2a\u95ee\u9898\u63a2\u8ba8\u4ee3\u7801\u8d28\u91cf\uff0c\u591a\u6570\u53d7\u8bbf\u8005\uff0814 \u4eba\uff09\u8ba4\u4e3a\u81ea\u52a8\u5316\u4ee3\u7801\u8bc4\u5ba1\u5bf9\u6574\u4f53\u4ee3\u7801\u8d28\u91cf\u6709\u8f7b\u5fae\u6539\u5584\u3002<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/youpaiyun.lingbo.online\/paper-read\/2412.18531\/fig08.png\" alt=\"\u56fe 8\uff1a\u603b\u4f53\u610f\u89c1\u95ee\u5377\u56de\u590d\uff08\u95ee\u9898 4\u20136\uff09\" \/><\/p>\n<p><strong>\u56fe 8\uff1a<\/strong> \u603b\u4f53\u610f\u89c1\u95ee\u5377\u56de\u590d\uff08\u95ee\u9898 4\u20136\uff09<\/p>\n<p>\u7b2c\u56db\u4e2a\u95ee\u9898\u8003\u5bdf\u81ea\u52a8\u5316\u4ee3\u7801\u8bc4\u5ba1\u751f\u6210\u7684\u8bc4\u8bba\u4e0e pull request \u7684\u76f8\u5173\u7a0b\u5ea6\u30029 \u540d\u53d7\u8bbf\u8005\u5c06\u76f8\u5173\u5ea6\u8bc4\u4e3a \u201c4\u201d\uff0c7 \u4eba\u8bc4\u4e3a \u201c3\u201d\uff0c\u8868\u660e\u591a\u6570\u5b9e\u8df5\u8005\u8ba4\u4e3a\u81ea\u52a8\u5316\u8bc4\u8bba\u4e0e pull request \u76f8\u5173\u3002<\/p>\n<p>\u7b2c\u4e94\u4e2a\u95ee\u9898\u8be2\u95ee\u5f00\u53d1\u8005\u80fd\u5426\u624b\u52a8\u8bc6\u522b\u81ea\u52a8\u5316\u4ee3\u7801\u8bc4\u5ba1\u6240\u6307\u51fa\u7684\u95ee\u9898\uff1a\u201c1\u201d \u8868\u793a\u5b8c\u5168\u65e0\u6cd5\u624b\u52a8\u8bc6\u522b\uff0c\u201c5\u201d \u8868\u793a\u80fd\u591f\u8bc6\u522b\u5168\u90e8\u300210 \u540d\u53d7\u8bbf\u8005\u8bc4 \u201c3\u201d\uff0c6 \u4eba\u8bc4 \u201c2\u201d\u3002<\/p>\n<p>\u7b2c\u516d\u4e2a\u95ee\u9898\u9488\u5bf9\u81ea\u52a8\u5316\u8bc4\u5ba1\u6240\u5f3a\u8c03\u95ee\u9898\u7684\u91cd\u8981\u6027\u30028 \u4eba\u8bc4 \u201c3\u201d\uff0c6 \u4eba\u8bc4 \u201c2\u201d\u3002\u8bc4\u5206\u7684\u5206\u6563\u8868\u660e\u5b9e\u8df5\u8005\u770b\u6cd5\u4e0d\u4e00\u3002<\/p>\n<h3>IV-C Azure DevOps \u6570\u636e\u5206\u6790<\/h3>\n<h4>IV-C 1 \u8bc4\u8bba\u6807\u7b7e<\/h4>\n<p>\u5206\u6790\u4e2d\u6211\u4eec\u63d0\u53d6\u4e86 CodeReviewBot \u7684 4,408 \u6761\u8bc4\u8bba\u3002\u7531\u4e8e\u8bc4\u8bba\u89e3\u51b3\u7b56\u7565\u662f\u5728 CodeReviewBot \u4e4b\u540e\u624d\u5f3a\u5236\u6267\u884c\uff0c\u6211\u4eec\u8fc7\u6ee4\u4e86\u7b56\u7565\u5f15\u5165\u4e4b\u524d\u7684\u8bc4\u8bba\u4ee5\u53ca\u5f53\u524d\u4ecd\u4e3a Active \u6216 Pending \u7684\u8bc4\u8bba\u3002\u8fc7\u6ee4\u540e\uff0c\u6211\u4eec\u8003\u5bdf\u4e86\u5df2\u5408\u5e76 pull request \u4e0a\u7684 1,408 \u6761 CodeReviewBot \u8bc4\u8bba\u3002\u5404\u9879\u76ee\u7684\u8bc4\u8bba\u72b6\u6001\u89c1\u56fe 9\u300273.8% \u7684\u8bc4\u8bba\u88ab\u6807\u8bb0\u4e3a \u201cResolved\u201d\uff0c21.3% \u88ab\u6807\u8bb0\u4e3a \u201cWon't Fix\u201d\u3002\u8de8\u9879\u76ee\u6bd4\u8f83\u65f6\uff0cProject #1 \u4e0e Project #3 \u5dee\u5f02\u663e\u8457\uff0c\u5206\u522b\u6709 55% \u4e0e 90% \u7684\u8bc4\u8bba\u88ab\u6807\u8bb0\u4e3a \u201cResolved\u201d\u3002<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/youpaiyun.lingbo.online\/paper-read\/2412.18531\/fig09.png\" alt=\"\u56fe 9\uff1a\u5df2\u5408\u5e76 PR \u4e0a\u7684\u8bc4\u8bba\u6807\u7b7e\" \/><\/p>\n<p><strong>\u56fe 9\uff1a<\/strong> \u5df2\u5408\u5e76 PR \u4e0a\u7684\u8bc4\u8bba\u6807\u7b7e<\/p>\n<blockquote>\n<p><strong>RQ1\uff1a\u57fa\u4e8e LLM \u7684\u81ea\u52a8\u5316\u4ee3\u7801\u8bc4\u5ba1\u5728\u8f6f\u4ef6\u5de5\u4e1a\u60c5\u5883\u4e2d\u6709\u591a\u5927\u7528\u5904\uff1f<\/strong><\/p>\n<p>\u6211\u4eec\u7684\u5206\u6790\u663e\u793a\uff0c\u5f00\u53d1\u8005\u63a5\u53d7\u5e76\u843d\u5b9e\u4e86 CodeReviewBot \u6240\u5efa\u8bae\u8bc4\u8bba\u4e2d\u7684 73.8%\uff0c\u51f8\u663e\u4e86\u8be5\u673a\u5668\u4eba\u5bf9\u4ee3\u7801\u8bc4\u5ba1\u8fc7\u7a0b\u7684\u663e\u8457\u5f71\u54cd\u3002\u6b64\u5916\uff0c\u5728\u4eba\u5de5\u8bc4\u5ba1\u8005\u8bc4\u8bba\u4e4b\u524d\uff0c\u6709 88 \u6b21 commit \u662f\u5728 CodeReviewBot \u4e4b\u540e\u505a\u51fa\u7684\uff0c\u8868\u660e\u5b58\u5728\u57fa\u4e8e\u673a\u5668\u4eba\u5efa\u8bae\u7684\u4e3b\u52a8\u53d8\u66f4\u3002\u591a\u6570\u95ee\u5377\u53d7\u8bbf\u8005\u4e5f\u8ba4\u4e3a\u4f7f\u7528 CodeReviewBot \u540e\u4ee3\u7801\u8d28\u91cf\u6709\u6240\u6539\u5584\u3002\u56e0\u6b64\uff0c\u6211\u4eec\u5f97\u51fa\u7ed3\u8bba\uff1a\u5728\u8be5\u516c\u53f8\u60c5\u5883\u4e2d\uff0c\u57fa\u4e8e LLM \u7684\u81ea\u52a8\u5316\u4ee3\u7801\u8bc4\u5ba1\u975e\u5e38\u6709\u7528\u3002<\/p>\n<\/blockquote>\n<h4>IV-C 2 Pull Request \u4e0a\u7684 Commit<\/h4>\n<p>\u4f5c\u4e3a\u4ee3\u7801\u8bc4\u5ba1\u8fc7\u7a0b\u6240\u5f15\u8d77\u53d8\u66f4\u7684\u5ea6\u91cf\uff0cpull request \u5728\u6536\u5230\u8bc4\u8bba\u540e\u4f1a\u83b7\u5f97 commit\u3002\u6211\u4eec\u5206\u6790\u4e86 CodeReviewBot \u843d\u5730\u4e4b\u540e\u8fd9\u4e9b pull request \u4e0a\u7684 commit\uff0c\u7ed3\u679c\u89c1\u56fe 10\u3002\u5728 CodeReviewBot \u8bc4\u8bba\u4e4b\u540e\u3001\u4eba\u5de5\u8bc4\u8bba\u4e4b\u524d\uff0cpull request \u6536\u5230 88 \u6b21 commit\u3002\u4eba\u5de5\u8bc4\u5ba1\u8005\u8bc4\u8bba\u4e4b\u540e\uff0cpull request \u6536\u5230 69 \u6b21 commit\u3002\u9700\u8981\u6307\u51fa\uff0c\u4f5c\u8005\u4e5f\u53ef\u80fd\u5728\u4eba\u5de5\u8bc4\u5ba1\u8005\u8bc4\u8bba\u4e4b\u540e\u624d\u6839\u636e CodeReviewBot \u7684\u8bc4\u8bba\u91c7\u53d6\u884c\u52a8\u3002\u53cd\u4e4b\uff0c\u6709\u4e9b pull request \u53ef\u80fd\u4ee5\u8349\u7a3f\u6253\u5f00\uff0c\u968f\u540e\u518d\u8ffd\u52a0\u65b0 commit\u3002CodeReviewBot \u4e4b\u540e\u7684 commit \u6570\u91cf\u4e0e\u5e26 \u201cResolved\u201d \u6807\u7b7e\u7684\u8bc4\u8bba\u6570\u91cf\u4e4b\u95f4\u5b58\u5728\u5dee\u5f02\u662f\u9884\u671f\u7684\u3002\u7531\u4e8e pull request \u4f1a\u6536\u5230\u4e0d\u6b62\u4e00\u6761\u8bc4\u8bba\uff0c\u800c commit \u662f\u9488\u5bf9\u6574\u4e2a pull request \u505a\u51fa\u7684\uff0c\u201cResolved\u201d \u6807\u7b7e\u7684\u8bc4\u8bba\u5e94\u591a\u4e8e commit\u3002\u7136\u800c\uff0c\u5f00\u53d1\u8005\u4e5f\u53ef\u80fd\u65e0\u89c6\u9884\u671f\u7684\u6807\u7b7e\u7b56\u7565\uff0c\u7528 \u201cResolved\u201d \u4ee3\u66ff \u201cClosed\u201d \u6216 \u201cWon't Fix\u201d\u3002\u201cClosed\u201d \u6307\u8bc4\u8bba\u672c\u8eab\u5e76\u975e\u9519\u8bef\uff0c\u4f46\u56e0\u5176\u4ed6\u539f\u56e0\u672a\u88ab\u843d\u5b9e\u3002<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/youpaiyun.lingbo.online\/paper-read\/2412.18531\/fig10.png\" alt=\"\u56fe 10\uff1a\u4ee3\u7801\u8bc4\u5ba1\u4e4b\u540e\u7684 Commit\" \/><\/p>\n<p><strong>\u56fe 10\uff1a<\/strong> \u4ee3\u7801\u8bc4\u5ba1\u4e4b\u540e\u7684 Commit<\/p>\n<h4>IV-C 3 Pull Request \u5173\u95ed\u65f6\u957f<\/h4>\n<p>\u603b\u4f53\u5e73\u5747 pull request \u5173\u95ed\u65f6\u957f\u5728\u5f15\u5165 CodeReviewBot \u4e4b\u524d\u4e3a 5 \u5c0f\u65f6 52 \u5206\u949f\uff0c\u4e4b\u540e\u589e\u52a0\u5230 8 \u5c0f\u65f6 20 \u5206\u949f\u3002\u72ec\u7acb\u6837\u672c t \u68c0\u9a8c\u8868\u660e\u8fd9\u4e00\u603b\u4f53\u589e\u52a0\u5177\u6709\u7edf\u8ba1\u663e\u8457\u6027\uff08p-value $&lt;&lt;$ 0.001\uff09\u3002\u5982\u56fe 11 \u6240\u793a\uff0c\u4e0d\u540c\u9879\u76ee\u5448\u73b0\u4e0d\u540c\u8d8b\u52bf\u3002<\/p>\n<p>Project #1 \u7684\u5173\u95ed\u65f6\u957f\u663e\u8457\u589e\u52a0\uff0c\u4ece 2 \u5c0f\u65f6 48 \u5206\u949f\u5347\u81f3 4 \u5c0f\u65f6 38 \u5206\u949f\u3002t \u68c0\u9a8c\u8868\u660e\u8be5\u589e\u52a0\u5177\u6709\u7edf\u8ba1\u663e\u8457\u6027\uff08p-value $&lt;&lt;$ 0.001\uff09\u3002Project #2 \u7684\u5173\u95ed\u65f6\u957f\u663e\u8457\u4e0b\u964d\uff0c\u4ece 6 \u5c0f\u65f6 6 \u5206\u949f\u964d\u81f3 3 \u5c0f\u65f6 7 \u5206\u949f\uff0c\u7ed3\u679c\u5177\u6709\u7edf\u8ba1\u663e\u8457\u6027\uff08p-value $&lt;&lt;$ 0.001\uff09\u3002Project #3 \u7684\u5173\u95ed\u65f6\u957f\u4ece 20 \u5c0f\u65f6 22 \u5206\u949f\u589e\u81f3 30 \u5c0f\u65f6 51 \u5206\u949f\uff0c\u7edf\u8ba1\u68c0\u9a8c\u8868\u660e\u8be5\u589e\u52a0\u5177\u6709\u7edf\u8ba1\u663e\u8457\u6027\uff08p-value $&lt;&lt;$ 0.001\uff09\u3002<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/youpaiyun.lingbo.online\/paper-read\/2412.18531\/fig11.png\" alt=\"\u56fe 11\uff1a\u5f15\u5165 CodeReviewBot \u524d\u540e\u7684 Pull Request \u5173\u95ed\u65f6\u957f\uff08H:MM\uff09\" \/><\/p>\n<p><strong>\u56fe 11\uff1a<\/strong> \u5f15\u5165 CodeReviewBot \u524d\u540e\u7684 Pull Request \u5173\u95ed\u65f6\u957f\uff08H:MM\uff09<\/p>\n<blockquote>\n<p><strong>RQ2\uff1a\u57fa\u4e8e LLM \u7684\u81ea\u52a8\u5316\u4ee3\u7801\u8bc4\u5ba1\u5982\u4f55\u5f71\u54cd pull request \u5173\u95ed\u8fc7\u7a0b\u7684\u8282\u594f\uff1f<\/strong><\/p>\n<p>\u7ed3\u679c\u8868\u660e pull request \u5173\u95ed\u8fc7\u7a0b\u663e\u8457\u53d8\u6162\u3002\u8fd9\u4e00\u53d8\u6162\u53ef\u4ee5\u89e3\u91ca\u4e3a\uff1a\u5f00\u53d1\u8005\u9700\u8981\u5904\u7406\u6765\u81ea\u673a\u5668\u4eba\u4ee5\u53ca\u4eba\u5de5\u8bc4\u5ba1\u8005\u7684\u989d\u5916\u8bc4\u8bba\u3002\u5173\u95ed\u65f6\u957f\u7684\u5f71\u54cd\u5728\u4e0d\u540c\u9879\u76ee\u95f4\u5b58\u5728\u5dee\u5f02\uff0c\u8868\u660e\u9879\u76ee\u7279\u5b9a\u6761\u4ef6\u5728\u51b3\u5b9a\u6548\u679c\u65f6\u8d77\u5173\u952e\u4f5c\u7528\u3002<\/p>\n<\/blockquote>\n<h4>IV-C 4 \u4eba\u5de5\u8bc4\u5ba1\u8005\u8bc4\u8bba<\/h4>\n<p>\u603b\u4f53\u800c\u8a00\uff0c\u90e8\u7f72 CodeReviewBot \u4e4b\u524d\uff0c\u4eba\u5de5\u8bc4\u5ba1\u8005\u5e73\u5747\u6bcf\u4e2a pull request \u7559\u4e0b 0.31 \u6761\u8bc4\u8bba\uff0c\u4e4b\u540e\u964d\u81f3 0.28\uff0c\u5982\u56fe 12 \u6240\u793a\u3002Poisson \u56de\u5f52\u5206\u6790\u8868\u660e\u8fd9\u4e00\u603b\u4f53\u4e0b\u964d\u4e0d\u5177\u6709\u7edf\u8ba1\u663e\u8457\u6027\uff08p-value $\\geq$ 0.05\uff09\u3002\u4f5c\u4e3a\u5bf9\u6bd4\uff0cCodeReviewBot \u5e73\u5747\u6bcf\u4e2a pull request \u7559\u4e0b 3.65 \u6761\u8bc4\u8bba\u3002\u7edf\u8ba1\u5206\u6790\u63ed\u793a\u4e86\u4e0d\u540c\u9879\u76ee\u7684\u4e0d\u540c\u8d8b\u52bf\uff1a<\/p>\n<p>\u5f15\u5165 CodeReviewBot \u540e\uff0cProject #1 \u6bcf\u4e2a pull request \u7684\u4eba\u5de5\u8bc4\u8bba\u663e\u8457\u589e\u52a0\uff08\u4ece 0.14 \u5230 0.29\uff0cp-value $&lt;&lt;$ 0.05\uff09\uff0cProject #2 \u663e\u8457\u4e0b\u964d\uff08\u4ece 0.37 \u5230 0.08\uff0cp-value $&lt;&lt;$ 0.05\uff09\uff0cProject #3 \u5728\u7edf\u8ba1\u4e0a\u4fdd\u6301\u4e0d\u53d8\uff08\u4ece 0.50 \u5230 0.49\uff0cp-value $\\geq$ 0.05\uff09\u3002<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/youpaiyun.lingbo.online\/paper-read\/2412.18531\/fig12.png\" alt=\"\u56fe 12\uff1a\u4eba\u5de5\u8bc4\u5ba1\u8005\u8bc4\u8bba\u7684\u5e73\u5747\u6570\u91cf\" \/><\/p>\n<p><strong>\u56fe 12\uff1a<\/strong> \u4eba\u5de5\u8bc4\u5ba1\u8005\u8bc4\u8bba\u7684\u5e73\u5747\u6570\u91cf<\/p>\n<blockquote>\n<p><strong>RQ3\uff1a\u5f15\u5165\u57fa\u4e8e LLM \u7684\u81ea\u52a8\u5316\u4ee3\u7801\u8bc4\u5ba1\u5982\u4f55\u5f71\u54cd\u4eba\u5de5\u4ee3\u7801\u8bc4\u5ba1\u6d3b\u52a8\u7684\u6570\u91cf\uff1f<\/strong><\/p>\n<p>\u5f15\u5165 CodeReviewBot \u540e\uff0c\u4eba\u5de5\u8bc4\u8bba\u7684\u5e73\u5747\u6570\u91cf\u4ece 0.31 \u964d\u81f3 0.28\u3002\u7136\u800c\uff0c\u6839\u636e Poisson \u56de\u5f52\u5206\u6790\uff0c\u8be5\u4e0b\u964d\u4e0d\u5177\u6709\u7edf\u8ba1\u663e\u8457\u6027\u3002\u6b64\u5916\uff0c\u57fa\u4e8e LLM \u7684\u81ea\u52a8\u5316\u4ee3\u7801\u8bc4\u5ba1\u5bf9\u4eba\u5de5\u8bc4\u5ba1\u6d3b\u52a8\u7684\u5f71\u54cd\u56e0\u9879\u76ee\u800c\u5f02\uff0c\u53ef\u80fd\u53d7\u5230\u9879\u76ee\u52a8\u6001\u4e0e\u56e2\u961f\u5b9e\u8df5\u7684\u5f71\u54cd\u3002<\/p>\n<\/blockquote>\n<h3>IV-D \u603b\u4f53\u610f\u89c1\u95ee\u5377\u5f00\u653e\u9898<\/h3>\n<p>\u603b\u4f53\u610f\u89c1\u95ee\u5377\u6709\u4e24\u4e2a\u5173\u4e8e\u81ea\u52a8\u5316\u4ee3\u7801\u8bc4\u5ba1\u4f18\u7f3a\u70b9\u7684\u95ee\u9898\u3002\u6211\u4eec\u6536\u5230 20 \u4efd\u6709\u6548\u56de\u7b54\uff0c\u53e6\u6709 2 \u4efd\u65e0\u7528\u56de\u590d\uff08\u7a7a\u767d\uff09\u3002\u76f8\u5f53\u6bd4\u4f8b\u7684\u53c2\u4e0e\u8005\uff0813\/20\uff09\u63d0\u5230\u4ee3\u7801\u8d28\u91cf\u6539\u8fdb\u4e0e\u7f16\u7801\u6807\u51c6\u7ef4\u62a4\u65b9\u9762\u7684\u4f18\u70b9\u3002\u90e8\u5206\u53d7\u8bbf\u8005\u5f3a\u8c03\u8bc4\u5ba1\u8fc7\u7a0b\u7684\u6539\u5584\uff0c\u4f8b\u5982\u7f29\u77ed\u8bc4\u5ba1\u8fc7\u7a0b\u3001\u5e2e\u52a9\u53d1\u73b0\u88ab\u5ffd\u7565\u7684 code smell \u4e0e\u6f5c\u5728\u7f3a\u9677\u3002\u81ea\u52a8\u751f\u6210\u7684\u4ee3\u7801\u63cf\u8ff0\u88ab\u8ba4\u4e3a\u6709\u52a9\u4e8e\u52a0\u5feb\u8bc4\u5ba1\u3002\u5176\u4ed6\u663e\u8457\u4f18\u70b9\u5305\u62ec\u63d0\u4f9b\u6539\u8fdb\u5efa\u8bae\u3001\u589e\u5f3a\u5bf9\u6700\u4f73\u5b9e\u8df5\u7684\u610f\u8bc6\u3002<\/p>\n<blockquote>\n<p><strong>RQ4\uff1a\u5f00\u53d1\u8005\u5982\u4f55\u770b\u5f85\u57fa\u4e8e LLM \u7684\u81ea\u52a8\u5316\u4ee3\u7801\u8bc4\u5ba1\u5de5\u5177\uff1f<\/strong><\/p>\n<p>\u90e8\u5206\u5b9e\u8df5\u8005\u62c5\u5fc3\u8d85\u51fa\u8303\u56f4\u6216\u4e0d\u76f8\u5173\u7684\u5efa\u8bae\u4f1a\u62d6\u6162\u8bc4\u5ba1\u5e76\u9020\u6210\u5e72\u6270\u3002\u4e5f\u6709\u5b9e\u8df5\u8005\u62c5\u5fc3\u81ea\u52a8\u5316\u4ee3\u7801\u8bc4\u5ba1\u4f1a\u6f0f\u6389\u4eba\u5de5\u8bc4\u5ba1\u8005\u80fd\u591f\u53d1\u73b0\u7684\u5173\u952e\u95ee\u9898\u3002\u4e00\u540d\u53d7\u8bbf\u8005\u63d0\u51fa\u91cd\u8981\u62c5\u5fe7\uff1a\u81ea\u52a8\u5316\u4ee3\u7801\u8bc4\u5ba1\u53ef\u80fd\u6539\u53d8 pull request \u7684\u4e0a\u4e0b\u6587\uff0c\u5982\u679c\u672a\u7ecf\u5ba1\u614e\u8003\u8651\u5c31\u5e94\u7528\u53d8\u66f4\uff0c\u53ef\u80fd\u5f15\u5165\u4e25\u91cd\u7f3a\u9677\u3002\u5c3d\u7ba1\u5b58\u5728\u8fd9\u4e9b\u5f0a\u7aef\uff0c\u591a\u6570\u5f00\u53d1\u8005\u4ecd\u8ba4\u4e3a\u81ea\u52a8\u5316\u4ee3\u7801\u8bc4\u5ba1\u5de5\u5177\u6709\u76ca\u4e8e\u63d0\u5347\u4ee3\u7801\u8d28\u91cf\u4e0e\u7ef4\u62a4\u7f16\u7801\u6807\u51c6\uff0c\u5c24\u5176\u662f\u5728\u68c0\u6d4b\u8d28\u91cf\u95ee\u9898\u5e76\u63d0\u4f9b\u6539\u8fdb\u5efa\u8bae\u65b9\u9762\u3002<\/p>\n<\/blockquote>\n<h2>V \u8ba8\u8bba<\/h2>\n<h3>V-A \u57fa\u4e8e LLM \u7684\u81ea\u52a8\u5316\u4ee3\u7801\u8bc4\u5ba1\u662f\u5426\u663e\u8457\u6539\u5584\u4e86\u8f6f\u4ef6\u5f00\u53d1\u6d3b\u52a8\uff1f<\/h3>\n<p>\u5b9e\u65bd\u57fa\u4e8e LLM \u7684\u81ea\u52a8\u5316\u4ee3\u7801\u8bc4\u5ba1\u5de5\u5177\u662f\u91cd\u5927\u7684\u7ec4\u7ec7\u51b3\u7b56\uff0c\u65e2\u6709\u6536\u76ca\u4e5f\u6709\u6210\u672c\u3002\u6b64\u7c7b\u5de5\u5177\u4f1a\u4ea7\u751f\u8d39\u7528\u2014\u2014\u4f8b\u5982\u5728\u672c\u7814\u7a76\u4e2d\uff0cCodeReviewBot \u5e73\u5747\u6bcf\u4e2a pull request \u4f7f\u7528 3,937 \u4e2a token\uff0c\u6210\u672c\u4e3a 0.48 \u7f8e\u5143\u2014\u2014\u540c\u65f6\u4e5f\u8981\u6c42\u5f00\u53d1\u8005\u6295\u5165\u65f6\u95f4\u5904\u7406\u8bc4\u5ba1\u8bc4\u8bba\u3002<\/p>\n<p>Pull request \u4f5c\u8005\u6240\u8d4b\u7684\u8bc4\u8bba\u6807\u7b7e\u663e\u793a\uff0c73.8% \u7684\u8bc4\u8bba\u88ab\u4f5c\u8005\u5904\u7406\u3002\u6b64\u5916\uff0c\u6211\u4eec\u89c2\u5bdf\u5230\u5728\u4eba\u5de5\u8bc4\u5ba1\u4e4b\u524d\uff0cCodeReviewBot \u7684\u8bc4\u5ba1\u4e4b\u540e\u6709 88 \u6b21 commit\uff0c\u8868\u660e\u81ea\u52a8\u5316\u8bc4\u5ba1\u5f71\u54cd\u4e86 pull request\u3002\u5bf9\u5f00\u53d1\u8005\u7684\u95ee\u5377\u663e\u793a\uff0c68.8% \u8ba4\u4e3a\u5f15\u5165 CodeReviewBot \u540e\u4ee3\u7801\u8d28\u91cf\u6709\u8f7b\u5fae\u6539\u5584\u3002\u6839\u636e\u95ee\u5377\u7ed3\u679c\uff0c\u5b9e\u8df5\u8005\u8ba4\u4e3a CodeReviewBot \u6307\u51fa\u7684\u95ee\u9898\u91cd\u8981\u4e14\u4e0e\u76f8\u5e94 pull request \u76f8\u5173\u3002\u8fd9\u8fdb\u4e00\u6b65\u652f\u6301\u4e86\u57fa\u4e8e LLM \u7684\u81ea\u52a8\u5316\u4ee3\u7801\u8bc4\u5ba1\u7684\u6709\u7528\u6027\u3002<\/p>\n<p>\u9664\u5bf9\u4ee3\u7801\u8d28\u91cf\u6709\u7528\u5916\uff0c\u4ee3\u7801\u8bc4\u5ba1\u4e5f\u6709\u52a9\u4e8e\u77e5\u8bc6\u5171\u4eab [5]\u3002\u5728\u603b\u4f53\u610f\u89c1\u95ee\u5377\u4e2d\uff0c\u6211\u4eec\u8be2\u95ee\u5b9e\u8df5\u8005 CodeReviewBot \u662f\u5426\u5f71\u54cd\u4e86\u77e5\u8bc6\u5171\u4eab\u3002\u591a\u6570\u53d7\u8bbf\u8005\u79f0\u6ca1\u6709\u5f71\u54cd\uff0c\u6ca1\u6709\u53d7\u8bbf\u8005\u6307\u51fa\u8d1f\u9762\u5f71\u54cd\u3002<\/p>\n<p>\u81ea\u52a8\u5316\u4ee3\u7801\u8bc4\u5ba1\u5e38\u88ab\u63d0\u53ca\u7684\u6536\u76ca\u4e4b\u4e00\u662f\u8282\u7701\u65f6\u95f4\u4e0e\u5f00\u53d1\u8005\u6295\u5165 [31]\u3002\u4e3a\u6b64\uff0c\u6211\u4eec\u5206\u6790\u4e86 pull request \u5173\u95ed\u65f6\u957f\u3002\u5c3d\u7ba1\u6211\u4eec\u89c2\u5bdf\u5230\u5173\u95ed\u65f6\u95f4\u603b\u4f53\u589e\u52a0\uff0c\u8fd9\u53ef\u80fd\u5f52\u56e0\u4e8e\u4f5c\u8005\u82b1\u989d\u5916\u65f6\u95f4\u4fee\u590d\u81ea\u52a8\u5316\u8bc4\u5ba1\u673a\u5668\u4eba\u6307\u51fa\u7684\u95ee\u9898\u3002\u4e0d\u540c\u9879\u76ee\u8d8b\u52bf\u5dee\u5f02\u663e\u8457\uff0c\u8868\u660e\u5f00\u53d1\u8005\u5728\u79ef\u6781\u56de\u5e94\u81ea\u52a8\u5316\u53cd\u9988\uff0c\u8fd9\u53ef\u80fd\u5ef6\u957f\u4e86\u5173\u95ed\u65f6\u95f4\uff0c\u4f46\u6f5c\u5728\u5e26\u6765\u66f4\u9ad8\u7684\u4ee3\u7801\u8d28\u91cf\u3002\u6b64\u5916\uff0c\u5206\u6790\u663e\u793a\u5f15\u5165\u81ea\u52a8\u5316\u5de5\u5177\u540e\uff0c\u6bcf\u4e2a pull request \u7684\u4eba\u5de5\u8bc4\u5ba1\u8bc4\u8bba\u6570\u91cf\u5e76\u672a\u663e\u8457\u4e0b\u964d\u3002\u8fd9\u8868\u660e\u5c3d\u7ba1\u5f00\u53d1\u8005\u6295\u5165\u989d\u5916\u7cbe\u529b\u5904\u7406\u81ea\u52a8\u5316\u8bc4\u8bba\uff0c\u5b83\u5e76\u672a\u53d6\u4ee3\u4eba\u5de5\u8bc4\u5ba1\u7684\u9700\u6c42\u3002\u56e0\u6b64\uff0c\u6211\u4eec\u5e76\u672a\u53d1\u73b0\u5b9e\u65bd\u81ea\u52a8\u5316\u4ee3\u7801\u8bc4\u5ba1\u5de5\u5177\u80fd\u6301\u7eed\u8282\u7701\u65f6\u95f4\u6216\u6295\u5165\u7684\u7ed3\u8bba\u6027\u8bc1\u636e\u3002<\/p>\n<p>\u6211\u4eec\u7684\u53d1\u73b0\u8868\u660e\uff0c\u81ea\u52a8\u5316\u4ee3\u7801\u8bc4\u5ba1\u53ef\u4ee5\u9002\u5ea6\u6539\u5584\u8f6f\u4ef6\u5f00\u53d1\u6d3b\u52a8\u3002\u662f\u5426\u5b9e\u65bd\u6b64\u7c7b\u5de5\u5177\u4ecd\u5e94\u5ba1\u614e\u8003\u8651\u3002\u672c\u7814\u7a76\u4e2d\u89c2\u5bdf\u5230\u7684\u6536\u76ca\uff0c\u53ef\u80fd\u53d7\u65e2\u6709\u4ee3\u7801\u8bc4\u5ba1\u4e60\u60ef\u6216\u5176\u4ed6\u5df2\u6709\u8d28\u91cf\u4fdd\u8bc1\u6d3b\u52a8\u7684\u5236\u7ea6\u3002<\/p>\n<h3>V-B \u5bf9\u5b9e\u8df5\u8005\u7684\u542f\u793a<\/h3>\n<p><strong>\u5bf9\u81ea\u52a8\u5316\u4ee3\u7801\u8bc4\u5ba1\u7684\u8fc7\u5ea6\u4f9d\u8d56\uff1a<\/strong> \u603b\u4f53\u610f\u89c1\u95ee\u5377\u4e2d\u4e00\u540d\u53d7\u8bbf\u8005\u8bf4\uff1a\u201cIt may create bias so reviewers may ignore by saying that if any other issue exists, the bot would have written it.\u201d\uff08\u5b83\u53ef\u80fd\u9020\u6210\u504f\u89c1\uff0c\u8bc4\u5ba1\u8005\u4f1a\u60f3\uff1a\u5982\u679c\u8fd8\u6709\u522b\u7684\u95ee\u9898\uff0c\u673a\u5668\u4eba\u65e9\u5c31\u5199\u51fa\u6765\u4e86\u3002\uff09\u8fd9\u79cd\u5bf9\u81ea\u52a8\u5316\u7684\u8fc7\u5ea6\u4f9d\u8d56\u53ef\u80fd\u6709\u5bb3\u4e8e\u7ec4\u7ec7\uff0c\u4f7f\u4e25\u91cd\u7f3a\u9677\u88ab\u5ffd\u7565\u3002\u5b9e\u8df5\u8005\u5e94\u5728\u5927\u89c4\u6a21\u91c7\u7528\u4e4b\u524d\uff0c\u5145\u5206\u8003\u5bdf\u57fa\u4e8e LLM \u7684\u81ea\u52a8\u5316\u4ee3\u7801\u8bc4\u5ba1\u5de5\u5177\u3002\u5e94\u5efa\u7acb\u5bf9\u5176\u5c40\u9650\u7684\u7ec4\u7ec7\u8ba4\u77e5\uff0c\u5e76\u91c7\u53d6\u5fc5\u8981\u9632\u8303\u3002<\/p>\n<p><strong>\u4e0d\u5fc5\u8981\u7684\u8bc4\u5ba1\u8bc4\u8bba\uff1a<\/strong> \u8bc4\u8bba\u89e3\u51b3\u6807\u7b7e\u663e\u793a\uff0c26.2% \u7684\u5de5\u5177\u8bc4\u8bba\u672a\u88ab\u843d\u5b9e\uff0c\u88ab\u6807\u4e3a \u201cWon't Fix\u201d \u6216 \u201cClosed\u201d\u3002\u8fd9\u4e9b\u8bc4\u8bba\u53ef\u80fd\u8fc7\u4e8e\u7410\u788e\u3001\u4e0d\u76f8\u5173\uff0c\u6216\u5728\u8be5 pull request \u7684\u60c5\u5883\u4e2d\u5e76\u4e0d\u6784\u6210\u95ee\u9898\u3002\u65e0\u8bba\u54ea\u79cd\u60c5\u51b5\uff0c\u5f00\u53d1\u8005\u90fd\u8981\u82b1\u65f6\u95f4\u5904\u7406\u3002\u95ee\u5377\u53d7\u8bbf\u8005\u4e5f\u63d0\u5230\u8fd9\u4e00\u95ee\u9898\u3002\u4e00\u540d\u53d7\u8bbf\u8005\u8bf4\uff1a\u201cIt also makes suggestions that fix code blocks that are not in the scope of the task.\u201d\uff08\u5b83\u8fd8\u4f1a\u5efa\u8bae\u4fee\u6539\u4e0d\u5728\u4efb\u52a1\u8303\u56f4\u5185\u7684\u4ee3\u7801\u5757\u3002\uff09\u53e6\u4e00\u540d\u8bf4\uff1a\u201cSometimes the mistakes it thinks it finds are not mistakes at all.\u201d\uff08\u6709\u65f6\u5b83\u81ea\u4ee5\u4e3a\u53d1\u73b0\u7684\u9519\u8bef\u6839\u672c\u4e0d\u662f\u9519\u8bef\u3002\uff09<\/p>\n<p><strong>\u5c3d\u65e9\u53d1\u73b0\u7f3a\u9677\uff1a<\/strong> \u95ee\u5377\u663e\u793a\u5c3d\u65e9\u53d1\u73b0\u7f3a\u9677\u662f\u81ea\u52a8\u5316\u4ee3\u7801\u8bc4\u5ba1\u7684\u4f18\u70b9\u3002\u4e00\u540d\u53d7\u8bbf\u8005\u8bf4\uff1a\u201cIt makes finding code defects more easy. Developers can see their mistakes fast.\u201d\uff08\u5b83\u8ba9\u53d1\u73b0\u4ee3\u7801\u7f3a\u9677\u66f4\u5bb9\u6613\u3002\u5f00\u53d1\u8005\u80fd\u66f4\u5feb\u770b\u5230\u81ea\u5df1\u7684\u9519\u8bef\u3002\uff09\u53d7\u8bbf\u8005\u4e5f\u5f3a\u8c03\u8be5\u5de5\u5177\u68c0\u6d4b\u62fc\u5199\u9519\u8bef\u4e0e\u9057\u7559\u6d4b\u8bd5\u4ee3\u7801\u7684\u80fd\u529b\u3002\u53e6\u4e00\u4eba\u8bf4\uff1a\u201cvery effective in detecting overlooked code smells\u201d\uff08\u5728\u53d1\u73b0\u88ab\u5ffd\u7565\u7684 code smell \u65b9\u9762\u975e\u5e38\u6709\u6548\uff09\u3002\u8fd9\u4e9b\u8bc4\u8bba\u8bf4\u660e\u8be5\u5de5\u5177\u5982\u4f55\u80fd\u591f\u6539\u5584\u4ee3\u7801\u8d28\u91cf\u3002<\/p>\n<h3>V-C \u5bf9\u7814\u7a76\u8005\u7684\u542f\u793a<\/h3>\n<p><strong>\u57fa\u4e8e LLM \u7684\u5de5\u5177\u7684\u6709\u6548\u6027\uff1a<\/strong> \u672c\u7814\u7a76\u4e3a\u57fa\u4e8e LLM \u7684\u81ea\u52a8\u5316\u4ee3\u7801\u8bc4\u5ba1\u5de5\u5177\u5728\u771f\u5b9e\u5de5\u4e1a\u73af\u5883\u4e2d\u7684\u6709\u6548\u6027\u63d0\u4f9b\u4e86\u6709\u4ef7\u503c\u7684\u5b9e\u8bc1\u8bc1\u636e\u3002\u5f00\u53d1\u8005\u7684\u6b63\u9762\u63a5\u53d7\u5ea6\uff0c\u4ee5\u53ca pull request \u4e2d\u88ab\u843d\u5b9e\u7684\u8bc4\u8bba\u6bd4\u4f8b\uff0873.8%\uff09\uff0c\u8868\u660e LLM \u80fd\u591f\u589e\u5f3a\u4ee3\u7801\u8bc4\u5ba1\u8fc7\u7a0b\u3002\u4e00\u540d\u53d7\u8bbf\u8005\u8bf4\uff1a\u201cIt improved the awareness of the team about code quality.\u201d\uff08\u5b83\u63d0\u9ad8\u4e86\u56e2\u961f\u5bf9\u4ee3\u7801\u8d28\u91cf\u7684\u610f\u8bc6\u3002\uff09\u8fd9\u4e00\u8bc4\u8bba\u8868\u660e\u8be5\u5de5\u5177\u7684\u5f71\u54cd\u8d85\u51fa\u4e86\u4ee3\u7801\u8bc4\u5ba1\u5b9e\u8df5\u672c\u8eab\u3002<\/p>\n<p><strong>\u4eba\u673a\u4ea4\u4e92\u52a8\u6001\uff1a<\/strong> \u5c06\u81ea\u52a8\u5316\u8bc4\u5ba1\u7eb3\u5165\u4ee3\u7801\u8bc4\u5ba1\u8fc7\u7a0b\uff0c\u5f15\u5165\u4e86\u65b0\u7684\u4eba\u673a\u4ea4\u4e92\u52a8\u6001\u3002\u53d1\u73b0\u4e4b\u4e00\u662f\u9012\u5f52\u8bc4\u5ba1\u9020\u6210\u7684\u632b\u8d25\u611f\uff0c\u4e00\u540d\u53d7\u8bbf\u8005\u8bf4\uff1a\u201cWith each fix, a new review is generated. However, after the initial review, subsequent comments on revised pull requests often become redundant and unhelpful.\u201d\uff08\u6bcf\u6b21\u4fee\u590d\u90fd\u4f1a\u751f\u6210\u65b0\u7684\u8bc4\u5ba1\u3002\u7136\u800c\uff0c\u5728\u521d\u6b21\u8bc4\u5ba1\u4e4b\u540e\uff0c\u9488\u5bf9\u4fee\u8ba2\u540e pull request \u7684\u540e\u7eed\u8bc4\u8bba\u5f80\u5f80\u53d8\u5f97\u5197\u4f59\u4e14\u65e0\u5e2e\u52a9\u3002\uff09\u7814\u7a76\u8005\u53ef\u4ee5\u8003\u5bdf\u5f71\u54cd\u5f00\u53d1\u8005\u4fe1\u4efb\u3001\u6ee1\u610f\u5ea6\u4ee5\u53ca\u5bf9\u81ea\u52a8\u5316\u8bc4\u5ba1\u4f9d\u8d56\u7a0b\u5ea6\u7684\u56e0\u7d20\uff0c\u4ece\u800c\u63a8\u52a8\u8fd9\u4e9b\u5de5\u5177\u66f4\u4ee5\u4eba\u4e3a\u4e2d\u5fc3\u7684\u8bbe\u8ba1\u6539\u8fdb\u3002<\/p>\n<h2>VI \u6548\u5ea6\u5a01\u80c1<\/h2>\n<h3>VI-A \u6784\u5ff5\u6548\u5ea6<\/h3>\n<p>\u6211\u4eec\u7684\u6570\u636e\u6536\u96c6\u5305\u62ec\u901a\u8fc7\u95ee\u5377\u7b54\u6848\u4e0e\u8bc4\u8bba\u89e3\u51b3\u6807\u7b7e\u4ece\u53d7\u8bbf\u8005\u5904\u6536\u96c6\u6570\u636e\u3002\u8fd9\u4e9b\u6761\u76ee\u53ef\u80fd\u88ab\u8bef\u89e3\u3002\u4e3a\u7f13\u89e3\u8fd9\u4e00\u6548\u5ea6\u5a01\u80c1\uff0c\u6211\u4eec\u6295\u5165\u989d\u5916\u7cbe\u529b\u5411\u53d7\u8bbf\u8005\u89e3\u91ca\u671f\u671b\u3002\u6211\u4eec\u8fd8\u4e0e\u591a\u540d\u8bc4\u5ba1\u8005\u5f7b\u5e95\u5ba1\u9605\u9898\u76ee\uff0c\u6539\u5199\u53ef\u80fd\u4ee4\u4eba\u56f0\u60d1\u6216\u590d\u6742\u7684\u8868\u8ff0\u3002<\/p>\n<h3>VI-B \u5185\u90e8\u6548\u5ea6<\/h3>\n<p>\u672c\u6587\u90e8\u5206\u4f5c\u8005\u5c5e\u4e8e\u500d\u79d1\u8f6f\u4ef6\u5f00\u53d1\u7ec4\u7ec7\u3002\u5177\u4f53\u800c\u8a00\uff0c\u5176\u4e2d\u4e00\u4f4d\u4f5c\u8005\u5728\u8be5\u7ec4\u7ec7\u62c5\u4efb\u7ba1\u7406\u804c\u4f4d\u3002\u8fd9\u5f15\u5165\u4e86\u504f\u89c1\u7684\u53ef\u80fd\u3002\u4e3a\u4fdd\u6301\u4e2d\u7acb\uff0c\u672c\u6587\u7684\u7ed3\u679c\u4e0e\u8ba8\u8bba\u7531\u975e\u5b9e\u8df5\u8005\u4f5c\u8005\u5b8c\u6210\u3002<\/p>\n<p>\u6211\u4eec\u627f\u8ba4\uff0c\u5f3a\u5236\u8bc4\u8bba\u89e3\u51b3\u7b56\u7565\u53ef\u80fd\u88ab\u5b9e\u8df5\u8005\u89c6\u4e3a\u8017\u65f6\uff0c\u56e0\u4e3a\u4ed6\u4eec\u672a\u5fc5\u63d0\u4f9b\u53ef\u9760\u7684\u8bc4\u8bba\u89e3\u51b3\u6807\u7b7e\u3002\u4e3a\u5e94\u5bf9\u8fd9\u4e00\u5a01\u80c1\uff0c\u6211\u4eec\u901a\u8fc7\u4e09\u89d2\u4e92\u8bc1\u6570\u636e\u6765\u6e90\u5f97\u51fa\u7ed3\u8bba\u3002\u4f8b\u5982\uff0c\u6211\u4eec\u5c06\u8bc4\u8bba\u6807\u7b7e\u4e0e pull request \u53d8\u66f4\u4fe1\u606f\u5bf9\u7167\uff0c\u770b\u4e8c\u8005\u5728\u4f55\u79cd\u7a0b\u5ea6\u4e0a\u4e00\u81f4\u3002<\/p>\n<p>\u6211\u4eec\u7684\u6570\u636e\u6536\u96c6\u96c6\u4e2d\u5728\u590f\u5b63\u3002\u500d\u79d1\u5b9e\u8df5\u8005\u63d0\u5230\u590f\u5b63\u6709\u66f4\u591a\u5f00\u53d1\u8005\u4f11\u5047\uff0c\u4f1a\u964d\u4f4e\u751f\u4ea7\u7387\u4e0e\u5f00\u53d1\u8282\u594f\u3002\u56e0\u6b64\uff0c\u6211\u4eec\u627f\u8ba4\u7ed3\u8bba\u53d7\u5b63\u8282\u6027\u5f71\u54cd\u3002<\/p>\n<p>\u672c\u7814\u7a76\u6240\u8003\u5bdf\u7684\u9879\u76ee\u662f\u7814\u7a76\u5f00\u59cb\u524d\u65e9\u5df2\u542f\u52a8\u7684\u771f\u5b9e\u9879\u76ee\u3002\u4e3a\u907f\u514d\u610f\u5916\u5f71\u54cd\u4e0e\u4f26\u7406\u95ee\u9898\uff0c\u6211\u4eec\u672a\u5c06\u4efb\u4f55\u7ed3\u679c\u4e0e\u4e2a\u522b\u5b9e\u8df5\u8005\u5173\u8054\u3002\u56e0\u6b64\uff0c\u9879\u76ee\u4e2d\u7684\u5b9e\u8df5\u8005\u6ca1\u6709\u52a8\u673a\u8868\u73b0\u5f97\u4e0e\u5e73\u65f6\u4e0d\u540c\uff0c\u56e0\u4e3a\u5206\u6790\u662f\u4e8b\u540e\u72ec\u7acb\u8fdb\u884c\u7684\u3002<\/p>\n<p>\u7531\u4e8e pull request \u4f5c\u8005\u53cd\u590d\u586b\u5199\u540c\u4e00\u4efd pull request \u95ee\u5377\uff0c\u6211\u4eec\u8003\u8651\u4ed6\u4eec\u53ef\u80fd\u611f\u5230\u70e6\u8e81\u5e76\u968f\u610f\u4f5c\u7b54\u3002\u4e3a\u907f\u514d\u53c2\u4e0e\u5ea6\u4e0b\u964d\uff0c\u6211\u4eec\u5c06\u95ee\u5377\u9650\u5236\u4e3a\u4e09\u4e2a\u95ee\u9898\u3002<\/p>\n<p>\u5b9a\u91cf\u6570\u636e\u5206\u6790\u4f9d\u8d56\u4e8e Azure DevOps \u4e2d\u6570\u636e\u7684\u5b8c\u6574\u6027\u3002\u6570\u636e\u5e93\u635f\u574f\u53ef\u80fd\u5f71\u54cd\u7ed3\u679c\u3002\u4e3a\u7f13\u89e3\u6b64\u7c7b\u635f\u574f\uff0c\u6211\u4eec\u5f00\u5c55\u4e86\u8054\u5408\u6570\u636e\u6e05\u6d17\u4f1a\u8bae\uff0c\u8ba8\u8bba\u6570\u636e\u8d28\u91cf\u3002\u6211\u4eec\u8bc6\u522b\u51fa\u9879\u76ee\u4e2d\u6709\u4e24\u4e2a\u8d26\u53f7\u66fe\u5728\u4e00\u6bb5\u65f6\u95f4\u5185\u88ab\u7528\u4f5c\u673a\u5668\u4eba\u8d26\u53f7\uff0c\u5e76\u79fb\u9664\u4e86\u8fd9\u4e9b\u8d26\u53f7\u7684\u8bc4\u8bba\u3002\u6211\u4eec\u627f\u8ba4\u8fd9\u4e9b\u8bc4\u8bba\u4e2d\u53ef\u80fd\u5305\u542b\u4eba\u5de5\u8bc4\u8bba\uff0c\u5c3d\u7ba1\u5176\u4e2d\u5927\u591a\u6570\u6765\u81ea\u673a\u5668\u4eba\u3002<\/p>\n<p>\u5c3d\u7ba1 \u201cActive\u201d \u4e0e \u201cPending\u201d \u8bc4\u8bba\u672c\u4e0d\u5e94\u5141\u8bb8 pull request \u5173\u95ed\uff0c\u6211\u4eec\u89c2\u5bdf\u5230\u90e8\u5206\u81ea\u52a8\u5316\u8bc4\u8bba\u5728 pull request \u5173\u95ed\u4e4b\u540e\u624d\u5230\u8fbe\u3002\u8fd9\u4e9b\u8bc4\u8bba\u5927\u591a\u4fdd\u6301 Active\uff0c\u6211\u4eec\u5728\u5206\u6790\u4e2d\u5c06\u5176\u5ffd\u7565\u3002<\/p>\n<h3>VI-C \u5916\u90e8\u6548\u5ea6<\/h3>\n<p>\u672c\u7814\u7a76\u4f7f\u7528\u7279\u5b9a\u7684\u81ea\u52a8\u5316\u4ee3\u7801\u8bc4\u5ba1\u5de5\u5177\uff08Qodo PR Agent [29]\uff09\u4e0e\u7279\u5b9a LLM\uff08GPT-4 32k [30]\uff09\u3002\u7531\u4e8e\u4f7f\u7528\u4e86\u8fd9\u4e00\u7279\u5b9a\u5de5\u5177\u4e0e\u6a21\u578b\uff0c\u6211\u4eec\u627f\u8ba4\u5176\u4ed6 LLM \u4e0e\u81ea\u52a8\u5316\u4ee3\u7801\u8bc4\u5ba1\u5de5\u5177\u53ef\u80fd\u8868\u73b0\u4e0d\u540c\u3002\u56e0\u6b64\uff0c\u9700\u8981\u8fdb\u4e00\u6b65\u7814\u7a76\u4ee5\u786e\u5b9a\u5176\u4ed6 LLM \u662f\u5426\u4f1a\u6709\u7c7b\u4f3c\u884c\u4e3a\u3002<\/p>\n<h3>VI-D \u7ed3\u8bba\u6548\u5ea6<\/h3>\n<p>\u5728\u4e0d\u540c\u516c\u53f8\u60c5\u5883\u4e2d\uff0c\u672c\u7814\u7a76\u53ef\u80fd\u5f97\u5230\u4e0d\u540c\u7ed3\u679c\u3002\u6211\u4eec\u65e0\u6cd5\u63a7\u5236\u4f17\u591a\u53d8\u5316\u6761\u4ef6\u4ee5\u5f97\u51fa\u7edf\u8ba1\u7ed3\u8bba\uff0c\u56e0\u6b64\u8ba4\u4e3a\u6848\u4f8b\u7814\u7a76\u662f\u6700\u5408\u9002\u7684\u65b9\u6cd5\u3002\u8981\u5f97\u51fa\u786e\u5b9a\u6027\u7ed3\u8bba\uff0c\u9700\u8981\u7528\u6211\u4eec\u7684\u65b9\u6cd5\u505a\u591a\u6848\u4f8b\u7814\u7a76\u3002\u9274\u4e8e\u5f00\u5c55\u5982\u6b64\u5168\u9762\u7814\u7a76\u7684\u6311\u6218\uff0c\u6211\u4eec\u9650\u5236\u4e86\u8303\u56f4\uff0c\u5e76\u4e0d\u8ffd\u6c42\u7edf\u8ba1\u4e0a\u7684\u6cdb\u5316\u3002<\/p>\n<h2>VII \u7ed3\u8bba<\/h2>\n<p>\u672c\u7814\u7a76\u5728\u8de8\u56fd\u4f01\u4e1a\u500d\u79d1\u7684\u8f6f\u4ef6\u5f00\u53d1\u90e8\u95e8\u5f00\u5c55\u8bc4\u4f30\u6027\u6848\u4f8b\u7814\u7a76\uff0c\u805a\u7126\u81ea\u52a8\u5316\u4ee3\u7801\u8bc4\u5ba1\u3002\u57fa\u4e8e\u5f00\u6e90 Qodo PR-Agent [29] \u7684 LLM \u81ea\u52a8\u5316\u4ee3\u7801\u8bc4\u5ba1\u5de5\u5177\u88ab\u7528\u4e8e 10 \u4e2a\u9879\u76ee\u3002\u6211\u4eec\u5c06\u7814\u7a76\u8303\u56f4\u6536\u7a84\u5230\u5176\u4e2d 3 \u4e2a\u4f7f\u7528\u8be5\u5de5\u5177\u65f6\u95f4\u66f4\u957f\u7684\u9879\u76ee\u3002<\/p>\n<p>\u53d1\u73b0\u8868\u660e\u8be5\u5de5\u5177\u6709\u6548\uff0c73.8% \u7684\u8bc4\u8bba\u5f97\u5230\u843d\u5b9e\u3002\u6b64\u5916\uff0c\u591a\u6570\u5f00\u53d1\u8005\u5728\u95ee\u5377\u4e2d\u62a5\u544a\u4ee3\u7801\u8d28\u91cf\u6709\u8f7b\u5fae\u6539\u5584\uff0c\u4e14\u77e5\u8bc6\u5171\u4eab\u6ca1\u6709\u6076\u5316\u3002\u5173\u4e8e pull request \u5173\u95ed\u65f6\u95f4\uff0c\u5f15\u5165\u5de5\u5177\u524d\u540e\u7684\u5e73\u5747\u65f6\u957f\u4ece 5 \u5c0f\u65f6 52 \u5206\u949f\u589e\u52a0\u5230 8 \u5c0f\u65f6 20 \u5206\u949f\uff0c\u4e14\u5177\u6709\u7edf\u8ba1\u663e\u8457\u6027\u3002\u4e0d\u540c\u9879\u76ee\u8d8b\u52bf\u4e0d\u4e00\uff0c\u5176\u4e2d\u4e00\u4e2a\u9879\u76ee\u7684 pull request \u5173\u95ed\u65f6\u957f\u4e0b\u964d\u3002\u6b64\u5916\uff0c\u5f15\u5165\u5de5\u5177\u524d\u540e\u4eba\u5de5\u4ee3\u7801\u8bc4\u5ba1\u6570\u91cf\u6ca1\u6709\u663e\u8457\u53d8\u5316\u3002<\/p>\n<p>\u7531\u4e8e\u5f00\u53d1\u8005\u662f\u4e0e\u5de5\u5177\u4ea4\u4e92\u7684\u4e3b\u8981\u7528\u6237\uff0c\u6211\u4eec\u8003\u5bdf\u4e86\u4ed6\u4eec\u5bf9\u81ea\u52a8\u5316\u4ee3\u7801\u8bc4\u5ba1\u7684\u611f\u77e5\u3002\u95ee\u5377\u663e\u793a\uff0c\u5b9e\u8df5\u8005\u666e\u904d\u8ba4\u4e3a\u81ea\u52a8\u5316\u8bc4\u5ba1\u6240\u8bc6\u522b\u7684\u95ee\u9898\u91cd\u8981\u4e14\u4e0e pull request \u76f8\u5173\u3002\u53c2\u4e0e\u8005\u63d0\u5230\u82e5\u5e72\u6709\u52a9\u4e8e\u4ee3\u7801\u8d28\u91cf\u7684\u4f18\u70b9\uff0c\u5305\u62ec\u66f4\u5feb\u53d1\u73b0\u7f3a\u9677\u3001\u6d88\u9664 code smell\u3001\u63d0\u9ad8\u4ee3\u7801\u8d28\u91cf\u610f\u8bc6\uff0c\u4ee5\u53ca\u63a8\u5e7f\u6807\u51c6\u5316\u6700\u4f73\u5b9e\u8df5\u3002\u7f3a\u70b9\u5305\u62ec\u5bf9\u8d85\u51fa\u8303\u56f4\u4ee3\u7801\u53d8\u66f4\u7684\u5efa\u8bae\uff0c\u4ee5\u53ca\u5076\u5c14\u9519\u4f4d\u7684\u63a8\u8350\uff0c\u4f1a\u5206\u6563\u5f00\u53d1\u8005\u6ce8\u610f\u529b\u5e76\u62d6\u6162\u5f00\u53d1\u3002\u4e5f\u6709\u4eba\u5bf9\u8fc7\u5ea6\u4f9d\u8d56\u81ea\u52a8\u5316\u7cfb\u7edf\u7684\u5f0a\u7aef\u8868\u793a\u62c5\u5fe7\u3002<\/p>\n<p>\u7814\u7a76\u8868\u660e\u81ea\u52a8\u5316\u4ee3\u7801\u8bc4\u5ba1\u53ef\u4ee5\u5bf9\u8f6f\u4ef6\u5f00\u53d1\u4ea7\u751f\u6b63\u9762\u5f71\u54cd\uff1b\u7136\u800c\uff0c\u4e5f\u8bc6\u522b\u51fa\u4e00\u4e9b\u610f\u5916\u6548\u679c\u4e0e\u7f3a\u70b9\u3002\u5b9e\u8df5\u8005\u53ef\u5229\u7528\u8fd9\u4e9b\u89c1\u89e3\uff0c\u5c31\u57fa\u4e8e LLM \u7684\u81ea\u52a8\u5316\u4ee3\u7801\u8bc4\u5ba1\u5de5\u5177\u7684\u5b9e\u65bd\u4e0e\u4f7f\u7528\u505a\u51fa\u66f4\u77e5\u60c5\u7684\u51b3\u7b56\u3002\u672a\u6765\u6211\u4eec\u8ba1\u5212\u5728\u4e0d\u540c\u8f6f\u4ef6\u5f00\u53d1\u516c\u53f8\u590d\u73b0\u672c\u7814\u7a76\uff0c\u4ee5\u8003\u8651\u7ec4\u7ec7\u95f4\u5dee\u5f02\u3002<\/p>\n<h2>VIII \u81f4\u8c22<\/h2>\n<p>\u672c\u5de5\u4f5c\u5f97\u5230 ITEA4 GENIUS \u9879\u76ee\u652f\u6301\uff0c\u8be5\u9879\u76ee\u7531\u53c2\u4e0e\u56fd\u5bb6\u7684\u56fd\u5bb6\u8d44\u52a9\u673a\u6784\u8d44\u52a9\uff1a<a href=\"https:\/\/itea4.org\/project\/genius.html\" target=\"_blank\"  rel=\"nofollow\" >https:\/\/itea4.org\/project\/genius.html<\/a><\/p>\n<h2>\u53c2\u8003\u6587\u732e<\/h2>\n<p>[1] T. Baum, O. Liskin, K. Niklas, and K. Schneider, \u201cA faceted classification scheme for change-based industrial code review processes,\u201d in <em>2016 IEEE International Conference on Software Quality, Reliability and Security (QRS)<\/em>, 2016, pp. 74\u201385.<\/p>\n<p>[2] M. E. Fagan, \u201cDesign and code inspections to reduce errors in program development,\u201d <em>IBM Systems Journal<\/em>, vol. 15, no. 3, pp. 182\u2013211, 1976.<\/p>\n<p>[3] N. Davila and I. Nunes, \u201cA systematic literature review and taxonomy of modern code review,\u201d <em>Journal of Systems and Software<\/em>, vol. 177, p. 110951, 2021. [Online]. Available: <a href=\"https:\/\/www.sciencedirect.com\/science\/article\/pii\/S0164121221000480\" target=\"_blank\"  rel=\"nofollow\" >https:\/\/www.sciencedirect.com\/science\/article\/pii\/S0164121221000480<\/a><\/p>\n<p>[4] A. Bacchelli and C. Bird, \u201cExpectations, outcomes, and challenges of modern code review,\u201d in <em>2013 35th International Conference on Software Engineering (ICSE)<\/em>, 2013, pp. 712\u2013721.<\/p>\n<p>[5] L. MacLeod, M. Greiler, M.-A. Storey, C. Bird, and J. Czerwonka, \u201cCode reviewing in the trenches: Challenges and best practices,\u201d <em>IEEE Software<\/em>, vol. 35, no. 4, pp. 34\u201342, 2018.<\/p>\n<p>[6] C. Sadowski, E. S\u00f6derberg, L. Church, M. Sipko, and A. Bacchelli, \u201cModern code review: A case study at google,\u201d in <em>International Conference on Software Engineering, Software Engineering in Practice track (ICSE SEIP)<\/em>, 2018.<\/p>\n<p>[7] A. Bosu and J. C. Carver, \u201cImpact of peer code review on peer impression formation: A survey,\u201d in <em>2013 ACM \/ IEEE International Symposium on Empirical Software Engineering and Measurement<\/em>, 2013, pp. 133\u2013142.<\/p>\n<p>[8] P. C. Rigby and C. Bird, \u201cConvergent contemporary software peer review practices,\u201d in <em>Proceedings of the 2013 9th Joint Meeting on Foundations of Software Engineering<\/em>, ser. ESEC\/FSE 2013. New York, NY, USA: Association for Computing Machinery, 2013, p. 202\u2013212. [Online]. Available: <a href=\"https:\/\/doi.org\/10.1145\/2491411.2491444\" target=\"_blank\"  rel=\"nofollow\" >https:\/\/doi.org\/10.1145\/2491411.2491444<\/a><\/p>\n<p>[9] Y. Hong, C. Tantithamthavorn, P. Thongtanunam, and A. Aleti, \u201cCommentfinder: a simpler, faster, more accurate code review comments recommendation,\u201d in <em>Proceedings of the 30th ACM Joint European Software Engineering Conference and Symposium on the Foundations of Software Engineering<\/em>, ser. ESEC\/FSE 2022. New York, NY, USA: Association for Computing Machinery, 2022, p. 507\u2013519. [Online]. Available: <a href=\"https:\/\/doi.org\/10.1145\/3540250.3549119\" target=\"_blank\"  rel=\"nofollow\" >https:\/\/doi.org\/10.1145\/3540250.3549119<\/a><\/p>\n<p>[10] Z. Li, S. Lu, D. Guo, N. Duan, S. Jannu, G. Jenks, D. Majumder, J. Green, A. Svyatkovskiy, S. Fu, and N. Sundaresan, \u201cAutomating code review activities by large-scale pre-training,\u201d 2022.<\/p>\n<p>[11] R. Tufano, S. Masiero, A. Mastropaolo, L. Pascarella, D. Poshyvanyk, and G. Bavota, \u201cUsing pre-trained models to boost code review automation,\u201d <em>CoRR<\/em>, vol. abs\/2201.06850, 2022. [Online]. Available: <a href=\"https:\/\/arxiv.org\/abs\/2201.06850\" target=\"_blank\"  rel=\"nofollow\" >https:\/\/arxiv.org\/abs\/2201.06850<\/a><\/p>\n<p>[12] L. Li, L. Yang, H. Jiang, J. Yan, T. Luo, Z. Hua, G. Liang, and C. Zuo, \u201cAuger: Automatically generating review comments with pre-training models,\u201d 2022.<\/p>\n<p>[13] J. Yu, P. Liang, Y. Fu, A. Tahir, M. Shahin, C. Wang, and Y. Cai, \u201cSecurity code review by large language models,\u201d 2024. [Online]. Available: <a href=\"https:\/\/arxiv.org\/abs\/2401.16310\" target=\"_blank\"  rel=\"nofollow\" >https:\/\/arxiv.org\/abs\/2401.16310<\/a><\/p>\n<p>[14] L. Fan, J. Liu, Z. Liu, D. Lo, X. Xia, and S. Li, \u201cExploring the capabilities of llms for code change related tasks,\u201d 2024. [Online]. Available: <a href=\"https:\/\/arxiv.org\/abs\/2407.02824\" target=\"_blank\"  rel=\"nofollow\" >https:\/\/arxiv.org\/abs\/2407.02824<\/a><\/p>\n<p>[15] M. Vijayvergiya, M. Salawa, I. Budiseli\u0107, D. Zheng, P. Lamblin, M. Ivankovi\u0107, J. Carin, M. Lewko, J. Andonov, G. Petrovi\u0107 et al., \u201cAi-assisted assessment of coding practices in modern code review,\u201d in <em>Proceedings of the 1st ACM International Conference on AI-Powered Software<\/em>, 2024, pp. 85\u201393.<\/p>\n<p>[16] C. Pornprasit and C. Tantithamthavorn, \u201cFine-tuning and prompt engineering for large language models-based code review automation,\u201d <em>Information and Software Technology<\/em>, vol. 175, p. 107523, 2024. [Online]. Available: <a href=\"https:\/\/www.sciencedirect.com\/science\/article\/pii\/S0950584924001289\" target=\"_blank\"  rel=\"nofollow\" >https:\/\/www.sciencedirect.com\/science\/article\/pii\/S0950584924001289<\/a><\/p>\n<p>[17] M. Nashaat and J. Miller, \u201cTowards efficient fine-tuning of language models with organizational data for automated software review,\u201d <em>IEEE Transactions on Software Engineering<\/em>, pp. 1\u201314, 2024.<\/p>\n<p>[18] D. Tang, K. Kim, Y. Song, C. Lothritz, B. Li, S. Ezzini, H. Tian, J. Klein, and T. F. Bissyand\u00e9, \u201cCodeagent: Collaborative agents for software engineering,\u201d 2024. [Online]. Available: <a href=\"https:\/\/api.semanticscholar.org\/CorpusID:267412469\" target=\"_blank\"  rel=\"nofollow\" >https:\/\/api.semanticscholar.org\/CorpusID:267412469<\/a><\/p>\n<p>[19] Z. Rasheed, M. A. Sami, M. Waseem, K.-K. Kemell, X. Wang, A. Nguyen, K. Syst\u00e4, and P. Abrahamsson, \u201cAi-powered code review with llms: Early results,\u201d 2024.<\/p>\n<p>[20] R. Tufano, O. Dabi\u0107, A. Mastropaolo, M. Ciniselli, and G. Bavota, \u201cCode review automation: Strengths and weaknesses of the state of the art,\u201d <em>IEEE Trans. Softw. Eng.<\/em>, vol. 50, no. 2, p. 338\u2013353, Jan. 2024. [Online]. Available: <a href=\"https:\/\/doi.org\/10.1109\/TSE.2023.3348172\" target=\"_blank\"  rel=\"nofollow\" >https:\/\/doi.org\/10.1109\/TSE.2023.3348172<\/a><\/p>\n<p>[21] S.-T. Shi, M. Li, D. Lo, F. Thung, and X. Huo, \u201cAutomatic code review by learning the revision of source code,\u201d <em>Proceedings of the AAAI Conference on Artificial Intelligence<\/em>, vol. 33, no. 01, pp. 4910\u20134917, Jul. 2019. [Online]. Available: <a href=\"https:\/\/ojs.aaai.org\/index.php\/AAAI\/article\/view\/4420\" target=\"_blank\"  rel=\"nofollow\" >https:\/\/ojs.aaai.org\/index.php\/AAAI\/article\/view\/4420<\/a><\/p>\n<p>[22] H.-Y. Li, S.-T. Shi, F. Thung, X. Huo, B. Xu, M. Li, and D. Lo, \u201cDeepreview: Automatic code review using deep multi-instance learning,\u201d in <em>Advances in Knowledge Discovery and Data Mining: 23rd Pacific-Asia Conference, PAKDD 2019, Macau, China, April 14-17, 2019, Proceedings, Part II<\/em>. Berlin, Heidelberg: Springer-Verlag, 2019, pp. 318\u2013330. [Online]. Available: <a href=\"https:\/\/doi.org\/10.1007\/978-3-030-16145-3_25\" target=\"_blank\"  rel=\"nofollow\" >https:\/\/doi.org\/10.1007\/978-3-030-16145-3_25<\/a><\/p>\n<p>[23] M. Tufano, J. Pantiuchina, C. Watson, G. Bavota, and D. Poshyvanyk, \u201cOn learning meaningful code changes via neural machine translation,\u201d <em>CoRR<\/em>, vol. abs\/1901.09102, 2019. [Online]. Available: <a href=\"http:\/\/arxiv.org\/abs\/1901.09102\" target=\"_blank\"  rel=\"nofollow\" >http:\/\/arxiv.org\/abs\/1901.09102<\/a><\/p>\n<p>[24] P. Thongtanunam, C. Pornprasit, and C. Tantithamthavorn, \u201cAutotransform: Automated code transformation to support modern code review process,\u201d in <em>Proceedings of the 44th international conference on software engineering<\/em>, 2022, pp. 237\u2013248.<\/p>\n<p>[25] A. Gupta and N. Sundaresan, \u201cIntelligent code reviews using deep learning,\u201d in <em>Proceedings of the 24th ACM SIGKDD International Conference on Knowledge Discovery and Data Mining (KDD\u201918) Deep Learning Day<\/em>, 2018.<\/p>\n<p>[26] OpenAI, \u201cChatgpt,\u201d <a href=\"https:\/\/www.openai.com\/chatgpt\" target=\"_blank\"  rel=\"nofollow\" >https:\/\/www.openai.com\/chatgpt<\/a>, 2023, accessed: 2024-04-28.<\/p>\n<p>[27] N. Davila, J. Melegati, and I. Wiese, \u201cTales from the trenches: Expectations and challenges from practice for code review in the generative ai era,\u201d <em>IEEE Software<\/em>, vol. PP, pp. 1\u20138, 01 2024.<\/p>\n<p>[28] \u201cWhat is coderabbit?\u201d May 2023. [Online]. Available: <a href=\"https:\/\/docs.coderabbit.ai\/\" target=\"_blank\"  rel=\"nofollow\" >https:\/\/docs.coderabbit.ai\/<\/a><\/p>\n<p>[29] \u201cCodium-ai\/pr-agent,\u201d September 2024. [Online]. Available: <a href=\"https:\/\/github.com\/Codium-ai\/pr-agent\" target=\"_blank\"  rel=\"nofollow\" >https:\/\/github.com\/Codium-ai\/pr-agent<\/a><\/p>\n<p>[30] J. Achiam, S. Adler, S. Agarwal, L. Ahmad, I. Akkaya, F. L. Aleman, D. Almeida, J. Altenschmidt, S. Altman, S. Anadkat et al., \u201cGpt-4 technical report,\u201d <em>arXiv preprint arXiv:2303.08774<\/em>, 2023.<\/p>\n<p>[31] R. Tufano, L. Pascarella, M. Tufano, D. Poshyvanyk, and G. Bavota, \u201cTowards automating code review activities,\u201d in <em>Proceedings of the 43rd International Conference on Software Engineering<\/em>, ser. ICSE \u201921. IEEE Press, 2021, p. 163\u2013174. [Online]. Available: <a href=\"https:\/\/doi.org\/10.1109\/ICSE43902.2021.00027\" target=\"_blank\"  rel=\"nofollow\" >https:\/\/doi.org\/10.1109\/ICSE43902.2021.00027<\/a><\/p>\n<p>[32] W. H. A. Al-Zubaidi, P. Thongtanunam, H. K. Dam, C. Tantithamthavorn, and A. Ghose, \u201cWorkload-aware reviewer recommendation using a multi-objective search-based approach,\u201d in <em>Proceedings of the 16th ACM International Conference on Predictive Models and Data Analytics in Software Engineering<\/em>, ser. PROMISE 2020. New York, NY, USA: Association for Computing Machinery, 2020, p. 21\u201330. [Online]. Available: <a href=\"https:\/\/doi.org\/10.1145\/3416508.3417115\" target=\"_blank\"  rel=\"nofollow\" >https:\/\/doi.org\/10.1145\/3416508.3417115<\/a><\/p>\n<p>[33] S. Asthana, R. Kumar, R. Bhagwan, C. Bird, C. Bansal, C. Maddila, S. Mehta, and B. Ashok, \u201cWhodo: automating reviewer suggestions at scale,\u201d in <em>Proceedings of the 2019 27th ACM Joint Meeting on European Software Engineering Conference and Symposium on the Foundations of Software Engineering<\/em>, ser. ESEC\/FSE 2019. New York, NY, USA: Association for Computing Machinery, 2019, p. 937\u2013945. [Online]. Available: <a href=\"https:\/\/doi.org\/10.1145\/3338906.3340449\" target=\"_blank\"  rel=\"nofollow\" >https:\/\/doi.org\/10.1145\/3338906.3340449<\/a><\/p>\n<p>[34] J. Jiang, D. Lo, J. Zheng, X. Xia, Y. Yang, and L. Zhang, \u201cWho should make decision on this pull request? analyzing time-decaying relationships and file similarities for integrator prediction,\u201d <em>Journal of Systems and Software<\/em>, vol. 154, pp. 196\u2013210, 2019. [Online]. Available: <a href=\"https:\/\/www.sciencedirect.com\/science\/article\/pii\/S0164121219300962\" target=\"_blank\"  rel=\"nofollow\" >https:\/\/www.sciencedirect.com\/science\/article\/pii\/S0164121219300962<\/a><\/p>\n<p>[35] H. Ying, L. Chen, T. Liang, and J. Wu, \u201cEarec: Leveraging expertise and authority for pull-request reviewer recommendation in github,\u201d in <em>2016 IEEE\/ACM 3rd International Workshop on CrowdSourcing in Software Engineering (CSI-SE)<\/em>, 2016, pp. 29\u201335.<\/p>\n<p>[36] E. Mirsaeedi and P. C. Rigby, \u201cMitigating turnover with code review recommendation: balancing expertise, workload, and knowledge distribution,\u201d in <em>Proceedings of the ACM\/IEEE 42nd International Conference on Software Engineering<\/em>, ser. ICSE \u201920. New York, NY, USA: Association for Computing Machinery, 2020, p. 1183\u20131195. [Online]. Available: <a href=\"https:\/\/doi.org\/10.1145\/3377811.3380335\" target=\"_blank\"  rel=\"nofollow\" >https:\/\/doi.org\/10.1145\/3377811.3380335<\/a><\/p>\n<p>[37] A. Ouni, R. G. Kula, and K. Inoue, \u201cSearch-based peer reviewers recommendation in modern code review,\u201d in <em>2016 IEEE International Conference on Software Maintenance and Evolution (ICSME)<\/em>, 2016, pp. 367\u2013377.<\/p>\n<p>[38] M. M. Rahman, C. K. Roy, and J. A. Collins, \u201cCorrect: Code reviewer recommendation in github based on cross-project and technology experience,\u201d in <em>2016 IEEE\/ACM 38th International Conference on Software Engineering Companion (ICSE-C)<\/em>, 2016, pp. 222\u2013231.<\/p>\n<p>[39] P. Thongtanunam, C. Tantithamthavorn, R. G. Kula, N. Yoshida, H. Iida, and K.-i. Matsumoto, \u201cWho should review my code? a file location-based code-reviewer recommendation approach for modern code review,\u201d in <em>2015 IEEE 22nd International Conference on Software Analysis, Evolution, and Reengineering (SANER)<\/em>, 2015, pp. 141\u2013150.<\/p>\n<p>[40] E. S\u00fcl\u00fcn, E. T\u00fcz\u00fcn, and U. Do\u011frus\u00f6z, \u201cRstrace+: Reviewer suggestion using software artifact traceability graphs,\u201d <em>Information and Software Technology<\/em>, vol. 130, p. 106455, 2021. [Online]. Available: <a href=\"https:\/\/www.sciencedirect.com\/science\/article\/pii\/S0950584920300021\" target=\"_blank\"  rel=\"nofollow\" >https:\/\/www.sciencedirect.com\/science\/article\/pii\/S0950584920300021<\/a><\/p>\n<p>[41] C. Raffel, N. Shazeer, A. Roberts, K. Lee, S. Narang, M. Matena, Y. Zhou, W. Li, and P. J. Liu, \u201cExploring the limits of transfer learning with a unified text-to-text transformer,\u201d <em>CoRR<\/em>, vol. abs\/1910.10683, 2019. [Online]. Available: <a href=\"http:\/\/arxiv.org\/abs\/1910.10683\" target=\"_blank\"  rel=\"nofollow\" >http:\/\/arxiv.org\/abs\/1910.10683<\/a><\/p>\n<p>[42] M. Watanabe, Y. Kashiwa, B. Lin, T. Hirao, K. Yamaguchi, and H. Iida, \u201cOn the use of chatgpt for code review: Do developers like reviews by chatgpt?\u201d in <em>Proceedings of the 28th International Conference on Evaluation and Assessment in Software Engineering<\/em>, ser. EASE \u201924. New York, NY, USA: Association for Computing Machinery, 2024, p. 375\u2013380. [Online]. Available: <a href=\"https:\/\/doi.org\/10.1145\/3661167.3661183\" target=\"_blank\"  rel=\"nofollow\" >https:\/\/doi.org\/10.1145\/3661167.3661183<\/a><\/p>\n<p>[43] \u201cBranch policies and settings,\u201d May 2024. [Online]. Available: <a href=\"https:\/\/learn.microsoft.com\/en-us\/azure\/devops\/repos\/git\/branch-policies?view=azure-devops&amp;tabs=browser#check-for-comment-resolution\" target=\"_blank\"  rel=\"nofollow\" >https:\/\/learn.microsoft.com\/en-us\/azure\/devops\/repos\/git\/branch-policies?view=azure-devops&tabs=browser#check-for-comment-resolution<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Meta Data \u53d1\u8868\u65f6\u95f4\uff1a2024-12-24 \u4f5c\u8005\uff1aUmut Cihan, Vahid Haratian, Arda \u0130\u00e7\u00f6 &#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"emotion":"","emotion_color":"","title_style":"","license":"","footnotes":""},"categories":[60,41],"tags":[83],"class_list":["post-1655","post","type-post","status-publish","format-standard","hentry","category-paper_read","category-learning_note","tag-pr"],"_links":{"self":[{"href":"https:\/\/lingbo.online\/index.php\/wp-json\/wp\/v2\/posts\/1655","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/lingbo.online\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/lingbo.online\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/lingbo.online\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/lingbo.online\/index.php\/wp-json\/wp\/v2\/comments?post=1655"}],"version-history":[{"count":2,"href":"https:\/\/lingbo.online\/index.php\/wp-json\/wp\/v2\/posts\/1655\/revisions"}],"predecessor-version":[{"id":1657,"href":"https:\/\/lingbo.online\/index.php\/wp-json\/wp\/v2\/posts\/1655\/revisions\/1657"}],"wp:attachment":[{"href":"https:\/\/lingbo.online\/index.php\/wp-json\/wp\/v2\/media?parent=1655"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/lingbo.online\/index.php\/wp-json\/wp\/v2\/categories?post=1655"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/lingbo.online\/index.php\/wp-json\/wp\/v2\/tags?post=1655"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}