diff options
author | Julien HENRY <julien.henry@sonarsource.com> | 2015-02-19 10:23:00 +0100 |
---|---|---|
committer | Julien HENRY <julien.henry@sonarsource.com> | 2015-02-19 10:26:25 +0100 |
commit | 15f8b5caf71d9f3774fde6b41310e2ea32a3a05d (patch) | |
tree | fd66e98c72fe188519f586ce2a6060612212a093 /sonar-batch | |
parent | 1c79f1bbc2dcaa00ce6a940957e09fc824645215 (diff) | |
download | sonarqube-15f8b5caf71d9f3774fde6b41310e2ea32a3a05d.tar.gz sonarqube-15f8b5caf71d9f3774fde6b41310e2ea32a3a05d.zip |
Fix some quality flaws
Diffstat (limited to 'sonar-batch')
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."); } |