From 51341177ee075dd76c977a23c9a440a9aabd3c42 Mon Sep 17 00:00:00 2001 From: oscarlvp Date: Wed, 9 May 2018 19:02:15 +0200 Subject: [PATCH] Removed the old recognition classes --- .../bodyanalysis/MethodInspector.java | 11 +-- .../descartes/bodyanalysis/State.java | 46 ------------ .../bodyanalysis/StopMethodRecognizer.java | 56 -------------- .../descartes/bodyanalysis/Transition.java | 73 ------------------- .../stopmethods/StopMethodMatcher.java | 3 - .../StopMethodRecognizerTest.java | 50 ------------- 6 files changed, 1 insertion(+), 238 deletions(-) delete mode 100644 src/main/java/eu/stamp_project/mutationtest/descartes/bodyanalysis/State.java delete mode 100644 src/main/java/eu/stamp_project/mutationtest/descartes/bodyanalysis/StopMethodRecognizer.java delete mode 100644 src/main/java/eu/stamp_project/mutationtest/descartes/bodyanalysis/Transition.java delete mode 100644 src/test/java/eu/stamp_project/mutationtest/descartes/bodyanalysis/StopMethodRecognizerTest.java diff --git a/src/main/java/eu/stamp_project/mutationtest/descartes/bodyanalysis/MethodInspector.java b/src/main/java/eu/stamp_project/mutationtest/descartes/bodyanalysis/MethodInspector.java index cf39c2e..4566139 100644 --- a/src/main/java/eu/stamp_project/mutationtest/descartes/bodyanalysis/MethodInspector.java +++ b/src/main/java/eu/stamp_project/mutationtest/descartes/bodyanalysis/MethodInspector.java @@ -10,7 +10,6 @@ public class MethodInspector extends MethodVisitor { private Method method; private MutationPointFinder finder; private LineCounter lineCounter; - private StopMethodRecognizer recognizer; public MethodInspector(Method method, MutationPointFinder finder) { super(Opcodes.ASM5); @@ -18,22 +17,14 @@ public MethodInspector(Method method, MutationPointFinder finder) { this.method = method; //TODO: Verify is not null this.finder = finder; //TODO: Verify is not null lineCounter = new LineCounter(); - recognizer = new StopMethodRecognizer(); - } - - @Override - public void visitCode() { } @Override public void visitEnd() { - if(!recognizer.isOnFinalState()) { - finder.registerMutations(method, lineCounter.getFirstLine(), lineCounter.getLine()); - } + finder.registerMutations(method, lineCounter.getFirstLine(), lineCounter.getLine()); } - @Override public void visitLineNumber(int line, Label start) { lineCounter.registerLine(line); diff --git a/src/main/java/eu/stamp_project/mutationtest/descartes/bodyanalysis/State.java b/src/main/java/eu/stamp_project/mutationtest/descartes/bodyanalysis/State.java deleted file mode 100644 index 7db86b0..0000000 --- a/src/main/java/eu/stamp_project/mutationtest/descartes/bodyanalysis/State.java +++ /dev/null @@ -1,46 +0,0 @@ -package eu.stamp_project.mutationtest.descartes.bodyanalysis; - -import java.util.LinkedList; - -public class State { - - public static State SINK = new State(); - - LinkedList transitions; - - private boolean isFinal = false; - - public State() { - transitions = new LinkedList(); - } - - public State next(int opcode) { - for (Transition tr : - transitions) { - if (tr.accepts(opcode)) - return tr.getState(); - } - return SINK; - } - - public Transition has(Transition tr) { - transitions.add(tr); - return tr; - } - - public Transition movesWith(int opcode) { - return has(Transition.withOpcode(opcode)); - } - - public void alwaysMovesTo(State other) { - has(Transition.withAnyOpcode()).to(other); - } - - public boolean isFinal() { - return isFinal; - } - - public void setFinal(boolean isFinal) { - this.isFinal = isFinal; - } -} diff --git a/src/main/java/eu/stamp_project/mutationtest/descartes/bodyanalysis/StopMethodRecognizer.java b/src/main/java/eu/stamp_project/mutationtest/descartes/bodyanalysis/StopMethodRecognizer.java deleted file mode 100644 index c6720a1..0000000 --- a/src/main/java/eu/stamp_project/mutationtest/descartes/bodyanalysis/StopMethodRecognizer.java +++ /dev/null @@ -1,56 +0,0 @@ -package eu.stamp_project.mutationtest.descartes.bodyanalysis; - -import org.pitest.reloc.asm.Opcodes; - -public class StopMethodRecognizer { - - - private State initial, state; - - public StopMethodRecognizer() { - createStates(); - reset(); - } - - private void createStates() { - State[] states = new State[6]; - - for (int i=0; i < states.length; i++) - states[i] = new State(); - - states[5].setFinal(true); - - states[0].movesWith(Opcodes.ALOAD).to(states[1]); - states[0].has(Transition.withConstantOnStack()).to(states[2]); - states[0].movesWith(Opcodes.RETURN).to(states[5]); - - states[1].has(Transition.withXLOAD()).to(states[3]); - states[1].movesWith(Opcodes.GETFIELD).to(states[2]); - - states[2].has(Transition.withXReturn()).to(states[5]); - - states[3].movesWith(Opcodes.PUTFIELD).to(states[4]); - - states[4].movesWith(Opcodes.RETURN).to(states[5]); - - initial = states[0]; - } - - public boolean isOnFinalState() { - return state.isFinal(); - } - - public void advance(int opcode) { - if(opcode < 0) return; //Ignore new frame declaration - state = state.next(opcode); - } - - public void doNotRecognize() { - state = State.SINK; - } - - public void reset() { - state = initial; - } - -} diff --git a/src/main/java/eu/stamp_project/mutationtest/descartes/bodyanalysis/Transition.java b/src/main/java/eu/stamp_project/mutationtest/descartes/bodyanalysis/Transition.java deleted file mode 100644 index ef14f17..0000000 --- a/src/main/java/eu/stamp_project/mutationtest/descartes/bodyanalysis/Transition.java +++ /dev/null @@ -1,73 +0,0 @@ -package eu.stamp_project.mutationtest.descartes.bodyanalysis; - -import org.pitest.reloc.asm.Opcodes; -import org.pitest.functional.predicate.Predicate; - -public abstract class Transition { - - private State state; - public State getState() { - return state; - } - - public void to(State state) { - this.state = state; - - } - - public abstract boolean accepts(int opcode); - - public static Transition withAnyOpcode() { - return new Transition() { - @Override - public boolean accepts(int opcode) { - return true; - } - }; - } - - public static Transition withOpcode(final int requiredOpcode) { - return new Transition() { - @Override - public boolean accepts(int opcode) { - return requiredOpcode == opcode; - } - }; - } - - public static Transition withConstantOnStack() { - return new Transition() { - @Override - public boolean accepts(int opcode) { - return opcode > 0 && opcode <= 20; - } - }; - } - - public static Transition withXLOAD() { - return new Transition() { - @Override - public boolean accepts(int opcode) { - return opcode >= Opcodes.ILOAD && opcode <= Opcodes.ALOAD; - } - }; - } - - public static Transition withXReturn() { - return new Transition() { - @Override - public boolean accepts(int opcode) { - return opcode >= Opcodes.IRETURN && opcode <= Opcodes.RETURN; - } - }; - } - - public static Transition with(final Predicate pred){ - return new Transition() { - @Override - public boolean accepts(int opcode) { - return pred.apply(opcode); - } - }; - } -} diff --git a/src/main/java/eu/stamp_project/mutationtest/descartes/stopmethods/StopMethodMatcher.java b/src/main/java/eu/stamp_project/mutationtest/descartes/stopmethods/StopMethodMatcher.java index 1d4379f..9ce8f55 100644 --- a/src/main/java/eu/stamp_project/mutationtest/descartes/stopmethods/StopMethodMatcher.java +++ b/src/main/java/eu/stamp_project/mutationtest/descartes/stopmethods/StopMethodMatcher.java @@ -1,10 +1,7 @@ package eu.stamp_project.mutationtest.descartes.stopmethods; - -import static org.pitest.bytecode.analysis.InstructionMatchers.opCode; import static org.pitest.bytecode.analysis.InstructionMatchers.isA; -import org.objectweb.asm.Opcodes; import org.objectweb.asm.tree.*; import org.pitest.bytecode.analysis.ClassTree; import org.pitest.bytecode.analysis.MethodTree; diff --git a/src/test/java/eu/stamp_project/mutationtest/descartes/bodyanalysis/StopMethodRecognizerTest.java b/src/test/java/eu/stamp_project/mutationtest/descartes/bodyanalysis/StopMethodRecognizerTest.java deleted file mode 100644 index c809581..0000000 --- a/src/test/java/eu/stamp_project/mutationtest/descartes/bodyanalysis/StopMethodRecognizerTest.java +++ /dev/null @@ -1,50 +0,0 @@ -package eu.stamp_project.mutationtest.descartes.bodyanalysis; - -import eu.stamp_project.mutationtest.test.Calculator; -import eu.stamp_project.mutationtest.test.StopMethods; -import eu.stamp_project.mutationtest.test.TestUtils; - -import org.junit.Ignore; -import org.junit.Test; -import org.pitest.reloc.asm.tree.AbstractInsnNode; -import org.pitest.reloc.asm.tree.MethodNode; - -import java.util.ListIterator; - -import static eu.stamp_project.utils.Utils.isConstructor; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertTrue; - - -@Ignore -public class StopMethodRecognizerTest { - - @Test - public void shouldRecognize() { - for (MethodNode method : - TestUtils.getMethodNodes(StopMethods.class)) { - if(!isConstructor(method.name)) - assertTrue("Stop method " + method.name + " not recognized", isStopMethod(method)); - } - } - - @Test - public void shouldNotRecognize() { - for (MethodNode method : - TestUtils.getMethodNodes(Calculator.class)) { - if(!method.name.equals("")) - assertFalse("Non-stop method " + method.name + " recognized.", isStopMethod(method)); - } - } - - private boolean isStopMethod(MethodNode method) { - StopMethodRecognizer recognizer = new StopMethodRecognizer(); - ListIterator iterator = method.instructions.iterator(); - while(iterator.hasNext()) { - AbstractInsnNode instruction = iterator.next(); - recognizer.advance(instruction.getOpcode()); - } - return recognizer.isOnFinalState(); - } - -} \ No newline at end of file