Create a checker.

This commit is contained in:
Kui LIU
2017-07-31 23:19:57 +02:00
parent 547d209af0
commit df55832113
4 changed files with 7 additions and 136 deletions
@@ -9,7 +9,7 @@ import com.github.gumtreediff.actions.model.Insert;
import com.github.gumtreediff.actions.model.Move;
import com.github.gumtreediff.tree.ITree;
import edu.lu.uni.serval.gumtree.utils.ASTNodeMap;
import edu.lu.uni.serval.FixPattern.utils.ASTNodeMap;
import edu.lu.uni.serval.utils.ListSorter;
/**
@@ -8,7 +8,8 @@ import java.util.Map;
import com.github.gumtreediff.actions.model.Action;
import com.github.gumtreediff.tree.ITree;
import edu.lu.uni.serval.gumtree.utils.ASTNodeMap;
import edu.lu.uni.serval.FixPattern.utils.ASTNodeMap;
import edu.lu.uni.serval.FixPattern.utils.Checker;
import edu.lu.uni.serval.utils.ListSorter;
/**
@@ -65,10 +66,7 @@ public class SimplifyTree {
} else {
ITree tree = actionSet.getNode();
String astNodeType = actionSet.getAstNodeType();
if ("EnhancedForStatement".equals(astNodeType) || "ForStatement".equals(astNodeType)
|| "DoStatement".equals(astNodeType) || "WhileStatement".equals(astNodeType)
|| "LabeledStatement".equals(astNodeType) || "SynchronizedStatement".equals(astNodeType)
|| "IfStatement".equals(astNodeType) || "TryStatement".equals(astNodeType)) {
if (Checker.containsBodyBlock(astNodeType)) {
// delete the body block.
List<ITree> children = tree.getChildren();
List<ITree> newChildren = new ArrayList<>();
@@ -511,7 +509,7 @@ public class SimplifyTree {
String label = tree.getLabel();
String astNode = ASTNodeMap.map.get(tree.getType());
if (isExpressionType(astNode)) {
if (Checker.isExpressionType(astNode)) {
if (modifyAction == null || !modifyAction.getActionString().contains("@@" + label)) {
simpleTree.setNodeType("Expression");
simpleTree.setLabel("EXP"); // astNode
@@ -566,10 +564,7 @@ public class SimplifyTree {
private List<Action> getAllMoveActions(HierarchicalActionSet actionSet) {
String astNodeType = actionSet.getAstNodeType();
if ("EnhancedForStatement".equals(astNodeType) || "ForStatement".equals(astNodeType)
|| "DoStatement".equals(astNodeType) || "WhileStatement".equals(astNodeType)
|| "LabeledStatement".equals(astNodeType) || "SynchronizedStatement".equals(astNodeType)
|| "IfStatement".equals(astNodeType) || "TryStatement".equals(astNodeType)) {
if (Checker.containsBodyBlock(astNodeType)) {
List<Action> allMoveActions = getAllMoveActions2(actionSet);
if (allMoveActions != null && allMoveActions.size() > 0) {
ListSorter<Action> sorter = new ListSorter<Action>(allMoveActions);
@@ -617,21 +612,6 @@ public class SimplifyTree {
}
}
private boolean isExpressionType(String astNode) {
if (astNode.equals("ArrayAccess") || astNode.equals("ArrayCreation") ||
astNode.equals("ArrayInitializer") || astNode.equals("Assignment") || astNode.equals("CastExpression") ||
astNode.equals("ClassInstanceCreation") || astNode.equals("ConditionalExpression") || astNode.equals("CreationReference") ||
astNode.equals("ExpressionMethodReference") || astNode.equals("FieldAccess") || astNode.equals("InfixExpression") ||
astNode.equals("InstanceofExpression") || astNode.equals("LambdaExpression") || astNode.equals("MethodInvocation") ||
astNode.equals("MethodReference") || astNode.equals("ParenthesizedExpression") || astNode.equals("PostfixExpression") ||
astNode.equals("PrefixExpression") || astNode.equals("SuperFieldAccess") || astNode.equals("SuperMethodInvocation") ||
astNode.equals("SuperMethodReference") || astNode.equals("TypeLiteral") || astNode.equals("TypeMethodReference")
|| astNode.equals("VariableDeclarationExpression") ) {
return true;
}
return false;
}
private HierarchicalActionSet findHierarchicalActionSet(int position, int length, HierarchicalActionSet actionSet) {
if (actionSet.getStartPosition() == position && actionSet.getLength() == length && !actionSet.getActionString().startsWith("INS")) {
return actionSet;
@@ -5,7 +5,7 @@ import java.util.List;
import com.github.gumtreediff.tree.ITree;
import edu.lu.uni.serval.gumtree.utils.ASTNodeMap;
import edu.lu.uni.serval.FixPattern.utils.ASTNodeMap;
/**
* A traveler to travel a tree-constructed object.
@@ -1,109 +0,0 @@
package edu.lu.uni.serval.gumtree.utils;
import java.util.HashMap;
import java.util.Map;
public class ASTNodeMap {
public static Map<Integer, String> map;
static {
map = new HashMap<Integer, String>();
map.put(-3, "Instanceof");
map.put(-2, "New");
map.put(-1, "Operator");
map.put(0, "ASTNode");
map.put(1, "AnonymousClassDeclaration");
map.put(2, "ArrayAccess");
map.put(3, "ArrayCreation");
map.put(4, "ArrayInitializer");
map.put(5, "ArrayType");
map.put(6, "AssertStatement");
map.put(7, "Assignment");
map.put(8, "Block");
map.put(9, "BooleanLiteral");
map.put(10, "BreakStatement");
map.put(11, "CastExpression");
map.put(12, "CatchClause");
map.put(13, "CharacterLiteral");
map.put(14, "ClassInstanceCreation");
map.put(15, "CompilationUnit");
map.put(16, "ConditionalExpression");
map.put(17, "ConstructorInvocation");
map.put(18, "ContinueStatement");
map.put(19, "DoStatement");
map.put(20, "EmptyStatement");
map.put(21, "ExpressionStatement");
map.put(22, "FieldAccess");
map.put(23, "FieldDeclaration");
map.put(24, "ForStatement");
map.put(25, "IfStatement");
map.put(26, "ImportDeclaration");
map.put(27, "InfixExpression");
map.put(28, "Initializer");
map.put(29, "Javadoc");
map.put(30, "LabeledStatement");
map.put(31, "MethodDeclaration");
map.put(32, "MethodInvocation");
map.put(33, "NullLiteral");
map.put(34, "NumberLiteral");
map.put(35, "PackageDeclaration");
map.put(36, "ParenthesizedExpression");
map.put(37, "PostfixExpression");
map.put(38, "PrefixExpression");
map.put(39, "PrimitiveType");
map.put(40, "QualifiedName");
map.put(41, "ReturnStatement");
map.put(42, "SimpleName");
map.put(43, "SimpleType");
map.put(44, "SingleVariableDeclaration");
map.put(45, "StringLiteral");
map.put(46, "SuperConstructorInvocation");
map.put(47, "SuperFieldAccess");
map.put(48, "SuperMethodInvocation");
map.put(49, "SwitchCase");
map.put(50, "SwitchStatement");
map.put(51, "SynchronizedStatement");
map.put(52, "ThisExpression");
map.put(53, "ThrowStatement");
map.put(54, "TryStatement");
map.put(55, "TypeDeclaration");
map.put(56, "TypeDeclarationStatement");
map.put(57, "TypeLiteral");
map.put(58, "VariableDeclarationExpression");
map.put(59, "VariableDeclarationFragment");
map.put(60, "VariableDeclarationStatement");
map.put(61, "WhileStatement");
map.put(62, "InstanceofExpression");
map.put(63, "LineComment");
map.put(64, "BlockComment");
map.put(65, "TagElement");
map.put(66, "TextElement");
map.put(67, "MemberRef");
map.put(68, "MethodRef");
map.put(69, "MethodRefParameter");
map.put(70, "EnhancedForStatement");
map.put(71, "EnumDeclaration");
map.put(72, "EnumConstantDeclaration");
map.put(73, "TypeParameter");
map.put(74, "ParameterizedType");
map.put(75, "QualifiedType");
map.put(76, "WildcardType");
map.put(77, "NormalAnnotation");
map.put(78, "MarkerAnnotation");
map.put(79, "SingleMemberAnnotation");
map.put(80, "MemberValuePair");
map.put(81, "AnnotationTypeDeclaration");
map.put(82, "AnnotationTypeMemberDeclaration");
map.put(83, "Modifier");
map.put(84, "UnionType");
map.put(85, "Dimension");
map.put(86, "LambdaExpression");
map.put(87, "IntersectionType");
map.put(88, "NameQualifiedType");
map.put(89, "CreationReference");
map.put(90, "ExpressionMethodReference");
map.put(91, "SuperMethhodReference");
map.put(92, "TypeMethodReference");
}
}