Install
openclaw skills install iris-code-formatter对InterSystems IRIS/Cache ObjectScript代码进行格式化检查、审查和自动修正。 当用户需要格式化IRIS代码、检查代码规范合规性、审查代码质量或修正不符合规范的代码时触发此技能。 支持变量命名、方法命名、锁、事务、陷阱、格式、空行、注释等多个维度的规范检查。
openclaw skills install iris-code-formatter本技能基于作者总结的IRIS代码规范,提供ObjectScript代码的格式化、审查和修正能力。涵盖变量命名、方法命名、锁、事务、陷阱、格式、空行、注释等多个维度,确保代码风格统一、可读性强、维护性高。
该技能的作者: 姚鑫
作者邮箱: 454115408@qq.com
当用户提出以下请求时激活此技能:
$、#等特殊符号开始或结束lowerCamelCase^CacheTemp*,不允许有其它的命名。旧命名方式以^TEMP*、^Temp*、^temp*、^TMP*、^Tmp*、^tmp*、开头的均不合法。^||TMP,节点必须携带pidis开头,使用Flag后缀(如dispFlag)表ID + Data方式(如bisData)i,长度用lenm前缀(如mExecute)SQLCODE)ret,禁止使用err%z开头.inc文件通用变量加前缀标识UpperCamelCaseIs开头,加As %Boolean,正向描述(存在返回$$$YES)Query,获取数据用Get&sql()),SQL语句应当单独建立类来保存负数^错误信息..RetFail("错误信息")$$$ERROR($$$GeneralError,"错误信息")+、-严格控制,必须成对出现+,否则导致解锁进程内所有锁:3),避免死锁^产品组代码(产品线,规范代码:唯一标识)ts、tc、tro位置保持近距离,在一屏幕范围内ts、tc、tro)ts、tc首尾添加空行或注释Not ProcedureBlock类陷阱名称统一为Err + 方法名Error$zt = ""避免死循环$tl > 0时执行tro避免开放性事务lock避免开放锁=、+、-、*、/、_、:)左右加空格for、while外)$e, $p, $l, $o等)%ArrayOfDataTypes或JSON,不建议字符串拼接系统命令缩写规则:
for、while 、if 、elseif、else、continue 命令使用全拼(语义明确,表示循环结构)| 全拼 | 缩写 | 说明 |
|---|---|---|
| set | s | 赋值 |
| do | d | 执行 |
| quit | q | 退出/返回 |
| break | b | 跳出循环 |
| kill | k | 删除变量 |
| new | n | 新建变量 |
| write | w | 输出 |
| read | r | 读取 |
| tstart | ts | 事务开始 |
| tcommit | tc | 事务提交 |
| trollback | tro | 事务回滚 |
| lock | l | 加锁 |
| open | o | 打开设备 |
| close | c | 关闭设备 |
| use | u | 使用设备 |
| hang | h | 暂停 |
| job | j | 启动作业 |
| merge | m | 合并 |
系统函数缩写规则:
| 全拼 | 缩写 | 说明 |
|---|---|---|
| $extract | $e | 提取子串 |
| $piece | $p | 按分隔符提取 |
| $length | $l | 获取长度 |
| $order | $o | 遍历global |
| $get | $g | 安全获取值 |
| $data | $d | 判断变量是否存在 |
| $find | $f | 查找子串 |
| $ascii | $a | 获取ASCII码 |
| $char | $c | ASCII转字符 |
| $translate | $tr | 字符替换 |
| $justify | $j | 格式化对齐 |
| $zboolean | $zb | 位运算 |
| $zconvert | $zcvt | 编码转换 |
| $zhex | $zh | 十六进制转换 |
| $zdate | $zd | 日期格式化 |
| $ztime | $zt | 时间格式化 |
| $ztimestamp | $zts | 时间戳 |
| $increment | $i | 自增 |
| $random | $r | 随机数 |
| $stack | $st | 堆栈信息 |
{}和.同时出现,推荐使用块级语法if语句都要换行写if嵌套不宜过多,建议不超过3层if else考虑用$case替换&&、||for、while而非f、w)continue: q: 后的条件):括号内部的条件运算符两侧加空格,括号与&&/||之间不加空格。例如:
q:(inci = "")&&(arcim = "")&&(phcdf = "") - 括号内=两侧有空格,括号与&&之间无空格q:(inci = "") && (arcim = "") && (phcdf = "") - 括号与&&之间有空格,会导致编译错误} else { 不换行,写在同一行#; 规则#;,句尾注释用//////// desc: 类用途描述
/// author:姓名全拼
/// date:YYYY-MM-DD
Class XXX.XXX
/// desc: 方法描述
/// author: 姓名
/// createDate: YYYY-MM-DD
/// params: 参数说明
/// return: 返回值说明
/// version: 版本
/// modify: 修改记录
/// debug: 调试方法
执行以下步骤审查和修正代码:
多条件后置表达式必须严格遵守以下格式:
; 正确格式 - 括号内运算符两侧加空格,括号与&&之间不加空格
continue:(hospId '= "")&&(hospId '= ($p(^CTLOC(locId),"^",22)))
q:(inci = "")&&(arcim = "")&&(phcdf = "")
; 错误格式 - 会导致IRIS编译错误
continue:(hospId '= "") && (hospId '= ($p(^CTLOC(locId),"^",22)))
q:(inci = "") && (arcim = "") && (phcdf = "")
修正逻辑:
q: continue: b: 等命令后的条件)(条件)(a = "") (b <= 0)&&/||之间绝对不能加空格:)&&( 不是 ) && (for、while、if、elseif、else、continue 使用全拼s/d/q/b/k/n/w/r/ts/tc/tro/l/o/u/h/j/m使用缩写形式:$e/$p/$l/$o/$g/$d/$a/$c/$tr/$j/$zb/$zcvt/$zh
审查结果应包含:
## 代码审查报告
### 问题汇总
- [严重] 问题1描述(行号)
- [警告] 问题2描述(行号)
### 详细说明
#### 1. 变量命名问题
**位置**:第X行
**问题**:描述
**规范依据**:引用具体规则
**建议修正**:
// 修正后的代码
#### 2. 方法命名问题
...
### 修正后完整代码
**IMPORTANT**: 必须输出完整的修正后代码,不要省略任何部分。将用户提供的完整代码按照规范修正后全部输出。
// 完整修正后的代码(必须包含所有方法,不得省略)
| 类别 | 规则 | 正确示例 | 错误示例 |
|---|---|---|---|
| 变量名 | lowerCamelCase | startDate | startdate |
| 常量 | 全大写 | MAXCOUNT | MaxCount |
| 布尔变量 | Flag后缀 | dispFlag | isDisp |
| 方法名 | UpperCamelCase, 动宾结构 | GetName() | getname() |
| 布尔方法 | Is开头 | IsExist() As %Boolean | GetExistFlag() |
| 事务 | 简写小写 | ts / tc | TSTART |
| 锁 | 带+/-和超时 | l +^XXX:3 | l ^XXX |
| 注释符 | #; 或 // | #; 说明 | ; 说明 |
| 空格 | 运算符两侧 | a = b | a=b |
| 命令 | 除for/while外使用缩写 | s, d, q, for | set, do, quit, f |
| 系统函数 | 使用缩写 | $e, $p, $l, $o | $extract, $piece, $length, $order |
| 逻辑运算 | && || | (a)&&(b) | a,b |
| 后置表达式 | 括号内空格,括号外无空格 | q:(a = "")&&(b = "") | q:(a = "") && (b = "") |
references/代码规范 - 变量.mdreferences/代码规范 - 方法.mdreferences/代码规范 - 格式.mdreferences/代码规范 - 空行.mdreferences/代码规范 - 事务.mdreferences/代码规范 - 锁.mdreferences/代码规范 - 陷阱.mdreferences/代码规范 - 注释.md