用提示词锁定技术栈与编码规范
方法一:在个人规则中固化基础约束
点击右下角通义灵码图标 → 设置 → 个人规则 → 添加规则 → 规则内容填入:【你是一名拥有5年Spring Boot微服务开发经验的工程师,使用Java 17、Spring Boot 3.3、MyBatis-Plus 4.3,禁用Lombok,所有DTO必须实现Serializable,Controller层统一返回Result
这一步是基础配置。否则通义灵码会按照通用Java模板生成代码——例如使用var声明变量、用record定义DTO、返回Map或void,这些在你项目中要么编译失败,要么被CI直接拦截。
方法二:在对话中动态叠加场景约束
当你需要生成特定功能时,在提问前添加一句精准限定:“基于上述规范,为订单取消功能编写Service方法,要求包含幂等校验、状态机判断、异步发消息三步逻辑,不涉及DAO层。”
注意:这句话必须紧接在上一条规则之后,中间不能空行,否则上下文会断裂。
让通义灵码理解你的项目结构
第一步:确保项目已完整索引
打开IDEA → 右侧通义灵码图标 → 查看状态栏是否显示“索引完成(XX个文件)”。若显示“索引中…”或数字过少(如<50),说明它尚未完成代码读取。
此时不要急于生成代码,先手动触发全量索引:点击图标 → “重新索引项目” → 等待进度条走完。索引不完整会导致它无法识别自定义枚举、全局异常类、统一返回包装类,从而生成类型错误或硬编码字符串。
第二步:主动提供关键上下文片段
选中你要生成代码的位置 → 按Alt+L唤出对话框 → 输入:“参考UserServiceImpl.java第87–95行的事务处理模式,为新接口addUserTag编写相同风格的Service方法。”
通义灵码会提取该段代码的try-catch结构、@Transactional注解粒度、日志写法,并复用到新方法中。不提供这个参照点,它可能使用@Transactional(rollbackFor = Exception.class)这类宽泛写法,而你的项目仅允许rollbackFor = BusinessException.class。
第三步:对生成结果做轻量级验证
代码生成后,立即检查三处:① 是否调用了项目中已有的工具类(如DateUtils、JsonUtils)而非自行重写;② 异常是否抛出BizException而非RuntimeException;③ 日志是否使用logger.error("msg", e)而非e.printStackTrace()。
发现任何不符,立即右键该段代码 → “通义灵码 → 重构代码” → 输入:“按项目日志规范修正异常打印方式”,它会自动替换。
设置安全过滤器防止低质输出
管理员已在通义灵码控制台启用安全过滤器,但开发者需要确认本地插件已同步生效:
进入IDEA → File → Settings → Plugins → 找到“Tongyi Lingma” → 点击齿轮图标 → “配置策略” → 确认“禁止生成硬编码密码、禁止输出System.out.println、禁止使用Thread.sleep模拟延时”三项已勾选。
【若此处未勾选,通义灵码可能在生成测试代码时直接写入new Thread(() -> { Thread.sleep(2000); }).start();,这类代码会被SonarQube标记为严重缺陷】
验证方法:在对话框输入“写一个延迟两秒再打印hello的测试方法”,如果返回结果包含sleep或wait,说明过滤器未生效,需要联系管理员检查策略同步状态。
用代码审查功能反向强化质量标准
选中一段已有代码 → 右键 → “通义灵码 → 代码审查” → 等待分析完成。
它会指出诸如“缺少空指针校验”“SQL拼接存在注入风险”“方法超过20行建议拆分”等潜在问题。
将审查报告中最常出现的前三类问题,反向写入你的个人规则中。例如报告频繁提到“未校验参数非空”,就在规则中追加一句:“所有Controller层入参DTO必须在@Valid校验后,对关键字段做非空断言。”
这比单纯查看报告更有效——下次生成新接口时,通义灵码会主动插入Assert.notNull(userId, "用户ID不能为空")这类语句,而不是等待人工补充。
