]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-5389 Fix some issues with analyzer -> sensor compatibility mode
authorJulien HENRY <julien.henry@sonarsource.com>
Mon, 23 Jun 2014 11:54:02 +0000 (13:54 +0200)
committerJulien HENRY <julien.henry@sonarsource.com>
Mon, 23 Jun 2014 13:39:19 +0000 (15:39 +0200)
sonar-batch/src/main/java/org/sonar/batch/bootstrap/BatchExtensionDictionnary.java
sonar-batch/src/main/java/org/sonar/batch/scan/AnalyzerContextAdaptor.java
sonar-batch/src/main/java/org/sonar/batch/scan2/DefaultAnalyzerContext.java
sonar-plugin-api/src/main/java/org/sonar/api/batch/analyzer/measure/AnalyzerMeasure.java

index 8d0d269265696c5dfd46b96fca5380222fca9038..a9224cbbf3e1fec0c9e44d20aa6155b834bdc5fb 100644 (file)
@@ -67,6 +67,15 @@ public class BatchExtensionDictionnary extends org.sonar.api.batch.BatchExtensio
         result.add((T) extension);
       }
     }
+    if (type == Sensor.class) {
+      // Retrieve Analyzer and wrap then in SensorWrapper
+      for (Object extension : getExtensions(Analyzer.class)) {
+        extension = new SensorWrapper((Analyzer) extension, context, analyzerOptimizer);
+        if (shouldKeep(type, extension, project, matcher)) {
+          result.add((T) extension);
+        }
+      }
+    }
     return result;
   }
 
index 4cddc459f4c1fbbe663c327529b3947c333fef79..bac550fd8781ddb2f98fd333ee22dd82715574c1 100644 (file)
@@ -35,11 +35,15 @@ import org.sonar.api.component.ResourcePerspectives;
 import org.sonar.api.config.Settings;
 import org.sonar.api.issue.Issuable;
 import org.sonar.api.issue.internal.DefaultIssue;
+import org.sonar.api.measures.Formula;
 import org.sonar.api.measures.Measure;
 import org.sonar.api.measures.MetricFinder;
+import org.sonar.api.measures.PersistenceMode;
+import org.sonar.api.measures.SumChildDistributionFormula;
 import org.sonar.api.resources.File;
 import org.sonar.api.resources.Project;
 import org.sonar.api.resources.Resource;
+import org.sonar.api.resources.Scopes;
 import org.sonar.api.rule.RuleKey;
 import org.sonar.core.issue.DefaultIssueBuilder;
 
@@ -176,6 +180,13 @@ public class AnalyzerContextAdaptor implements AnalyzerContext {
         }
     }
     if (measure.inputFile() != null) {
+      Formula formula = measure.metric() instanceof org.sonar.api.measures.Metric ?
+        ((org.sonar.api.measures.Metric) measure.metric()).getFormula() : null;
+      if (formula instanceof SumChildDistributionFormula) {
+        if (!Scopes.isHigherThanOrEquals(Scopes.FILE, ((SumChildDistributionFormula) formula).getMinimumScopeToPersist())) {
+          measureToSave.setPersistenceMode(PersistenceMode.MEMORY);
+        }
+      }
       sensorContext.saveMeasure(measure.inputFile(), measureToSave);
     } else {
       sensorContext.saveMeasure(measureToSave);
index 19188321bf063b2167f98fadc2855fc84de9acd0..fe9c898755d8bcd099f1094ec2fc8f2c4b66e28a 100644 (file)
@@ -50,7 +50,7 @@ public class DefaultAnalyzerContext implements AnalyzerContext {
   private final FileSystem fs;
   private final ActiveRules activeRules;
   private final IssueFilters issueFilters;
-  private Rules rules;
+  private final Rules rules;
 
   public DefaultAnalyzerContext(ProjectDefinition def, AnalyzerMeasureCache measureCache, AnalyzerIssueCache issueCache,
     Settings settings, FileSystem fs, ActiveRules activeRules, IssueFilters issueFilters, Rules rules) {
index ccfc5a83c5d5efe355f97e2292a5d4308c059153..4c33ff1e391c5a8290c366bc39bb517ff1b5e525 100644 (file)
  */
 package org.sonar.api.batch.analyzer.measure;
 
-import org.sonar.api.batch.measure.Metric;
-
 import com.google.common.annotations.Beta;
 import org.sonar.api.batch.analyzer.Analyzer;
 import org.sonar.api.batch.fs.InputFile;
+import org.sonar.api.batch.measure.Metric;
 
 import javax.annotation.Nullable;