Reading fix patterns.
This commit is contained in:
+1
@@ -8,6 +8,7 @@ import com.github.gumtreediff.tree.ITree;
|
||||
import com.github.gumtreediff.tree.TreeContext;
|
||||
import edu.lu.uni.serval.gumtree.regroup.HierarchicalActionSet;
|
||||
import edu.lu.uni.serval.utils.FileHelper;
|
||||
|
||||
import org.javatuples.Pair;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
+34
-30
@@ -1,38 +1,42 @@
|
||||
package edu.lu.uni.serval.FixPatternParser.violations;
|
||||
|
||||
import com.github.gumtreediff.actions.ActionGenerator;
|
||||
import com.github.gumtreediff.actions.model.*;
|
||||
import com.github.gumtreediff.matchers.Matcher;
|
||||
import com.github.gumtreediff.matchers.Matchers;
|
||||
import com.github.gumtreediff.tree.ITree;
|
||||
import com.github.gumtreediff.tree.TreeContext;
|
||||
import edu.lu.uni.serval.FixPattern.utils.ASTNodeMap;
|
||||
import edu.lu.uni.serval.gumtree.GumTreeComparer;
|
||||
import edu.lu.uni.serval.gumtree.regroup.HierarchicalActionSet;
|
||||
import edu.lu.uni.serval.gumtree.regroup.HierarchicalRegrouper;
|
||||
import edu.lu.uni.serval.utils.FileHelper;
|
||||
import edu.lu.uni.serval.utils.ListSorter;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.javatuples.Pair;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import redis.clients.jedis.*;
|
||||
|
||||
import java.io.*;
|
||||
import java.nio.ByteBuffer;
|
||||
import java.nio.channels.FileChannel;
|
||||
import java.time.Duration;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.Executors;
|
||||
import java.util.function.Consumer;
|
||||
import java.util.regex.Pattern;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.Stream;
|
||||
import org.apache.commons.text.similarity.*;
|
||||
|
||||
import static edu.lu.uni.serval.FixPatternParser.violations.MultiThreadTreeLoader.getKeysByValue;
|
||||
import static edu.lu.uni.serval.FixPatternParser.violations.MultiThreadTreeLoaderCluster.fromString;
|
||||
|
||||
import java.io.BufferedOutputStream;
|
||||
import java.io.DataOutputStream;
|
||||
import java.io.File;
|
||||
import java.io.FileNotFoundException;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.time.Duration;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.TreeSet;
|
||||
import java.util.regex.Pattern;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.apache.commons.text.similarity.JaroWinklerDistance;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import com.github.gumtreediff.tree.ITree;
|
||||
import com.github.gumtreediff.tree.TreeContext;
|
||||
|
||||
import edu.lu.uni.serval.FixPattern.utils.ASTNodeMap;
|
||||
import edu.lu.uni.serval.gumtree.regroup.HierarchicalActionSet;
|
||||
import edu.lu.uni.serval.utils.FileHelper;
|
||||
import redis.clients.jedis.Jedis;
|
||||
import redis.clients.jedis.JedisPool;
|
||||
import redis.clients.jedis.JedisPoolConfig;
|
||||
import redis.clients.jedis.ScanParams;
|
||||
import redis.clients.jedis.ScanResult;
|
||||
|
||||
/**
|
||||
* Created by anilkoyuncu on 19/03/2018.
|
||||
*/
|
||||
|
||||
@@ -24,7 +24,7 @@ public class Launcher {
|
||||
|
||||
Properties appProps = new Properties();
|
||||
|
||||
String appConfigPath = args[0];
|
||||
String appConfigPath = "/Users/kui.liu/Downloads/app.properties";//args[0];
|
||||
// String appConfigPath = "/Users/anilkoyuncu/bugStudy/release/code/app.properties";
|
||||
appProps.load(new FileInputStream(appConfigPath));
|
||||
|
||||
|
||||
@@ -12,6 +12,8 @@ import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
import edu.lu.uni.serval.FixPattern.utils.Checker;
|
||||
import edu.lu.uni.serval.FixPatternParser.violations.MultiThreadTreeLoader;
|
||||
import edu.lu.uni.serval.gumtree.regroup.HierarchicalActionSet;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
@@ -175,15 +177,15 @@ public class PatternExtractor {
|
||||
}
|
||||
|
||||
public static void getPattern(List<String> fixes,String operation){
|
||||
String clusterPath = "/Users/anilkoyuncu/bugStudy/release/dataset/output/clusterallDatasetUPD/";
|
||||
String savePath = "/Users/anilkoyuncu/bugStudy/release/dataset/dumps/";
|
||||
String clusterPath = "/Users/kui.liu/Downloads/clusterallDatasetUPD/";
|
||||
String savePath = "/Users/kui.liu/Downloads/dumps/";
|
||||
|
||||
File patternsF = new File(clusterPath);
|
||||
File[] listOfPatterns = patternsF.listFiles();
|
||||
Stream<File> patterns = Arrays.stream(listOfPatterns);
|
||||
List<File> patternsL = patterns
|
||||
.filter(x -> !x.getName().startsWith("."))
|
||||
// .filter(x-> x.getName().endsWith(".git"))
|
||||
// .filter(x -> !x.getName().endsWith(".git"))
|
||||
.collect(Collectors.toList());
|
||||
|
||||
for (File pattern:patternsL) {
|
||||
@@ -192,7 +194,7 @@ public class PatternExtractor {
|
||||
Stream<File> stream = Arrays.stream(listOfFiles);
|
||||
List<File> patches = stream
|
||||
.filter(x -> !x.getName().startsWith("."))
|
||||
// .filter(x -> x.getName().endsWith(".git"))
|
||||
.filter(x -> !x.getName().endsWith(".git"))
|
||||
.collect(Collectors.toList());
|
||||
|
||||
for (File patch : patches) {
|
||||
@@ -208,13 +210,26 @@ public class PatternExtractor {
|
||||
String content = new String(Files.readAllBytes(Paths.get(savePath + saveFN)));
|
||||
HierarchicalActionSet actionSet = (HierarchicalActionSet) fromString(content);
|
||||
|
||||
int astType = actionSet.getNode().getType();
|
||||
if (Checker.isStatement(astType) || astType == 23 //FieldDeclaration
|
||||
|| astType == 31 //MethodDeclaration
|
||||
|| astType == 55) {//TypeDeclaration
|
||||
System.out.println(actionSet);
|
||||
// ITree actionTree = MultiThreadTreeLoader.getActionTree(actionSet, null, null);
|
||||
// ITree simpliedTree = getSimpliedTree(actionSet);
|
||||
// System.out.println(new TreeToString().toString(simpliedTree));
|
||||
// System.out.println(new TreeToString().toString(actionTree));
|
||||
System.out.println("======");
|
||||
}
|
||||
|
||||
|
||||
ITree simpliedTree = getSimpliedTree(actionSet);
|
||||
simpliedTree.toString();
|
||||
// ITree simpliedTree = getSimpliedTree(actionSet);
|
||||
// simpliedTree.toString();
|
||||
}catch (Exception e){
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
System.out.println("============");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,47 @@
|
||||
package edu.lu.uni.serval;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import com.github.gumtreediff.tree.ITree;
|
||||
|
||||
import edu.lu.uni.serval.FixPattern.utils.ASTNodeMap;
|
||||
|
||||
public class TreeToString {
|
||||
|
||||
private List<String> strList = new ArrayList<>();
|
||||
|
||||
public String toString(ITree tree) {
|
||||
List<ITree> children = tree.getChildren();
|
||||
String str = ASTNodeMap.map.get(tree.getType());
|
||||
if (strList.size() == 0) {
|
||||
strList.add(str);
|
||||
for (ITree child : children) {
|
||||
TreeToString t2s = new TreeToString();
|
||||
t2s.toString(child);
|
||||
List<String> strList1 = t2s.strList;
|
||||
for (String str1 : strList1) {
|
||||
strList.add("---" + str1);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
strList.clear();
|
||||
strList.add(str);
|
||||
for (ITree child : children) {
|
||||
TreeToString t2s = new TreeToString();
|
||||
t2s.toString(child);
|
||||
List<String> strList1 = t2s.strList;
|
||||
for (String str1 : strList1) {
|
||||
strList.add("---" + str1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
str = "";
|
||||
for (String str1 : strList) {
|
||||
str += str1 + "\n";
|
||||
}
|
||||
|
||||
return str;
|
||||
}
|
||||
}
|
||||
@@ -1,15 +1,19 @@
|
||||
package edu.lu.uni.serval.gumtree.regroup;
|
||||
|
||||
import com.github.gumtreediff.actions.model.*;
|
||||
import com.github.gumtreediff.tree.ITree;
|
||||
import edu.lu.uni.serval.FixPattern.utils.CNodeMap;
|
||||
import edu.lu.uni.serval.gumtree.GumTreeComparer;
|
||||
import edu.lu.uni.serval.utils.ListSorter;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import com.github.gumtreediff.actions.model.Action;
|
||||
import com.github.gumtreediff.actions.model.Addition;
|
||||
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 com.github.gumtreediff.tree.ITree;
|
||||
|
||||
import edu.lu.uni.serval.FixPattern.utils.CNodeMap;
|
||||
import edu.lu.uni.serval.utils.ListSorter;
|
||||
|
||||
/**
|
||||
* Regroup GumTree results to a hierarchical construction.
|
||||
*
|
||||
@@ -18,14 +22,14 @@ import java.util.List;
|
||||
*/
|
||||
public class HierarchicalRegrouperForC {
|
||||
|
||||
public static void main(String[] args) {
|
||||
GumTreeComparer com = new GumTreeComparer();
|
||||
File cFile1 = new File("/Users/anilkoyuncu/bugStudy/dataset/GumTreeInput/linux-stable/prevFiles/prev_0a3d00_b404bc_drivers#pci#iov.c");
|
||||
File cFile2 = new File("/Users/anilkoyuncu/bugStudy/dataset/GumTreeInput/linux-stable/revFiles/0a3d00_b404bc_drivers#pci#iov.c");
|
||||
List<Action> action = com.compareTwoFilesWithGumTreeForCCode(cFile1, cFile2);
|
||||
List<HierarchicalActionSet> actionSet = new HierarchicalRegrouperForC().regroupGumTreeResults(action);
|
||||
System.out.println(actionSet);
|
||||
}
|
||||
// public static void main(String[] args) {
|
||||
// GumTreeComparer com = new GumTreeComparer();
|
||||
// File cFile1 = new File("/Users/anilkoyuncu/bugStudy/dataset/GumTreeInput/linux-stable/prevFiles/prev_0a3d00_b404bc_drivers#pci#iov.c");
|
||||
// File cFile2 = new File("/Users/anilkoyuncu/bugStudy/dataset/GumTreeInput/linux-stable/revFiles/0a3d00_b404bc_drivers#pci#iov.c");
|
||||
// List<Action> action = com.compareTwoFilesWithGumTreeForCCode(cFile1, cFile2);
|
||||
// List<HierarchicalActionSet> actionSet = new HierarchicalRegrouperForC().regroupGumTreeResults(action);
|
||||
// System.out.println(actionSet);
|
||||
// }
|
||||
|
||||
List<HierarchicalActionSet> actionSets = new ArrayList<>();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user