Une approche pragmatique de l'utilisation d'agents pour l'analyse de bases de code héritées

Computing/Software4분 읽기

TuBrief 편집팀 원본 영상을 바탕으로 AI의 도움을 받아 작성했습니다. 원본 영상이 기준입니다. 원본 영상: J'ai arrêté d'utiliser Grep et mon agent est devenu 10 fois plus rapide · Better Stack

Les ingénieurs responsables de grands projets hérités (legacy) passent deux heures par jour à fouiller dans des montagnes de code. La méthode consistant à traquer des chaînes de caractères avec grep a atteint ses limites. Même en voulant adopter des agents d'IA, la réalité est qu'il est difficile de savoir comment les intégrer efficacement dans le flux de travail. Cet article traite des procédures techniques concrètes pour établir les agents non pas comme de simples chatbots, mais comme des outils améliorant la productivité opérationnelle.

Éliminez d'abord le bruit

Si vous donnez l'intégralité de la base de code à un agent, le contexte sera pollué. L'apprentissage de données inutiles conduit à des réponses erronées et gaspille les coûts de jetons (tokens). Le simple fait de restreindre la portée de l'indexation rend la vitesse de réponse nettement plus rapide.

Appliquez immédiatement ces 3 points :

  1. Créez un fichier .cursorignore à la racine du projet. Excluez impérativement les artefacts de build volumineux tels que /dist, /build, /target, node_modules.
  2. Excluez également les stubs Protobuf ou les fichiers *.gen.ts générés automatiquement. Cela empêchera l'agent de générer du code ignorant la rétrocompatibilité.
  3. Utilisez des outils de synchronisation basés sur les arbres de Merkle. Ne recréez pas l'index complet à chaque fois, mettez uniquement à jour les valeurs de hachage des fichiers modifiés pour augmenter la vitesse d'indexation de plus de 3 fois.

Suivez les dépendances grâce à l'arbre syntaxique

La recherche textuelle ne pourra jamais découvrir des relations d'héritage complexes. Vous devez analyser l'arbre syntaxique (AST) du code avec des outils comme ast-grep. L'intégrer dans vos invites (prompts) permet d'effectuer des requêtes beaucoup plus sophistiquées qu'une simple recherche.

  1. Définissez le motif syntaxique de ce que vous voulez analyser. Par exemple, rédigez une fonction asynchrone dépourvue de gestion d'erreurs en utilisant la syntaxe ast-grep.
  2. Envoyez ce motif à l'agent avec l'outil @codebase. Ajoutez des instructions pour limiter la portée afin d'ignorer les bibliothèques externes et de ne rechercher que les relations d'héritage entre les modules internes.
  3. Demandez à l'agent de produire les résultats sous forme de diagramme Mermaid. Visualiser les flux d'appels complexes peut réduire le temps de résolution des problèmes d'environ 40 %.

Vérifiez les correctifs par des tests

Les correctifs proposés par l'IA sont à moitié erronés. Les fusionner tels quels ne fera qu'accumuler de la dette technique. Automatisez la boucle de vérification en intégrant l'analyse d'impact des tests (TIA) dans votre pipeline CI.

  1. Écrivez un script qui ne sélectionne et n'exécute que les tests liés au code modifié, comme --findRelatedTests de Jest.
  2. Donnez des instructions à l'agent : si un test échoue, configurez une boucle pour qu'il analyse les journaux d'erreurs et corrige lui-même le code.
  3. Intégrez des outils comme CodeQL dans l'étape CI. Cela permet de filtrer automatiquement les vulnérabilités de sécurité difficiles à détecter pour un humain.

La mise en place de cette boucle peut considérablement augmenter la précision de la validation syntaxique. Il n'est pas nécessaire de jeter tous vos outils existants. Ripgrep est toujours 10 fois plus rapide qu'un agent pour une recherche simple. Le véritable travail d'un ingénieur senior est de séparer les rôles en fonction des caractéristiques de chaque outil.

관련 영상

J'ai arrêté d'utiliser Grep et mon agent est devenu 10 fois plus rapide

Better Stack8:06

커뮤니티의 다른 글

댓글

로그인하고 댓글을 남겨 보세요.

아직 댓글이 없습니다.