当前时间: 2026-05-22 02:37:22
分类:办公文件
评论(0)
开发项目中AI代码行占比统计方案AI代码占比核心计算公式:AI有效代码占比 = AI生成有效代码行 ÷ 项目总有效业务代码行 × 100%核心小原则:我们只统计有效业务代码行(SLOC),空行、注释、配置文件、静态资源、第三方代码、测试代码全部剔除,避免数据虚高或偏低,统计结果可以直接用来做周报、迭代复盘、个人产能统计。一、统一统计口径
1. 算【AI代码行】的情况
AI一次性完整生成的函数、组件、接口、业务逻辑模块Copilot、IDE智能补全、大模型生成后,人工小幅修改(改动<30%)的代码2. 不算【AI代码行】的情况
AI生成后,人工大幅改写(改动≥30%)、重构逻辑、替换核心功能的代码(直接归为人工代码)3. 项目总行数统计规则
项目总有效行 = 人工手写有效业务行 + AI生成有效业务行,只算核心业务源码,所有无效代码一律剔除。二、两种常用统计场景
场景1:增量统计(迭代/新项目,最常用)
只统计本次迭代、当前开发周期里的新增代码,能精准看出AI的辅助开发效率。场景2:全量统计
统计整个项目所有存量代码,算出整体的AI代码占比。三、手把手统计流程
步骤1:划定统计范围,过滤无效内容
统一过滤无效目录和文件,所有统计都按这套规则来,保证数据统一、不翻车:需排除目录:node_modules、dist、build、target、out、docs、test、vendor、.git仅保留内容:项目核心业务源码(java、py、js、ts、vue、go、cpp、c等)步骤2:区分人工代码和AI代码(核心关键)
这是统计最关键的一步,分享两个超好落地的区分方法,按需选用即可:方式A:目录隔离法
开发时把所有AI生成的代码,统一放进固定目录(比如 ai_gen/),人工代码正常存放,物理隔离后,统计起来超级简单。方式B:Git溯源法
翻看Git提交记录快速区分:短时批量新增、格式规整统一、模板化严重的代码,基本都是AI生成;风格随性、带有个人编码习惯、迭代式修改的,就是人工代码。步骤3:用cloc工具统计有效行数
全程用cloc工具统计有效代码行(看输出的code列),自动过滤空行和注释,数据标准又靠谱。- 项目总有效代码行:执行上方命令,取最终SUM行的code数值
- AI有效代码行:进入AI代码专属目录,对AI新增文件执行同款过滤命令,即可得出AI代码行数
步骤4:快速算出最终占比
AI代码占比 = (AI有效代码行 ÷ 项目总有效代码行)× 100%结果保留1-2位小数,干净规整,直接用来汇报完全没问题。四、迭代专属:增量AI占比统计
专门针对单次迭代的新增代码统计,避开历史存量代码干扰,数据更精准:查看本次迭代新增文件
git diff HEAD~1 --name-only统计本次新增代码的有效总行数与AI行数,再计算占比
cloc 本次新增源码文件 --exclude-ext=md,json五、AI代码判定规则
没有做目录隔离的老项目,直接按这套标准判定,统一口径不扯皮:100%计入AI行:整体模板化、格式极度规整、无个人编码风格、过度兜底判空、自带标准化注释的完整代码模块50%计入AI行:AI生成后,仅微调变量名、参数、文案,核心逻辑完全没改动不计入AI行:人工重写核心逻辑、重构架构,改动超30%,仅保留少量基础代码六、常见统计坑点
坑点1:统计时带入空行、注释、配置文件 → 最终占比偏低坑点2:把脚手架初始代码、第三方代码算成AI代码 → 数据虚高坑点3:大幅改写的AI代码全额算作AI产出 → 数据失真不准坑点4:混用物理行、有效行两种统计标准 → 数据无法对比复盘
基本
文件
流程
错误
SQL
调试
- 请求信息 : 2026-05-22 02:49:29 HTTP/1.1 GET : https://www.yeyulingfeng.com/a/656717.html
- 运行时间 : 0.091708s [ 吞吐率:10.90req/s ] 内存消耗:4,601.84kb 文件加载:145
- 缓存信息 : 0 reads,0 writes
- 会话信息 : SESSION_ID=e7c849a6b9893c12de901c2d5726b02b
- CONNECT:[ UseTime:0.000534s ] mysql:host=127.0.0.1;port=3306;dbname=wenku;charset=utf8mb4
- SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000766s ]
- SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000297s ]
- SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000900s ]
- SHOW FULL COLUMNS FROM `set` [ RunTime:0.000508s ]
- SELECT * FROM `set` [ RunTime:0.000218s ]
- SHOW FULL COLUMNS FROM `article` [ RunTime:0.000613s ]
- SELECT * FROM `article` WHERE `id` = 656717 LIMIT 1 [ RunTime:0.000495s ]
- UPDATE `article` SET `lasttime` = 1779389369 WHERE `id` = 656717 [ RunTime:0.005336s ]
- SELECT * FROM `fenlei` WHERE `id` = 64 LIMIT 1 [ RunTime:0.000293s ]
- SELECT * FROM `article` WHERE `id` < 656717 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.000505s ]
- SELECT * FROM `article` WHERE `id` > 656717 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.000634s ]
- SELECT * FROM `article` WHERE `id` < 656717 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.000813s ]
- SELECT * FROM `article` WHERE `id` < 656717 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.000800s ]
- SELECT * FROM `article` WHERE `id` < 656717 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.000887s ]
0.093523s