Logo Parasoft
Image de couverture du livre blanc

Livre blanc

Comparaison des correctifs de violation d'analyse statique : Parasoft et GitHub Copilot

Découvrez un aperçu de l'étude ci-dessous.

Aperçu de l'étude

Cette étude évalue comment GitHub Copilot et les modèles d'invite de Parasoft génèrent des correctifs de code pour les violations d'analyse statique détectées par Parasoft C / C ++test Les deux outils ont utilisé GPT-4o, les corrections étant évaluées à l'aide de GPT-4o-2024-08-06 pour les comparaisons par paires.

Les résultats montrent que les invites de Parasoft ont nettement surpassé celles de GitHub Copilot : avec des questions de raisonnement, Parasoft s'est avéré supérieur dans 64.45 % des cas, égal dans 20.5 % des cas et moins performant dans 15.05 % des cas. Les invites sans question de raisonnement ont surpassé Copilot dans 57.16 % des cas.

L'analyse manuelle suggère que les invites de Parasoft produisent des corrections plus complètes et plus robustes grâce à la documentation des règles et au raisonnement logique.

Résultats de la comparaison des performances

GitHub Copilot vs C++test avec raisonnement

Taux de réussite Taux d'attache Taux de perte
Copilote GitHub 0.150895 0.204604 0.644501
Test de C++ avec questions de raisonnement 0.644501 0.204604 0.150895

GitHub Copilot vs C++test sans raisonnement

Taux de réussite Taux d'attache Taux de perte
Copilote GitHub 0.199488 0.2289 0.571611
Test C++ sans questions de raisonnement 0.571611 0.2289 0.199488

Taux de victoire par paire

Copilote GitHub Test C++ avec raisonnement Test C++ sans raisonnement
Copilote GitHub - 0.150895 0.199488
Test C++ avec raisonnement 0.644501 - 0.313433
Test C++ sans raisonnement 0.571611 0.186567 -
Icône de test C/C++ dans une loupe

La visualisation démontre clairement les performances supérieures de Parasoft C++test pour les deux approches d'invite :

  • Test C++ sans raisonnement a obtenu un taux de victoire de 57.9 % contre Copilot, avec 22.9 % de matchs nuls et 19.9 % de défaites
  • Test C++ avec raisonnement a fait encore mieux avec un taux de victoire de 64.5 %, 20.5 % de matchs nuls et seulement 15.1 % de défaites.
  • L'approche basée sur le raisonnement amélioré affiche une amélioration d'environ 6.6 points de pourcentage du taux de victoire par rapport aux simples invites.

Dans les deux configurations, C++test l'emporte plus souvent qu'il ne fait match nul ou ne perd, démontrant ainsi une supériorité constante en matière de qualité de correction.

Principales conclusions

Cette analyse démontre que les corrections obtenues grâce aux invites de Parasoft sont systématiquement mieux classées que celles obtenues avec GitHub Copilot. Les performances sont similaires pour les deux variantes d'invites (avec ou sans justification), ces dernières étant légèrement plus performantes.

L'inspection manuelle des données d'exemple a révélé que les correctifs générés avec les invites de Parasoft sont souvent plus complets (par exemple, la correction de toutes les occurrences d'un problème sur des lignes adjacentes), plus robustes (mise en œuvre d'une meilleure gestion des erreurs) et conformes aux pratiques de codage standard.

On suppose que ces performances supérieures proviennent de deux facteurs clés dans la conception des invites de Parasoft :

  • Inclusion de la documentation relative aux règles : Les invites intègrent la documentation complète des règles de codage, fournissant au modèle un contexte explicite sur ce qui constitue une violation et sur la manière de la traiter correctement.
  • Application du raisonnement par chaîne de pensée : Tant les questions de raisonnement que la structure même des incitations minimales favorisent une analyse systématique du problème, incitant le modèle à examiner le problème méthodiquement avant de proposer des solutions.

Ces éléments fonctionnent de concert pour améliorer les capacités de génération de correctifs du modèle, ce qui permet d'obtenir des corrections de code plus fiables et plus complètes.

Limites de la recherche

Cette étude reconnaît plusieurs contraintes méthodologiques :

  1. Limitation de la portée. L'analyse s'est limitée aux violations détectées par Parasoft C/C++test, et seules celles apparaissant à l'intérieur des corps de fonctions analysés ont été prises en compte. Les violations situées en dehors des corps de fonctions n'ont pas été incluses dans cette analyse.
  2. Biais lié au contexte d'évaluation. Les messages de classement ne contenaient que le corps de la fonction, à l'exclusion de tout autre code pertinent, fournissant ainsi les mêmes informations limitées que les messages de correction de Parasoft. En revanche, Copilot utilise le contexte complet (ou quasi complet) du fichier. Dans les rares cas où les modèles de messages de Parasoft indiquent un faux positif, mais que le modèle ne dispose pas des informations nécessaires pour corriger l'erreur, tandis que le contexte plus large de Copilot permet une évaluation correcte, le modèle de classement, avec des données limitées, pourrait être enclin à confirmer l'évaluation de Parasoft.
Équipe de développeurs

Prêt à plonger plus profondément ?

Téléchargez le livre blanc complet