ast-grep VS rewrite

Compare ast-grep vs rewrite and see what are their differences.

InfluxDB - Power Real-Time Data Analytics at Scale
Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.
www.influxdata.com
featured
SaaSHub - Software Alternatives and Reviews
SaaSHub helps you find the best software and product alternatives
www.saashub.com
featured
ast-grep rewrite
40 24
6,228 1,921
5.2% 4.7%
9.9 9.9
7 days ago 6 days ago
Rust Java
MIT License Apache License 2.0
The number of mentions indicates the total number of mentions that we've tracked plus the number of user suggested alternatives.
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.

ast-grep

Posts with mentions or reviews of ast-grep. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2024-05-06.
  • An infinite canvas for code exploration
    3 projects | news.ycombinator.com | 6 May 2024
    It's unclear what the superpowers would be? Video doesn't show anything I can't do with an IDE or decent code editor, and there I also have refactoring tools, metadata like indicators for usages that can be used for navigating and so on.

    Reminds me of UML-like diagrams over relational databases, except that it's generated one piece at a time. In practice I generate diagrams showing cyclomatic complexity much more often, and for code exploration outside the IDE I'd use ast-grep.

    https://ast-grep.github.io/

  • Migrate to React 19 with ast-grep
    2 projects | dev.to | 28 Apr 2024
    This article illustrates the usage of ast-grep, a tool designed to locate and substitute patterns in your codebase, towards easing your migration to React 19.
  • AST-grep(sg) AST grep based on Treesitter
    1 project | news.ycombinator.com | 1 Apr 2024
  • Show HN: GritQL, a Rust CLI for rewriting source code
    8 projects | news.ycombinator.com | 20 Mar 2024
    This looks great, thanks for building and sharing it.

    Interested folks may also want to check out ast-grep:

    https://github.com/ast-grep/ast-grep

  • How I build a chatbot for my OSS project, for free, without code!
    2 projects | dev.to | 31 Dec 2023
    ast-grep is a command-line tool that lets you search and transform code written in many programming languages using abstract syntax trees (ASTs). ASTs are data structures that capture the syntactic and semantic structure of source code. With ast-grep, you can write patterns as if you are writing ordinary code, and it will match all code that has the same syntactical structure. And if you need more power, you can use YAML, a rule system that allows you to write more sophisticated linting rules or code modifications.
  • FLaNK Stack Weekly 11 Dec 2023
    31 projects | dev.to | 11 Dec 2023
  • AST-grep(sg) is a CLI tool for code structural search, lint, and rewriting
    1 project | /r/patient_hackernews | 10 Dec 2023
    1 project | /r/hackernews | 10 Dec 2023
    1 project | /r/hypeurls | 10 Dec 2023
    15 projects | news.ycombinator.com | 10 Dec 2023
    I really like this - it means the tool is available to people with familiarity of any of those four distribution mechanisms.

    You can also download pre-built binaries from their releases page: https://github.com/ast-grep/ast-grep/releases/tag/0.14.2

    On top of that, they offer API bindings for it in three different languages:

    - Rust (not yet stable): https://docs.rs/ast-grep-core/latest/ast_grep_core/

    - JavaScript/TypeScript: https://ast-grep.github.io/guide/api-usage/js-api.html

    - Python: https://ast-grep.github.io/guide/api-usage/py-api.html

    It's rare to see a tool/library offer this depth of language support out of the box.

rewrite

