中文原生代码助手基准测评出炉,Cursor取得89分领跑全球,国内2款代码助手得分超80
测评摘要
Cursor在本次代码助手测评中取得89.87分,处于领先地位。并在代码生成与改写、代码优化与修复、跨函数与跨文件三个维度上有绝对优势。在代码理解与分析能力上还有提升空间。
测评要点2:国内代码助手表现不俗从测评结果看,文心快码、通义灵码两产品分别达到87.55、87.36的综合得分,在国内代码助手产品中大幅领先其他产品,仅稍微落后于Cursor,并且在代码理解与分析领域稍占上风。
测评要点3:国内外代码助手能力区分性较大在本次代码助手测评中第一档的产品,如Cursor、文心快码Baidu Comate、通义灵码表现突出,与第二档产品有较大分差。在整体能力和各项代码任务上均有较大区分性。测评要点4:代码助手交互体验方面略有差异在测评中发现,不同的代码助手在交互体验上有不同侧重。在结合已有代码的交互方式、推理速度等方面表现不同,这也是影响AI代码助手使用的重要影响因素。
# 榜单概览
# SuperCLUE-Coder介绍
SuperCLUE-Coder基准包括4个一级维度11个二级维度,以开放式问题形式对代码助手产品进行评估。
指令理解:代码助手是否正确、完整地理解了问题中包含的用户需求 功能实现 (生成) :回答中的代码是否正确、完整地实现了问题中包含的用户需求。 性能表现:回答中的代码在逻辑设计和系统资源占用方面是否足够优化。 功能实现 (转换) :代码助手是否在指定的语言或框架下正确、完整地复现了问题中代码的功能。 结构保持:转换后的代码是否最大程度上保持了原代码的结构或逻辑。 功能实现 (注释) :代码助手添加的注释是否内容正确、布局清晰。 代码局部理解:代码助手是否充分地解释了问题中代码的关键步骤。 代码整体理解:代码助手是否正确地解释了问题中代码的总体功能。 功能实现 (文档) :代码助手是否正确地在文档中解释了代码的功能逻辑、使用方法等。 文本规范:代码助手生成的文档是否排版合理、易于理解。 功能实现 (测试用例) :代码助手是否生成了覆盖一般情况与特殊情况的测试用例。 功能实现 (纠错) :代码助手是否正确、完整地纠正了原代码包含的错误。 用户引导:代码助手是否清晰解释了原代码中有关缺陷的机理。 功能实现 (安全性) :回答中的代码是否正确、完整地纠正了中代码包含的安全性问题。 功能实现 (函数) :代码助手是否正确、完整地实现了问题中包含的用户需求。 代码规范:回答中的代码是否按规定的语法调用了各函数。 功能实现 (跨文件) :回答中的多个文件之间能否正确地建立联系(如调用与被调用)。
1)测评集构建
中文prompt构建流程:1.参考现有prompt--->2.中文prompt撰写--->3.测试--->4.修改并确定中文prompt;针对每一个维度构建专用的测评集。2)评分过程
1.获得<中文prompt>-->2.依据评估标准-->3.使用评分规则-->4.进行细粒度打分;结合超级模型,在定义的指标体系里明确每一个维度的评估标准。结合评估流程、评估标准、评分规则,将文本输入、文件送入超级模型进行评估,并获得每一个维度的评估结果。3)人类一致性分析
对自动化测评结果进行评估,与人类评价的一致性对比,并报告一致性表现。详见下方#示例。
代码助手回答:
为了完成这个任务,我们可以使用Python编程语言结合TensorFlow和Keras库来实现。这里将给出一个完整的示例,包括数据预处理、模型构建、训练以及评估。
步骤 1: 导入必要的库
步骤 2: 加载数据并进行预处理
步骤 5: 训练模型
步骤 6: 评估模型
这段代码实现了从加载数据到模型训练及评估的完整流程。注意确保CSV文件路径正确,并且调整模型参数以获得更好的性能。
超级模型(gpt-4o)裁判:
导入必要的库; 加载数据并进行预处理,包括分离特征和标签、数据归一化、划分训练集和测试集; 对数据进行降采样处理,以应对大量0值数据; 构建卷积神经网络模型; 训练模型; 评估模型并返回分类准确率。
代码助手正确理解了用户需求,包括数据预处理、CNN模型构建、使用RMSProp优化器、降采样处理、以及返回分类准确率。 评分:5
代码助手的回答基本实现了用户需求,但存在一些不必要的步骤(如one-hot编码),且未对测试数据进行降采样处理。 评分:4
在逻辑设计上,代码助手的模型结构合理,但在性能优化方面可以改进,例如可以调整卷积层和全连接层的超参数以获得更好的性能。此外,降采样策略也可以更为精细化。 评分:4
为综合衡量当前国内外代码助手产品发展水平,本次测评选取了2个海外产品和5个国内代表性产品。
# 测评案例
维度一:代码理解与分析
案例1:代码理解与分析-代码理解
代码产品助手:Cursor
提示词:「生成这段代码的单元测试用例。」
代码助手回答:好的, 我来为这段代码生成一些单元测试用例。以下是使用Python的unittest模块编写的测试用例:
1.一个简单的有冗余连接的图
2.一个稍微复杂一点的有冗余连接的图
3.一个没有冗余连接的图
4.一个较大的环形图
要运行这些测试, 你需要将原始的Solution类代码放在测试文件的开头, 或者将其导入。然后你可以使用Python的unittest模块来运行这些测试。这些测试用例应该能够帮助你验证findRedundantConnection方法在不同情况下的正确性。如果你需要更多的测试用例或者针对特定情况的测试, 请告诉我。
评分:【4.5分】
维度二:跨函数与跨文件调用
案例2:跨函数与跨文件编程-函数调用
代码助手产品:文心快码Baidu Comate
提示词:「该文档描述了某智能座舱的功能,请基于以上函数调用接口,给出以下指令的回答:“我好热啊!但是我想省点油费……”」
代码助手回答:
控制车窗:
如果外界温度适宜且空气流通性好,您还可以考虑使用control_window函数将车窗设置为half_open或半开状态,以利用自然风来降温,进一步节省油费。
选择需要控制的车窗位置,比如front_left和front_right。
评分:【4.67分】
维度三:代码优化与修复
案例3:代码优化与修复-代码纠错
代码助手产品:通义灵码
对应代码:
提示词:「请指出并修复代码中的安全问题。」
代码助手回答:
这段 PHP 代码存在几个安全问题,主要包括文件上传的安全验证不足和潜在的路径遍历漏洞。以下是具体的问题分析及修复建议:
安全问题
文件扩展名检查不安全: 只通过文件扩展名来判断文件类型是不安全的,因为用户可以伪造文件扩展名。
未进行文件类型检查: 没有对上传文件的内容类型进行实际检查。
路径遍历漏洞: 用户可以通过修改文件名来尝试访问服务器上的其他文件或目录。
错误处理不当: 直接输出 $_FILES 的信息可能会泄露敏感信息。
使用了 @ 符号来抑制错误: 这种做法可能会隐藏错误信息,不利于调试和维护。
修复建议
增强文件类型检查: 使用 finfo 函数来检查文件的实际 MIME 类型。
防止路径遍历: 对文件名进行安全过滤,确保不会包含任何特殊字符如 ../。
改进错误处理: 不直接输出 $_FILES 的信息,而是进行适当的错误处理。
移除 @ 符号: 移除所有 @ 符号,并妥善处理可能出现的错误。
修改后的代码总结
通过使用 finfo 来检查文件的实际 MIME 类型,增加了安全性。
通过过滤文件名来避免路径遍历攻击。
改进了错误处理逻辑,提高了程序的健壮性和安全性。评分:【5分】
维度四:代码生成与改写
案例4:代码生成与改写-代码转换
代码助手产品:Codeium
提示词:「请使用Hbase的Java API实现该SQL操作。」
代码助手回答:
要使用HBase的Java API来实现该SQL操作,我们需要执行以下步骤:
1.创建HBase配置和连接。
2.扫描Stadium表,过滤出people大于或等于100的行。
3.对扫描结果进行分组和计数,找出连续的id值。
4.过滤出连续id值的数量大于或等于3的分组。
下面是一个简单的示例,展示了如何使用HBase Java API来实现该SQL操作:评分:【2.67分】
# 人类一致性评估
# 测评分析及结论
1.Cursor在综合代码能力上处于领先地位
2.国内外代码助手产品在不同维度下的差距有所不同
由测评结果可知,国内各代码助手产品在代码理解与分析、代码生成与改写两方面的能力与业界领先水平差距相对较小,特别是代码注释与代码转换两方面,整体表现尚可;而在代码优化与修复、跨函数与跨文件编程方面则落后稍多,特别是函数调用能力还有所差距;除通义灵码、文心快码两款产品外,其他参评国内模型的性能优化与跨文件编程能力与业界领先水平还有一定差距。
3.文心快码、通义灵码在代码理解与分析能力优于Cursor
1. 邮件申请
2. 意向沟通
3. 参测确认与协议流程
4. 提供代码助手版本
5. 获得测评报告
# 邮件申请
邮件标题:代码助手测评申请,发送到contact@superclue.ai
请使用单位邮箱,邮件内容包括:单位信息、代码助手类型及简介、联系人和所属部门、联系方式
# 联系我们
扩展阅读
[1] CLUE官网:www.CLUEBenchmarks.com
[2] SuperCLUE排行榜网站:www.superclueai.com
[3] Github地址:https://github.com/CLUEbenchmark