@@ -6,51 +6,77 @@ import interfaces.CommitFilter
66import interfaces.DataCollector
77import interfaces.OutputProcessor
88import interfaces.ProjectProcessor
9- import org.apache.logging.log4j.LogManager
10- import org.apache.logging.log4j.Logger
119import services.commitFilters.MutuallyModifiedFilesCommitFilter
12- import services.dataCollectors.GenericMerge.GenericMergeConfig
13- import services.dataCollectors.GenericMerge.GenericMergeDataCollector
14- import services.dataCollectors.GenericMerge.MergeConflictsComparator
15- import services.dataCollectors.GenericMerge.MergeToolsComparator
16- import services.dataCollectors.GenericMerge.ScenarioLOCsCounter
17- import services.dataCollectors.GenericMerge.UnstructuredMergeCollector
18- import services.outputProcessors.GenericMergeDataOutputProcessor
10+ import services.dataCollectors.buildRequester.RequestBuildForRevisionWithFilesDataCollector
11+ import services.dataCollectors.common.CompareScenarioMergeConflictsDataCollector
12+ import services.dataCollectors.common.RunDataCollectorsInParallel
13+ import services.dataCollectors.common.SyntacticallyCompareScenarioFilesDataCollector
14+ import services.dataCollectors.fileSyntacticNormalization.FormatFileSyntacticNormalizationDataCollector
15+ import services.dataCollectors.fileSyntacticNormalization.JDimeFileSyntacticNormalizationDataCollector
16+ import services.dataCollectors.fileSyntacticNormalization.SporkFileSyntacticNormalizationDataCollector
17+ import services.dataCollectors.mergeToolExecutors.JDimeMergeToolExecutorDataCollector
18+ import services.dataCollectors.mergeToolExecutors.LastMergeMergeToolExecutorDataCollector
19+ import services.dataCollectors.mergeToolExecutors.MergirafMergeToolExecutorDataCollector
20+ import services.dataCollectors.mergeToolExecutors.SporkMergeToolExecutorDataCollector
21+ import services.outputProcessors.EmptyOutputProcessor
1922import services.projectProcessors.DummyProjectProcessor
20- import services.util.ci.CIPlatform
21- import services.util.ci.TravisPlatform
22-
23- import java.nio.file.Files
24- import java.nio.file.Paths
2523
2624class GenericMergeModule extends AbstractModule {
27- private static Logger LOG = LogManager . getLogger(GenericMergeModule . class)
28-
2925 @Override
3026 protected void configure () {
3127 Multibinder<ProjectProcessor > projectProcessorBinder = Multibinder . newSetBinder(binder(), ProjectProcessor . class)
3228 projectProcessorBinder. addBinding(). to(DummyProjectProcessor . class)
3329
3430 Multibinder<DataCollector > dataCollectorBinder = Multibinder . newSetBinder(binder(), DataCollector . class)
35- dataCollectorBinder. addBinding(). to(ScenarioLOCsCounter . class)
36- dataCollectorBinder. addBinding(). to(GenericMergeDataCollector . class)
37- dataCollectorBinder. addBinding(). to(MergeToolsComparator . class)
38- dataCollectorBinder. addBinding(). to(MergeConflictsComparator . class)
39- dataCollectorBinder. addBinding(). to(UnstructuredMergeCollector . class)
4031
41- Multibinder<OutputProcessor > outputProcessorBinder = Multibinder . newSetBinder(binder(), OutputProcessor . class)
42- outputProcessorBinder. addBinding(). to(GenericMergeDataOutputProcessor . class)
32+ // Run the merge tools on the scenarios
33+ dataCollectorBinder. addBinding(). to(JDimeMergeToolExecutorDataCollector . class)
34+ dataCollectorBinder. addBinding(). to(LastMergeMergeToolExecutorDataCollector . class)
35+ dataCollectorBinder. addBinding(). to(SporkMergeToolExecutorDataCollector . class)
36+ dataCollectorBinder. addBinding(). to(MergirafMergeToolExecutorDataCollector . class)
4337
44- bind(CommitFilter . class). to(MutuallyModifiedFilesCommitFilter . class)
45- bind(CIPlatform . class). to(TravisPlatform . class)
38+ // Run, in parallel, normalizations on resulting files
39+ dataCollectorBinder. addBinding(). toInstance(new RunDataCollectorsInParallel ([
40+ new JDimeFileSyntacticNormalizationDataCollector (" merge.java" , " merge.jdime_normalized.java" ),
41+ new JDimeFileSyntacticNormalizationDataCollector (" merge.last_merge.java" , " merge.last_merge.jdime_normalized.java" ),
42+ new SporkFileSyntacticNormalizationDataCollector (" merge.java" , " merge.spork_normalized.java" ),
43+ new SporkFileSyntacticNormalizationDataCollector (" merge.spork.java" , " merge.spork.spork_normalized.java" ),
44+ new SporkFileSyntacticNormalizationDataCollector (" merge.mergiraf.java" , " merge.mergiraf.spork_normalized.java" ),
45+ ]))
4646
47- createExecutionReportsFile()
48- }
47+ // Run, in parallel, syntactical comparisons between files and textual comparison between commits
48+ dataCollectorBinder. addBinding(). toInstance(new RunDataCollectorsInParallel ([
49+ // Syntactic comparison with merge commits
50+ new SyntacticallyCompareScenarioFilesDataCollector (" merge.java" , " merge.last_merge.java" ),
51+ new SyntacticallyCompareScenarioFilesDataCollector (" merge.jdime_normalized.java" , " merge.jdime.java" ),
52+ new SyntacticallyCompareScenarioFilesDataCollector (" merge.spork_normalized.java" , " merge.spork.spork_normalized.java" ),
53+ new SyntacticallyCompareScenarioFilesDataCollector (" merge.java" , " merge.mergiraf.java" ),
54+
55+ // Syntactic comparison between tools themselves
56+ new SyntacticallyCompareScenarioFilesDataCollector (" merge.jdime.java" , " merge.last_merge.jdime_normalized.java" ),
57+ new SyntacticallyCompareScenarioFilesDataCollector (" merge.mergiraf.spork_normalized.java" , " merge.spork.spork_normalized.java" ),
58+ new SyntacticallyCompareScenarioFilesDataCollector (" merge.mergiraf.java" , " merge.last_merge.java" ),
59+
60+ // Conflicts comparison between tools themselves
61+ new CompareScenarioMergeConflictsDataCollector (" merge.jdime.java" , " merge.last_merge.java" ),
62+ new CompareScenarioMergeConflictsDataCollector (" merge.mergiraf.java" , " merge.spork.java" ),
63+ new CompareScenarioMergeConflictsDataCollector (" merge.mergiraf.java" , " merge.last_merge.java" ),
64+ ]))
4965
50- private static void createExecutionReportsFile () {
51- LOG . info(" Creating Generic Merge report file" )
52- Files . createDirectories(Paths . get(GenericMergeConfig . GENERIC_MERGE_REPORT_PATH ))
53- def reportFile = new File (GenericMergeConfig . GENERIC_MERGE_REPORT_FILE_NAME )
54- reportFile. createNewFile()
66+ dataCollectorBinder. addBinding(). toInstance(new RunDataCollectorsInParallel ([new FormatFileSyntacticNormalizationDataCollector (" merge.last_merge.java" , " merge.last_merge.format_normalized.java" ),
67+ new FormatFileSyntacticNormalizationDataCollector (" merge.mergiraf.java" , " merge.mergiraf.format_normalized.java" )]))
68+
69+ dataCollectorBinder. addBinding(). toInstance(new SyntacticallyCompareScenarioFilesDataCollector (" merge.mergiraf.format_normalized.java" , " merge.last_merge.format_normalized.java" ))
70+
71+
72+ dataCollectorBinder. addBinding(). toInstance(new RequestBuildForRevisionWithFilesDataCollector (" merge.last_merge.java" ))
73+ dataCollectorBinder. addBinding(). toInstance(new RequestBuildForRevisionWithFilesDataCollector (" merge.jdime.java" ))
74+ dataCollectorBinder. addBinding(). toInstance(new RequestBuildForRevisionWithFilesDataCollector (" merge.mergiraf.java" ))
75+ dataCollectorBinder. addBinding(). toInstance(new RequestBuildForRevisionWithFilesDataCollector (" merge.spork.java" ))
76+
77+ Multibinder<OutputProcessor > outputProcessorBinder = Multibinder . newSetBinder(binder(), OutputProcessor . class)
78+ outputProcessorBinder. addBinding(). to(EmptyOutputProcessor . class)
79+
80+ bind(CommitFilter . class). to(MutuallyModifiedFilesCommitFilter . class)
5581 }
5682}
0 commit comments