diff options
author | Julien HENRY <julien.henry@sonarsource.com> | 2014-08-01 11:26:22 +0200 |
---|---|---|
committer | Julien HENRY <julien.henry@sonarsource.com> | 2014-08-01 11:49:42 +0200 |
commit | 8d91875b28c2ef7c274781a9507edf512716a372 (patch) | |
tree | 8cd6f09f768bf86666060b97c396e9862ea44c32 /plugins | |
parent | 57dff3366d1b1dfb995b1009aa4dd2077507569a (diff) | |
download | sonarqube-8d91875b28c2ef7c274781a9507edf512716a372.tar.gz sonarqube-8d91875b28c2ef7c274781a9507edf512716a372.zip |
SONAR-5389 Improve duplication API
Diffstat (limited to 'plugins')
4 files changed, 19 insertions, 13 deletions
diff --git a/plugins/sonar-cpd-plugin/src/main/java/org/sonar/plugins/cpd/JavaCpdEngine.java b/plugins/sonar-cpd-plugin/src/main/java/org/sonar/plugins/cpd/JavaCpdEngine.java index c74f41bccc9..43585d4db4f 100644 --- a/plugins/sonar-cpd-plugin/src/main/java/org/sonar/plugins/cpd/JavaCpdEngine.java +++ b/plugins/sonar-cpd-plugin/src/main/java/org/sonar/plugins/cpd/JavaCpdEngine.java @@ -32,13 +32,13 @@ import org.sonar.api.batch.fs.InputFile; import org.sonar.api.batch.fs.internal.DeprecatedDefaultInputFile; import org.sonar.api.batch.sensor.SensorContext; import org.sonar.api.batch.sensor.duplication.DuplicationBuilder; +import org.sonar.api.batch.sensor.duplication.internal.DefaultDuplicationBuilder; import org.sonar.api.config.Settings; import org.sonar.api.measures.CoreMetrics; import org.sonar.api.measures.FileLinesContext; import org.sonar.api.measures.FileLinesContextFactory; import org.sonar.api.resources.Project; import org.sonar.api.utils.SonarException; -import org.sonar.batch.duplication.DefaultDuplicationBuilder; import org.sonar.duplications.block.Block; import org.sonar.duplications.block.BlockChunker; import org.sonar.duplications.detector.suffixtree.SuffixTreeCloneDetectionAlgorithm; @@ -243,7 +243,7 @@ public class JavaCpdEngine extends CpdEngine { } } } - builder.done(); + context.saveDuplications(inputFile, builder.build()); } } diff --git a/plugins/sonar-cpd-plugin/src/test/java/org/sonar/plugins/cpd/JavaCpdEngineTest.java b/plugins/sonar-cpd-plugin/src/test/java/org/sonar/plugins/cpd/JavaCpdEngineTest.java index 5a0e6f65815..dcada895aab 100644 --- a/plugins/sonar-cpd-plugin/src/test/java/org/sonar/plugins/cpd/JavaCpdEngineTest.java +++ b/plugins/sonar-cpd-plugin/src/test/java/org/sonar/plugins/cpd/JavaCpdEngineTest.java @@ -28,12 +28,12 @@ import org.mockito.Mockito; import org.sonar.api.batch.fs.InputFile; import org.sonar.api.batch.fs.internal.DeprecatedDefaultInputFile; import org.sonar.api.batch.sensor.SensorContext; +import org.sonar.api.batch.sensor.duplication.DuplicationGroup; +import org.sonar.api.batch.sensor.duplication.internal.DefaultDuplicationBuilder; import org.sonar.api.batch.sensor.measure.internal.DefaultMeasureBuilder; import org.sonar.api.measures.CoreMetrics; import org.sonar.api.measures.FileLinesContext; import org.sonar.api.measures.FileLinesContextFactory; -import org.sonar.batch.duplication.DefaultDuplicationBuilder; -import org.sonar.batch.duplication.DuplicationCache; import org.sonar.duplications.index.CloneGroup; import org.sonar.duplications.index.ClonePart; @@ -64,10 +64,10 @@ public class JavaCpdEngineTest { public void before() throws IOException { when(context.measureBuilder()).thenReturn(new DefaultMeasureBuilder()); inputFile = new DeprecatedDefaultInputFile("src/main/java/Foo.java"); - DuplicationCache duplicationCache = mock(DuplicationCache.class); - duplicationBuilder = spy(new DefaultDuplicationBuilder(inputFile, duplicationCache)); + duplicationBuilder = spy(new DefaultDuplicationBuilder(inputFile)); when(context.duplicationBuilder(any(InputFile.class))).thenReturn(duplicationBuilder); inputFile.setFile(temp.newFile("Foo.java")); + inputFile.setKey("key1"); contextFactory = mock(FileLinesContextFactory.class); linesContext = mock(FileLinesContext.class); when(contextFactory.createFor(inputFile)).thenReturn(linesContext); @@ -95,7 +95,7 @@ public class JavaCpdEngineTest { InOrder inOrder = Mockito.inOrder(duplicationBuilder); inOrder.verify(duplicationBuilder).originBlock(5, 204); inOrder.verify(duplicationBuilder).isDuplicatedBy("key2", 15, 214); - inOrder.verify(duplicationBuilder).done(); + inOrder.verify(duplicationBuilder).build(); verify(linesContext).setIntValue(CoreMetrics.DUPLICATION_LINES_DATA_KEY, 1, 0); verify(linesContext).setIntValue(CoreMetrics.DUPLICATION_LINES_DATA_KEY, 4, 0); @@ -116,7 +116,7 @@ public class JavaCpdEngineTest { InOrder inOrder = Mockito.inOrder(duplicationBuilder); inOrder.verify(duplicationBuilder).originBlock(5, 204); inOrder.verify(duplicationBuilder).isDuplicatedBy("key1", 215, 414); - inOrder.verify(duplicationBuilder).done(); + inOrder.verify(duplicationBuilder).build(); } @Test @@ -132,7 +132,13 @@ public class JavaCpdEngineTest { inOrder.verify(duplicationBuilder).originBlock(5, 204); inOrder.verify(duplicationBuilder).isDuplicatedBy("key2", 15, 214); inOrder.verify(duplicationBuilder).isDuplicatedBy("key3", 25, 224); - inOrder.verify(duplicationBuilder).done(); + inOrder.verify(duplicationBuilder).build(); + + verify(context).saveDuplications(inputFile, Arrays.asList( + new DuplicationGroup(new DuplicationGroup.Block("key1", 5, 200)) + .addDuplicate(new DuplicationGroup.Block("key2", 15, 200)) + .addDuplicate(new DuplicationGroup.Block("key3", 25, 200)) + )); } @Test @@ -151,7 +157,7 @@ public class JavaCpdEngineTest { inOrder.verify(duplicationBuilder).isDuplicatedBy("key2", 15, 214); inOrder.verify(duplicationBuilder).originBlock(15, 214); inOrder.verify(duplicationBuilder).isDuplicatedBy("key3", 15, 214); - inOrder.verify(duplicationBuilder).done(); + inOrder.verify(duplicationBuilder).build(); } private CloneGroup newCloneGroup(ClonePart... parts) { diff --git a/plugins/sonar-cpd-plugin/src/test/java/org/sonar/plugins/cpd/medium/CpdMediumTest.java b/plugins/sonar-cpd-plugin/src/test/java/org/sonar/plugins/cpd/medium/CpdMediumTest.java index 71b5288c6b3..1344179bfb2 100644 --- a/plugins/sonar-cpd-plugin/src/test/java/org/sonar/plugins/cpd/medium/CpdMediumTest.java +++ b/plugins/sonar-cpd-plugin/src/test/java/org/sonar/plugins/cpd/medium/CpdMediumTest.java @@ -28,7 +28,7 @@ import org.junit.Test; import org.junit.rules.ExpectedException; import org.junit.rules.TemporaryFolder; import org.sonar.api.batch.fs.InputFile; -import org.sonar.batch.duplication.DuplicationGroup; +import org.sonar.api.batch.sensor.duplication.DuplicationGroup; import org.sonar.batch.mediumtest.BatchMediumTester; import org.sonar.batch.mediumtest.BatchMediumTester.TaskResult; import org.sonar.plugins.cpd.CpdPlugin; diff --git a/plugins/sonar-xoo-plugin/src/main/java/org/sonar/xoo/lang/XooTokenizerSensor.java b/plugins/sonar-xoo-plugin/src/main/java/org/sonar/xoo/lang/XooTokenizerSensor.java index 1ee33e560ef..1098625783f 100644 --- a/plugins/sonar-xoo-plugin/src/main/java/org/sonar/xoo/lang/XooTokenizerSensor.java +++ b/plugins/sonar-xoo-plugin/src/main/java/org/sonar/xoo/lang/XooTokenizerSensor.java @@ -28,7 +28,7 @@ import org.sonar.api.batch.fs.InputFile; import org.sonar.api.batch.sensor.Sensor; import org.sonar.api.batch.sensor.SensorContext; import org.sonar.api.batch.sensor.SensorDescriptor; -import org.sonar.api.batch.sensor.duplication.TokenBuilder; +import org.sonar.api.batch.sensor.duplication.DuplicationTokenBuilder; import org.sonar.xoo.Xoo; import java.io.File; @@ -41,7 +41,7 @@ import java.util.List; public class XooTokenizerSensor implements Sensor { private void computeTokens(InputFile inputFile, SensorContext context) { - TokenBuilder tokenBuilder = context.tokenBuilder(inputFile); + DuplicationTokenBuilder tokenBuilder = context.duplicationTokenBuilder(inputFile); File ioFile = inputFile.file(); int lineId = 0; try { |