Le défi des grands commits

Le développement moderne implique souvent des commits qui modifient de nombreux fichiers. Qu'il s'agisse d'une grande fonctionnalité, d'un effort de refactorisation ou de la fusion d'une branche de longue durée, les grands commits peuvent dépasser les limites de taille des fournisseurs d'IA. AI Diff Review résout cela avec un traitement par lots intelligent qui divise automatiquement les grands commits en morceaux gérables.

Comment fonctionne le traitement par lots

Lorsqu'un commit ou une portée sélectionnée dépasse le budget actif (256 Ko pour les fournisseurs cloud, 128 Ko pour les locaux), AI Diff Review divise automatiquement la requête en plusieurs lots. Mais il ne divise pas simplement au hasard—il utilise une stratégie sophistiquée de priorité aux relations pour garder les fichiers liés ensemble, améliorant la qualité de l'analyse.

Stratégie de relation

Le système de traitement par lots utilise des heuristiques légères pour déterminer quels fichiers sont liés :

Références d'importation et de package

Les fichiers qui importent des symboles définis dans d'autres fichiers modifiés sont considérés comme liés. Par exemple, si UserService.java importe User depuis User.java, et que les deux sont modifiés, ils seront regroupés ensemble.

Mentions de symboles

Les fichiers qui mentionnent des noms de classes, objets ou fonctions définis dans d'autres fichiers modifiés sont regroupés ensemble. Cela capture les relations même lorsque les imports explicites ne sont pas présents.

Proximité de répertoire

Les fichiers dans le même package ou répertoire sont considérés comme faiblement liés, servant de départage lorsque d'autres relations ne sont pas claires.

Algorithme de clustering

Le système de traitement par lots construit un graphe non dirigé de fichiers connectés par les relations ci-dessus, puis calcule les composantes connexes comme groupes initiaux. Cela garantit que les fichiers qui se référencent mutuellement restent ensemble dans le même lot.

Stratégie d'empaquetage

Les groupes sont placés dans des lots en utilisant un algorithme first-fit-decreasing par taille de requête estimée. Cela :

  • Préserve les groupes quand c'est possible (garde les fichiers liés ensemble)
  • Maximise l'efficacité de la taille des lots
  • Garantit que chaque lot reste sous la limite de taille

Gestion des groupes surdimensionnés

Si un seul groupe de fichiers liés dépasse le budget, il est divisé par ordre de recherche en largeur d'abord (BFS) tout en préservant les arêtes de poids élevé. Cela signifie que les relations les plus fortes sont maintenues même lorsque la division est nécessaire.

Expérience utilisateur

Lorsque le traitement par lots se produit, la fenêtre d'outils affiche la progression comme "Lot X/Y", rendant clair que plusieurs lots sont en cours de traitement. Les résultats sont fusionnés de manière transparente entre les lots, vous voyez donc une vue unifiée de tous les résultats. Le tri, le filtrage et la recherche fonctionnent sur tous les résultats comme s'ils provenaient d'une seule analyse.

Tailles de lots par défaut

Le système préfère des lots de 3 à 7 fichiers chacun lorsque de nombreux fichiers sont présents, mais les tailles exactes varient en fonction de :

  • Taille du diff et du contenu par fichier
  • Limites de taille spécifiques au fournisseur
  • Relations de relation

Cet équilibre assure un traitement efficace tout en maintenant la qualité de l'analyse.

Avantages du traitement par lots intelligent

Meilleure qualité d'analyse

En gardant les fichiers liés ensemble, l'IA peut comprendre le contexte et les relations, conduisant à des résultats plus précis. Par exemple, si vous modifiez à la fois une classe de modèle et son service, les analyser ensemble aide l'IA à comprendre l'impact complet de vos modifications.

Gestion automatique

Vous n'avez pas besoin de diviser manuellement les commits ou de vous soucier des limites de taille. Le plugin s'en occupe automatiquement, vous pouvez donc vous concentrer sur votre code.

Expérience transparente

Les résultats sont fusionnés automatiquement, vous voyez donc une vue unifiée peu importe le nombre de lots nécessaires. Vous n'avez pas besoin de combiner manuellement les résultats ou de basculer entre différentes analyses.

Quand le traitement par lots se produit

Le traitement par lots est déclenché lorsque :

  • Un commit modifie de nombreux fichiers (typiquement 10+ fichiers)
  • Les fichiers sont volumineux (même quelques gros fichiers peuvent déclencher le traitement par lots)
  • Le contenu complet du fichier est inclus (augmente considérablement la taille)
  • La taille combinée dépasse les limites du fournisseur

Meilleures pratiques

Garder les commits ciblés

Bien que le traitement par lots gère bien les grands commits, les commits plus petits et ciblés sont toujours meilleurs pour la révision de code et la compréhension. Envisagez de diviser les grands changements en commits logiques lorsque c'est possible.

Faire confiance au système

L'algorithme de traitement par lots est conçu pour préserver les relations et maintenir la qualité de l'analyse. Faites confiance que les fichiers liés seront analysés ensemble, même à travers les lots si nécessaire.

Réviser tous les résultats

Puisque les résultats sont fusionnés, assurez-vous de réviser les résultats de tous les lots. La vue unifiée facilite cela, mais soyez conscient que les grands commits peuvent avoir de nombreux résultats à travers plusieurs lots.

Détails techniques

Le système de traitement par lots utilise un estimateur de taille de requête rapide qui approxime la taille de la charge utile enveloppée en JSON pour rester sous la limite par lot. Cette estimation se produit avant l'envoi, garantissant une utilisation efficace des limites du fournisseur.

Conclusion

Le traitement par lots intelligent permet d'analyser les grands commits sans intervention manuelle. En gardant les fichiers liés ensemble et en gérant automatiquement les tailles des lots, AI Diff Review assure une analyse complète quelle que soit la taille du commit.

La stratégie de priorité aux relations maintient la qualité de l'analyse tandis que la division automatique garantit que vous pouvez analyser des commits de toute taille. Combiné avec une fusion transparente des résultats, le traitement par lots fournit une expérience fluide même pour les plus grands changements.

Prêt à analyser les grands commits ? Installez AI Diff Review et voyez comment il gère vos plus grands changements.