Qu’est-ce que ast-grep ?
ast-grep trouve le code par sa structure plutôt que par son texte. Vous écrivez un motif qui ressemble à du code ordinaire, comme `$A && $A()`, avec des marqueurs pour les parties variables, et il repère chaque endroit du code qui a cette forme, quels que soient les espaces ou les noms de variables. Les mêmes motifs servent aux règles de lint en YAML (`ast-grep scan`), aux tests de règles et aux réécritures, appliquées en bloc ou une par une avec `--interactive`. Il analyse avec tree-sitter et prend en charge 28 langages d'origine, de Bash et C à TypeScript et Zig.
Le projet, mené par Herrington Darkholme, est sous licence MIT, écrit en Rust et compte environ 16 600 étoiles sur GitHub ; la version 0.51.2 est sortie le 11 novembre 2026. Il s'installe via Homebrew, npm, pip, cargo, MacPorts ou Nix, et fournit aussi des API JavaScript, Python et WebAssembly, un serveur de langage pour les éditeurs et un mode de sortie JSON. Pour les agents de code, il existe une commande `outline` (aperçu alpha depuis la 0.44.0), une skill officielle pour agents et un serveur MCP expérimental.
ast-grep vaut-il le coup ?
La recherche textuelle est le mauvais outil pour la plupart des refactorisations, et les agents commettent l'erreur plus vite que les humains. Une regex qui réécrit un appel de fonction réécrit aussi les mêmes mots dans un commentaire, une chaîne et une variable qui porte le même nom. ast-grep analyse d'abord le fichier, si bien qu'un motif ne correspond qu'à du vrai code de cette forme. C'est pourquoi il est devenu une dépendance courante des configurations d'agents : npm a compté environ 9,6 millions de téléchargements de @ast-grep/cli sur les 30 jours jusqu'au 12 novembre 2026, un chiffre qui inclut la CI et les installations transitives, pas seulement des personnes qui tapent des commandes.
La conception garde les motifs lisibles. Au lieu d'apprendre un langage de requête, vous écrivez du code avec des métavariables, et ajoutez des règles YAML (inside, has, not, any) quand un motif seul ne suffit pas. Les règles peuvent porter un correctif, une sévérité et des tests, ce qui transforme des recherches ponctuelles en linter de projet. Le rythme des versions est régulier, avec la 0.51.1 le 2 novembre et la 0.51.2 neuf jours plus tard, et l'historique compte plus de 100 contributeurs.
Le hic : il ne voit que la syntaxe. La FAQ dit clairement qu'il ne fait aucune analyse de portée, de types, de flux de contrôle, de flux de données ni de taint ; il ne peut donc pas trouver une variable d'un type donné ni suivre une saisie utilisateur jusqu'à un appel à la base de données. Pour des règles de sécurité de ce genre, Semgrep ou CodeQL vont plus loin. Les motifs doivent aussi être du code que tree-sitter sait analyser, ce qui piège avec des fragments comme une clé JSON isolée, et sous Linux l'alias court `sg` entre en conflit avec la commande système setgroups. Le serveur MCP est marqué expérimental et passe par Python et uv ; la plupart des agents sont donc mieux servis par la CLI et la skill.
Notre avis : voyez ast-grep comme un grep qui sait où commence et finit un appel de fonction. Laissez l'agent s'en servir pour chaque recherche et réécriture qui a une forme, et gardez un outil qui connaît les types pour les questions de sens.
Là où il fait la différence
Un ingénieur plateforme sur un grand monorepo TypeScript
Remplacer partout un appel de journalisation obsolète sans toucher aux commentaires ni aux chaînes
Écrire un motif avec correctif, le vérifier avec `ast-grep run --interactive`, puis l'appliquer à toute l'arborescence. Il tourne en local en quelques secondes sur la plupart des dépôts et ne coûte rien ; ce qui dépend des types exige toujours le compilateur.
Un responsable technique qui impose les règles maison en CI
Bloquer le nouveau code qui appelle mal une API interne
Ajouter des règles YAML à un projet sgconfig.yml, donner à chacune un cas de test et lancer `ast-grep scan` dans le pipeline. Les règles vivent dans le dépôt et sont relues comme du code, sans frais de licence.
Une développeuse qui utilise Claude Code sur une base de code inconnue
Faire chercher et modifier le code par l'agent selon sa structure plutôt que par regex
Installer la CLI et la skill officielle pour que l'agent écrive des règles ast-grep, et laisser `ast-grep outline` lister les symboles d'un fichier avant qu'il ne le lise en entier. Moins de modifications parasites ; outline reste un aperçu alpha.
Avant de vous engager
- Mise en route
- `brew install ast-grep`, `npm i @ast-grep/cli -g`, `pip install ast-grep-cli` ou `cargo install ast-grep --locked` ; une première recherche prend une minute. `ast-grep new` crée la structure d'un projet de règles.
- Intégrations
- 28 langages intégrés et d'autres via tree-sitter, un serveur de langage pour VS Code et d'autres éditeurs, une sortie JSON, des API JavaScript (napi), Python et WebAssembly, un playground en ligne, le plugin ast-grep/agent-skill et le serveur expérimental ast-grep-mcp.
- Données et confidentialité
- Tourne entièrement sur votre machine, sur des fichiers locaux ; aucun compte ni service réseau n'intervient. Licence MIT.
- Coût à grande échelle
- Gratuit, sans offre payante. Le mainteneur accepte GitHub Sponsors ; le coût à grande échelle, c'est l'écriture et le test des règles.
- Limites
- Syntaxe uniquement : pas d'analyse de types, de portée, de flux de contrôle, de flux de données ni de taint. Les motifs doivent être du code analysable. `outline` est un aperçu alpha dont la couverture des langages peut changer. Environ 46 issues et pull requests ouvertes lors de la dernière vérification.
Les points forts
- Les motifs s'écrivent comme du code ordinaire avec des marqueurs
- 28 langages intégrés via tree-sitter
- Recherche, règles de lint avec tests et réécritures dans un seul binaire
- API JavaScript, Python et WebAssembly, plus un serveur de langage
Les points faibles
- Aucune analyse de types, de portée ni de flux de données
- Les motifs doivent être du code valide, ce qui déroute les débutants
- L'alias `sg` entre en conflit avec une commande système Linux
- Le serveur MCP reste expérimental
Idéal pour
Les développeurs et agents de code qui ont besoin de recherches et de codemods précis et reproductibles dans une grande base de code, sans écrire de plugin de compilateur.
Alternatives à ast-grep
ast-grep : questions fréquentes
- ast-grep vaut-il le coup ?
- ast-grep est l'outil de recherche structurelle à confier à un agent de code avant qu'il ne se tourne vers sed, à condition que personne ne confonde sa correspondance syntaxique avec une analyse sémantique. Nous lui donnons 4.5 sur 5.
- Combien coûte ast-grep ?
- Gratuit et open source (MIT).
- Quels sont les inconvénients de ast-grep ?
- Aucune analyse de types, de portée ni de flux de données; les motifs doivent être du code valide, ce qui déroute les débutants; l'alias `sg` entre en conflit avec une commande système Linux; le serveur MCP reste expérimental.
- À qui s’adresse ast-grep ?
- Les développeurs et agents de code qui ont besoin de recherches et de codemods précis et reproductibles dans une grande base de code, sans écrire de plugin de compilateur.
- Combien coûte ast-grep pour une équipe ou en production ?
- Gratuit, sans offre payante. Le mainteneur accepte GitHub Sponsors ; le coût à grande échelle, c'est l'écriture et le test des règles.
- ast-grep est-il sûr pour les données de l’entreprise ?
- Tourne entièrement sur votre machine, sur des fichiers locaux ; aucun compte ni service réseau n'intervient. Licence MIT.
- Quelles sont les meilleures alternatives à ast-grep ?
- Les alternatives les plus proches que nous avons testées sont grepai, Repowise et jevgrep.
Réponses vérifiées le 13 nov. 2026.