Skip to content

Commit eecf738

Browse files
committed
feat: refine normalizations
1 parent 0c852b8 commit eecf738

4 files changed

Lines changed: 26 additions & 14 deletions

File tree

src/main/injectors/GenericMergeModule.groovy

Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,9 @@ import interfaces.DataCollector
77
import interfaces.OutputProcessor
88
import interfaces.ProjectProcessor
99
import services.commitFilters.MutuallyModifiedFilesCommitFilter
10-
import services.dataCollectors.mergeToolExecutors.JDimeMergeToolExecutorDataCollector
11-
import services.dataCollectors.mergeToolExecutors.LastMergeMergeToolExecutorDataCollector
12-
import services.dataCollectors.mergeToolExecutors.MergirafMergeToolExecutorDataCollector
13-
import services.dataCollectors.mergeToolExecutors.SporkMergeToolExecutorDataCollector
10+
import services.dataCollectors.common.RunDataCollectorsInParallel
11+
import services.dataCollectors.fileSyntacticNormalization.JDimeFileSyntacticNormalizationDataCollector
12+
import services.dataCollectors.fileSyntacticNormalization.SporkFileSyntacticNormalizationDataCollector
1413
import services.outputProcessors.EmptyOutputProcessor
1514
import services.projectProcessors.DummyProjectProcessor
1615

@@ -22,11 +21,20 @@ class GenericMergeModule extends AbstractModule {
2221

2322
Multibinder<DataCollector> dataCollectorBinder = Multibinder.newSetBinder(binder(), DataCollector.class)
2423

25-
// Run the merge tools on the scenarios
26-
dataCollectorBinder.addBinding().to(JDimeMergeToolExecutorDataCollector.class)
27-
dataCollectorBinder.addBinding().to(LastMergeMergeToolExecutorDataCollector.class)
28-
dataCollectorBinder.addBinding().to(SporkMergeToolExecutorDataCollector.class)
29-
dataCollectorBinder.addBinding().to(MergirafMergeToolExecutorDataCollector.class)
24+
// // Run the merge tools on the scenarios
25+
// dataCollectorBinder.addBinding().to(JDimeMergeToolExecutorDataCollector.class)
26+
// dataCollectorBinder.addBinding().to(LastMergeMergeToolExecutorDataCollector.class)
27+
// dataCollectorBinder.addBinding().to(SporkMergeToolExecutorDataCollector.class)
28+
// dataCollectorBinder.addBinding().to(MergirafMergeToolExecutorDataCollector.class)
29+
30+
// Run, in parallel, normalizations on resulting files
31+
dataCollectorBinder.addBinding().toInstance(new RunDataCollectorsInParallel([
32+
new JDimeFileSyntacticNormalizationDataCollector("merge.java", "merge.jdime_normalized.java"),
33+
new JDimeFileSyntacticNormalizationDataCollector("merge.last_merge.java", "merge.last_merge.jdime_normalized.java"),
34+
new SporkFileSyntacticNormalizationDataCollector("merge.java", "merge.spork_normalized.java"),
35+
new SporkFileSyntacticNormalizationDataCollector("merge.spork.java", "merge.spork.spork_normalized.java"),
36+
new SporkFileSyntacticNormalizationDataCollector("merge.mergiraf.java", "merge.mergiraf.spork_normalized.java"),
37+
]))
3038

3139
Multibinder<OutputProcessor> outputProcessorBinder = Multibinder.newSetBinder(binder(), OutputProcessor.class)
3240
outputProcessorBinder.addBinding().to(EmptyOutputProcessor.class)

src/main/services/dataCollectors/fileSyntacticNormalization/BaseFileSyntacticNormalizationDataCollector.groovy

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import java.nio.file.Path
1212
import java.nio.file.StandardCopyOption
1313

1414
abstract class BaseFileSyntacticNormalizationDataCollector implements DataCollector {
15-
private static Logger LOG = LogManager.getLogger(BaseFileSyntacticNormalizationDataCollector.class)
15+
protected static Logger LOG = LogManager.getLogger(BaseFileSyntacticNormalizationDataCollector.class)
1616

1717
protected String inputFile
1818
protected String outputFile

src/main/services/dataCollectors/fileSyntacticNormalization/JDimeFileSyntacticNormalizationDataCollector.groovy

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ package services.dataCollectors.fileSyntacticNormalization
44
import util.ProcessRunner
55

66
import java.nio.file.Path
7+
import java.util.concurrent.TimeUnit
78

89
class JDimeFileSyntacticNormalizationDataCollector extends BaseFileSyntacticNormalizationDataCollector {
910
private static final String JDIME_BINARY_PATH = "${System.getProperty("user.dir")}/dependencies/jdime/install/JDime/bin"
@@ -23,7 +24,8 @@ class JDimeFileSyntacticNormalizationDataCollector extends BaseFileSyntacticNorm
2324
inputFile.toAbsolutePath().toString(),
2425
inputFile.toAbsolutePath().toString())
2526

26-
def exitCode = ProcessRunner.startProcess(processBuilder).waitFor()
27-
return exitCode != 0
27+
def output = ProcessRunner.startProcess(processBuilder)
28+
def hasCompleted = output.waitFor(1, TimeUnit.HOURS)
29+
return hasCompleted && output.exitValue() != 0
2830
}
2931
}

src/main/services/dataCollectors/fileSyntacticNormalization/SporkFileSyntacticNormalizationDataCollector.groovy

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
package services.dataCollectors.fileSyntacticNormalization
22

3-
43
import org.apache.logging.log4j.LogManager
54
import org.apache.logging.log4j.Logger
65
import util.ProcessRunner
76

7+
import java.nio.file.Files
88
import java.nio.file.Path
9+
import java.util.concurrent.TimeUnit
910

1011
class SporkFileSyntacticNormalizationDataCollector extends BaseFileSyntacticNormalizationDataCollector {
1112
private static Logger LOG = LogManager.getLogger(SporkFileSyntacticNormalizationDataCollector.class)
@@ -25,7 +26,8 @@ class SporkFileSyntacticNormalizationDataCollector extends BaseFileSyntacticNorm
2526
def process = ProcessRunner.startProcess(processBuilder)
2627
process.getInputStream().eachLine(LOG::trace)
2728
process.getErrorStream().eachLine(LOG::warn)
28-
return true
29+
def hasCompleted = process.waitFor(1, TimeUnit.HOURS)
30+
return hasCompleted && Files.exists(outputFile)
2931
}
3032

3133
private static List<String> getBuildParameters(Path inputFile, Path outputFile) {

0 commit comments

Comments
 (0)