Posts with mentions or reviews of rewrite. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2023-12-31.
  • FLaNK Weekly 31 December 2023
    25 projects | dev.to | 31 Dec 2023
  • OpenRewrite – Automated mass refactoring of source code
    1 project | news.ycombinator.com | 19 Dec 2023
  • AST-grep(sg) is a CLI tool for code structural search, lint, and rewriting
    15 projects | news.ycombinator.com | 10 Dec 2023
    If you're into this sort of thing, there's OpenRewrite[1] for the Java ecosystem.

    [1] https://docs.openrewrite.org/

  • What's New in Spring Framework 6.1
    5 projects | news.ycombinator.com | 16 Aug 2023
    > Spring has gotten so bloated.

    I'd call Spring feature-rich than bloated. You can always shed weight that you don't want to carry.

    > Plus there's multiple ways of doing the same thing. e.g. JPA, spring-data.

    That's because there are different ways to solve a problem. Someone may want an ORM-based approach to connect to the database; they can choose spring-data-jpa. Someone may want to use JDBC with a light abstraction on top of it; they can choose spring-data-jdbc. It's all about choices and right tradeoffs and Spring offers plenty of them.

    > they don't provide easy upgrade paths between majors versions

    That's not my experience. I've been happily upgrading 2.x.x versions and plan to upgrade to 3.2.x when it is ready. But depending on the codebase, I admit it can be painful. Projects like OpenRewrite[1] might help here.

    > and they stop updating vulnerabilities on older major versions.

    This is not news. They want you to pay for extended support if you need it.

    > No docs on migration.

    They do maintain migration docs on GitHub wiki which are a lot more detailed than their blog posts on migration. Here's the latest one to upgrade from Spring Boot 2 to 3: https://github.com/spring-projects/spring-boot/wiki/Spring-B...

    [1]: https://github.com/openrewrite/rewrite

  • We already have Spring 2.1.3, Is SpringBoot 3 worth learning.
    1 project | /r/java | 4 Jul 2023
    The issue you may run into when migrating from Spring Boot 2.x to 3.x is the JEE namespace renames. Migrating code from 8 to 17 in my experience hasn't been all that difficult. In most projects, there are no changes to make. However, with the namespace change, you'll probably have to do some planning and testing. If you are migrating a lot of projects, check out Open Rewrite, it may help automate a lot of these upgrades (for both 8 to 17 and Spring Boot versions).
  • Why wouldn't somebody change their version?
    1 project | /r/java | 23 Mar 2023
    Couldn't OpenRewrite (https://docs.openrewrite.org) do a big part of this manual work?
  • Any ideas on how to automate upgrade of legacy Spring Framework/Spring Boot repositories?
    2 projects | /r/SpringBoot | 26 Feb 2023
    Openrewrite would probably be a big help, see https://docs.openrewrite.org
  • what is your favorite programming trick/tool that not many People know about?
    6 projects | /r/java | 17 Feb 2023
    In a similar vein there is OpenRewrite which is an open-source project that works in a similar way. It also has a lot of great refactorings already built in, like doing all the grunt work for migrating to JUnit 5, or replacing string concatenation in SLF4J log calls with parameterized formatting.
  • Refactoring giant codebase
    1 project | /r/java | 30 Jan 2023
    seems a case for https://docs.openrewrite.org/
  • What are your thoughts on Spring in 2023?
    2 projects | /r/java | 27 Jan 2023
    https://github.com/openrewrite/rewrite might help

What are some alternatives?

When comparing ast-grep and rewrite you can also consider the following projects:

ssr.nvim - Treesitter based structural search and replace plugin for Neovim.

JavaParser - Java 1-18 Parser and Abstract Syntax Tree for Java with advanced analysis functionalities.

helix - A post-modern modal text editor.

gradle-lint-plugin - A pluggable and configurable linter tool for identifying and reporting on patterns of misuse or deprecations in Gradle scripts.

weggli - weggli is a fast and robust semantic search tool for C and C++ codebases. It is designed to help security researchers identify interesting functionality in large codebases.

grammars-v4 - Grammars written for ANTLR v4; expectation that the grammars are free of actions.

git-repo-sync - Auto synchronization of remote Git repositories. Auto conflict solving. Network fail resilience. Linux & Windows support. And more.

cl-cuda - Cl-cuda is a library to use NVIDIA CUDA in Common Lisp programs.

telescope.nvim - Find, Filter, Preview, Pick. All lua, all the time.

aws-ip-ranges - Tracking the history and size of AWS's ip-ranges.json file

telescope-sg - Ast-grep picker for telescop.nvim

spring-cloud-dataflow - A microservices-based Streaming and Batch data processing in Cloud Foundry and Kubernetes