L’un des modes de mode de fonctionnement les plus utilisés de ripgrep est celui dit de recherche récursive. Un développeur peut s’en servir pour rechercher des motifs au sein de la totalité des fichiers d’un répertoire donné. Illustration avec le cas de la recherche de toutes les définitions de fonctions qui ont le mot write pour nom.
Code : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | $ rg 'fn write\(' src/printer.rs 469: fn write(&mut self, buf: &[u8]) { termcolor/src/lib.rs 227: fn write(&mut self, b: &[u8]) -> io::Result<usize> { 250: fn write(&mut self, b: &[u8]) -> io::Result<usize> { 428: fn write(&mut self, b: &[u8]) -> io::Result<usize> { self.wtr.write(b) } 441: fn write(&mut self, b: &[u8]) -> io::Result<usize> { self.wtr.write(b) } 454: fn write(&mut self, buf: &[u8]) -> io::Result<usize> { 511: fn write(&mut self, buf: &[u8]) -> io::Result<usize> { 848: fn write(&mut self, buf: &[u8]) -> io::Result<usize> { 915: fn write(&mut self, buf: &[u8]) -> io::Result<usize> { 949: fn write(&mut self, buf: &[u8]) -> io::Result<usize> { 1114: fn write(&mut self, buf: &[u8]) -> io::Result<usize> { 1348: fn write(&mut self, buf: &[u8]) -> io::Result<usize> { 1353: fn write(&mut self, buf: &[u8]) -> io::Result<usize> { |
L’outil est compatible avec Visual Studio Code – l’éditeur open source et multiplateformes de Microsoft – et Atom. Dans le cas de Visual Studio Code, la fonctionnalité de recherche multi lignes dont on a fait mention à l’occasion de la sortie de la version 1.29https://www.developpez.com/actu/233131/Visual-Studio-Code-1-29-est-disponible-apercu-des-nouveautes-dans-l-editeur-de-code-open-source-et-multiplateforme-de-Microsoft/ s’appuie sur ripgrep. Par exemple, un développeur qui a de la peine à localiser une section de code particulière peut s’en servir. Illustration avec un motif de recherche constitué des balises <body> et </body>.
La version 11 de ripgrep est disponible depuis peu et marque un changement dans la numérotation de l’outil ; on passe de 0.10.0 à 11.0.0. D’après la note d’information y relative, rigrep 11 est une nouvelle version majeure à partir de laquelle les numéros feront l’objet d’incrémentations un certain nombre de fois par année.
La disponibilité de cette nouvelle mouture fait suite à des signalements d’utilisateurs relatifs à la lenteur de l’outil lors de cas d’utilisation avec les drapeaux -f et -F. ripgrep 11 apporte réponse à ces situations où l’on fournit en même temps plusieurs motifs de recherche. D’après le développeur derrière l’outil, l’utilisation de l’une des commandes rg -f motifs de recherche ou rg -F motifs de recherche devrait déboucher sur une obtention plus rapide des résultats.
Après la recherche récursive, l’une des fonctionnalités les plus usitées de ripgrep est celle de filtrage automatique, c’est-à-dire, celle qui permet d’indiquer à l’outil ce sur quoi une recherche ne porte pas. Avec la sortie de la version 11, Andrew Gallant annonce des améliorations en ce qui concerne la prise en charge du filtrage automatique pour Apache Thrift, ASP, Bazel, Brotli, BuildStream, bzip2, C, C++, Cython, gzip, Java, Make, Postscript, QML, Tex, XML, xz, zig et zstd.
ripgrep : outil de recherche récursive d’expressions régulières le plus rapide ?
Du point de vue de la vitesse, la réponse d’ après Andrew Gallant est oui. « ripgrep est plus rapide que grep, ag, git grep, ucg, pt, sift », précise-t-il. Une vingtaine de résultats de benchmark officiels de comparaison avec d’autres outils de recherche récursive d’expressions régulières est disponible. ripgrep y est comparé à différents outils de recherche sur le terrain de la recherche de motifs au sein d’une version compilée du noyau de Linux.
Résultats de recherche du motif \wAh (mots contenant la chaîne de caractères Ah)
Mais, des résultats de benchmark, ça se discute. Noter à ce propos que sur bon nombre de résultats proposés, ripgrep est au coude-à-coude avec Universal Code Grep (ucg) comme l’auteur finit par le reconnaître. « Prenez également en compte que ces benchmarks ont été exécutés sur une instance EC2 qui utilise une machine virtuelle, ce qui est de nature à pénaliser des outils de recherche qui s’appuient sur des cartes de la mémoire », prévient-t-il.
Source : Notes de version
Et vous ?
Qu’en pensez-vous ?
Faites-vous usage de ripgrep ? Si oui, comment le comparez-vous aux autres outils de recherche d’expressions régulières ? Est-il le plus rapide ?
Quel est votre outil favori de recherche d’expressions régulières ? Pourquoi ?
Voir aussi :
La rubrique Libres & Open Source