mcpField
A
ast-grep

ast-grep

公式おすすめAgent-ready
github.com開発ツール16.4kast-grep今日更新
リポジトリ公式サイト

ast-grep について

ast-grep はコード構造の理解を使用して、コードの検索、リント、変換を行います。パターンマッチングは構文レベルで機能し、複数のプログラミング言語に対応しています。

主な機能

  1. 01構文認識パターンマッチングでコードを検索
  2. 02カスタムルールに基づいてコードをリントして問題を報告
  3. 03プロジェクト全体でコードパターンを大規模に書き換え

活用シーン

  1. 01大規模なコードベースで特定のコードパターンを検出
  2. 02プロジェクト横断的なコード品質基準を強制
  3. 03大規模なコード移行とリファクタリングを自動化

インストール

OS またはパッケージマネージャーを選び、コマンドをターミナルで実行します。

$
brew install ast-grep

インストール後にast-grep --versionを実行して確認します。

コマンド例

よく使うコマンドを使う順に並べています。

01
ast-grep run -p "console.log($A)"
02
ast-grep scan

詳細

ast-grep

カバレッジバッジ README の画像 Discord Repology バッジ バッジ GitHub Sponsors Gurubase

ast-grep(sg)

ast-grep(sg)は、コードの構造検索、リント、書き換えを行うCLIツールです。

はじめに

ast-grepは、抽象構文木に基づいて、パターンを使ってコードを検索するツールです。昔からおなじみのgrepを、テキストではなくASTノードにマッチさせるものと考えてください。 通常のコードを書くようにパターンを記述できます。同じ構文構造を持つコードすべてにマッチします。 $記号と大文字を組み合わせて、たとえば$MATCHのようなワイルドカードを使うと、任意の単一ASTノードにマッチさせられます。テキストではない点を除けば、正規表現のドット.のようなものです。

まずはオンラインプレイグラウンドをお試しください!

スクリーンショット

デモ

その他のスクリーンショットはウェブサイトをご覧ください。

インストール

npm、pip、cargo、 cargo-binstall、homebrew、scoop、mise、またはMacPortsからインストールできます!

npm install --global @ast-grep/cli
# `pnpm approve-builds` may be needed
pip install ast-grep-cli
brew install ast-grep
クリックしてその他のインストール方法を表示
cargo install ast-grep --locked
cargo binstall ast-grep

# install via scoop, thank @brian6932
scoop install main/ast-grep

# install via MacPorts
sudo port install ast-grep

# try ast-grep in nix-shell
nix-shell -p ast-grep

# try ast-grep with mise
mise use -g ast-grep

ast-grepをソースからビルドすることもできます。rustupをインストールしてリポジトリをクローンした後、次のコマンドを実行してください。

cargo install --path ./crates/cli --locked

パッケージは、ほかのプラットフォームでも利用できます。

コマンドラインの使用例

ast-grepは次の形式で使用します。

ast-grep --pattern 'var code = $PATTERN' --rewrite 'let code = new $PATTERN' --lang ts
例
ast-grep -p '$A && $A()' -l ts -r '$A?.()'
ast-grep -p 'new Zodios($URL,  $CONF as const,)' -l ts -r 'new Zodios($URL, $CONF)' -i

スポンサー

スポンサー

ast-grepが興味深く、仕事に役立つと感じたら、コーヒーをごちそうしてください。 そうすれば、このプロジェクトにより多くの時間を費やせます!

機能の概要

ast-grepの中核は、tree-sitterが生成する抽象構文木に基づいて、コードを検索・置換するアルゴリズムです。 直感的な方法で、軽量な静的解析や大規模なコード操作を行えます。

主な特長:

  • ASTを検索・置換するための直感的なパターン。 ast-grepのパターンは、日常的に書く通常のコードのように見えます(パターンはコードと同型だと言えます)。

  • ASTを走査・操作するためのjQueryのようなAPI。

  • 新しいリンティングルールやコード変更を記述するためのYAML設定。

  • コンパイル言語で記述され、tree-sitterベースの解析とマルチコアを活用しています。

  • 美しいコマンドラインインターフェース :)

ast-grepは、抽象構文木の魔法を誰もが使えるようにし、煩雑なASTプログラミングから人々を解放することを目指しています!

  • オープンソースライブラリの作者であれば、ast-grepを使って、ライブラリのユーザーが破壊的変更へスムーズに対応できるよう支援できます。
  • チームのテックリードであれば、ビジネスニーズに合わせたコーディングのベストプラクティスを徹底するのにast-grepを活用できます。
  • セキュリティ研究者であれば、ast-grepを使ってルールをより迅速に記述できます。

コメント