Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Unparser #152

Open
wants to merge 25 commits into
base: develop
Choose a base branch
from
Open
Changes from 1 commit
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
272cae5
Drop Me
Aug 23, 2024
a54cb7f
Die Klasse DiffNode wurde zum speichern der Zeile mit dem endif erwei…
Oct 26, 2024
02bbdb7
Die Klasse VariationTreeNode wurde zum speichern der Zeile mit dem en…
Oct 26, 2024
558bad1
Die Klassen VariationNode und Projection wurden um eine Methode zum A…
Oct 26, 2024
f4e3966
Beim Erstellen eines VariationTrees aus einem Variation-Diff wird jet…
Oct 26, 2024
f3945e7
Unparser für Variation-Trees wurde eingebaut dazu eine Testkalsse ers…
Oct 28, 2024
ba1d260
Der Parser wurde zum Speichern von Zeilen mit endif erweitert. Der Ty…
Oct 30, 2024
b484c49
Die Unparser für VariationTrees und VariationDiffs wurde erstellt.
Nov 1, 2024
a532fc4
methode zum projezieren von text diff erstellt
Nov 2, 2024
af652ca
In der Funktion zwei sachen mit einander vertauscht damit dem Algorit…
Nov 4, 2024
771651a
TestKlasse und Testfälle für das Testen von VariattionUnparser eingebaut
Nov 7, 2024
a7dd02d
Dataset datei hinzugefügt
Nov 27, 2024
ac68c15
Analayse von Unparser erstellt und ef Startbar in Doker gemacht
Nov 27, 2024
718866d
Analayse von Unparser repariert
Nov 28, 2024
4b25def
Analayse von Unparser repariert
Nov 28, 2024
06ebe21
Änderung der überprüften Daten
eugen-shulimov Dec 3, 2024
acf8956
Änderung der bei der Analyse
eugen-shulimov Dec 5, 2024
cd762c5
UnparseAnalysis: error reporting
pmbittner Dec 5, 2024
047db5f
Das speichern von endif berücksichtigt jetzt auch Time
eugen-shulimov Dec 21, 2024
fe1319f
Fälle welche nicht korrekt ungeparst werden konnten, aus der Auswertung
eugen-shulimov Dec 21, 2024
c8d5605
die methode zum undiffen wurde überarbeitet, doppelter code entfernt
eugen-shulimov Dec 21, 2024
b178a04
fall vergessetn zu commiten
eugen-shulimov Dec 21, 2024
3b2ff14
Die Klasse und datein welche die Auswertung umgesetzt haben
eugen-shulimov Dec 21, 2024
67f538f
Möglichkeit einzeln für datein die semantische gleicheit zu testen
eugen-shulimov Dec 21, 2024
d8329bf
Bei leerzeilen löschung wird bei diff ein leerzeichen vorne behalten …
eugen-shulimov Feb 10, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Die Klasse und datein welche die Auswertung umgesetzt haben
  • Loading branch information
eugen-shulimov committed Dec 21, 2024
commit 3b2ff148942fcc5923c50d05dac0ba930a778958
4 changes: 3 additions & 1 deletion docs/datasets/eugen-bachelor-thesis.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
Project name | Domain | Source code available (\*\*y\*\*es/\*\*n\*\*o)? | Is it a git repository (\*\*y\*\*es/\*\*n\*\*o)? | Repository URL | Clone URL | Estimated number of commits
-------------------|-------------------------|-------------------------------------------------|--------------------------------------------------|--------------------------------------------------------------|----------------------------------------------------|---------------------------------
xfig | vector graphics editor | y | y | https://github.com/hhoeflin/xfig | https://github.com/hhoeflin/xfig.git | 9
berkeley-db-libdb | database system | y | y | https://github.com/berkeleydb/libdb | https://github.com/berkeleydb/libdb.git | 7
sylpheed | e-mail client | y | y | https://github.com/jan0sch/sylpheed | https://github.com/jan0sch/sylpheed.git | 2,682
vim | text editor | y | y | https://github.com/vim/vim | https://github.com/vim/vim.git | 17,109
Original file line number Diff line number Diff line change
@@ -13,6 +13,8 @@
import org.variantsync.diffdetective.analysis.Analysis;
import org.variantsync.diffdetective.analysis.FilterAnalysis;
import org.variantsync.diffdetective.analysis.StatisticsAnalysis;
import org.variantsync.diffdetective.datasets.DatasetDescription;
import org.variantsync.diffdetective.datasets.DefaultDatasets;
import org.variantsync.diffdetective.datasets.PatchDiffParseOptions;
import org.variantsync.diffdetective.datasets.PatchDiffParseOptions.DiffStoragePolicy;
import org.variantsync.diffdetective.datasets.Repository;
@@ -22,11 +24,9 @@

