From 6a2269a1072bd8d78aaf4faf03bb2d808570e0b4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=87=91=E6=88=9F?= Date: Sat, 25 Jul 2020 19:06:17 +0800 Subject: [PATCH] remove unused processor and upgrade version to 0.0.3 snapshot --- agent/pom.xml | 8 +- core/pom.xml | 6 +- .../EnableTestableInjectProcessor.java | 42 ----- .../EnableTestableInjectTranslator.java | 167 ------------------ .../translator/MethodRecordTranslator.java | 32 ---- .../javax.annotation.processing.Processor | 1 - 6 files changed, 7 insertions(+), 249 deletions(-) delete mode 100644 core/src/main/java/com/alibaba/testable/processor/EnableTestableInjectProcessor.java delete mode 100644 core/src/main/java/com/alibaba/testable/translator/EnableTestableInjectTranslator.java delete mode 100644 core/src/main/java/com/alibaba/testable/translator/MethodRecordTranslator.java diff --git a/agent/pom.xml b/agent/pom.xml index af9d76c..86ac5e0 100755 --- a/agent/pom.xml +++ b/agent/pom.xml @@ -3,9 +3,9 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - com.alibaba - testable-agent - 0.0.2-SNAPSHOT + com.alibaba.testable + agent + 0.0.3-SNAPSHOT jar @@ -27,7 +27,7 @@ - ${artifactId} + testable-agent maven-jar-plugin diff --git a/core/pom.xml b/core/pom.xml index 18f791b..3e1dd14 100644 --- a/core/pom.xml +++ b/core/pom.xml @@ -6,9 +6,9 @@ Testable Unit test enhancement toolkit - com.alibaba - testable-core - 0.0.2-SNAPSHOT + com.alibaba.testable + core + 0.0.3-SNAPSHOT 3.8.1 diff --git a/core/src/main/java/com/alibaba/testable/processor/EnableTestableInjectProcessor.java b/core/src/main/java/com/alibaba/testable/processor/EnableTestableInjectProcessor.java deleted file mode 100644 index 841934b..0000000 --- a/core/src/main/java/com/alibaba/testable/processor/EnableTestableInjectProcessor.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.alibaba.testable.processor; - -import com.alibaba.testable.annotation.EnableTestableInject; -import com.alibaba.testable.translator.EnableTestableInjectTranslator; -import com.alibaba.testable.translator.MethodRecordTranslator; -import com.sun.tools.javac.code.Symbol; -import com.sun.tools.javac.tree.JCTree; - -import javax.annotation.processing.RoundEnvironment; -import javax.annotation.processing.SupportedAnnotationTypes; -import javax.annotation.processing.SupportedSourceVersion; -import javax.lang.model.SourceVersion; -import javax.lang.model.element.Element; -import javax.lang.model.element.TypeElement; -import java.util.Set; - -/** - * @author flin - */ -@SupportedAnnotationTypes("com.alibaba.testable.annotation.EnableTestableInject") -@SupportedSourceVersion(SourceVersion.RELEASE_7) -public class EnableTestableInjectProcessor extends BaseProcessor { - - @Override - public boolean process(Set annotations, RoundEnvironment roundEnv) { - Set elements = roundEnv.getElementsAnnotatedWith(EnableTestableInject.class); - for (Element element : elements) { - if (element.getKind().isClass()) { - processClassElement((Symbol.ClassSymbol)element); - } - } - return true; - } - - private void processClassElement(Symbol.ClassSymbol clazz) { - JCTree tree = cx.trees.getTree(clazz); - MethodRecordTranslator methodRecordTranslator = new MethodRecordTranslator(); - tree.accept(methodRecordTranslator); - tree.accept(new EnableTestableInjectTranslator(cx, methodRecordTranslator.getMethods())); - } - -} diff --git a/core/src/main/java/com/alibaba/testable/translator/EnableTestableInjectTranslator.java b/core/src/main/java/com/alibaba/testable/translator/EnableTestableInjectTranslator.java deleted file mode 100644 index 657598f..0000000 --- a/core/src/main/java/com/alibaba/testable/translator/EnableTestableInjectTranslator.java +++ /dev/null @@ -1,167 +0,0 @@ -package com.alibaba.testable.translator; - -import com.alibaba.testable.model.TestableContext; -import com.alibaba.testable.util.ConstPool; -import com.sun.tools.javac.tree.JCTree.*; -import com.sun.tools.javac.util.List; -import com.sun.tools.javac.util.ListBuffer; -import com.sun.tools.javac.util.Name; - -/** - * Travel AST - * - * @author flin - */ -public class EnableTestableInjectTranslator extends BaseTranslator { - - private final TestableContext cx; - private List methods; - - public EnableTestableInjectTranslator(TestableContext cx, List methods) { - this.cx = cx; - this.methods = methods; - } - - /** - * new Demo() -> n.e.w(Demo.class) - * member() -> n.e.f(this, "member") - */ - @Override - public void visitExec(JCExpressionStatement jcExpressionStatement) { - jcExpressionStatement.expr = checkAndExchange(jcExpressionStatement.expr); - super.visitExec(jcExpressionStatement); - } - - /** - * return new Demo() -> return n.e.w(Demo.class) - * return member() -> return n.e.f(this, "member") - */ - @Override - public void visitReturn(JCReturn jcReturn) { - jcReturn.expr = checkAndExchange(jcReturn.expr); - super.visitReturn(jcReturn); - } - - /** - * Demo d = new Demo() -> Demo d = n.e.w(Demo.class) - * Demo d = member() -> Demo d = n.e.f(this, "member") - */ - @Override - public void visitVarDef(JCVariableDecl jcVariableDecl) { - jcVariableDecl.init = checkAndExchange(jcVariableDecl.init); - super.visitVarDef(jcVariableDecl); - } - - /** - * new Demo().call() -> n.e.w(Demo.class).call() - * member().call() -> n.e.f(this, "member").call() - */ - @Override - public void visitSelect(JCFieldAccess jcFieldAccess) { - jcFieldAccess.selected = checkAndExchange(jcFieldAccess.selected); - super.visitSelect(jcFieldAccess); - } - - /** - * member() + new Demo() -> n.e.f(this, "member") + n.e.w(Demo.class) - */ - @Override - public void visitBinary(JCBinary jcBinary) { - jcBinary.lhs = checkAndExchange(jcBinary.lhs); - jcBinary.rhs = checkAndExchange(jcBinary.rhs); - super.visitBinary(jcBinary); - } - - /** - * For member method invocation break point - * call(new Demo()) -> call(n.e.w(Demo.class)) - */ - @Override - public void visitApply(JCMethodInvocation tree) { - tree.args = checkAndExchange(tree.args); - super.visitApply(tree); - } - - /** - * For new operation break point - */ - @Override - public void visitNewClass(JCNewClass jcNewClass) { - super.visitNewClass(jcNewClass); - } - - /** - * For new operation break point - */ - @Override - public void visitNewArray(JCNewArray jcNewArray) { - super.visitNewArray(jcNewArray); - } - - @Override - protected JCExpression checkAndExchange(JCExpression expr) { - if (isNewOperation(expr)) { - JCNewClass newClassExpr = (JCNewClass)expr; - Name className = ((JCIdent)newClassExpr.clazz).name; - try { - return getGlobalNewInvocation(newClassExpr, className); - } catch (Exception e) { - e.printStackTrace(); - } - } else if (isMemberMethodInvocation(expr)) { - Name methodName = ((JCIdent)((JCMethodInvocation)expr).meth).name; - List args = ((JCMethodInvocation)expr).args; - return getGlobalMemberInvocation(methodName, args); - } - return expr; - } - - private boolean isMemberMethodInvocation(JCExpression expr) { - return expr != null && expr.getClass().equals(JCMethodInvocation.class) && - ((JCMethodInvocation)expr).meth.getClass().equals(JCIdent.class); - } - - private boolean isNewOperation(JCExpression expr) { - return expr != null && expr.getClass().equals(JCNewClass.class); - } - - private JCExpression getGlobalNewInvocation(JCNewClass newClassExpr, Name className) { - JCFieldAccess snClass = cx.treeMaker.Select(cx.treeMaker.Ident(cx.names.fromString(ConstPool.NE_PKG)), - cx.names.fromString(ConstPool.NE_CLS)); - JCFieldAccess snMethod = cx.treeMaker.Select(snClass, cx.names.fromString(ConstPool.NE_NEW)); - JCExpression classType = cx.treeMaker.Select(cx.treeMaker.Ident(className), - cx.names.fromString(ConstPool.TYPE_TO_CLASS)); - ListBuffer args = ListBuffer.of(classType); - args.addAll(newClassExpr.args); - return cx.treeMaker.Apply(List.nil(), snMethod, args.toList()); - } - - private JCExpression getGlobalMemberInvocation(Name methodName, List param) { - JCFieldAccess snClass = cx.treeMaker.Select(cx.treeMaker.Ident(cx.names.fromString(ConstPool.NE_PKG)), - cx.names.fromString(ConstPool.NE_CLS)); - JCFieldAccess snMethod = cx.treeMaker.Select(snClass, cx.names.fromString(ConstPool.NE_FUN)); - ListBuffer args = new ListBuffer<>(); - args.add(cx.treeMaker.Ident(cx.names.fromString(ConstPool.REF_THIS))); - args.add(cx.treeMaker.Literal(methodName.toString())); - args.addAll(param); - JCMethodInvocation apply = cx.treeMaker.Apply(List.nil(), snMethod, args.toList()); - for (JCMethodDecl m : methods) { - if (m.restype != null && !m.restype.toString().equals(ConstPool.VOID) && - m.name.equals(methodName) && paramEquals(m.params, param)) { - JCTypeCast cast = cx.treeMaker.TypeCast(m.restype, apply); - return cx.treeMaker.Parens(cast); - } - } - return apply; - } - - private boolean paramEquals(List p1, List p2) { - if (p1.length() != p2.length()) { - return false; - } - for (int i = 0; i < p1.length(); i++) { - // TODO: Compare parameters type - } - return true; - } -} diff --git a/core/src/main/java/com/alibaba/testable/translator/MethodRecordTranslator.java b/core/src/main/java/com/alibaba/testable/translator/MethodRecordTranslator.java deleted file mode 100644 index 98a08b3..0000000 --- a/core/src/main/java/com/alibaba/testable/translator/MethodRecordTranslator.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.alibaba.testable.translator; - -import com.sun.tools.javac.tree.JCTree.JCMethodDecl; -import com.sun.tools.javac.tree.TreeTranslator; -import com.sun.tools.javac.util.List; - -/** - * Travel AST - * - * @author flin - */ -public class MethodRecordTranslator extends TreeTranslator { - - /** - * Member methods - */ - private List methods = List.nil(); - - public List getMethods() { - return methods; - } - - /** - * Record all methods - */ - @Override - public void visitMethodDef(JCMethodDecl jcMethodDecl) { - super.visitMethodDef(jcMethodDecl); - methods = methods.append(jcMethodDecl); - } - -} diff --git a/core/src/main/resources/META-INF/services/javax.annotation.processing.Processor b/core/src/main/resources/META-INF/services/javax.annotation.processing.Processor index 72eb2fe..5f11897 100644 --- a/core/src/main/resources/META-INF/services/javax.annotation.processing.Processor +++ b/core/src/main/resources/META-INF/services/javax.annotation.processing.Processor @@ -1,2 +1 @@ com.alibaba.testable.processor.EnableTestableProcessor -com.alibaba.testable.processor.EnableTestableInjectProcessor