]> source.dussan.org Git - sonarqube.git/commitdiff
Fix some quality flaws
authorJulien HENRY <julien.henry@sonarsource.com>
Thu, 19 Feb 2015 09:23:00 +0000 (10:23 +0100)
committerJulien HENRY <julien.henry@sonarsource.com>
Thu, 19 Feb 2015 09:26:25 +0000 (10:26 +0100)
plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/sensors/UnitTestDecorator.java
plugins/sonar-xoo-plugin/src/main/java/org/sonar/xoo/lang/XooTokenizer.java
sonar-batch/src/main/java/org/sonar/batch/cpd/CpdComponents.java
sonar-batch/src/main/java/org/sonar/batch/cpd/DefaultCpdEngine.java
sonar-batch/src/main/java/org/sonar/batch/cpd/JavaCpdEngine.java
sonar-batch/src/main/java/org/sonar/batch/deprecated/decorator/DefaultDecoratorContext.java
sonar-batch/src/main/java/org/sonar/batch/duplication/DuplicationCache.java
sonar-batch/src/main/java/org/sonar/batch/index/Cache.java
sonar-batch/src/main/java/org/sonar/batch/sensor/DefaultSensorStorage.java
sonar-plugin-api/src/main/java/org/sonar/api/batch/sensor/duplication/Duplication.java

index 3ad4eee62db6e85de0e60b20145c5385fcf12345..7e4680f20f9045f99448fd5c1fd7f58a6cdaa8f8 100644 (file)
@@ -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
index 9316a4c0f895933a6d0d6515d22d56dcf284b651..760249e92351b65f82c33976cc84421870715ba5 100644 (file)
@@ -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;
index 8ab889c30d567ef5dc82ff5f93f533e17c742500..4fe98f6f48c16060b114f1f92444b2f48bda08e5 100644 (file)
@@ -28,6 +28,9 @@ import java.util.List;
 
 public final class CpdComponents {
 
+  private CpdComponents() {
+  }
+
   public static List all() {
     return ImmutableList.of(
       CpdSensor.class,
index 33879ea8bc4437afbf52c4980800567baecacbfc..52f77df74ce8a53bdffb3163a952cd600dc9a1e2 100644 (file)
@@ -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);
         }
 
index d753fc45e1fd710f6dca7bbe4d56176fea7072ce..263ba32f0ab47b5a0e508ceb7e34d601a8f31e3d 100644 (file)
@@ -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++;
index a74f91fa138d7c88aaf6cc91b99619b6d5dbb639..67bd33d7a296814bf08245f7b354a81c79ea14c3 100644 (file)
@@ -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);
index 08c102fdf8a43ffeee3b26dc480cb9aabd0e9ad6..e11322f8d10d9fa272b13c179b3a8782eee8ce96 100644 (file)
@@ -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;
   }
 
index 02efaab0f005291f55c952362bd4eca8e31b6c03..3fc092e72a6b37eb1172cadf20aa73e75f74defe 100644 (file)
@@ -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
    */
index d512c02ca9642f8295108f1d1856a647de70c12c..4bc8ce218898243ff36f216d8835040add3fc2b9 100644 (file)
@@ -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.");
     }
index a9ccc1ae591c2df3d557762caf4daae175780096..7baeef0591cb8ded603221da9112bbdb9e91074e 100644 (file)
@@ -97,8 +97,8 @@ public interface Duplication {
     }
   }
 
-  public Block originBlock();
+  Block originBlock();
 
-  public List<Block> duplicates();
+  List<Block> duplicates();
 
 }