public class Main {

public static String dataSetPath = "";

public static void main(String[] args) throws IOException {
startAnalysis();
//evaluationAnalysis(Path.of("docs","datasets","eugen-bachelor-thesis.md"));
evaluationAnalysis(Path.of("docs","datasets","eugen-bachelor-thesis.md"));

}

@@ -82,24 +82,30 @@ protected static BiConsumer<Repository, Path> extractionRunner() {
};
}

/**
* Verarbeitet die Ergebnisse der Analyse um aus einzelnen
* Angaben eine gesamt Übersicht zu bekommen
* @param path Pfad zu der markdown datei, aus der die repositories für die Analyse stammen
* @throws IOException
*/
private static void evaluationAnalysis(Path path) throws IOException{
int count = 0;
int error = 0;
int[] diffTest = {0,0,0,0,0,0,0,0};
int[] diffSemEqTest = {0,0,0,0,};
int[] treeTest = {0,0,0,0,0,0,0,0};
List<String> errorList = new ArrayList<>();
String data = Files.readString(path);
String[] splitPathData = data.split("\n");
for(int i=2; i<splitPathData.length;i++){
String name = splitPathData[i].split("|")[0].replaceAll("\\s+","");
final List<DatasetDescription> datasets = DefaultDatasets.loadDatasets(path);

for(DatasetDescription description : datasets){
Stream<Path> files = Files
.list(Path.of("results","views_es",name))
.list(Path.of("results","views_es",description.name()))
.filter(filename -> filename.getFileName().toString().endsWith(".views_es.csv"));
for (Path tempPath : files.toList()){
String[] splitFileData = Files.readString(tempPath).split("\n");
for(int j=1;j<splitFileData.length;j++){
String[] splitLineData = splitFileData[j].split(";");
for(int i=0;i<splitLineData.length;i++){
splitLineData[i] = parseNumberStringToIntWithLengthGreaterOne(splitLineData[i]);
}
count = count + 1;
diffTest[0] = diffTest[0] + Integer.parseInt(splitLineData[8]);
diffTest[1] = diffTest[1] + Integer.parseInt(splitLineData[9]);
@@ -129,56 +135,70 @@ private static void evaluationAnalysis(Path path) throws IOException{
treeTest[5] = treeTest[5] + Integer.parseInt(splitLineData[33]);
treeTest[6] = treeTest[6] + Integer.parseInt(splitLineData[34]);
treeTest[7] = treeTest[7] + Integer.parseInt(splitLineData[35]);
int errorCode = Integer.parseInt(splitLineData[36]);
if(errorCode != 1){
if(errorCode%2 ==0){
errorList.add(splitLineData[37]);
error = error + 1;
}
if(errorCode%3 ==0){
errorList.add(splitLineData[38]);
error = error + 1;
}
if(errorCode%5 ==0){
errorList.add(splitLineData[39]);
error = error + 1;
}
}


}
}
}
List<String> result = new ArrayList<>();
result.add("Anzahl geprüfter Diffs : " + count);
result.add("Anzahl syntaktisch korrekter Diffs mit MultiLine0 und EmptyLine0 : " + diffTest[0]);
result.add("Anzahl syntaktisch korrekter Diffs mit MultiLine1 und EmptyLine0 : " + diffTest[1]);
result.add("Anzahl syntaktisch korrekter Diffs mit MultiLine0 und EmptyLine1 : " + diffTest[2]);
result.add("Anzahl syntaktisch korrekter Diffs mit MultiLine1 und EmptyLine1 : " + diffTest[3]);
result.add("Anzahl syntaktisch korrekter Diffs ohne Whitespace mit MultiLine0 und EmptyLine0 : " + diffTest[4]);
result.add("Anzahl syntaktisch korrekter Diffs ohne Whitespace mit MultiLine1 und EmptyLine0 : " + diffTest[5]);
result.add("Anzahl syntaktisch korrekter Diffs ohne Whitespace mit MultiLine0 und EmptyLine1 : " + diffTest[6]);
result.add("Anzahl syntaktisch korrekter Diffs ohne Whitespace mit MultiLine1 und EmptyLine1 : " + diffTest[7]);
result.add("Anzahl semantisch korrekter Diffs mit MultiLine0 und EmptyLine0 : " + diffSemEqTest[0]);
result.add("Anzahl semantisch korrekter Diffs mit MultiLine1 und EmptyLine0 : " + diffSemEqTest[1]);
result.add("Anzahl semantisch korrekter Diffs mit MultiLine0 und EmptyLine1 : " + diffSemEqTest[2]);
result.add("Anzahl semantisch korrekter Diffs mit MultiLine1 und EmptyLine1 : " + diffSemEqTest[3]);
result.add("Anzahl syntaktisch korrekter Trees mit MultiLine0 und EmptyLine0 : " + treeTest[0]);
result.add("Anzahl syntaktisch korrekter Trees mit MultiLine1 und EmptyLine0 : " + treeTest[1]);
result.add("Anzahl syntaktisch korrekter Trees mit MultiLine0 und EmptyLine1 : " + treeTest[2]);
result.add("Anzahl syntaktisch korrekter Trees mit MultiLine1 und EmptyLine1 : " + treeTest[3]);
result.add("Anzahl syntaktisch korrekter Trees ohne Whitespace mit MultiLine0 und EmptyLine0 : " + treeTest[4]);
result.add("Anzahl syntaktisch korrekter Trees ohne Whitespace mit MultiLine1 und EmptyLine0 : " + treeTest[5]);
result.add("Anzahl syntaktisch korrekter Trees ohne Whitespace mit MultiLine0 und EmptyLine1 : " + treeTest[6]);
result.add("Anzahl syntaktisch korrekter Trees ohne Whitespace mit MultiLine1 und EmptyLine1 : " + treeTest[7]);
result.add("Anzahl Fehler : " + error);
result.add("Anzahl geprüfter Diffs : " + count+"\n");
result.add("Anzahl syntaktisch korrekter Diffs mit MultiLine0 und EmptyLine0 : " + diffTest[0] +"\n");
result.add("Anzahl syntaktisch korrekter Diffs ohne Whitespace mit MultiLine0 und EmptyLine0 : " + diffTest[4]+"\n");
result.add("Anzahl semantisch korrekter Diffs mit MultiLine0 und EmptyLine0 : " + diffSemEqTest[0]+"\n");
result.add("Anzahl von Diffs mit MultiLine0 und EmptyLine0, welche keine Korrektheitskriterium erfühlt haben : " + (count - diffSemEqTest[0]) + "\n");

result.add("Anzahl syntaktisch korrekter Diffs mit MultiLine1 und EmptyLine0 : " + diffTest[1]+"\n");
result.add("Anzahl syntaktisch korrekter Diffs ohne Whitespace mit MultiLine1 und EmptyLine0 : " + diffTest[5]+"\n");
result.add("Anzahl semantisch korrekter Diffs mit MultiLine1 und EmptyLine0 : " + diffSemEqTest[1]+"\n");
result.add("Anzahl von Diffs mit MultiLine1 und EmptyLine0, welche keine Korrektheitskriterium erfühlt haben : " + (count - diffSemEqTest[1]) + "\n");

result.add("Anzahl syntaktisch korrekter Diffs mit MultiLine0 und EmptyLine1 : " + diffTest[2]+"\n");
result.add("Anzahl syntaktisch korrekter Diffs ohne Whitespace mit MultiLine0 und EmptyLine1 : " + diffTest[6]+"\n");
result.add("Anzahl semantisch korrekter Diffs mit MultiLine0 und EmptyLine1 : " + diffSemEqTest[2]+"\n");
result.add("Anzahl von Diffs mit MultiLine0 und EmptyLine1, welche keine Korrektheitskriterium erfühlt haben : " + (count - diffSemEqTest[2]) + "\n");

result.add("Anzahl syntaktisch korrekter Diffs mit MultiLine1 und EmptyLine1 : " + diffTest[3]+"\n");
result.add("Anzahl syntaktisch korrekter Diffs ohne Whitespace mit MultiLine1 und EmptyLine1 : " + diffTest[7]+"\n");
result.add("Anzahl semantisch korrekter Diffs mit MultiLine1 und EmptyLine1 : " + diffSemEqTest[3]+"\n");
result.add("Anzahl von Diffs mit MultiLine1 und EmptyLine1, welche keine Korrektheitskriterium erfühlt haben : " + (count - diffSemEqTest[3]) + "\n");

result.add("-------------------------------------------------------------------------------------------");
result.add("Anzahl geprüfter Trees : "+count*2 +"\n");
result.add("Anzahl syntaktisch korrekter Trees mit MultiLine0 und EmptyLine0 : " + treeTest[0]+"\n");
result.add("Anzahl syntaktisch korrekter Trees ohne Whitespace mit MultiLine0 und EmptyLine0 : " + treeTest[4]+"\n");
result.add("Anzahl von Trees mit MultiLine0 und EmptyLine0, welche keine Korrektheitskriterium erfühlt haben : " + (2*count - treeTest[4]) + "\n");

result.add("Anzahl syntaktisch korrekter Trees mit MultiLine1 und EmptyLine0 : " + treeTest[1]+"\n");
result.add("Anzahl syntaktisch korrekter Trees ohne Whitespace mit MultiLine1 und EmptyLine0 : " + treeTest[5]+"\n");
result.add("Anzahl von Trees mit MultiLine1 und EmptyLine0, welche keine Korrektheitskriterium erfühlt haben : " + (2*count - treeTest[5]) + "\n");

result.add("Anzahl syntaktisch korrekter Trees mit MultiLine0 und EmptyLine1 : " + treeTest[2]+"\n");
result.add("Anzahl syntaktisch korrekter Trees ohne Whitespace mit MultiLine0 und EmptyLine1 : " + treeTest[6]+"\n");
result.add("Anzahl von Trees mit MultiLine0 und EmptyLine1, welche keine Korrektheitskriterium erfühlt haben : " + (2*count - treeTest[6]) + "\n");

result.add("Anzahl syntaktisch korrekter Trees mit MultiLine1 und EmptyLine1 : " + treeTest[3]+"\n");
result.add("Anzahl syntaktisch korrekter Trees ohne Whitespace mit MultiLine1 und EmptyLine1 : " + treeTest[7]+"\n");
result.add("Anzahl von Trees mit MultiLine1 und EmptyLine1, welche keine Korrektheitskriterium erfühlt haben : " + (2*count - treeTest[7]) + "\n");




Files.write(Path.of("results","views_es","resultOfAnalysis.txt"),result);
int c = 1;
for (String line : errorList){
Files.writeString(Path.of("results","views_es","errors",c+"error.txt"),line);
c = c +1;
}


}


private static String parseNumberStringToIntWithLengthGreaterOne(String string){
string = string.trim();
for(char c : string.toCharArray()){
if(Character.isDigit(c)){
return Character.toString(c);
}
}
return "";
}



}
Loading