Fallow : L'outil d'intelligence de code indispensable pour tout utilisateur de Claude
BBetter Stack
Computing/SoftwareSmall Business/StartupsInternet Technology
Transcript
00:00:00Voici Fallo, un outil d'intelligence basé sur le code pour TypeScript et JavaScript qui analyse l'ensemble de votre base de code pour détecter le code mort, les doublons, la complexité inutile et bien plus encore.
00:00:10Cela signifie qu'il n'est plus nécessaire de combiner NIP, JSC, PD et ESLint juste pour empêcher vos agents de livrer du code de mauvaise qualité.
00:00:17Il est écrit en Rust et supporte plus de 90 plugins, ce qui signifie qu'il fonctionnera immédiatement avec la plupart des frameworks et des paquets populaires.
00:00:23Mais le fait qu'il ne supporte que JavaScript et TypeScript le rend moins attrayant pour les codeurs assistés par IA.
00:00:29Abonnez-vous et découvrons cela ensemble.
00:00:30Voici un projet sur lequel je travaille qui ajoute un aspect cinématographique aux vidéos et aux images.
00:00:39Il a été principalement conçu avec Claude Code, il y aura donc un certain niveau de "poussière d'IA".
00:00:43Il y a aussi une PR ici pour une nouvelle fonctionnalité, dont je parlerai plus tard, pourvu que GitHub ne la fasse pas disparaître par accident.
00:00:51Pour commencer, je vais lancer Fallo avec le flag summary en utilisant BunX, ce qui m'évite de l'installer.
00:00:56Cela donne un instantané de mon projet, montrant le résumé du code mort, les doublons et un bilan de santé de la complexité.
00:01:02Et si nous vérifions le statut git, il ajoute un nouveau répertoire .fallo qui contient le cache.
00:01:07Cela signifie que les exécutions suivantes seront plus rapides et contiendront l'instantané ainsi que les informations des plugins.
00:01:12Maintenant, vous avez peut-être remarqué ici que le score de santé est de 41 au-dessus du seuil.
00:01:16Qu'est-ce que cela signifie ?
00:01:17Eh bien, le score de santé Fallo est calculé en évaluant la complexité cyclomatique et la complexité cognitive.
00:01:24Il utilise des formules pour calculer la densité de complexité.
00:01:27Et plus bas, tout cela sert à déterminer l'indice de maintenabilité, qui est le score que nous voyons ici.
00:01:33Sur la base de ce score, il a détecté que 41 de mes fichiers doivent être refactorisés.
00:01:38À partir de là, nous pouvons lancer n'importe laquelle de ces commandes pour obtenir un rapport détaillé sur un domaine spécifique.
00:01:43Donc, si je voulais me concentrer sur la santé, nous pourrions lancer cette commande.
00:01:46Et après un moment, il liste tous les fichiers présentant différents problèmes de santé.
00:01:49Notez que si vous voulez savoir ce que signifie CRAP, c'est l'abréviation de "change risk anti-patterns",
00:01:55sur lesquels vous pouvez tout apprendre dans la documentation.
00:01:57Mais ce niveau de détail est très facile à suivre pour un agent afin de savoir quoi corriger.
00:02:00En fait, je dirais que la duplication est beaucoup plus facile à suivre puisqu'elle donne le fichier exact et les numéros de ligne précis.
00:02:06Nous allons donc nous en tenir à cela pour le moment.
00:02:07Et si nous le souhaitions, nous pourrions ajouter un fichier de configuration fallo pour indiquer les modèles ou dépendances à ignorer,
00:02:14ainsi que pour définir des paramètres personnalisés de duplication, de santé et ajouter des frontières,
00:02:18ce qui est un moyen très cool de déclarer quels répertoires peuvent importer depuis d'autres.
00:02:23Mais tout cela est trop complexe pour mes besoins, donc pour l'instant nous garderons les réglages par défaut.
00:02:27Maintenant, à partir d'ici, nous pourrions lancer la commande fallo fix ou ajouter le flag dry run pour voir exactement ce qu'il va faire,
00:02:32c'est-à-dire essayer de traiter tous les types de problèmes rectifiables.
00:02:35Et vous pouvez voir ici qu'il va supprimer un tas d'exports.
00:02:38Mais en fait, je ne fais pas confiance à fallo pour une correction automatique car il n'a pas beaucoup de contexte sur mon code,
00:02:43sur le rôle de chaque fonction et sur la façon dont tout s'articule.
00:02:46Donc, au lieu d'utiliser le flag fix, je vais connecter fallo à mon agent,
00:02:49ce que vous pouvez faire via le serveur MCP ou en utilisant le plugin VS Code, qui je suppose fonctionnera avec Cursor.
00:02:55Mais je vais faire simple et juste installer la compétence fallo, qui contient des garde-fous, des règles pour l'agent et des pièges courants.
00:03:03Une fois la compétence installée, je vais lancer Claude Code et lui donner pour instruction d'étudier ce projet pour comprendre son fonctionnement,
00:03:10puis de lancer fallo pour traiter le code dupliqué, en veillant à ce que sa suppression ne casse pas les fonctionnalités clés.
00:03:16Et quand tu auras fini, place les changements dans une branche de fonctionnalité et lance les tests pour vérifier que l'appli fonctionne.
00:03:22On voit donc ici qu'il charge la compétence fallo.
00:03:24Ensuite, il lance la commande fallo dupes et obtient le format d'export JSON, qui est un format adapté aux machines.
00:03:29Après environ quatre minutes, Claude a fini de corriger trois fichiers au lieu de tous les fichiers suggérés par fallo,
00:03:34principalement parce que les autres sont des fichiers de test, qui sont parfois censés avoir du code dupliqué.
00:03:39Je lui ai aussi demandé de créer une PR et si on y regarde de plus près, il a ajouté 54 lignes de code et en a supprimé 43.
00:03:46Mais c'est parce que j'ai demandé d'ajouter un fichier de configuration fallo d'environ 20 lignes pour ignorer les tests à l'avenir.
00:03:54Et bien sûr, nous devrions continuer sur cette lancée en utilisant Claude Code ou un autre agent pour corriger la complexité ou le code mort.
00:04:00Mais fallo peut aussi examiner les PR.
00:04:02Si l'on regarde cette PR montrée plus tôt, la commande fallo audit vérifiera les problèmes sur cette branche par rapport à main.
00:04:12Et si nous voulions nous baser sur une autre branche, nous pourrions simplement utiliser le flag base.
00:04:16Mais si nous ne voulions pas non plus solliciter Claude à chaque fois, nous pourrions lancer setup hooks pour générer des hooks pour fallo.
00:04:24Fallo peut également s'exécuter comme une GitHub Action avec des annotations de PR.
00:04:28Il supporte les workspaces.
00:04:30Il peut exporter des badges de santé et supporte les baselines, permettant de corriger les problèmes actuels au fil du temps.
00:04:35Le CI ne relève ainsi que les nouveaux problèmes, ce qui est idéal pour corriger un gros projet avec de nombreuses anomalies.
00:04:41Il possède énormément de fonctionnalités, mais presque toutes relèvent de l'analyse statique de code, sans exécution réelle.
00:04:49Si vous vouliez une exécution, fallo propose l'intelligence au runtime pour savoir quelles fonctions sont déclenchées en production.
00:04:59Il utilise la couverture V8 et fusionne les résultats au rapport via un sidecar exécutable localement ou n'importe où ailleurs.
00:05:08Mais il s'agit bien sûr d'une fonctionnalité payante, ce qui est assez logique.
00:05:11Globalement, fallo est un excellent outil que je vais utiliser davantage, même s'il est très riche et limité à l'écosystème JavaScript.
00:05:19D'autres langages ont leurs propres outils, mais peu centralisent tout aussi bien que fallo. Son créateur Bart a fait du bon travail avec OXC.
00:05:36Il ne quittera jamais JavaScript, et je suis sûr qu'Evan You en est ravi, non pour le JS, mais pour OXC qu'il finance avec Void Zero.
00:05:46D'ailleurs, si vous voulez nous entendre questionner Evan You sur Void Zero, React Server Components et le reste, allez voir cette vidéo.