news 2026/4/17 19:58:14

IRIS 代码格式化 Skill 使用说明

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
IRIS 代码格式化 Skill 使用说明

文章目录

  • IRIS 代码格式化 Skill 使用说明
    • 一、安装方法
      • 方式1:通过 WorkBuddy 安装(推荐)
      • 方式2:通过 OpenClaw/ClawHub 安装
      • 方式3:clawhub 下载
    • 二、使用方法
      • 触发方式
      • 使用示例
    • 代码审查报告
      • 问题汇总
      • 详细问题分析
        • 1. 方法大括号格式问题
        • 2. 运算符空格问题
        • 3. 参数命名问题
        • 4. 条件后置表达式空格问题
        • 5. 字符串拼接字段数超限
        • 6. 方法头注释不规范
      • 修正后完整代码
    • 三、规范速查表
      • 命名规范
      • 命令/函数缩写
      • 格式规范
    • 四、输出说明
      • 审查报告结构

IRIS 代码格式化 Skill 使用说明


一、安装方法

方式1:通过 WorkBuddy 安装(推荐)

  1. iris-code-formatter文件夹复制到 WorkBuddy skills 目录:
    Windows: C:\Users\<用户名>\.workbuddy\skills\

或直接如图直接上传

  1. 重启 WorkBuddy 或重新加载技能

方式2:通过 OpenClaw/ClawHub 安装

npx clawhubinstalliris-code-formatter--workdir<目标路径>--no-input

方式3:clawhub 下载

  • https://clawhub.ai/yaoxin521123/iris-code-formatter

二、使用方法

触发方式

在对话中直接提供 IRIS ObjectScript 代码,Skill 会自动激活并执行代码审查。

触发关键词:

  • “格式化这段IRIS代码”
  • “检查这段代码是否符合规范”
  • “审查ObjectScript代码”
  • “修正代码风格问题”
  • “按照IRIS规范格式化”

使用示例

输入:

Class Util.Encryption.SM3 Extends %RegisteredObject { ClassMethod HMAC(key As %Stream.GlobalCharacter, text As %Stream.GlobalCharacter) { s keyStream=..UTF8(key) s keyPadding=..KeyPadding(keyStream) q ..Str2Hex(hmacByte) } ... } 使用iris-code-formatter技能

输出:

  • 修正前代码

  • 修正后代码


以下是输出内容:



代码审查报告

问题汇总

类别问题严重程度
方法大括号方法大括号应换行显示⚠️ 警告
空格规范运算符两侧缺少空格⚠️ 警告
注释格式方法头注释不规范⚠️ 警告
变量命名参数命名未使用lowerCamelCase⚠️ 警告
条件后置表达式括号内空格使用错误⚠️ 警告
字符串拼接单行字段数超过限制⚠️ 警告

详细问题分析

1. 方法大括号格式问题

位置: 所有方法问题: ObjectScript方法大括号应换行显示

// 错误 ClassMethod OrderDetailGrpExecute(...) As %Status { s repid=$I(^CacheTemp) // 正确 ClassMethod OrderDetailGrpExecute(...) As %Status { s repid = $I(^CacheTemp)
2. 运算符空格问题

位置: 全局问题:=+-等运算符左右应加空格

// 错误 s repid=$I(^CacheTemp) s qHandle=$lb(0,repid,0) s ind=1 // 正确 s repid = $I(^CacheTemp) s qHandle = $lb(0, repid, 0) s ind = 1
3. 参数命名问题

位置: 所有Query参数问题: 参数应使用lowerCamelCase

// 错误 Query OrderDetailGrp(Oeori = "", Oeore = "", DspId = "", ProCode = "") // 正确 Query OrderDetailGrp(oeori = "", oeore = "", dspId = "", proCode = "")
4. 条件后置表达式空格问题

位置: OrderDetailGrpExecute, TimeLineExecute等问题: 括号内部条件运算符两侧有空格,但括号与逻辑运算符之间不应有空格

// 错误 i Oeore'="" s Oeori=$p(Oeore,"||",1,2) e i DspId'="" s Oeori=$p($g(^DHCOEDISQTY(DspId)),"^",1) q:Oeori="" $$$OK // 正确 i (oeore '= "") s oeori = $p(oeore, "||", 1, 2) e i (dspId '= "") s oeori = $p($g(^DHCOEDISQTY(dspId)), "^", 1) q:(oeori = "") $$$OK
5. 字符串拼接字段数超限

位置: 多处问题: 单行字符串拼接超过5个字段

// 错误 s data = $lb(locDesc, qtyWithUom) // 建议保持现状($lb函数本身是内置函数调用)
6. 方法头注释不规范

位置: 所有方法问题: 缺少规范的docstring注释

// 错误 Query OrderDetailGrp(Oeori = "", ...) As websys.Query(...) // 正确 /// Desc: 医嘱明细,注意区分门诊住院 /// Output: 两列属性以及值 /// w ##class(%ResultSet).RunQuery("PHA.COM.Query","OrderDetailGrp","41||77") Query OrderDetailGrp(oeori = "", ...) As websys.Query(...)

修正后完整代码

以下是按照IRIS代码规范修正后的完整代码:

