Skip to content

Commit

Permalink
Added infrastructure for reporting merged blocks
Browse files Browse the repository at this point in the history
  • Loading branch information
tsantalis committed May 2, 2024
1 parent 0afb284 commit 99f3722
Show file tree
Hide file tree
Showing 4 changed files with 70 additions and 0 deletions.
42 changes: 42 additions & 0 deletions src/main/java/org/codetracker/BlockTrackerChangeHistory.java
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,8 @@
import gr.uom.java.xmi.decomposition.VariableDeclaration;
import gr.uom.java.xmi.diff.ExtractOperationRefactoring;
import gr.uom.java.xmi.diff.InlineOperationRefactoring;
import gr.uom.java.xmi.diff.MergeCatchRefactoring;
import gr.uom.java.xmi.diff.MergeConditionalRefactoring;
import gr.uom.java.xmi.diff.MergeOperationRefactoring;
import gr.uom.java.xmi.diff.MoveOperationRefactoring;
import gr.uom.java.xmi.diff.PullUpOperationRefactoring;
Expand Down Expand Up @@ -388,6 +390,46 @@ private Set<Block> analyseBlockRefactorings(Collection<Refactoring> refactorings
}
break;
}
/*case MERGE_CONDITIONAL: {
MergeConditionalRefactoring mergeConditionalRefactoring = (MergeConditionalRefactoring) refactoring;
if (mergeConditionalRefactoring.getNewConditional() instanceof CompositeStatementObject) {
Block addedBlockAfter = Block.of((CompositeStatementObject) mergeConditionalRefactoring.getNewConditional(), mergeConditionalRefactoring.getOperationAfter(), currentVersion);
blockAfter = addedBlockAfter;
changeType = Change.Type.BLOCK_MERGE;
if (equalOperator.test(addedBlockAfter)) {
for (AbstractCodeFragment mergedConditional : mergeConditionalRefactoring.getMergedConditionals()) {
if (mergedConditional instanceof CompositeStatementObject) {
blockBefore = Block.of((CompositeStatementObject) mergedConditional, mergeConditionalRefactoring.getOperationBefore(), parentVersion);
blockChangeHistory.addChange(blockBefore, blockAfter, ChangeFactory.forBlock(changeType).refactoring(refactoring));
leftBlockSet.add(blockBefore);
}
}
blockChangeHistory.connectRelatedNodes();
return leftBlockSet;
}
}
break;
}
case MERGE_CATCH: {
MergeCatchRefactoring mergeCatchRefactoring = (MergeCatchRefactoring) refactoring;
if (mergeCatchRefactoring.getNewCatchBlock() instanceof CompositeStatementObject) {
Block addedBlockAfter = Block.of((CompositeStatementObject) mergeCatchRefactoring.getNewCatchBlock(), mergeCatchRefactoring.getOperationAfter(), currentVersion);
blockAfter = addedBlockAfter;
changeType = Change.Type.BLOCK_MERGE;
if (equalOperator.test(addedBlockAfter)) {
for (AbstractCodeFragment mergedCatchBlock : mergeCatchRefactoring.getMergedCatchBlocks()) {
if (mergedCatchBlock instanceof CompositeStatementObject) {
blockBefore = Block.of((CompositeStatementObject) mergedCatchBlock, mergeCatchRefactoring.getOperationBefore(), parentVersion);
blockChangeHistory.addChange(blockBefore, blockAfter, ChangeFactory.forBlock(changeType).refactoring(refactoring));
leftBlockSet.add(blockBefore);
}
}
blockChangeHistory.connectRelatedNodes();
return leftBlockSet;
}
}
break;
}*/
}
if (changeType != null && blockBefore != null) {
if (equalOperator.test(blockAfter)) {
Expand Down
1 change: 1 addition & 0 deletions src/main/java/org/codetracker/change/Change.java
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ enum Type {
FINALLY_BLOCK_ADDED("finally block added"),
FINALLY_BLOCK_REMOVED("finally block removed"),
BLOCK_SPLIT("block split"),
BLOCK_MERGE("block merge"),
METHOD_SPLIT("method split"),
METHOD_MERGE("method merge"),
REPLACE_PIPELINE_WITH_LOOP("pipeline replaced with loop"),
Expand Down
6 changes: 6 additions & 0 deletions src/main/java/org/codetracker/change/ChangeFactory.java
Original file line number Diff line number Diff line change
Expand Up @@ -160,6 +160,12 @@ public AbstractChange build() {
}
break;
}
case BLOCK_MERGE: {
if (refactoring == null)
throw new NullPointerException();
change = new MergeBlock(refactoring);
break;
}
case METHOD_SPLIT: {
if (refactoring == null)
throw new NullPointerException();
Expand Down
21 changes: 21 additions & 0 deletions src/main/java/org/codetracker/change/block/MergeBlock.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package org.codetracker.change.block;

import org.refactoringminer.api.Refactoring;

public class MergeBlock extends BlockChange {
private final Refactoring refactoring;

public MergeBlock(Refactoring refactoring) {
super(Type.BLOCK_MERGE);
this.refactoring = refactoring;
}

public Refactoring getSplitRefactoring() {
return refactoring;
}

@Override
public String toString() {
return refactoring.toString();
}
}

0 comments on commit 99f3722

Please sign in to comment.