iT邦幫忙

0

代碼搜索與重構工具 - Code Recycle

  • 分享至 

  • xImage
  •  

代碼搜索與重構工具 - 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多種語言/語法解析,你可以查看文檔了解更多
  • 如果你想看更多的實例,可以訪問倉庫查看並運行
  • 如果你已經感興趣,那麽可以快速開始

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言