From 000d04f90a62a1c11387bf200c22af92b81a0ad7 Mon Sep 17 00:00:00 2001 From: Kui LIU Date: Tue, 1 Aug 2017 12:12:11 +0200 Subject: [PATCH] Update --- .gitignore | 1 + .../serval/FixPatternParser/HunkParser.java | 50 +---------------- .../SingleStatementParser.java | 50 +---------------- .../serval/FixPatternParser/TestParser.java | 21 ++++++- .../serval/FixPatternParser/Tokenizer.java | 56 +++++++++++++++++++ 5 files changed, 77 insertions(+), 101 deletions(-) create mode 100644 src/main/java/edu/lu/uni/serval/FixPatternParser/Tokenizer.java diff --git a/.gitignore b/.gitignore index 669427b..9a1b12b 100644 --- a/.gitignore +++ b/.gitignore @@ -11,5 +11,6 @@ OUTPUT/ *.csv *.pdf Dataset/ +src/main/java/edu/lu/uni/serval/FixPatternParser/TestParser.java # Package Files # *.jar diff --git a/src/main/java/edu/lu/uni/serval/FixPatternParser/HunkParser.java b/src/main/java/edu/lu/uni/serval/FixPatternParser/HunkParser.java index 44b87b6..021cb94 100644 --- a/src/main/java/edu/lu/uni/serval/FixPatternParser/HunkParser.java +++ b/src/main/java/edu/lu/uni/serval/FixPatternParser/HunkParser.java @@ -121,7 +121,7 @@ public class HunkParser { this.astEditScripts += astEditScripts + "\n"; // this.buggyTrees += Configuration.BUGGY_TREE_TOKEN + "\n" + simpleTree.toString() + "\n"; - this.tokensOfSourceCode += getTokensDeepFirst(simpleTree).trim() + "\n"; + this.tokensOfSourceCode += Tokenizer.getTokensDeepFirst(simpleTree).trim() + "\n"; // this.actionSets += Configuration.BUGGY_TREE_TOKEN + "\n" + readActionSet(actionSet, "") + "\n"; // this.originalTree += Configuration.BUGGY_TREE_TOKEN + "\n" + actionSet.getOriginalTree().toString() + "\n"; @@ -138,54 +138,6 @@ public class HunkParser { return str; } - private String getTokensDeepFirst(SimpleTree simpleTree) { - String tokens = ""; - List children = simpleTree.getChildren(); - String astNodeType = simpleTree.getNodeType(); - if ("AssertStatement".equals(astNodeType) || "DoStatement".equals(astNodeType) - || "ForStatement".equals(astNodeType) || "IfStatement".equals(astNodeType) - || "ReturnStatement".equals(astNodeType) || "SwitchStatement".equals(astNodeType) - || "SynchronizedStatement".equals(astNodeType) || "ThrowStatement".equals(astNodeType) - || "TryStatement".equals(astNodeType) || "WhileStatement".equals(astNodeType)) { - String label = simpleTree.getLabel(); - label = label.substring(0, label.lastIndexOf("S")).toLowerCase(); - tokens += label + " "; - } else if ("EnhancedForStatement".equals(astNodeType)) { - tokens += "for "; - } else if ("CatchClause".equals(astNodeType)) { - tokens += "catch "; - } else if ("SwitchCase".equals(astNodeType)) { - tokens += "case "; - } else if ("SuperConstructorInvocation".equals(astNodeType)) { - tokens += "super "; - } else if ("ConstructorInvocation".equals(astNodeType)) { - tokens += "this "; - } else if ("FinallyBody".equals(astNodeType)) { - tokens += "finally "; - } - - if (children.isEmpty()) { - if ("StringLiteral".equals(astNodeType)) { - tokens += astNodeType + " stringLiteral "; - } else if ("CharacterLiteral".equals(astNodeType)) { - tokens += astNodeType + " charLiteral "; - } else if ("ArrayInitializer".equals(astNodeType)) { - tokens += astNodeType + " arrayInitializer "; - } else { - tokens += astNodeType + " " + simpleTree.getLabel() + " "; - } - } else { - if ("ArrayInitializer".equals(astNodeType)) { - tokens += astNodeType + " arrayInitializer "; - } else { - for (SimpleTree child : children) { - tokens += getTokensDeepFirst(child); - } - } - } - return tokens; - } - private String getSemiSourceCodeEditScripts(HierarchicalActionSet actionSet) { // TODO Auto-generated method stub return null; diff --git a/src/main/java/edu/lu/uni/serval/FixPatternParser/SingleStatementParser.java b/src/main/java/edu/lu/uni/serval/FixPatternParser/SingleStatementParser.java index fcebbf7..6925524 100644 --- a/src/main/java/edu/lu/uni/serval/FixPatternParser/SingleStatementParser.java +++ b/src/main/java/edu/lu/uni/serval/FixPatternParser/SingleStatementParser.java @@ -161,7 +161,7 @@ public class SingleStatementParser { String semiSourceCodeEditScripts = getSemiSourceCodeEditScripts(actionSet); // this.buggyTrees += Configuration.BUGGY_TREE_TOKEN + "\n" + simpleTree.toString() + "\n"; - this.tokensOfSourceCode += getTokensDeepFirst(simpleTree).trim() + "\n"; + this.tokensOfSourceCode += Tokenizer.getTokensDeepFirst(simpleTree).trim() + "\n"; // this.actionSets += Configuration.BUGGY_TREE_TOKEN + "\n" + readActionSet(actionSet, "") + "\n"; // this.originalTree += Configuration.BUGGY_TREE_TOKEN + "\n" + actionSet.getOriginalTree().toString() + "\n"; } @@ -249,54 +249,6 @@ public class SingleStatementParser { return str; } - private String getTokensDeepFirst(SimpleTree simpleTree) { - String tokens = ""; - List children = simpleTree.getChildren(); - String astNodeType = simpleTree.getNodeType(); - if ("AssertStatement".equals(astNodeType) || "DoStatement".equals(astNodeType) - || "ForStatement".equals(astNodeType) || "IfStatement".equals(astNodeType) - || "ReturnStatement".equals(astNodeType) || "SwitchStatement".equals(astNodeType) - || "SynchronizedStatement".equals(astNodeType) || "ThrowStatement".equals(astNodeType) - || "TryStatement".equals(astNodeType) || "WhileStatement".equals(astNodeType)) { - String label = simpleTree.getLabel(); - label = label.substring(0, label.lastIndexOf("S")).toLowerCase(); - tokens += label + " "; - } else if ("EnhancedForStatement".equals(astNodeType)) { - tokens += "for "; - } else if ("CatchClause".equals(astNodeType)) { - tokens += "catch "; - } else if ("SwitchCase".equals(astNodeType)) { - tokens += "case "; - } else if ("SuperConstructorInvocation".equals(astNodeType)) { - tokens += "super "; - } else if ("ConstructorInvocation".equals(astNodeType)) { - tokens += "this "; - } else if ("FinallyBody".equals(astNodeType)) { - tokens += "finally "; - } - - if (children.isEmpty()) { - if ("StringLiteral".equals(astNodeType)) { - tokens += astNodeType + " stringLiteral "; - } else if ("CharacterLiteral".equals(astNodeType)) { - tokens += astNodeType + " charLiteral "; - } else if ("ArrayInitializer".equals(astNodeType)) { - tokens += astNodeType + " arrayInitializer "; - } else { - tokens += astNodeType + " " + simpleTree.getLabel() + " "; - } - } else { - if ("ArrayInitializer".equals(astNodeType)) { - tokens += astNodeType + " arrayInitializer "; - } else { - for (SimpleTree child : children) { - tokens += getTokensDeepFirst(child); - } - } - } - return tokens; - } - private String getSemiSourceCodeEditScripts(HierarchicalActionSet actionSet) { // TODO Auto-generated method stub return null; diff --git a/src/main/java/edu/lu/uni/serval/FixPatternParser/TestParser.java b/src/main/java/edu/lu/uni/serval/FixPatternParser/TestParser.java index 3e1885d..a86ce25 100644 --- a/src/main/java/edu/lu/uni/serval/FixPatternParser/TestParser.java +++ b/src/main/java/edu/lu/uni/serval/FixPatternParser/TestParser.java @@ -12,11 +12,11 @@ import edu.lu.uni.serval.utils.FileHelper; public class TestParser { public static void main(String[] args) { - String testDataPath = "../../gumtree/gen.jdt/Dataset/"; //DiffEntries prevFiles revFiles + String testDataPath = "Dataset/"; //DiffEntries prevFiles revFiles File inputFileDirector = new File(testDataPath); File[] files = inputFileDirector.listFiles(); // project folders - FileHelper.deleteDirectory("OUTPUT/GumTreeResults_Exp/"); + FileHelper.deleteDirectory("OUTPUT/GumTreeResults_Exp2/"); FileHelper.deleteDirectory("OUTPUT/GumTreeResults_Exp_ASTNode/"); FileHelper.deleteDirectory("OUTPUT/GumTreeResults_Exp_RawCode/"); @@ -26,6 +26,7 @@ public class TestParser { StringBuilder actionSets = new StringBuilder(); StringBuilder tokens = new StringBuilder(); StringBuilder sizes = new StringBuilder(); + StringBuilder patches = new StringBuilder(); for (File file : files) { String projectFolder = file.getPath(); @@ -36,8 +37,12 @@ public class TestParser { if (revFile.getName().endsWith(".java")) { File prevFile = new File(projectFolder + "/prevFiles/prev_" + revFile.getName());// previous file File diffentryFile = new File(projectFolder + "/DiffEntries/" + revFile.getName().replace(".java", ".txt")); // DiffEntry file + if (revFile.getName().equals("e47d34src#java#org#apache#commons#io#FileCleaner.java")) { // if 的范围 + System.out.println(); + } - Parser parser = new Parser(); + SingleStatementParser parser = new SingleStatementParser(); +// HunkParser parser = new HunkParser(); try { parser.parseFixPatterns(prevFile, revFile, diffentryFile); @@ -47,6 +52,7 @@ public class TestParser { actionSets.append(parser.getActionSets()); tokens.append(parser.getTokensOfSourceCode()); sizes.append(parser.getSizes()); + patches.append(parser.getPatchesSourceCode()); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { @@ -54,6 +60,7 @@ public class TestParser { } } } +// break; } FileHelper.outputToFile("OUTPUT/GumTreeResults_Exp/EditScripts.list", astEditScripts, false); FileHelper.outputToFile("OUTPUT/GumTreeResults_Exp/OriginalTrees.list", originalTrees, false); @@ -61,5 +68,13 @@ public class TestParser { FileHelper.outputToFile("OUTPUT/GumTreeResults_Exp/ActionSets.list", actionSets, false); FileHelper.outputToFile("OUTPUT/GumTreeResults_Exp/Tokens.list", tokens, false); FileHelper.outputToFile("OUTPUT/GumTreeResults_Exp/Sizes.list", sizes, false); + FileHelper.outputToFile("OUTPUT/GumTreeResults_Exp/Patches.list", patches, false); +// FileHelper.outputToFile("OUTPUT/GumTreeResults_Exp2/EditScripts.list", astEditScripts, false); +// FileHelper.outputToFile("OUTPUT/GumTreeResults_Exp2/OriginalTrees.list", originalTrees, false); +// FileHelper.outputToFile("OUTPUT/GumTreeResults_Exp2/BuggyTrees.list", buggyTrees, false); +// FileHelper.outputToFile("OUTPUT/GumTreeResults_Exp2/ActionSets.list", actionSets, false); +// FileHelper.outputToFile("OUTPUT/GumTreeResults_Exp2/Tokens.list", tokens, false); +// FileHelper.outputToFile("OUTPUT/GumTreeResults_Exp2/Sizes.list", sizes, false); +// FileHelper.outputToFile("OUTPUT/GumTreeResults_Exp2/Patches.list", patches, false); } } diff --git a/src/main/java/edu/lu/uni/serval/FixPatternParser/Tokenizer.java b/src/main/java/edu/lu/uni/serval/FixPatternParser/Tokenizer.java new file mode 100644 index 0000000..f5702ad --- /dev/null +++ b/src/main/java/edu/lu/uni/serval/FixPatternParser/Tokenizer.java @@ -0,0 +1,56 @@ +package edu.lu.uni.serval.FixPatternParser; + +import java.util.List; + +import edu.lu.uni.serval.gumtree.regroup.SimpleTree; + +public class Tokenizer { + + public static String getTokensDeepFirst(SimpleTree simpleTree) { + String tokens = ""; + List children = simpleTree.getChildren(); + String astNodeType = simpleTree.getNodeType(); + if ("AssertStatement".equals(astNodeType) || "DoStatement".equals(astNodeType) + || "ForStatement".equals(astNodeType) || "IfStatement".equals(astNodeType) + || "ReturnStatement".equals(astNodeType) || "SwitchStatement".equals(astNodeType) + || "SynchronizedStatement".equals(astNodeType) || "ThrowStatement".equals(astNodeType) + || "TryStatement".equals(astNodeType) || "WhileStatement".equals(astNodeType)) { + String label = simpleTree.getLabel(); + label = label.substring(0, label.lastIndexOf("S")).toLowerCase(); + tokens += label + " "; + } else if ("EnhancedForStatement".equals(astNodeType)) { + tokens += "for "; + } else if ("CatchClause".equals(astNodeType)) { + tokens += "catch "; + } else if ("SwitchCase".equals(astNodeType)) { + tokens += "case "; + } else if ("SuperConstructorInvocation".equals(astNodeType)) { + tokens += "super "; + } else if ("ConstructorInvocation".equals(astNodeType)) { + tokens += "this "; + } else if ("FinallyBody".equals(astNodeType)) { + tokens += "finally "; + } + + if (children.isEmpty()) { + if ("StringLiteral".equals(astNodeType)) { + tokens += astNodeType + " stringLiteral "; + } else if ("CharacterLiteral".equals(astNodeType)) { + tokens += astNodeType + " charLiteral "; + } else if ("ArrayInitializer".equals(astNodeType)) { + tokens += astNodeType + " arrayInitializer "; + } else { + tokens += astNodeType + " " + simpleTree.getLabel() + " "; + } + } else { + if ("ArrayInitializer".equals(astNodeType)) { + tokens += astNodeType + " arrayInitializer "; + } else { + for (SimpleTree child : children) { + tokens += getTokensDeepFirst(child); + } + } + } + return tokens; + } +}