主要观点:正在为 Sql 编写分析工具sqleibniz
,特别是针对 sqlite 方言,目标是进行静态分析,包括语法检查等,还想为用户提供高质量错误消息等,完成静态分析后计划写 lsp 服务器;将sqleibniz
的配置从leibniz.toml
文件改为 Lua 脚本,通过提供 Lua 钩子数组来扩展sqleibniz
,可配置禁用规则和自定义规则,Lua 配置在 Rust 应用中有用,创建了等价的数据结构Config
,使用mlua
包进行 Rust 类型和 Lua 类型的转换,实现了从 Lua 值到mlua::Function
的转换及调用,展示了如何在 Rust 和 Lua 之间传递和处理数据结构,将 Lua 脚本中的字段用于实际操作等。
关键信息:
sqleibniz
目标:静态分析 Sql 输入,包括语法等检查,结合运行时和断言条件提供良好开发体验,后续写 lsp 服务器。- 配置切换:从
leibniz.toml
到 Lua,Lua 可编写插件等,提供禁用规则和钩子数组。 - Rust 与 Lua 转换:使用
mlua
包的FromLua
和IntoLua
traits 进行转换,处理各种类型的转换。 - 调用 Lua 函数:在 Rust 中调用 Lua 函数并提供所需上下文,
HookContext
结构用于传递上下文。 - 整合示例:展示配置读取、Lua 脚本执行、获取配置并处理钩子等的完整示例,处理配置无效等情况。
重要细节:
leibniz.toml
示例文件内容及禁用规则说明。- Lua 钩子示例,如检查标识符大小写和长度。
Config
结构体包含禁用规则和钩子。mlua
包的特性及使用方式。Hook
结构体及相关实现。HookContext
结构及实现IntoLua
trait。- 完整示例代码的各步骤及处理情况。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。