ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

零Rust代码支持新语言:用tree-sitter插件为sentrux添加第53种语言的完整开发指南

零Rust代码支持新语言:用tree-sitter插件为sentrux添加第53种语言的完整开发指南 零Rust代码支持新语言用tree-sitter插件为sentrux添加第53种语言的完整开发指南【免费下载链接】sentruxReal-time architectural sensor that helps AI agents close the feedback loop, enabling recursive self-improvement of code quality. Pure Rust.项目地址: https://gitcode.com/gh_mirrors/se/sentruxsentrux是一款实时架构传感器用纯 Rust 编写的单一二进制即可扫描项目结构、计算 0–10000 的架构健康分并帮助 AI Agent 形成代码质量改进的反馈闭环。它内置 52 种语言支持而最巧妙的设计是二进制里没有任何语言知识——所有语言都来自 tree-sitter 插件。这意味着你不需要写一行 Rust就能为 sentrux 添加第 53 种语言。本文就是这份完整开发指南。一、先懂原理零Rust代码的插件架构如何实现sentrux 把二进制做成了一个通用平台语言识别、结构提取、语义规则全部外置到插件文件里。运行时加载器从~/.sentrux/plugins/语言名/发现插件动态加载编译好的语法库注册进全局语言注册表详见 sentrux-core/src/analysis/plugin/mod.rs。启动时插件会经历严格校验解析清单、编译查询、校验 ABI 版本、测试编译语法实现见 sentrux-core/src/analysis/plugin/loader.rs。任何一步失败插件被跳过并记录日志绝不影响其他语言——这就是零 Rust 代码背后的稳定性。二、插件解剖3个文件必须掌握的插件三件套一个语言插件就是一个目录只有三类文件文件作用plugin.toml清单扩展名、语法来源、能力声明、语义规则queries/tags.scmtree-sitter 查询从语法树中提取函数、类、importgrammars/平台.so编译后的 tree-sitter 语法动态库以官方 Python 插件为例plugins/python/plugin.toml 只需声明extensions [py]、语法来源与capabilities [functions, classes, imports]而 plugins/python/queries/tags.scm 用几行 S 表达式就能捕获类定义、函数定义和 import 语句。社区插件同样轻量比如 plugins/gdscript/plugin.toml 甚至附带了 plugins/gdscript/tests/sample.gd 测试样本。三、4步实操从零到加载你的新语言第1步生成插件模板一条命令 scaffold 出完整目录结构模板生成逻辑在 sentrux-bin/src/main_impl.rssentrux plugin init my-lang它会在~/.sentrux/plugins/my-lang/下创建grammars/、queries/、tests/目录并写入带 TODO 提示的 [plugin.toml] 骨架和 tags.scm 注释。第2步编辑 plugin.toml 清单把extensions改成真实扩展名不带点填写该语言 tree-sitter 语法仓库地址确认abi_version 14与语法库匹配。清单字段的完整定义参见 sentrux-core/src/analysis/plugin/manifest.rs。第3步编译语法库拉取该语言的 tree-sitter 语法仓库在仓库目录内执行tree-sitter generate cc -shared -o grammars/linux-x86_64.so src/parser.cmacOS 输出darwin-arm64.dylibWindows 输出.dll——文件名由平台决定清单会自动校验。第4步编写 tags.scm 查询这是唯一需要写代码的环节但只是声明式查询。模板注释里已给出必需捕获func.def/func.name函数、class.def类、import.path导入若声明了calls能力还需call.name。清单校验器会逐一核对能力与捕获是否匹配见 manifest.rs 中的validate_query_captures。四、plugin validate一键自检你的新插件写完不用猜直接验证sentrux plugin validate ~/.sentrux/plugins/my-lang sentrux plugin listvalidate会输出清单解析结果、捕获匹配情况和语法库是否存在list则显示最终加载成功的所有插件及版本号。能出现在 list 里说明你的第 53 种语言已经正式接入。五、进阶用 [semantics] 打磨语言专属语义想要更精细的分析可在 plugin.toml 中配置[semantics]段可选有默认值测试识别test_prefixes [test_]、test_dir_prefixes [tests/]让 sentrux 认出测试文件喂给测试缺口分析复杂度计算branch_nodes/nesting_nodes指定该语言里哪些节点计入圈复杂度Python 插件的完整示例见 plugins/python/plugin.toml 第 61–69 行项目约定manifest_files如pyproject.toml、ignored_dirs如venv、node_modules排除噪音目录入口识别entry_point_patterns如__main__帮助定位程序入口。这些字段全部集中在 plugins/python/plugin.toml 中是现成的抄写模板——照着改成你语言的答案即可。写在最后你的语言你的插件整个流程回顾plugin init生成模板 → 改清单 → 编译语法 → 写查询 →plugin validate验收。全程0 行 Rust却能让 sentrux 的实时 treemap、健康分和规则引擎立刻理解你的新语言。想参考更多语言插件的写法plugins/ 目录里 52 个官方插件都是开源范本。【免费下载链接】sentruxReal-time architectural sensor that helps AI agents close the feedback loop, enabling recursive self-improvement of code quality. Pure Rust.项目地址: https://gitcode.com/gh_mirrors/se/sentrux创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表