From 15f8b5caf71d9f3774fde6b41310e2ea32a3a05d Mon Sep 17 00:00:00 2001 From: Julien HENRY Date: Thu, 19 Feb 2015 10:23:00 +0100 Subject: [PATCH] Fix some quality flaws --- .../sonar/plugins/core/sensors/UnitTestDecorator.java | 2 +- .../src/main/java/org/sonar/xoo/lang/XooTokenizer.java | 1 + .../main/java/org/sonar/batch/cpd/CpdComponents.java | 3 +++ .../java/org/sonar/batch/cpd/DefaultCpdEngine.java | 8 +++++--- .../main/java/org/sonar/batch/cpd/JavaCpdEngine.java | 9 +++++++++ .../deprecated/decorator/DefaultDecoratorContext.java | 7 +------ .../org/sonar/batch/duplication/DuplicationCache.java | 3 ++- .../src/main/java/org/sonar/batch/index/Cache.java | 4 ---- .../org/sonar/batch/sensor/DefaultSensorStorage.java | 10 ++++++++-- .../api/batch/sensor/duplication/Duplication.java | 4 ++-- 10 files changed, 32 insertions(+), 19 deletions(-) diff --git a/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/sensors/UnitTestDecorator.java b/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/sensors/UnitTestDecorator.java index 3ad4eee62db..7e4680f20f9 100644 --- a/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/sensors/UnitTestDecorator.java +++ b/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/sensors/UnitTestDecorator.java @@ -47,7 +47,7 @@ public class UnitTestDecorator implements Decorator { } public boolean shouldDecorateResource(Resource resource) { - return ResourceUtils.isUnitTestClass(resource) || !ResourceUtils.isEntity(resource); + return ResourceUtils.isUnitTestFile(resource) || !ResourceUtils.isEntity(resource); } @Override diff --git a/plugins/sonar-xoo-plugin/src/main/java/org/sonar/xoo/lang/XooTokenizer.java b/plugins/sonar-xoo-plugin/src/main/java/org/sonar/xoo/lang/XooTokenizer.java index 9316a4c0f89..760249e9235 100644 --- a/plugins/sonar-xoo-plugin/src/main/java/org/sonar/xoo/lang/XooTokenizer.java +++ b/plugins/sonar-xoo-plugin/src/main/java/org/sonar/xoo/lang/XooTokenizer.java @@ -39,6 +39,7 @@ public class XooTokenizer implements Tokenizer, BatchComponent { this.fs = fs; } + @Override public final void tokenize(SourceCode source, Tokens cpdTokens) { String fileName = source.getFileName(); int lineIdx = 1; 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 sourceFiles, SonarDuplicationsIndex index) { Predicate 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 duplicatedLines, int duplicatedBlocks, + Map duplicationByLine) { ((DefaultMeasure) context.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 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 group = duplicationCache.byComponent(resource.getEffectiveKey()); - if (group != null) { - unfiltered = Arrays.asList(new Measure(CoreMetrics.DUPLICATIONS_DATA, DuplicationUtils.toXml(group))); - } else { - unfiltered = Collections.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 { return new ValueIterable(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."); } diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/batch/sensor/duplication/Duplication.java b/sonar-plugin-api/src/main/java/org/sonar/api/batch/sensor/duplication/Duplication.java index a9ccc1ae591..7baeef0591c 100644 --- a/sonar-plugin-api/src/main/java/org/sonar/api/batch/sensor/duplication/Duplication.java +++ b/sonar-plugin-api/src/main/java/org/sonar/api/batch/sensor/duplication/Duplication.java @@ -97,8 +97,8 @@ public interface Duplication { } } - public Block originBlock(); + Block originBlock(); - public List duplicates(); + List duplicates(); } -- 2.39.5