cursor中测试大模型代码生成能力
在当前项目根目录生成.cursorrules,根据最新的阿里Java开发规范去更新.cursorrulrs,.cursorrules 规范中类的注释,作者用git的用户名,时间为当前时间,.cursorrules 中新增按照最新的阿里规范,对目录结构层次及目录命名,文件命名进行约束,.cursorrules 中新增按照最新的阿里规范,对目录结构层次及目录命名,文件命名进行约束,.cursorrul
目录
claude-3.5-sonnat大模型(cursor agent模式)
4、mysql数据库连接采用druid连接池,并且给出最优设置的配置
deepseek-r1大模型(cursor normal模式)
安装插件


创建springboot项目
在搜索框中输入 >Spring Initializr: Create a Maven Project

选择版本

选择开发语言
输入maven group
输入maven artifact
选择打包类型
选择Java版本
选择需要添加的依赖包
选择项目存放的文件目录
由于springboot的版本太高,需要把springboot版本调整到2.5.15 ,Java版本调整到1.8
此时我们用composer agent帮我们去更改版本
AI编程
claude-3.5-sonnat大模型(cursor agent模式)
1、修改依赖版本
由于springboot的版本太高,需要把springboot版本调整到2.5.15 ,Java版本调整到1.8

2、添加项目ai规则
在当前项目根目录生成.cursorrules,根据最新的阿里Java开发规范去更新.cursorrulrs,.cursorrules 规范中类的注释,作者用git的用户名,时间为当前时间,.cursorrules 中新增按照最新的阿里规范,对目录结构层次及目录命名,文件命名进行约束,.cursorrules 中新增按照最新的阿里规范,对目录结构层次及目录命名,文件命名进行约束,.cursorrules 中新增按照最新的阿里规范,对数据库使用,操作的规范

