第一次在 v2 发帖,给大家介绍个基于 AST 的结构化搜索工具 ast-grep
可以用模式代码或者规则来结构化匹配代码,而不是文本。这样可以避免 grep 文本的差错。
目前 ast-grep 支持了 C/C++, Java, JavaScript, Python, Ruby, Rust 等。可以用 npm, pip, cargo, homebrew 等方式安装。 具体安装可以参考GitHub readme
安装完了就可以在命令行试下
ast-grep --pattern 'var code = $PATTERN' --rewrite 'let code = new $PATTERN' --lang ts
这个命令在说,找到所有形如 var code = $PATTERN
的 TypeScript 代码语句,并将它们重写为 let code = new $PATTERN
的形式。其中 $PATTERN
是一个通配符,可以匹配任意的 AST 节点。类似于正则表达式中的 .
,但它不是文本匹配,而是 AST 匹配。
ast-grep 还有很多其他功能,既可以当 grep 使也可以当 linter 使,这里就不多安利了。如果 v 友们感兴趣,可以到项目主页上看看,顺便求点个小星星。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.