12

分享一下 ast-grep,结构化代码搜索工具

 8 months ago
source link: https://www.v2ex.com/t/1006506
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

V2EX  ›  分享创造

分享一下 ast-grep,结构化代码搜索工具

  hdnvim · 29 分钟前 · 44 次点击

第一次在 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 友们感兴趣,可以到项目主页上看看,顺便求点个小星星。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK