Die Motivation des Artikels besteht darin, die Zwischendarstellung des Quellcodes zu vermeiden, den Quellcode als Bild darzustellen und die semantischen Informationen des Codes direkt zu extrahieren, um die Leistung der Fehlervorhersage zu verbessern.
Sehen Sie sich zunächst das Motivationsbeispiel unten an. Obwohl beide Beispiele von File1.java und File2.java 1 if-Anweisung, 2 for-Anweisungen und 4 Funktionsaufrufe enthalten, sind die Semantik und strukturellen Merkmale des Codes unterschiedlich. Um zu überprüfen, ob die Konvertierung des Quellcodes in Bilder zur Unterscheidung verschiedener Codes beitragen kann, führte der Autor ein Experiment durch: Ordnen Sie den Quellcode entsprechend der ASCII-Dezimalzahl der Zeichen Pixeln zu, ordnen Sie sie in einer Pixelmatrix an und erhalten Sie ein Bild von der Quellcode. Der Autor weist darauf hin, dass es Unterschiede zwischen verschiedenen Quellcode-Bildern gibt.
Abb. 1 Motivationsbeispiel
Die Hauptbeiträge des Artikels sind wie folgt:
Konvertieren Sie den Code in ein Bild und extrahieren Sie semantische und strukturelle Informationen daraus.
Schlagen Sie ein End-to-End-Framework vor kombiniert Selbstaufmerksamkeitsmechanismus und Migration. Lernen, Fehlervorhersagen umzusetzen.
Das im Artikel vorgeschlagene Modell-Framework ist in Abbildung 2 dargestellt und in zwei Phasen unterteilt: Quellcode-Visualisierung und Deep-Transfer-Learning-Modellierung.
Abb. 2 Framework
Der Artikel wandelt den Quellcode in 6 Bilder um und der Vorgang ist in Abbildung 3 dargestellt. Konvertieren Sie die dezimalen ASCII-Codes der Quellcodezeichen in 8-Bit-Ganzzahlvektoren ohne Vorzeichen, ordnen Sie diese Vektoren nach Zeilen und Spalten an und generieren Sie eine Bildmatrix. 8-Bit-Ganzzahlen entsprechen direkt den Graustufen. Um das Problem des kleinen Originaldatensatzes zu lösen, schlug der Autor im Artikel eine auf Farbverstärkung basierende Datensatzerweiterungsmethode vor: Die Werte der drei Farbkanäle R, G und B werden angeordnet und kombiniert, um 6 Farbbilder zu erzeugen. Es sieht hier sehr verwirrend aus, nachdem der Kanalwert geändert wurde, sollten sich die semantischen und strukturellen Informationen ändern, oder? Aber der Autor erklärt es in einer Fußnote, wie in Abbildung 4 dargestellt.
Abb. 3 Quellcode-Visualisierungsprozess
Abb. 4 Artikel-Fußnote 2
Abb. 5 Trainings- und Testprozess
3. Modelltraining und Vorhersage
Abb. 6 Datensatzstruktur
Für die projektinterne Fehlervorhersage wählt der Artikel das folgende Basismodell zum Vergleich:
Für die projektübergreifende Fehlervorhersage wählt der Artikel das folgende Basismodell zum Vergleich aus:
Zusammenfassend lässt sich sagen, dass die Idee, obwohl es sich um eine Arbeit vor zwei Jahren handelte, immer noch relativ neu ist und eine Reihe von Code-Zwischendarstellungen wie z als AST. Konvertieren Sie Code direkt in Bilder, um Features zu extrahieren. Aber ich bin immer noch verwirrt. Enthält das aus dem Code konvertierte Bild wirklich die semantischen und strukturellen Informationen des Quellcodes? Es fühlt sich nicht sehr erklärbar an, haha. Wir müssen später einige experimentelle Analysen durchführen.
Das obige ist der detaillierte Inhalt vonVerwendung von Softwarevisualisierung und Transferlernen bei der Vorhersage von Softwarefehlern. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!