.cursorrules文件内容为:
rules:
- id: project-structure
description: 确保项目结构符合阿里巴巴Java开发规范
patterns:
- pattern: "^(?!src/(main|test)/(java|resources)/)"
message: "【强制】项目必须遵循 Maven 的目录结构规范"
- pattern: "src/main/java/[^/]+/[^/]+/(?!api|common|config|constant|controller|entity|enums|exception|mapper|model|service|util|vo).*?/"
message: "【强制】基础包名必须是:api、common、config、constant、controller、entity、enums、exception、mapper、model、service、util、vo"
- pattern: "src/main/resources/(?!application.*\\.properties|application.*\\.yml|mapper|static|templates|config).*?/"
message: "【强制】resources 目录下必须包含:配置文件、mapper、static、templates、config 等标准目录"
- id: package-structure
description: 确保包结构符合阿里巴巴Java开发规范
patterns:
- pattern: "src/main/java/[^/]+/[^/]+/api/(?!facade|dto|vo).*?/"
message: "【强制】API 包必须包含:facade(接口)、dto(数据传输)、vo(视图对象)"
- pattern: "src/main/java/[^/]+/[^/]+/service/(?!impl).*?/"
message: "【强制】service 包必须有 impl 子包"
- pattern: "src/main/java/[^/]+/[^/]+/model/(?!entity|dto|vo|param).*?/"
message: "【强制】model 包必须包含:entity、dto、vo、param"
- pattern: "src/main/java/[^/]+/[^/]+/common/(?!annotation|aspect|config|constant|enums|exception|util).*?/"
message: "【强制】common 包必须包含:annotation、aspect、config、constant、enums、exception、util"
- id: file-naming
description: 确保文件命名符合阿里巴巴Java开发规范
patterns:
- pattern: "Controller\\.java$"
message: "【强制】Controller 类必须以 Controller 结尾"
- pattern: "Service\\.java$"
message: "【强制】Service 接口必须以 Service 结尾"
- pattern: "ServiceImpl\\.java$"
message: "【强制】Service 实现类必须以 ServiceImpl 结尾"
- pattern: "Mapper\\.java$"
message: "【强制】Mapper 接口必须以 Mapper 结尾"
- pattern: "Repository\\.java$"
message: "【强制】Repository 接口必须以 Repository 结尾"
- pattern: "(VO|DTO|DO|BO|Query|Param)\\.java$"
message: "【强制】数据对象必须以 VO、DTO、DO、BO、Query、Param 结尾"
- pattern: "Enum\\.java$"
message: "【强制】枚举类必须以 Enum 结尾"
- pattern: "Exception\\.java$"
message: "【强制】异常类必须以 Exception 结尾"
- pattern: "Util\\.java$"
message: "【强制】工具类必须以 Util 结尾"
- pattern: "Constant\\.java$"
message: "【强制】常量类必须以 Constant 结尾"
- pattern: "Config\\.java$"
message: "【强制】配置类必须以 Config 结尾"
- pattern: "Aspect\\.java$"
message: "【强制】切面类必须以 Aspect 结尾"
- id: class-annotation
description: 确保类注释符合阿里巴巴Java开发规范
patterns:
- pattern: "class\\s+[A-Z][a-zA-Z0-9]*(?!.*?/\\*\\*[\\s\\S]*?@author\\s+yangcai[\\s\\S]*?@date\\s+2025-02-10\\s+14:38[\\s\\S]*?@version[\\s\\S]*?\\*/)"
message: "【强制】类必须添加注释,包含 @author yangcai、@date 2025-02-10 14:38、@version 等信息"
- pattern: "interface\\s+[A-Z][a-zA-Z0-9]*(?!.*?/\\*\\*[\\s\\S]*?@author\\s+yangcai[\\s\\S]*?@date\\s+2025-02-10\\s+14:38[\\s\\S]*?@version[\\s\\S]*?\\*/)"
message: "【强制】接口必须添加注释,包含 @author yangcai、@date 2025-02-10 14:38、@version 等信息"
- pattern: "enum\\s+[A-Z][a-zA-Z0-9]*(?!.*?/\\*\\*[\\s\\S]*?@author\\s+yangcai[\\s\\S]*?@date\\s+2025-02-10\\s+14:38[\\s\\S]*?\\*/)"
message: "【强制】枚举必须添加注释,包含 @author yangcai、@date 2025-02-10 14:38 等信息"
- id: database-naming
description: 确保数据库命名符合阿里巴巴Java开发规范
patterns:
- pattern: "CREATE\\s+TABLE\\s+(?![a-z_][a-z0-9_]*\\s)"
message: "【强制】表名必须使用小写字母或数字,禁止出现大写字母,单词间用下划线分隔"
- pattern: "CREATE\\s+TABLE\\s+[a-z_][a-z0-9_]*\\s+\\([^)]*?(?![a-z_][a-z0-9_]*\\s+\\w+)"
message: "【强制】表字段名必须使用小写字母或数字,禁止出现大写字母,单词间用下划线分隔"
- pattern: "CREATE\\s+INDEX\\s+(?![a-z]+_idx\\b)"
message: "【强制】普通索引名称必须以 idx_ 开头"
- pattern: "CREATE\\s+UNIQUE\\s+INDEX\\s+(?![a-z]+_udx\\b)"
message: "【强制】唯一索引必须以 udx_ 开头"
- id: database-field
description: 确保数据库字段设计符合阿里巴巴Java开发规范
patterns:
- pattern: "CREATE\\s+TABLE[^;]*?(?!.*?id\\s+\\w+.*?PRIMARY\\s+KEY)"
message: "【强制】表必须有主键,命名为 id,类型为 bigint 或 unsigned bigint"
- pattern: "CREATE\\s+TABLE[^;]*?(?!.*?(?:create_time|update_time)\\s+datetime)"
message: "【强制】表必须有 create_time、update_time 字段,类型为 datetime"
- pattern: "CREATE\\s+TABLE[^;]*?(?!.*?(?:is_deleted|deleted)\\s+(?:tinyint|bit))"
message: "【强制】表必须有逻辑删除字段,推荐 is_deleted/deleted,类型为 tinyint 或 bit"
- pattern: "CREATE\\s+TABLE[^;]*?\\bvarchar\\s*\\([^)]*?(?:32[1-9]|[4-9]\\d{2}|\\d{4,})"
message: "【强制】varchar 长度不要超过 320,若需要请使用 text 类型"
- pattern: "CREATE\\s+TABLE[^;]*?(?!.*?COMMENT\\s+'[^']+')"
message: "【强制】所有表和字段必须添加注释"
- id: sql-coding
description: 确保SQL编写符合阿里巴巴Java开发规范
patterns:
- pattern: "SELECT\\s+\\*\\s+FROM"
message: "【强制】禁止使用 SELECT * ,必须显式指定查询的字段"
- pattern: "DELETE\\s+FROM[^;]*?(?!.*?WHERE)"
message: "【强制】DELETE 语句必须带 WHERE 条件"
- pattern: "UPDATE\\s+[^;]*?(?!.*?WHERE)"
message: "【强制】UPDATE 语句必须带 WHERE 条件"
- pattern: "IN\\s*\\([^)]*?(?:\\s*,\\s*){999,}"
message: "【强制】IN 条件集合的元素数量不能超过 1000"
- pattern: "INSERT\\s+INTO[^;]*?VALUES\\s*\\([^)]*?(?:\\s*,\\s*){999,}"
message: "【强制】批量插入数据不能超过1000条"
- pattern: "ORDER\\s+BY\\s+RAND\\(\\)"
message: "【强制】禁止使用 ORDER BY RAND()"
- id: mapper-sql
description: 确保Mapper SQL编写符合阿里巴巴Java开发规范
patterns:
- pattern: "<select[^>]*>\\s*SELECT\\s+\\*\\s+FROM"
message: "【强制】MyBatis 中禁止使用 SELECT *,必须显式指定查询的字段"
- pattern: "<(select|update|delete)[^>]*>(?!.*?WHERE)"
message: "【强制】WHERE 条件必须有且不能为空"
- pattern: "<if\\s+test=\"[^\"]*?\\s+==\\s+null\""
message: "【强制】MyBatis 判断相等使用 = 而不是 =="
- pattern: "\\$\\{(?!orderBy)[^}]*\\}"
message: "【强制】禁止使用 ${} 方式引用参数(orderBy 除外),防止 SQL 注入"
- pattern: "<foreach[^>]*>\\s*[^<]*?\\$\\{"
message: "【强制】foreach 循环中不允许使用 ${}"
- id: database-index
description: 确保数据库索引设计符合阿里巴巴Java开发规范
patterns:
- pattern: "CREATE\\s+TABLE[^;]*?\\bBLOB\\b[^;]*?INDEX"
message: "【强制】BLOB 和 TEXT 字段不能建立索引"
- pattern: "CREATE\\s+INDEX[^;]*?\\([^)]*?(?:\\s*,\\s*){5,}"
message: "【强制】单个索引中的字段数不能超过5个"
- pattern: "CREATE\\s+TABLE[^;]*?PRIMARY\\s+KEY[^;]*?(?:\\s*,\\s*){5,}"
message: "【强制】主键索引字段数不能超过5个"
- pattern: "ALTER\\s+TABLE[^;]*?ADD\\s+INDEX[^;]*?\\([^)]*?\\bdatetime\\b"
message: "【强制】不建议在时间字段上建立索引"
- id: transaction-convention
description: 确保事务使用符合阿里巴巴Java开发规范
patterns:
- pattern: "@Transactional(?!\\s*\\([^)]*propagation)"
message: "【强制】事务注解必须指定传播行为"
- pattern: "@Transactional\\s*\\([^)]*?timeout\\s*=\\s*(?:[6-9]\\d{1,}|[1-9]\\d{2,})"
message: "【强制】事务超时时间不能超过50秒"
- pattern: "@Transactional(?!.*?rollbackFor)"
message: "【强制】事务注解必须指定回滚异常类型"
- pattern: "PlatformTransactionManager\\s+\\w+\\s*=[^;]*?DataSourceTransactionManager"
message: "【推荐】使用 TransactionTemplate 而不是 TransactionManager"
3、实现用户管理的功能
数据库使用mysql;用户认证,授权用saToken;接口在线文档使用swagger3,orm框架使用mybatis-plus,采用springboot-validation对controller中请求入参进行校验
实现用户管理模块
用户属性为用户id,用户账号,用户名,密码,企业名称,企业id , 部门名称,用户类型(0:普通用户,1:普通管理员 2:企业管理员 3:超级管理员),是否启用(0:未启用,1:启用),是否删除(0:未删除,1:删除),新增用户id,新增时间,更新用户id,更新时间。生成mysql创建表脚本
实现功能为:
1、用户列表查询,列表展示用户名称,用户账号,公司名称,部门名称,修改人,更新时间,状态,操作(修改用户信息,设置管理员,用户删除) 可以根据用户名,用户账号模糊查询,根据更新时间进行倒叙
2、用户是否启用,在用户列表中有个按钮,对用户进行进行启用,未启用操作
3、修改用户,对用户信息进行修改
4、删除用户,删除用户信息
5、用户注册,对用户信息进行新增

