SuperAPI AI 工具集

move-code-quality

编程与开发

查看项目

更新于 10-15 08:33

技能介绍

用途

Move Code Quality Checker 是一个面向 Move 语言的代码审查技能,依据官方 Move Book 代码质量检查清单,对 Move 包进行分析,并提供具体、可操作的反馈,重点基于现代 Move 2024 Edition 最佳实践。

何时使用

当用户要求“检查 Move 代码质量”“审查 Move 代码”或“分析 Move 包”时激活;当用户提到 Move 2024 Edition 合规性时;当工作目录包含 .move 文件或 Move.toml 时;当用户要求对照 Move 检查清单审查代码时。

分析流程

阶段一:发现

检测 Move 项目结构:在当前目录查找 Move.toml;使用 glob 模式查找所有 .move 文件;识别测试模块(文件名或模块名带 _tests 后缀)。读取 Move.toml:检查 edition 指定;审查依赖(Sui 1.45+ 应为隐式);检查命名地址是否有合适前缀。理解范围:询问用户是要全包扫描还是特定文件/类别分析;确定是新代码审查还是既有代码审计。

阶段二:系统分析

按 11 个类别、50 多条具体规则分析代码:

  1. 代码组织:使用 Move Formatter,检查代码格式是否一致,推荐格式化工具(CLI、CI/CD 集成、VSCode/Cursor 插件)。

  2. 包清单(Move.toml):使用正确 Edition,必须有 edition = "2024.beta" 或 edition = "2024",缺失为关键问题;Sui 1.45+ 使用隐式框架依赖,不应在 [dependencies] 中显式列出 Sui、Bridge、MoveStdlib、SuiSystem;命名地址加前缀,如 my_protocol_math = "0x0" 优于 math = "0x0"。

  3. 导入、模块与常量:使用模块标签现代语法 module my_package::my_module; 而非花括号;use 语句中不单独使用 Self;用 Self 分组 use 语句;错误常量用 EPascalCase;普通常量用 ALL_CAPS。

  4. 结构体:能力结构体以 Cap 结尾;名称中不含 Potato;事件用过去式命名;动态字段键使用位置结构体。

  5. 函数:不用 public entry,改用 public 或 entry;为 PTB 编写可组合函数;对象参数优先(Clock 除外);能力参数放第二位;getter 以字段名命名,可变访问器加 _mut。

  6. 函数体:常见 Coin 操作使用方法链;不导入 std::string::utf8;UID 有 delete 方法;Context 有 sender() 方法;Vector 有字面量与关联函数;集合支持索引语法。

  7. Option 宏:使用 do! 销毁并调用函数;使用 destroy_or! 带默认值销毁。

  8. 循环宏:使用 do! 执行 N 次;使用 tabulate! 从迭代创建向量;使用 do_ref! 对每个元素操作;使用 destroy! 销毁向量并调用函数;使用 fold! 折叠向量为单值;使用 filter! 过滤元素。

  9. 其他改进:解包时用 .. 忽略值。

  10. 测试:合并 #[test] 与 #[expected_failure];expected_failure 测试不做清理;测试函数不加 test_ 前缀;不必要时不用 TestScenario;assert! 中不用 abort 码;尽可能用 assert_eq!;使用“黑洞”destroy 函数。

  11. 注释:文档注释以 /// 开头;复杂逻辑需要注释。

阶段三:报告

以固定格式呈现发现:摘要(通过/建议改进/关键问题数量);关键问题(优先修复);重要改进;推荐增强;后续步骤。

阶段四:交互式审查

呈现发现后:提供自动修复选项;对特定项目提供详细解释;按需展示 Move Book 更多示例;可深入分析特定类别。

指南

具体:始终包含文件路径与行号。展示示例:包含坏与好的代码片段。解释原因:不只说错,还解释修复的好处。优先级:区分关键(Move 2024 必需)与推荐改进。鼓励:肯定做得好的地方。引用来源:相关时链接 Move Book 检查清单。保持最新:所有建议基于 Move 2024 Edition 标准。格式正确:各字段之间始终加空行。

示例交互

用户:“检查这个 Move 模块的质量问题”——读取文件,按 11 个类别分析,呈现组织好的发现。用户:“这个函数签名正确吗?”——检查参数顺序、可见性修饰符、可组合性、getter 命名。用户:“审查我的 Move.toml”——检查 edition、依赖、命名地址前缀。用户:“我的测试有什么问题?”——检查测试属性、命名、断言、清理、TestScenario 使用。

重要说明

所有功能需要 Move 2024 Edition,这是首先要检查的关键点。Sui 1.45+ 改变了依赖管理,无需显式框架依赖。可组合性很重要,优先返回值的 public 函数而非仅 entry。现代语法:方法链、宏、位置结构体更受推荐。测试:使用最简单可行的方法,避免过度工程。

参考

Move Book 代码质量检查清单:https://move-book.com/guides/code-quality-checklist/。Move 2024 Edition:所有建议均假设此版本。Sui Framework:Sui 区块链开发的现代模式。