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;
}
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;
}
}
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);
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) {
*/
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;