4、mysql数据库连接采用druid连接池,并且给出最优设置的配置

6、对controller生成单元测试类

生成单元测试类


controller接口都测试成功
deepseek-r1大模型(cursor normal模式)
cursor-agent只支持Anthropic models or GPT-4o,则使用cursor-nomal模式
1、修改依赖版本
由于springboot的版本太高,需要把springboot版本调整到2.5.15 ,Java版本调整到1.8

2、添加项目ai规则
在当前项目根目录生成.cursorrules,根据最新的阿里Java开发规范去更新.cursorrulrs,.cursorrules 规范中类的注释,作者用git的用户名,时间为当前时间,.cursorrules 中新增按照最新的阿里规范,对目录结构层次及目录命名,文件命名进行约束,.cursorrules 中新增按照最新的阿里规范,对目录结构层次及目录命名,文件命名进行约束,.cursorrules 中新增按照最新的阿里规范,对数据库使用,操作的规范

.cursorrules文件内容为:
{
"templates": {
"java": {
"class": {
"header": [
"/**",
" * @author ${system:user.name}",
" * @description ${class_doc}",
" * @date ${current_date:yyyy-MM-dd}",
" */"
]
}
}
},
"rules": {
"directory-structure": {
"description": "目录结构规范(基于阿里手册)",
"constraints": [
{
"type": "package",
"pattern": "com.cursor.deepseek.(controller|service|mapper|model|config|util)",
"message": "必须按功能分层:controller/service/mapper分层清晰"
},
{
"type": "package",
"pattern": "^[a-z.]+$",
"message": "包名全小写,使用单数形式"
}
]
},
"naming-convention": {
"description": "命名规范(基于阿里手册V1.7.0)",
"constraints": [
{
"type": "class",
"pattern": "^[A-Z][A-Za-z0-9]*$",
"message": "类名使用UpperCamelCase风格"
},
{
"type": "test-class",
"pattern": "Test$",
"message": "测试类命名以Test结尾"
},
{
"type": "config-file",
"pattern": "^[a-z-]+$",
"message": "配置文件使用kebab-case命名"
}
]
},
"database-rules": {
"description": "数据库操作规范",
"constraints": [
{
"type": "sql-table",
"pattern": "^[a-z_]+$",
"message": "表名全小写,使用下划线分隔"
},
{
"type": "sql-index",
"pattern": "^(idx|uk)_[a-z_]+$",
"message": "索引命名:唯一uk_,普通idx_"
},
{
"type": "sql-query",
"maxJoins": 3,
"message": "禁止超过3表JOIN查询"
}
]
},
"code-style": {
"transactions": {
"annotation": "@Transactional",
"serviceLayerOnly": true
},
"orm-mapping": {
"fieldNaming": "underscore_to_camel_case"
},
"forbidden-operations": [
"SELECT *",
"DELETE_WITHOUT_WHERE"
]
},
"resource-layout": {
"static-resources": "src/main/resources/static",
"mybatis-mappers": "src/main/resources/mapper",
"config-files": "src/main/resources/config"
},
"advanced-rules": {
"model-classes": {
"dto": "model/dto",
"vo": "model/vo",
"param": "model/param"
},
"exception-handling": {
"globalHandler": "exception/GlobalExceptionHandler"
}
}
}
}
3、实现用户管理的功能
数据库使用mysql;用户认证,授权用saToken;接口在线文档使用swagger3,orm框架使用mybatis-plus,采用springboot-validation对controller中请求入参进行校验
实现用户管理模块
用户属性为用户id,用户账号,用户名,密码,企业名称,企业id , 部门名称,用户类型(0:普通用户,1:普通管理员 2:企业管理员 3:超级管理员),是否启用(0:未启用,1:启用),是否删除(0:未删除,1:删除),新增用户id,新增时间,更新用户id,更新时间。生成mysql创建表脚本
实现功能为:
1、用户列表查询,列表展示用户名称,用户账号,公司名称,部门名称,修改人,更新时间,状态,操作(修改用户信息,设置管理员,用户删除) 可以根据用户名,用户账号模糊查询,根据更新时间进行倒叙
2、用户是否启用,在用户列表中有个按钮,对用户进行进行启用,未启用操作
3、修改用户,对用户信息进行修改
4、删除用户,删除用户信息
5、用户注册,对用户信息进行新增

