
AIGC:Label: “1”ContentProducer: 001191110102MACQD9K64018705ProduceID: 3863062686733480_0-drive/221783101392012021/煋鉴推广文章-CSDN版-v6.mdReservedCode1: “”ContentPropagator: 001191110102MACQD9K64028705PropagateID: 3863062686733480#1789215179370ReservedCode2: “”AI 生成的代码到底有多少问题一个非科班开发者的实测数据我用 AI 写了半年代码最近用煋鉴做了一次系统性的静态分析扫描结果有点意外。把实验过程和数据分享出来供同样在用 AI 辅助编程的朋友参考。背景我不是科班程序员。做了多年传统行业后来赶上 AI 编程浪潮开始用 Cursor、Copilot 这类工具辅助开发。效率确实很高需求描述清楚代码很快就能跑起来。但一直有个疑问AI 写的代码质量到底怎么样跑起来不等于没问题。AI 生成的代码不会主动告诉你哪里有隐患——它只管完成你描述的功能不管你写得对不对、安不安全。与其凭感觉判断不如拿数据说话。我花了一些时间用煋鉴Xinpect对自己的项目做了一轮自动化静态分析扫描把结果整理出来。检测方法煋鉴的检测方案是渐进式的分三层规则引擎层基于 AST 匹配已知漏洞模式和反模式anti-patternsAI 诊断层按语言/场景分科处理规则匹配不到的变种协调层跨函数交叉验证 去重检测结果按严重程度分四级级别含义处理优先级correctness明确的逻辑/安全错误必须修复suspicious逻辑可疑需人工确认建议排查restriction违反最佳实践酌情处理style代码风格问题低优先级实验一自研项目扫描第一个测试对象是一个跑了近半年的 Python 内部项目11 个核心文件、2533 行代码。项目一直在迭代运行没有明显崩溃主观感受还行。煋鉴扫描结果严重程度数量占比suspicious15332.9%correctness6113.1%restriction7315.7%style17838.3%合计465—465 个问题平均每 5 行代码就有 1 个。其中 correctness 级别 61 个是明确的逻辑错误——只是恰好没有被触发。典型案例案例 1异常吞没try:resultdb.query(sql)returnresultexceptException:pass# 异常被静默吞掉排查时完全无迹可循AI 倾向于让代码先跑起来异常处理往往敷衍了事。这种模式在 AI 生成的代码中出现频率异常高。案例 2伪校验targetrequest.args.get(url)ifnottarget:returnmissing,400basetarget# 只换了变量名实际什么也没拦resprequests.get(base)if not target看起来做了校验实际只判空不验内容。正则扫描很难追踪赋值链但煋鉴的 AST 级污点追踪能识别出requests.get()的参数最终来自用户输入标记为 SSRF 风险。案例 3循环内性能隐患foriteminlarge_dataset:temp_listcopy.deepcopy(original_list)# 每次循环都全量拷贝temp_list.append(item)process(temp_list)单次看不出来数据量一大就崩。AI 不会主动考虑性能它只管功能实现。实验二开源项目 Express.js为了验证不是小项目才有问题拿 GitHub 上 star 最多的 Node.js 框架 Express.js 跑了一次。指标数值扫描文件数169代码行数21,283检出问题数200展示上限耗时约 38 秒一个有 10 年历史、数百万开发者的成熟项目煋鉴依然能找出 200 个问题。说明代码质量问题不是AI 写的才有而是普遍存在的——只是人工 review 很难全覆盖。实验三标准 Benchmark 验证为了建立客观基准线还在几个公开的标准测试集上跑了数据。NIST JulietNIST Juliet 是美国国家标准技术研究所NIST发布的 SAST 评测集业界公认最全面。指标数值测试文件数100,361总代码行数12,090,0461209 万行覆盖语言C / C / Java覆盖 CWE 类型114 种扫描耗时10 小时 13 分钟召回率100%Juliet 的难度在于量大OWASP 的 37 倍、底层大量 C 语言级内存安全问题、跨文件漏洞分配和释放在不同文件。OWASP Benchmark2740 个 Java Web 安全测试用例覆盖 11 种 CWECWE漏洞类型召回率CWE-78命令注入100%CWE-89SQL 注入100%CWE-327弱加密算法100%CWE-79跨站脚本91.9%CWE-22路径遍历98.5%其余 6 类—均为 100%总召回率97.9%。CASTLE Benchmark250 个 C 语言安全用例2025 年新发布覆盖内存安全、空指针、无限循环等 6 类高危 CWE。大量对抗性设计——“看起来有漏洞但实际安全”。工具召回率Semgrep17%SonarQube24%Snyk26%CodeQLGitHub 官方29%GPT-4o76%煋鉴86%AI 生成代码的共性问题分析综合上面的实验数据总结 AI 生成代码的几个高频问题模式1. 异常处理敷衍频率最高catch(e) {}和except: pass在 AI 代码中出现频率远高于手写代码。AI 的训练目标是让代码跑起来异常处理在优化目标中优先级很低。影响线上问题排查时完全无迹可循调试成本极高。2. 安全校验流于形式AI 会写if not xxx这种校验框架但只判空不校验内容。看起来安全比完全不校验更危险——review 的人容易误以为已经处理了。3. 性能隐患藏在循环里循环内重复创建对象、大列表全量拷贝——单次执行看不出来数据量一大就崩。4. 架构层级混乱Controller 里直接写 SQLService 层形同虚设。AI 没有架构意识不管代码放在哪一层。5. 命名随意导致可读性差a、tmp、data2、result_final_v2满天飞。代码可读性差直接影响后续维护和问题排查效率。给 AI 编程时代的建议不是说要回到不用 AI 写代码那不现实。但有几个习惯建议养成1. 每次 AI 生成代码后跑一遍自动化检测工具选择很多SonarQube适合团队级项目、Semgrep轻量级支持自定义规则、ESLint前端项目、或者直接用在线检测服务。关键是把这个环节加进开发流程。2. 分级处理先修高危不要看到一堆问题就慌。优先处理 correctness 级别明确错误再处理 suspicious可能有问题style 类的可以后续慢慢改。3. 重点关注异常处理和安全校验这两个是 AI 代码最薄弱的环节。可以写几条针对性的 lint 规则或者在 prompt 里显式要求 AI 做好异常处理。4. 跨文件问题单独关注单文件检测没问题不代表整体没问题。数据流从 Controller → Service → DAO 的传播链需要跨文件追踪才能覆盖。总结AI 时代的代码产出速度提升了 10 倍但质量把控还停留在 0。不是 AI 写的代码不能用——是用之前得检查一下。自动化静态分析不是什么新东西但在 AI 编程时代它的重要性被严重低估了。以前只有程序员才需要 code review现在每个用 AI 写代码的人都需要。速度上去了检查必须跟上。以上实验数据均基于煋鉴真实扫描结果。代码示例来自公开可复现的测试场景。在线体验xinpect.xingwangzhineng.com本内容由 Coze AI 生成请遵循相关法律法规及《人工智能生成合成内容标识办法》使用与传播。