Parasoft-Logo

Entdecken Sie das TÜV-zertifizierte GoogleTest mit Agentic AI für C/C++-Tests!
Details ansehen »

Geometrischer Hintergrund mit einem Hauch von Blau und Grün
Titelbild des Whitepapers

Whitepaper

Ein Vergleich der Korrekturen von Verstößen gegen die statische Analyse: Parasoft vs. GitHub Copilot

Werfen Sie unten einen Blick auf die Studie.

Zum Abschnitt springen

Studienübersicht

Diese Studie untersucht, wie GitHub Copilot und die Prompt-Vorlagen von Parasoft Codekorrekturen für statische Analyseverstöße generieren, die von … erkannt wurden. Parasoft C / C ++ testBeide Tools verwendeten GPT-4o, wobei die Korrekturen mit GPT-4o-2024-08-06 für paarweise Vergleiche bewertet wurden.

Die Ergebnisse zeigen, dass die Aufgaben von Parasoft deutlich besser abschnitten als die von GitHub Copilot: Bei Fragen mit Begründungsfunktion war Parasoft in 64.45 % der Fälle überlegen, in 20.5 % gleichauf und in 15.05 % unterlegen. Aufgaben ohne Begründungsfunktion waren Copilot in 57.16 % der Fälle überlegen.

Eine manuelle Analyse legt nahe, dass die Eingabeaufforderungen von Parasoft durch Regeldokumentation und logisches Denken zu umfassenderen und robusteren Lösungen führen.

Ergebnisse des Leistungsvergleichs

GitHub Copilot vs. C++test mit Begründung

Gewinnrate Gleichstand Verlustrate
GitHub-Copilot 0.150895 0.204604 0.644501
C++-Test mit Logikfragen 0.644501 0.204604 0.150895

GitHub Copilot vs. C++test ohne Begründung

Gewinnrate Gleichstand Verlustrate
GitHub-Copilot 0.199488 0.2289 0.571611
C++-Test ohne Begründungsfragen 0.571611 0.2289 0.199488

Paarweise Gewinnraten

GitHub-Copilot C++-Test mit Begründung C++-Test ohne Begründung
GitHub-Copilot - 0.150895 0.199488
C++-Test mit Begründung 0.644501 - 0.313433
C++-Test ohne Begründung 0.571611 0.186567 -
C/C++-Testsymbol in einer Lupe

Die Visualisierung verdeutlicht die überlegene Leistung von Parasoft C++test bei beiden Prompt-Ansätzen:

  • C++-Test ohne Begründung Erzielte gegen Copilot eine Siegquote von 57.9 %, bei 22.9 % Unentschieden und 19.9 % Niederlagen.
  • C++-Test mit Begründung Sie schnitten sogar noch besser ab mit einer Siegquote von 64.5 %, 20.5 % Unentschieden und nur 15.1 % Niederlagen.
  • Der durch Argumentation verbesserte Ansatz zeigt eine Verbesserung der Gewinnrate um etwa 6.6 Prozentpunkte gegenüber reinen Aufforderungen.

In beiden Konfigurationen gewinnt C++test häufiger als es zu einem Unentschieden oder einer Niederlage kommt, was eine durchgängige Überlegenheit in der Qualität der Fehlerbehebungen beweist.

Hauptergebnisse

Diese Analyse zeigt, dass die mit den Parasoft-Prompts erzielten Korrekturen durchweg besser abschneiden als jene von GitHub Copilot. Die Leistung wurde sowohl für einfache als auch für mit Begründungen versehene Prompt-Varianten untersucht, wobei die mit Begründungen versehenen Prompts etwas besser abschnitten.

Eine manuelle Überprüfung der Beispieldaten ergab, dass die mit den Parasoft-Prompts generierten Korrekturen oft vollständiger sind (z. B. werden alle Instanzen eines Problems in benachbarten Zeilen behoben), robuster (bessere Fehlerbehandlung implementiert) und den gängigen Codierungspraktiken entsprechen.

Die überlegene Leistung wird auf zwei Schlüsselfaktoren im Design der Eingabeaufforderungen von Parasoft zurückgeführt:

  • Einbeziehung der Regeldokumentation: Die Eingabeaufforderungen enthalten die vollständige Dokumentation der Codierungsregeln und liefern dem Modell somit einen expliziten Kontext darüber, was einen Verstoß darstellt und wie dieser angemessen behoben werden kann.
  • Durchsetzung der Gedankenkette: Sowohl die Denkfragen als auch die strukturelle Gestaltung der einfachen Aufgabenstellungen fördern eine systematische Problemanalyse und regen das Modell dazu an, das Problem methodisch zu durchdenken, bevor Lösungen generiert werden.

Diese Elemente arbeiten zusammen, um die Fähigkeit des Modells zur Generierung von Fehlerbehebungen zu verbessern, was zu zuverlässigeren und umfassenderen Codekorrekturen führt.

Forschungsbeschränkungen

Diese Studie berücksichtigt mehrere methodische Einschränkungen:

  1. Einschränkung des Anwendungsbereichs. Die Analyse beschränkte sich auf Verstöße, die von Parasoft C/C++test erzeugt wurden, wobei nur Verstöße innerhalb von Funktionsrümpfen analysiert wurden. Verstöße außerhalb von Funktionsrümpfen wurden in dieser Analyse nicht berücksichtigt.
  2. Verzerrung durch den Bewertungskontext. Die Ranking-Aufforderungen enthielten lediglich den Funktionskörper, nicht aber anderen relevanten Code, und lieferten somit dieselben eingeschränkten Informationen wie die Korrekturaufforderung von Parasoft. Copilot hingegen nutzt den vollständigen (oder nahezu vollständigen) Dateikontext. In seltenen Fällen, in denen die Aufforderungsvorlagen von Parasoft zwar einen Verstoß als Fehlalarm anzeigen, dem Modell aber die Informationen zur Behebung fehlen, während der umfassendere Kontext von Copilot eine korrekte Bewertung ermöglicht, könnte das Ranking-Modell mit den begrenzten Daten dazu neigen, der Bewertung von Parasoft zuzustimmen.
Entwicklerteam

Bereit, tiefer einzutauchen?

Vollständiges Whitepaper anfordern