動態

詳情 返回 返回

代碼搜索與重構工具 - 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多種語言/語法解析,你可以查看文檔瞭解更多
  • 如果你想看更多的實例,可以訪問倉庫查看並運行
  • 如果你已經感興趣,那麼可以快速開始
user avatar Leesz 頭像 zs_staria 頭像 zourongle 頭像 6fafa 頭像 razyliang 頭像 yuzhihui 頭像 ccVue 頭像 wmbuke 頭像 weidewei 頭像 romanticcrystal 頭像 joe235 頭像 ldh-blog 頭像
點贊 49 用戶, 點贊了這篇動態!
點贊

Add a new 評論

Some HTML is okay.