/note/tech

tsuna/gorewrite -- 複雑な条件のファイル検索・置換を楽にするライブラリ

README要約:

■ 1. 既存ツールの課題

  • Goの標準ツール: Go言語には、コードの抽象構文木(AST)を解析し、整形するツールが備わっている。ast.Walk()Visitorを使うことで、ASTのノードを走査・変更できる。
  • ツールの限界: ast.Walk()は、既存ノードの内容やサブノードの変更は可能だが、ノード自体を別のノードに置き換えることはできない。これは、ある種の式を別の種類の式に書き換える場合などに必要となる。

■ 2. gorewriteの機能と利点

  • 解決策: 「gorewrite」は、この問題を解決するために開発されたツールである。
  • 主要機能: ast.Walk()と似ているが、Rewriterという機能拡張されたVisitorを使用する。このRewriterは、修正したast.Nodeを返すことが可能である。
  • 利点: 既存のノードを別のノードに置き換えることができ、コードの書き換えをより柔軟に行うことができる。利用者はast.Walk()の代わりにRewrite()を呼び出すだけでよい。