生成的代码中有报错,而且有些类未创建,说明deepseek代码生成能力不如claude
gpt-4o (cursor agent模式)
1、修改依赖版本
由于springboot的版本太高,需要把springboot版本调整到2.5.15 ,Java版本调整到1.8

2、添加项目ai规则
在当前项目根目录生成.cursorrules,根据最新的阿里Java开发规范去更新.cursorrulrs,.cursorrules 规范中类的注释,作者用git的用户名,时间为当前时间,.cursorrules 中新增按照最新的阿里规范,对目录结构层次及目录命名,文件命名进行约束,.cursorrules 中新增按照最新的阿里规范,对目录结构层次及目录命名,文件命名进行约束,.cursorrules 中新增按照最新的阿里规范,对数据库使用,操作的规范

.cursorrules文件内容为:
# .cursorrules
# 类注释规范
# 作者: yangcai
# 创建时间: 2025-02-10
# 目录结构和命名规范
# 1. 目录结构应清晰,层次分明。
# 2. 目录命名应使用小写字母,单词之间用连字符连接。
# 3. 文件命名应使用驼峰命名法。
# 数据库使用和操作规范
# 1. 数据库表名应使用小写字母,单词之间用下划线连接。
# 2. 数据库字段名应使用小写字母,单词之间用下划线连接。
# 3. 禁止直接在代码中拼接SQL语句,使用预编译语句。
3、实现用户管理的功能
数据库使用mysql;用户认证,授权用saToken;接口在线文档使用swagger3,orm框架使用mybatis-plus,采用springboot-validation对controller中请求入参进行校验
实现用户管理模块
用户属性为用户id,用户账号,用户名,密码,企业名称,企业id , 部门名称,用户类型(0:普通用户,1:普通管理员 2:企业管理员 3:超级管理员),是否启用(0:未启用,1:启用),是否删除(0:未删除,1:删除),新增用户id,新增时间,更新用户id,更新时间。生成mysql创建表脚本
实现功能为:
1、用户列表查询,列表展示用户名称,用户账号,公司名称,部门名称,修改人,更新时间,状态,操作(修改用户信息,设置管理员,用户删除) 可以根据用户名,用户账号模糊查询,根据更新时间进行倒叙
2、用户是否启用,在用户列表中有个按钮,对用户进行进行启用,未启用操作
3、修改用户,对用户信息进行修改
4、删除用户,删除用户信息
5、用户注册,对用户信息进行新增


