5个版本
0.1.1 | 2023年4月3日 |
---|---|
0.1.1-rc.3 | 2023年4月1日 |
0.1.0 | 2023年3月27日 |
#1230 在 开发工具
34 每月下载量
62KB
1.5K SLoC
Mogglo
Mogglo是一个基于AST的多语言代码搜索和重写工具。Mogglo支持在搜索模式和替换中嵌入Lua代码。
Mogglo专注于以下目标
- 最小化设置: Mogglo可以在任何支持的代码库中立即工作。
- 许多语言: 12种及更多!
- 高质量的语法: Mogglo基于tree-sitter语法。
- Lua: Mogglo向嵌入Lua代码片段提供了丰富的API。
简介
以下示例展示了Mogglo的功能。以下是查找表达式对自己无意义的赋值的方法
mogglo-rust --detail 'let $x = $x;' ./**/*.rs
Lua代码用花括号括起来。Lua可以使用rec
递归匹配模式。以下是一个检测越界数组访问的模式
mogglo-rust 'while $i <= $buf.len() { ${{ rec("$buf.get($i)") }} }' ./**/*.rs
以下是如何展开简单循环的方法
mogglo-rust \
'for $i in 0..$h { $b; }' \
--where 'h_num = tonumber(h); return h_num ~= nil and h_num % 4 == 0' \
--replace 'for $i in 0..${{ string.format("%.0f", h / 4) }} { $b; $b; $b; $b; }' \
./*/**.rs
这种转换展示了使用Lua的强大功能:这不能通过正则表达式替换完成,用其他codemod工具也非常困难。
请参阅文档以获取更多详细信息!
依赖关系
~14MB
~309K SLoC