diff --git a/.gitignore b/.gitignore index 24cae48..27c7ba3 100644 --- a/.gitignore +++ b/.gitignore @@ -14,6 +14,7 @@ GumTreeInput/ GumTreeInput1/ GumTreeOutput1/ GumTreeResults/ +.idea/* */Test.java *TestParser.java diff --git a/src/main/java/edu/lu/uni/serval/FixPatternParser/violations/FixedViolationHunkParser.java b/src/main/java/edu/lu/uni/serval/FixPatternParser/violations/FixedViolationHunkParser.java index 4d885ea..eb1eca1 100644 --- a/src/main/java/edu/lu/uni/serval/FixPatternParser/violations/FixedViolationHunkParser.java +++ b/src/main/java/edu/lu/uni/serval/FixPatternParser/violations/FixedViolationHunkParser.java @@ -1,5 +1,9 @@ package edu.lu.uni.serval.FixPatternParser.violations; +import com.github.gumtreediff.actions.model.Delete; +import com.github.gumtreediff.actions.model.Insert; +import com.github.gumtreediff.actions.model.Move; +import com.github.gumtreediff.actions.model.Update; import edu.lu.uni.serval.gumtree.regroup.HierarchicalActionSet; import java.io.*; @@ -30,27 +34,29 @@ public class FixedViolationHunkParser extends FixedViolationParser { public void parseFixPatterns(File prevFile, File revFile, File diffentryFile,String project) { List actionSets = parseChangedSourceCodeWithGumTree2(prevFile, revFile); if (actionSets.size() != 0) { -// boolean isUpdate = -// actionSets.stream().allMatch(p -> p.getAction() instanceof Update); -// boolean isInsert = -// actionSets.stream().allMatch(p -> p.getAction() instanceof Insert); -// boolean isDelete = -// actionSets.stream().allMatch(p -> p.getAction() instanceof Delete); -// boolean isMove = -// actionSets.stream().allMatch(p -> p.getAction() instanceof Move); int hunkSet = 0; // if (isUpdate || isInsert || isDelete || isMove) { for (HierarchicalActionSet actionSet : actionSets) { - String folder = "/ALL/"; -// if (isUpdate) { -// folder = "/UPD/"; -// } else if (isDelete) { -// folder = "/DEL/"; -// } else if (isInsert) { -// folder = "/INS/"; -// } else if (isMove) { -// folder = "/MOV/"; -// } + boolean isUpdate = + actionSets.stream().allMatch(p -> p.getAction() instanceof Update); + boolean isInsert = + actionSets.stream().allMatch(p -> p.getAction() instanceof Insert); + boolean isDelete = + actionSets.stream().allMatch(p -> p.getAction() instanceof Delete); + boolean isMove = + actionSets.stream().allMatch(p -> p.getAction() instanceof Move); + String folder = "/MIX/"; + if (isUpdate) { + folder = "/UPD/"; + } else if (isDelete) { + folder = "/DEL/"; + } else if (isInsert) { + folder = "/INS/"; + } else if (isMove) { + folder = "/MOV/"; + } else{ + folder = "/MIX/"; + } FileOutputStream f = null; diff --git a/src/main/java/edu/lu/uni/serval/MultipleThreadsParser/ParseFixPatternWorker.java b/src/main/java/edu/lu/uni/serval/MultipleThreadsParser/ParseFixPatternWorker.java index 3084dbe..ffe1b01 100644 --- a/src/main/java/edu/lu/uni/serval/MultipleThreadsParser/ParseFixPatternWorker.java +++ b/src/main/java/edu/lu/uni/serval/MultipleThreadsParser/ParseFixPatternWorker.java @@ -61,7 +61,7 @@ public class ParseFixPatternWorker extends UntypedActor { int testInfos = 0; int timeouts = 0; StringBuilder builder = new StringBuilder(); - +// log.info("Work queue size " + files.size()); for (MessageFile msgFile : files) { File revFile = msgFile.getRevFile(); File prevFile = msgFile.getPrevFile(); diff --git a/src/main/java/edu/lu/uni/serval/config/Configuration.java b/src/main/java/edu/lu/uni/serval/config/Configuration.java index 4421c72..7162180 100644 --- a/src/main/java/edu/lu/uni/serval/config/Configuration.java +++ b/src/main/java/edu/lu/uni/serval/config/Configuration.java @@ -2,6 +2,6 @@ package edu.lu.uni.serval.config; public class Configuration { - public static final long SECONDS_TO_WAIT = 900L; + public static final long SECONDS_TO_WAIT = 90000L; } diff --git a/src/main/java/edu/lu/uni/serval/fixminer/EnhancedASTDiff.java b/src/main/java/edu/lu/uni/serval/fixminer/EnhancedASTDiff.java index 43895e0..066b07d 100644 --- a/src/main/java/edu/lu/uni/serval/fixminer/EnhancedASTDiff.java +++ b/src/main/java/edu/lu/uni/serval/fixminer/EnhancedASTDiff.java @@ -5,7 +5,7 @@ import akka.actor.ActorSystem; import edu.lu.uni.serval.MultipleThreadsParser.MessageFile; import edu.lu.uni.serval.MultipleThreadsParser.ParseFixPatternActor; import edu.lu.uni.serval.MultipleThreadsParser.WorkMessage; -import edu.lu.uni.serval.utils.FileHelper; +import edu.lu.uni.serval.FixPattern.utils.FileHelper; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -13,6 +13,7 @@ import java.io.File; import java.util.ArrayList; import java.util.Arrays; import java.util.List; +import java.util.Locale; import java.util.stream.Collectors; import java.util.stream.Stream; @@ -31,6 +32,7 @@ public class EnhancedASTDiff { Stream stream = Arrays.stream(listOfFiles); List folders = stream .filter(x -> !x.getName().startsWith(".")) +// .filter(x -> x.getName().startsWith("JDT")) .collect(Collectors.toList()); @@ -49,11 +51,11 @@ public class EnhancedASTDiff { FileHelper.createDirectory(GUM_TREE_OUTPUT + "/INS"); FileHelper.createDirectory(GUM_TREE_OUTPUT + "/DEL"); FileHelper.createDirectory(GUM_TREE_OUTPUT + "/MOV"); - FileHelper.createDirectory(GUM_TREE_OUTPUT + "/ALL"); + FileHelper.createDirectory(GUM_TREE_OUTPUT + "/MIX"); int a = 0; - + log.info("Work queue size " + msgFiles.size()); ActorSystem system = null; ActorRef parsingActor = null; final WorkMessage msg = new WorkMessage(0, msgFiles); @@ -80,6 +82,11 @@ public class EnhancedASTDiff { if (revFiles.length >= 0) { for (File revFile : revFiles) { String fileName = revFile.getName(); + if(fileName.toLowerCase(Locale.ENGLISH).contains("test")){ + log.info(fileName); + continue; + } + File prevFile = new File(gumTreeInput + "prevFiles/prev_" + fileName);// previous file fileName = fileName.replace(".java", ".txt"); File diffentryFile = new File(gumTreeInput + "DiffEntries/" + fileName); // DiffEntry file diff --git a/src/main/java/edu/lu/uni/serval/fixminer/TestHunkParserSingleFile.java b/src/main/java/edu/lu/uni/serval/fixminer/TestHunkParserSingleFile.java index 44575a7..88f36c6 100644 --- a/src/main/java/edu/lu/uni/serval/fixminer/TestHunkParserSingleFile.java +++ b/src/main/java/edu/lu/uni/serval/fixminer/TestHunkParserSingleFile.java @@ -5,7 +5,7 @@ import akka.actor.ActorSystem; import edu.lu.uni.serval.MultipleThreadsParser.MessageFile; import edu.lu.uni.serval.MultipleThreadsParser.ParseFixPatternActor; import edu.lu.uni.serval.MultipleThreadsParser.WorkMessage; -import edu.lu.uni.serval.utils.FileHelper; +import edu.lu.uni.serval.FixPattern.utils.FileHelper; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/src/main/java/edu/lu/uni/serval/fixminer/cluster/CallShell.java b/src/main/java/edu/lu/uni/serval/fixminer/cluster/CallShell.java index 9c1d05d..3dceda0 100644 --- a/src/main/java/edu/lu/uni/serval/fixminer/cluster/CallShell.java +++ b/src/main/java/edu/lu/uni/serval/fixminer/cluster/CallShell.java @@ -37,7 +37,7 @@ public class CallShell { } // Thread.sleep(Integer.valueOf(serverWait)); - String cmd = "redis-cli -p %s ping"; + String cmd = "bash source activate redisEnv && redis-cli -p %s ping"; String cmd1 = String.format(cmd,Integer.valueOf(port)); runPing(cmd1); diff --git a/src/main/java/edu/lu/uni/serval/fixminer/cluster/StoreEDiffInCache.java b/src/main/java/edu/lu/uni/serval/fixminer/cluster/StoreEDiffInCache.java index 39bba51..8657dce 100644 --- a/src/main/java/edu/lu/uni/serval/fixminer/cluster/StoreEDiffInCache.java +++ b/src/main/java/edu/lu/uni/serval/fixminer/cluster/StoreEDiffInCache.java @@ -52,13 +52,15 @@ public class StoreEDiffInCache { .filter(x -> x.getName().startsWith("UPD") || x.getName().startsWith("INS") || x.getName().startsWith("DEL") || + x.getName().startsWith("MIX") || x.getName().startsWith("MOV")) .collect(Collectors.toList()); File[] files1 = fs.get(0).listFiles(); File[] files2 = fs.get(1).listFiles(); File[] files3 = fs.get(2).listFiles(); File[] files4 = fs.get(3).listFiles(); - dumps = Stream.of(files1, files2, files3,files4).flatMap(Stream::of).toArray(File[]::new); + File[] files5 = fs.get(4).listFiles(); + dumps = Stream.of(files1, files2, files3,files4,files5).flatMap(Stream::of).toArray(File[]::new); }else{ fs = fileStream .filter(x -> x.getName().startsWith(operation)) @@ -70,7 +72,7 @@ public class StoreEDiffInCache { for (File f : dumps) { String name = f.getName(); - String key = pjName + "/"+ operation+"/" + name; + String key = pjName + f.getPath().replace(pj.getPath(),""); String result = key +","+f.getPath(); workList.add(result); }