发现脚本文件没有自动创建,实现类没有实现
另外生成的速度有点慢
通义灵码大模型(插件-AI程序员)
1、修改依赖版本

2、添加项目ai规则
在当前项目根目录生成.cursorrules,根据最新的阿里Java开发规范去更新.cursorrulrs,.cursorrules 规范中类的注释,作者用git的用户名,时间为当前时间,.cursorrules 中新增按照最新的阿里规范,对目录结构层次及目录命名,文件命名进行约束,.cursorrules 中新增按照最新的阿里规范,对目录结构层次及目录命名,文件命名进行约束,.cursorrules 中新增按照最新的阿里规范,对数据库使用,操作的规范

3、实现用户管理的功能
数据库使用mysql;用户认证,授权用saToken;接口在线文档使用swagger3,orm框架使用mybatis-plus,采用springboot-validation对controller中请求入参进行校验
实现用户管理模块
用户属性为用户id,用户账号,用户名,密码,企业名称,企业id , 部门名称,用户类型(0:普通用户,1:普通管理员 2:企业管理员 3:超级管理员),是否启用(0:未启用,1:启用),是否删除(0:未删除,1:删除),新增用户id,新增时间,更新用户id,更新时间。生成mysql创建表脚本
实现功能为:
1、用户列表查询,列表展示用户名称,用户账号,公司名称,部门名称,修改人,更新时间,状态,操作(修改用户信息,设置管理员,用户删除) 可以根据用户名,用户账号模糊查询,根据更新时间进行倒叙
2、用户是否启用,在用户列表中有个按钮,对用户进行进行启用,未启用操作
3、修改用户,对用户信息进行修改
4、删除用户,删除用户信息
5、用户注册,对用户信息进行新增

出现两个问题:
没有添加import java.util.Date;导致文件报错

不会自动添加Lombok依赖,代码有报错,程序运行不起来
总结:
cursor agent中用claude大模型 能完美的根据需要需求编写代码,代码调整,没有编译错误,实现类能够生成出来,程序运行成功,接口可正常调用
cursor agent中用gpt大模型 能根据需要需求编写代码,代码调整,没有编译错误,具体的实现类没有生成,需要自己编写,而且生成过程中,有询问,而且回答之后才能走下一步,生成的过程响应比较慢,程序运行成功,接口不可正常调用
cursor normal中用deepseek r1大模型 能根据需要需求编写代码,代码调整,有编译错误,具体的实现类会生成,但部分类没有生成,需要自己编写,程序运行不成功
cursor 中通义千问大模型 能根据需要需求编写代码,代码调整,有编译错误,具体的实现类会生成,有些类的引用不会自动添加,有些依赖没有自动添加,需要自己编写,程序运行不成功
更多推荐
所有评论(0)