aboutsummaryrefslogtreecommitdiffstats
path: root/sonar-batch
diff options
context:
space:
mode:
authorJulien HENRY <julien.henry@sonarsource.com>2015-02-19 10:23:00 +0100
committerJulien HENRY <julien.henry@sonarsource.com>2015-02-19 10:26:25 +0100
commit15f8b5caf71d9f3774fde6b41310e2ea32a3a05d (patch)
treefd66e98c72fe188519f586ce2a6060612212a093 /sonar-batch
parent1c79f1bbc2dcaa00ce6a940957e09fc824645215 (diff)
downloadsonarqube-15f8b5caf71d9f3774fde6b41310e2ea32a3a05d.tar.gz
sonarqube-15f8b5caf71d9f3774fde6b41310e2ea32a3a05d.zip
Fix some quality flaws
Diffstat (limited to 'sonar-batch')
-rw-r--r--sonar-batch/src/main/java/org/sonar/batch/cpd/CpdComponents.java3
-rw-r--r--sonar-batch/src/main/java/org/sonar/batch/cpd/DefaultCpdEngine.java8
-rw-r--r--sonar-batch/src/main/java/org/sonar/batch/cpd/JavaCpdEngine.java9
-rw-r--r--sonar-batch/src/main/java/org/sonar/batch/deprecated/decorator/DefaultDecoratorContext.java7
-rw-r--r--sonar-batch/src/main/java/org/sonar/batch/duplication/DuplicationCache.java3
-rw-r--r--sonar-batch/src/main/java/org/sonar/batch/index/Cache.java4
-rw-r--r--sonar-batch/src/main/java/org/sonar/batch/sensor/DefaultSensorStorage.java10
7 files changed, 28 insertions, 16 deletions
diff --git a/sonar-batch/src/main/java/org/sonar/batch/cpd/CpdComponents.java b/sonar-batch/src/main/java/org/sonar/batch/cpd/CpdComponents.java
index 8ab889c30d5..4fe98f6f48c 100644
--- a/sonar-batch/src/main/java/org/sonar/batch/cpd/CpdComponents.java
+++ b/sonar-batch/src/main/java/org/sonar/batch/cpd/CpdComponents.java
@@ -28,6 +28,9 @@ import java.util.List;
public final class CpdComponents {
+ private CpdComponents() {
+ }
+
public static List all() {
return ImmutableList.of(
CpdSensor.class,
diff --git a/sonar-batch/src/main/java/org/sonar/batch/cpd/DefaultCpdEngine.java b/sonar-batch/src/main/java/org/sonar/batch/cpd/DefaultCpdEngine.java
index 33879ea8bc4..52f77df74ce 100644
--- a/sonar-batch/src/main/java/org/sonar/batch/cpd/DefaultCpdEngine.java
+++ b/sonar-batch/src/main/java/org/sonar/batch/cpd/DefaultCpdEngine.java
@@ -109,6 +109,10 @@ public class DefaultCpdEngine extends CpdEngine {
populateIndex(languageKey, sourceFiles, mapping, index);
// Detect
+ runCpdAnalysis(languageKey, context, sourceFiles, index);
+ }
+
+ private void runCpdAnalysis(String languageKey, SensorContext context, List<InputFile> sourceFiles, SonarDuplicationsIndex index) {
Predicate<CloneGroup> minimumTokensPredicate = DuplicationPredicates.numberOfUnitsNotLessThan(getMinimumTokens(languageKey));
ExecutorService executorService = Executors.newSingleThreadExecutor();
@@ -125,9 +129,7 @@ public class DefaultCpdEngine extends CpdEngine {
} catch (TimeoutException e) {
filtered = null;
LOG.warn("Timeout during detection of duplications for " + inputFile, e);
- } catch (InterruptedException e) {
- throw new SonarException("Fail during detection of duplication for " + inputFile, e);
- } catch (ExecutionException e) {
+ } catch (InterruptedException | ExecutionException e) {
throw new SonarException("Fail during detection of duplication for " + inputFile, e);
}
diff --git a/sonar-batch/src/main/java/org/sonar/batch/cpd/JavaCpdEngine.java b/sonar-batch/src/main/java/org/sonar/batch/cpd/JavaCpdEngine.java
index d753fc45e1f..263ba32f0ab 100644
--- a/sonar-batch/src/main/java/org/sonar/batch/cpd/JavaCpdEngine.java
+++ b/sonar-batch/src/main/java/org/sonar/batch/cpd/JavaCpdEngine.java
@@ -207,6 +207,13 @@ public class JavaCpdEngine extends CpdEngine {
for (int i = 1; i <= inputFile.lines(); i++) {
duplicationByLine.put(i, duplicatedLines.contains(i) ? 1 : 0);
}
+ saveMeasures(context, inputFile, duplicatedLines, duplicatedBlocks, duplicationByLine);
+
+ saveDuplications(context, inputFile, duplications);
+ }
+
+ private static void saveMeasures(org.sonar.api.batch.sensor.SensorContext context, InputFile inputFile, Set<Integer> duplicatedLines, int duplicatedBlocks,
+ Map<Integer, Integer> duplicationByLine) {
((DefaultMeasure<String>) context.<String>newMeasure()
.forMetric(CoreMetrics.DUPLICATION_LINES_DATA)
.onFile(inputFile)
@@ -232,7 +239,9 @@ public class JavaCpdEngine extends CpdEngine {
.withValue(duplicatedBlocks))
.setFromCore()
.save();
+ }
+ private static void saveDuplications(org.sonar.api.batch.sensor.SensorContext context, InputFile inputFile, Iterable<CloneGroup> duplications) {
int cloneGroupCount = 0;
for (CloneGroup duplication : duplications) {
cloneGroupCount++;
diff --git a/sonar-batch/src/main/java/org/sonar/batch/deprecated/decorator/DefaultDecoratorContext.java b/sonar-batch/src/main/java/org/sonar/batch/deprecated/decorator/DefaultDecoratorContext.java
index a74f91fa138..67bd33d7a29 100644
--- a/sonar-batch/src/main/java/org/sonar/batch/deprecated/decorator/DefaultDecoratorContext.java
+++ b/sonar-batch/src/main/java/org/sonar/batch/deprecated/decorator/DefaultDecoratorContext.java
@@ -44,7 +44,6 @@ import org.sonar.batch.sensor.coverage.CoverageExclusions;
import java.util.Arrays;
import java.util.Collection;
-import java.util.Collections;
import java.util.Date;
import java.util.List;
import java.util.Set;
@@ -127,11 +126,7 @@ public class DefaultDecoratorContext implements DecoratorContext {
if (CoreMetrics.DUPLICATIONS_DATA_KEY.equals(metricKey)) {
// Hack for SONAR-5765
Iterable<DefaultDuplication> group = duplicationCache.byComponent(resource.getEffectiveKey());
- if (group != null) {
- unfiltered = Arrays.asList(new Measure(CoreMetrics.DUPLICATIONS_DATA, DuplicationUtils.toXml(group)));
- } else {
- unfiltered = Collections.<Measure>emptyList();
- }
+ unfiltered = Arrays.asList(new Measure(CoreMetrics.DUPLICATIONS_DATA, DuplicationUtils.toXml(group)));
} else {
// optimization
unfiltered = measuresByMetric.get(metricKey);
diff --git a/sonar-batch/src/main/java/org/sonar/batch/duplication/DuplicationCache.java b/sonar-batch/src/main/java/org/sonar/batch/duplication/DuplicationCache.java
index 08c102fdf8a..e11322f8d10 100644
--- a/sonar-batch/src/main/java/org/sonar/batch/duplication/DuplicationCache.java
+++ b/sonar-batch/src/main/java/org/sonar/batch/duplication/DuplicationCache.java
@@ -53,7 +53,8 @@ public class DuplicationCache implements BatchComponent {
}
public DuplicationCache put(String effectiveKey, DefaultDuplication duplication) {
- cache.put(effectiveKey, sequence++, duplication);
+ cache.put(effectiveKey, sequence, duplication);
+ sequence++;
return this;
}
diff --git a/sonar-batch/src/main/java/org/sonar/batch/index/Cache.java b/sonar-batch/src/main/java/org/sonar/batch/index/Cache.java
index 02efaab0f00..3fc092e72a6 100644
--- a/sonar-batch/src/main/java/org/sonar/batch/index/Cache.java
+++ b/sonar-batch/src/main/java/org/sonar/batch/index/Cache.java
@@ -303,10 +303,6 @@ public class Cache<V> {
return new ValueIterable<V>(exchange, firstKey, secondKey);
}
- private IllegalStateException failToGetValues(Exception e) {
- return new IllegalStateException("Fail to get values from cache " + name, e);
- }
-
/**
* Lazy-loading values for a given key
*/
diff --git a/sonar-batch/src/main/java/org/sonar/batch/sensor/DefaultSensorStorage.java b/sonar-batch/src/main/java/org/sonar/batch/sensor/DefaultSensorStorage.java
index d512c02ca96..4bc8ce21889 100644
--- a/sonar-batch/src/main/java/org/sonar/batch/sensor/DefaultSensorStorage.java
+++ b/sonar-batch/src/main/java/org/sonar/batch/sensor/DefaultSensorStorage.java
@@ -19,6 +19,7 @@
*/
package org.sonar.batch.sensor;
+import com.google.common.base.Preconditions;
import org.sonar.api.batch.fs.FileSystem;
import org.sonar.api.batch.fs.InputDir;
import org.sonar.api.batch.fs.InputFile;
@@ -56,6 +57,7 @@ import org.sonar.api.test.MutableTestPlan;
import org.sonar.api.test.MutableTestable;
import org.sonar.api.test.Testable;
import org.sonar.batch.duplication.DuplicationCache;
+import org.sonar.batch.index.BatchResource;
import org.sonar.batch.index.ComponentDataCache;
import org.sonar.batch.index.DefaultIndex;
import org.sonar.batch.index.ResourceCache;
@@ -245,8 +247,12 @@ public class DefaultSensorStorage implements SensorStorage {
@Override
public void store(org.sonar.api.batch.sensor.dependency.Dependency dep) {
- File fromResource = (File) resourceCache.get(dep.fromKey()).resource();
- File toResource = (File) resourceCache.get(dep.toKey()).resource();
+ BatchResource fromBatchResource = resourceCache.get(dep.fromKey());
+ BatchResource toBatchResource = resourceCache.get(dep.toKey());
+ Preconditions.checkNotNull(fromBatchResource, "Unable to find from resource " + dep.fromKey());
+ Preconditions.checkNotNull(toBatchResource, "Unable to find from resource " + dep.toKey());
+ File fromResource = (File) fromBatchResource.resource();
+ File toResource = (File) toBatchResource.resource();
if (sonarIndex.getEdge(fromResource, toResource) != null) {
throw new IllegalStateException("Dependency between " + dep.fromKey() + " and " + dep.toKey() + " was already saved.");
}