前言
现在ai发展迅猛,程序员们瑟瑟发抖,各种skll层出不穷,这里简单展示个代码检查的skll,用来动手实践下skll的创建及使用。
环境
trae,java
skll详情
可以使用ai软件辅助创建skll,也可以自己手动创建,我这里主要使用豆包帮忙创建了一个通用的skll。
豆包生成skll的关键词:
编写一个实现检查java代码方法是否有错误,或者性能需要优化,或者编写不规范的功能的skill,用户选中需要检测的方法,自动检测选中的方法,重点检测语法,格式,性能,不需要检测jdk版本,将生成的skill文件下载为md文件
豆包生成的skll:
name: java-method-check
description: 自动检测选中的 Java 代码方法的语法错误、格式不规范、性能优化点。用户选中 Java 方法代码片段并触发(如说 "检测 Java 方法"、"检查代码规范"、"优化 Java 性能"、"Java 方法语法检查")时执行此技能。
Java 方法自动检测
执行步骤
Step 1:信息收集
获取用户选中的 Java 方法代码片段(完整方法体,包含方法签名、注解、代码逻辑)
提取方法核心信息:
方法名、返回值类型、参数列表
所属类名(如用户提供)
方法代码行数、核心逻辑(循环 / IO / 集合操作等关键片段)
向用户确认检测范围(默认全量检测):
plaintext
即将对选中的Java方法执行以下检测,请确认:
\- 检测维度:语法合法性、代码格式规范、性能优化点
\- 方法信息:{方法名}(参数:{参数列表},返回值:{返回值类型})
请回复「确认」开始检测,或「取消」终止。
用户回复「确认」/yes/y/ 好 /ok 等,执行检测;回复「取消」/no/n/ 不等,终止操作。
Step 2:语法合法性检测
检测规则
关键字与语法结构:
检查方法签名语法(修饰符顺序、返回值、方法名、参数括号 / 逗号、抛出异常声明等)
检查方法体内语句结束符(;)、代码块 {} 闭合性、条件 / 循环语句语法(if/for/while/switch 等)
检查变量声明 / 赋值合法性(类型匹配、未定义变量引用、重复定义等)
检查异常处理语法(try-catch-finally 结构、throw/throws 合法性)
检查泛型、Lambda 表达式、Stream API 等语法正确性
执行检测
对选中代码执行语法解析,输出检测结果:
无语法错误:提示「✅ 语法合法性检测通过,未发现语法错误」
存在语法错误:列出错误详情:
plaintext
❌ 语法检测失败,发现以下错误:
1\. 错误位置:第{行号}行
错误类型:{错误类型,如:语句缺少结束符、代码块未闭合、变量未定义}
错误描述:{具体描述,如:"int a = 10 后缺少分号"、"if条件后代码块{}未闭合"}
修复建议:{针对性建议,如:"在第{行号}行末尾添加分号"、"补充闭合大括号"}
2\. ...
Step 3:代码格式规范检测
检测规则(基于阿里巴巴 Java 开发手册核心规范)
命名规范:
方法名:检查是否符合小驼峰(lowerCamelCase),避免下划线 / 拼音 / 无意义命名
参数名:检查是否符合小驼峰,避免单字符(除 i/j/k 等循环变量)
局部变量名:检查命名语义化、小驼峰规范
格式排版:
缩进:检查是否统一(2/4 个空格,禁止 tab),代码块内缩进一致性
空格:运算符两侧、逗号后、大括号前后空格规范
空行:方法内逻辑块之间是否保留空行,避免代码过度紧凑
行长度:单行代码是否超过 120 字符(超长需换行)
编码规范:
避免魔法值(未定义常量的数字 / 字符串直接使用)
集合初始化规范(如 List/Map 初始化是否指定初始容量)
注释规范:关键逻辑是否有注释,注释是否清晰无冗余
修饰符顺序:检查方法修饰符顺序(public/protected/private > static > final > abstract 等)
执行检测
输出格式规范检测结果:
无格式问题:提示「✅ 代码格式规范检测通过,符合 Java 编码规范」
存在格式问题:列出问题详情:
plaintext
⚠️ 格式规范检测发现以下不规范项(非致命,建议优化):
1\. 问题位置:第{行号}行(方法名)
问题类型:{命名不规范/缩进错误/空格缺失等}
问题描述:{具体描述,如:"方法名 getUserInfo 写成了 GetUserInfo(不符合小驼峰)"、"第5行if条件后缺少空格"}
优化建议:{具体建议,如:"将方法名改为 getUserInfo"、"在if(xxx)中括号与条件之间添加空格"}
2\. ...
Step 4:性能优化点检测
检测规则(聚焦方法内性能瓶颈)
循环性能:
检查循环内是否频繁创建对象(如 new ArrayList/StringBuilder/ 自定义对象)
检查循环内是否调用耗时方法(如数据库查询、远程接口调用、IO 操作)
检查集合遍历方式(如 ArrayList 使用 for-i 比 foreach 更高效、避免循环内 list.contains ())
检查无限循环 / 死循环风险(如 while (true) 无退出条件)
集合操作:
检查 HashMap/ArrayList 初始化未指定初始容量(大数据量下扩容损耗)
检查频繁的字符串拼接(未使用 StringBuilder,使用 + 拼接)
检查集合遍历后未关闭迭代器(针对 Iterator)
资源使用:
检查 IO 流 / 数据库连接 / 网络连接在方法内未关闭(try-with-resources 是否使用)
检查同步锁粒度(如方法级 synchronized 是否可改为代码块级)
检查不必要的对象创建(如重复创建相同常量对象、未复用对象)
计算优化:
检查重复计算(如循环内重复调用相同 getter / 计算逻辑,可提取到循环外)
检查未使用的局部变量 / 返回值(资源浪费)
执行检测
输出性能优化建议:
无性能问题:提示「✅ 性能检测通过,未发现明显性能瓶颈」
存在性能优化点:列出优化建议:
plaintext
📌 性能检测发现以下优化点(建议优化以提升执行效率):
1\. 优化位置:第{行号}行(循环内对象创建)
问题描述:{具体描述,如:"for循环内每次迭代都创建new StringBuilder(),会频繁触发GC"}
性能影响:{影响程度,如:"中高(循环次数>1000时明显卡顿)"}
优化方案:{具体方案,如:"将StringBuilder创建移到循环外,循环内复用该对象"}
2\. ...
Step 5:生成检测报告
整合所有检测结果,生成结构化报告:
plaintext
✅ Java方法检测完成!
检测摘要:
\- 检测方法:{方法名}(参数:{参数列表},返回值:{返回值类型})
\- 语法检测:{通过/失败({错误数}个错误)}
\- 格式规范:{通过/不规范({问题数}个问题)}
\- 性能检测:{通过/需优化({优化点数量}个优化点)}
【详细检测结果】
1\. 语法合法性
{语法检测结果,无错误则显示"无语法错误",有错误则列出所有错误}
2\. 代码格式规范
{格式检测结果,无问题则显示"符合编码规范",有问题则列出所有不规范项}
3\. 性能优化建议
{性能检测结果,无优化点则显示"无明显性能瓶颈",有则列出所有优化点}
【整体建议】
{综合建议,如:"1. 优先修复语法错误(共2处);2. 优化格式不规范项(共3处);3. 建议优化循环内对象创建问题,提升方法执行效率"}
重要约束
仅检测用户选中的单个 Java 方法,不扩展到类 / 工程级别
不检测 JDK 版本兼容性、第三方框架 API 使用正确性
语法检测聚焦代码本身合法性,不依赖编译环境(基于语法规则解析)
性能检测仅识别通用性能问题,不针对业务场景做深度优化
所有检测结果需明确标注位置(行号)、问题类型、修复 / 优化建议
检测过程中不修改用户代码,仅输出检测报告和建议
按「语法→格式→性能」顺序串行检测,语法错误不影响格式 / 性能检测(需完整输出所有问题)
触发条件
用户输入包含以下关键词时触发:
"检测 Java 方法"
"检查代码规范"
"优化 Java 性能"
"Java 方法语法检查"
"Java 代码格式检测"
"Java 方法性能分析"
trae添加skll
方式一:对话创建(推荐新手)
在 TRAE 的聊天界面直接输入自然语言指令,例如:“帮我创建一个生成 PPT 的 Skill”
TRAE 会自动调用内置的 Skills-creator 生成对应的 SKILL.md 文件,确认后即可使用
方式二:手动导入(适合复用社区技能)
从 GitHub 等平台下载现成 Skill(如 Anthropic 官方库或 Obsidian 技能包)
在 TRAE 中进入:设置 → 规则和技能 → 技能 → 创建。
选择“上传进行智能解析”,上传包含 SKILL.md 的 .zip 或 .skill 文件即可
方式三:直接填写创建(适合自定义基础技能)进入 设置 → 规则和技能 → 技能。
点击“创建”,填写 名称、描述、指令(Prompt),点击“确认”即完成
skll使用
鼠标选中需要检查的代码,然后在chat对话框输入提示语
直接输入触发词:
检测 Java 方法/检查代码规范/优化 Java 性能/Java 方法语法检查带指令的完整输入:
帮我检测选中的这个Java方法,包含语法、格式和性能优化点
效果

总结
生活和工作都如逆水行舟,你不卷就被别人卷死,只有不断学习才能不被淘汰~


5251

被折叠的 条评论
为什么被折叠?



