这个项目能做什么

gdstyle 是 GDScript(Godot 4.x 游戏引擎使用的脚本语言)的 linter 和格式化工具。它用 Rust 编写,以单个静态二进制文件分发,因此运行它不需要 Python、Rust 工具链或 Godot 安装。 功能 该工具检查 GDScript 文件中的风格违规、命名不一致和常见代码质量问题,并可以重新格式化文件以遵循官方 Godot 风格指南。许多约定来自 GDQuest 的 GDScript 风格指南。它提供 56 条规则,分为五类: - 语法(1 条规则):报告词法错误,例如未终止的字符串或无效数字。 - 命名(11 条规则):强制类和枚举使用 PascalCase,函数、变量、信号和文件名使用 snake_case,常量和枚举成员使用 SCREAMING_SNAKE_CASE,信号名使用过去式,节点路径使用 PascalCase。 - 格式(20 条规则):涵盖行长度、尾随空白和换行、制表符与空格、布尔运算符、引号风格、注释间距、括号、数字字面量、每行一条语句、空行、尾随逗号、运算符/冒号/逗号/大括号间距、调用括号、浮点零、大数字下划线以及枚举布局。 - 排序(1 条规则):强制 Godot 规范类成员顺序,从注解和 class_name 到信号、枚举、常量、变量、虚方法、方法以及内部类。 - 质量(23 条规则):限制函数、文件、参数、嵌套、返回、分支、局部变量、类变量、公共方法和内部类的数量,并检查不必要的 pass、自比较、自赋值、重复字典键、重复 load 调用、不可达代码、循环中的 await、循环中的分配、_process 中的节点查找等。 大多数规则默认以警告严重级别启用。少数建议性规则(类型提示、空函数、调试打印)默认关闭,必须显式启用。 格式化器和自动修复 fmt 子命令就地重新格式化文件,并且是幂等的。它规范化缩进、空白、空行、布尔运算符、引号、注释间距、标点间距、数字字面量和尾随换行,展开单行枚举,重新排序类成员,并在分隔符内的逗号处、条件中的 and/or 处以及注释中的单词边界处换行长行。没有可断行模式的行保持不变。 check 子命令支持 --fix 用于安全修复,--unsafe-fix 用于重命名和重新排序。不安全重命名会传播到其他 .gd 文件以及 .tscn/.tres 场景连接中;任何无法安全重写的内容都会报告为警告。修复会写入磁盘,没有备份或确认,因此 README 建议先提交或暂存。 配置和抑制 配置位于 gdstyle.toml 或 .gdstyle.toml 中,通过向上遍历目录树发现,或使用 --config 传入。设置包括行长度、制表符使用、各种大小限制、排除/包含模式以及按规则覆盖严重级别(off、warn、error)。配置中的未知规则名会在 stderr 上报告。可以使用 # gdstyle:ignore 和 # gdstyle:ignore-file 注释按行或按文件静默诊断,并可选择缩小到特定规则 ID。忽略 member-order 规则还会固定成员,使格式化器不会移动它。 集成 输出可以是文本或 JSON,退出码区分干净运行、lint 错误或超出警告上限以及配置错误。README 记录了 GitHub Actions 用法、pre-commit 钩子(gdstyle 和 gdstyle-fmt)以及一个最小的原始 git 钩子。可选的 Godot 编辑器插件提供底部面板,包含可点击诊断、单击修复以及保存时 lint/format,在可用时使用 GDExtension,否则回退到 CLI 二进制文件。该 crate 也可作为 Rust 库使用。