/// Desc: 医嘱明细,注意区分门诊住院 /// Output: 两列属性以及值 /// w ##class(%ResultSet).RunQuery("PHA.COM.Query","OrderDetailGrp","41||77") Query OrderDetailGrp(oeori = "", oeore = "", dspId = "", proCode = "") As websys.Query(ROWSPEC = "group,field1,value1,field2,value2") [ SqlProc ] { } ClassMethod OrderDetailGrpExecute(ByRef qHandle As %Binary, oeori = "", oeore = "", dspId = "", proCode = "") As %Status { s repid = $I(^CacheTemp) s qHandle = $lb(0, repid, 0) s ind = 1 #; 处理入参转换 i (oeore '= "") s oeori = $p(oeore, "||", 1, 2) e i (dspId '= "") s oeori = $p($g(^DHCOEDISQTY(dspId)), "^", 1) q:(oeori = "") $$$OK s ordId = +oeori s ordItm = $p(oeori, "||", 2) s dspId = $o(^DHCOEDISQTY(0, "OEORI", oeori, "")) s admId = $p($g(^OEORD(ordId)), "^", 1) q:(admId = "") $$$OK s patId = $p(^PAADM(admId), "^", 1) s admType = $p(^PAADM(admId), "^", 2) s OEORDI1 = $g(^OEORD(ordId, "I", ordItm, 1)) s OEORDI2 = $g(^OEORD(ordId, "I", ordItm, 2)) s OEORDI3 = $g(^OEORD(ordId, "I", ordItm, 3)) s OEORDI5 = $g(^OEORD(ordId, "I", ordItm, 5)) s OEORDI6 = $g(^OEORD(ordId, "I", ordItm, 6)) s OEORDI9 = $g(^OEORD(ordId, "I", ordItm, 9)) s OEORDI11 = $g(^OEORD(ordId, "I", ordItm, 11)) s OEORDIDHC = $g(^OEORD(ordId, "I", ordItm, "DHC")) ...


三、规范速查表

命名规范

类型规则正确示例错误示例
变量名lowerCamelCasestartDatestartdate
常量全大写MAXCOUNTMaxCount
布尔变量Flag后缀dispFlagisDisp
方法名UpperCamelCaseGetName()getname()
布尔方法Is开头IsExist()GetExistFlag()

命令/函数缩写

类型全拼缩写
命令set/do/quits/d/q
命令for/whilefor/while(全拼)
函数e x t r a c t / extract/extract/piece/$lengthe / e/e/p/$l
函数z c o n v e r t / zconvert/zconvert/zhexz c v t / zcvt/zcvt/zh

格式规范

场景正确错误
运算符空格a = ba=b
后置表达式q:(info = "")q:info=""
多条件后置q:(a = "")&&(b = "")q:(a = "") && (b = "")
else格式} else {}\nelse {

四、输出说明

审查报告结构

## 代码审查报告 ### 问题汇总 - [严重] 问题1描述(行号) - [警告] 问题2描述(行号) ### 详细说明 #### 1. 变量命名问题 **位置**:第X行 **问题**:描述 **规范依据**:引用具体规则 **建议修正**:代码示例 ### 修正后完整代码 ```objectscript // 完整的修正后代码
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/17 19:53:18

儿童护眼大路灯哪个牌子好用?全网高赞的护眼大路灯十大品牌排行

护眼大路灯通过上下发光能够呈现出舒适且接近太阳光的光线&#xff0c;这样也伴随着护眼落地灯迅速得到众多人的认可火爆市场&#xff0c;护眼灯品牌越来越多&#xff0c;质量参差不齐&#xff0c;存在着一些可能会造成刺眼、眩光以及频闪的劣质护眼灯&#xff0c;所以我们不能…

作者头像 李华
网站建设 2026/4/17 19:47:25

从CT扫描到雷达成像:聊聊BP算法背后的思想与实战应用场景

从CT扫描到雷达成像&#xff1a;BP算法的跨学科智慧与工程实践 在医学影像与雷达成像这两个看似毫不相关的领域之间&#xff0c;隐藏着一段鲜为人知的技术迁移史。1970年代&#xff0c;当计算机断层扫描&#xff08;CT&#xff09;技术刚刚兴起时&#xff0c;谁曾想到它的核心算…

作者头像 李华
网站建设 2026/4/17 19:45:29

Python实战:不用NumPy也能搞定高斯拟合?手写算法全解析

Python实战&#xff1a;不用NumPy也能搞定高斯拟合&#xff1f;手写算法全解析 高斯分布&#xff08;正态分布&#xff09;在数据分析和信号处理中无处不在&#xff0c;但大多数教程都直接调用NumPy或SciPy的现成函数。今天我们要做点不一样的——仅用Python标准库和基础数学知…

作者头像 李华
网站建设 2026/4/17 19:45:20

避开S7-300硬件组态三大坑:从DI/DO到AI/AO模块的地址分配实战心得

S7-300硬件组态避坑指南&#xff1a;从地址分配到模块替换的实战经验 第一次在产线调试S7-300时&#xff0c;我盯着STEP7里那片红色报错提示发呆了半小时——明明按照手册步骤操作&#xff0c;为什么AI模块的数值死活读不上来&#xff1f;后来才发现是地址分配时忽略了模拟量和…

作者头像 李华