代码搜索与重构工具 - Code Recycle

代码搜索与重构工具 - Code Recycle

程序员在开发过程中查询代码时,通常依赖文本搜索,尽管这在大多数情况下很有用,但它可能无法完全满足我们的需求.
let a    =     1;let b=`let a=1`

要搜索上述代码语句let a = 1,通常这是很难实现的,因为一方面会有字符串的干扰,另一方面格式可能不同,无法直接确定唯一语句.

但是,当我们使用code recycle时,我们可以直接使用let a=1来匹配这个语句,因为它是基于语法树来进行匹配的.一个特点是它对空白内容不敏感,另一个特点是所有字符都被视为节点内容进行查询.

这样,我们就可以使用与原来相同的搜索内容,匹配到更準确的结果

快速交换参数?

如果想交换函数调用的参数,可能就是一个大工程,需要检查每个函数的调用,并手动处理两个参数的位置如果说只用几行代码就能交换所有代码,是不是更方便呢?没错,在code-recycle中你可以这麽写
  {    query: `CallExpression:like(test1( [[{^]] [[$p1]] [[...]] [[$p4]] [[$}]] ) )`,    multi: true,    replace: {      p1: `{{''|ctxInferValue:'p4'}}`,      p4: `{{''|ctxInferValue:'p1'}}`,    },   },

switch

上面演示的将第一个和最后一个参数交换,如果你已经确定了参数数量,那麽写法还可以更简单

改写传参结构?

当设计发生变动时,通常需要修改传参结构,将以前的参数放到新的结构中.这时你可以这麽做
{    query: `CallExpression:like(test1( [[{^]]  [[...]] [[$p4]] [[$}]] ) )`,    multi: true,    replace: {      p4: `{value:{{''|ctxInferValue:'p4'}}}`,    },}
最后一个参数变成一个对象,而原来参数值将会在对象中

其他用途

console.[[$method:/log|info/]]() 查询console的指定调用方法class [[$className]] { [[{]] test(){} [[}]] }查询包含 test 方法的类{key:[[$value]]}查询key的值

更多?

工具目前支持CLIVSCode Extension进行执行,脚本支持yaml/js/ts上面的例子是以typescript脚本语言为例介绍code recycle的基础用法,工具目前支持400多种语言/语法解析,你可以查看文档了解更多如果你想看更多的实例,可以访问仓库查看并运行如果你已经感兴趣,那麽可以快速开始

关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章