aboutsummaryrefslogtreecommitdiffstats
path: root/sonar-batch
diff options
context:
space:
mode:
authorJulien HENRY <julien.henry@sonarsource.com>2014-06-18 17:28:54 +0200
committerJulien HENRY <julien.henry@sonarsource.com>2014-06-18 17:29:46 +0200
commit7b8ec8c4770a2c856cc52f98feddb0231d172051 (patch)
tree6cc4fe34e4b8659609888bc4b9a2d3559e6c09b9 /sonar-batch
parentd53af792fde9bd9eae47141a1b8abe17d70fe09d (diff)
downloadsonarqube-7b8ec8c4770a2c856cc52f98feddb0231d172051.tar.gz
sonarqube-7b8ec8c4770a2c856cc52f98feddb0231d172051.zip
SONAR-5389 Improve analyzer API
Diffstat (limited to 'sonar-batch')
-rw-r--r--sonar-batch/src/main/java/org/sonar/batch/scan/AnalyzerContextAdaptor.java48
-rw-r--r--sonar-batch/src/main/java/org/sonar/batch/scan2/AnalyzerMeasureCache.java6
-rw-r--r--sonar-batch/src/main/java/org/sonar/batch/scan2/DefaultAnalyzerContext.java43
3 files changed, 74 insertions, 23 deletions
diff --git a/sonar-batch/src/main/java/org/sonar/batch/scan/AnalyzerContextAdaptor.java b/sonar-batch/src/main/java/org/sonar/batch/scan/AnalyzerContextAdaptor.java
index 97bf89d1aa9..c83c090f252 100644
--- a/sonar-batch/src/main/java/org/sonar/batch/scan/AnalyzerContextAdaptor.java
+++ b/sonar-batch/src/main/java/org/sonar/batch/scan/AnalyzerContextAdaptor.java
@@ -22,12 +22,17 @@ package org.sonar.batch.scan;
import org.sonar.api.batch.SensorContext;
import org.sonar.api.batch.analyzer.AnalyzerContext;
import org.sonar.api.batch.analyzer.issue.AnalyzerIssue;
+import org.sonar.api.batch.analyzer.issue.AnalyzerIssueBuilder;
+import org.sonar.api.batch.analyzer.issue.internal.DefaultAnalyzerIssueBuilder;
import org.sonar.api.batch.analyzer.measure.AnalyzerMeasure;
import org.sonar.api.batch.analyzer.measure.AnalyzerMeasureBuilder;
import org.sonar.api.batch.analyzer.measure.internal.DefaultAnalyzerMeasureBuilder;
+import org.sonar.api.batch.fs.FileSystem;
import org.sonar.api.batch.fs.InputFile;
import org.sonar.api.batch.measures.Metric;
+import org.sonar.api.batch.rule.ActiveRules;
import org.sonar.api.component.ResourcePerspectives;
+import org.sonar.api.config.Settings;
import org.sonar.api.issue.Issuable;
import org.sonar.api.measures.Measure;
import org.sonar.api.measures.MetricFinder;
@@ -37,20 +42,45 @@ import org.sonar.api.resources.Resource;
import org.sonar.api.rule.RuleKey;
import java.io.Serializable;
-import java.util.Collection;
+/**
+ * Implements {@link AnalyzerContext} but forward everything to {@link SensorContext} for backward compatibility.
+ *
+ */
public class AnalyzerContextAdaptor implements AnalyzerContext {
private SensorContext sensorContext;
private MetricFinder metricFinder;
private Project project;
private ResourcePerspectives perspectives;
+ private Settings settings;
+ private FileSystem fs;
+ private ActiveRules activeRules;
- public AnalyzerContextAdaptor(SensorContext sensorContext, MetricFinder metricFinder, Project project, ResourcePerspectives perspectives) {
+ public AnalyzerContextAdaptor(SensorContext sensorContext, MetricFinder metricFinder, Project project, ResourcePerspectives perspectives,
+ Settings settings, FileSystem fs, ActiveRules activeRules) {
this.sensorContext = sensorContext;
this.metricFinder = metricFinder;
this.project = project;
this.perspectives = perspectives;
+ this.settings = settings;
+ this.fs = fs;
+ this.activeRules = activeRules;
+ }
+
+ @Override
+ public Settings settings() {
+ return settings;
+ }
+
+ @Override
+ public FileSystem fileSystem() {
+ return fs;
+ }
+
+ @Override
+ public ActiveRules activeRules() {
+ return activeRules;
}
@Override
@@ -107,7 +137,7 @@ public class AnalyzerContextAdaptor implements AnalyzerContext {
@Override
public void addMeasure(AnalyzerMeasure<?> measure) {
- org.sonar.api.measures.Metric<?> m = metricFinder.findByKey(measure.metricKey());
+ org.sonar.api.measures.Metric<?> m = metricFinder.findByKey(measure.metric().key());
Measure measureToSave = new Measure(m);
switch (m.getType()) {
@@ -150,6 +180,11 @@ public class AnalyzerContextAdaptor implements AnalyzerContext {
}
@Override
+ public AnalyzerIssueBuilder issueBuilder() {
+ return new DefaultAnalyzerIssueBuilder();
+ }
+
+ @Override
public void addIssue(AnalyzerIssue issue) {
Resource r;
if (issue.inputFile() != null) {
@@ -166,11 +201,4 @@ public class AnalyzerContextAdaptor implements AnalyzerContext {
.build());
}
- @Override
- public void addIssues(Collection<AnalyzerIssue> issues) {
- for (AnalyzerIssue analyzerIssue : issues) {
- addIssue(analyzerIssue);
- }
- }
-
}
diff --git a/sonar-batch/src/main/java/org/sonar/batch/scan2/AnalyzerMeasureCache.java b/sonar-batch/src/main/java/org/sonar/batch/scan2/AnalyzerMeasureCache.java
index 593324a1c73..07d313f2249 100644
--- a/sonar-batch/src/main/java/org/sonar/batch/scan2/AnalyzerMeasureCache.java
+++ b/sonar-batch/src/main/java/org/sonar/batch/scan2/AnalyzerMeasureCache.java
@@ -47,15 +47,15 @@ public class AnalyzerMeasureCache implements BatchComponent {
public AnalyzerMeasureCache put(String resourceKey, DefaultAnalyzerMeasure<?> measure) {
Preconditions.checkNotNull(resourceKey);
- Preconditions.checkNotNull(measure.metricKey());
- cache.put(resourceKey, measure.metricKey(), measure);
+ Preconditions.checkNotNull(measure);
+ cache.put(resourceKey, measure.metric().key(), measure);
return this;
}
public boolean contains(String resourceKey, DefaultAnalyzerMeasure<?> measure) {
Preconditions.checkNotNull(resourceKey);
Preconditions.checkNotNull(measure);
- return cache.containsKey(resourceKey, measure.metricKey());
+ return cache.containsKey(resourceKey, measure.metric().key());
}
public Iterable<DefaultAnalyzerMeasure> all() {
diff --git a/sonar-batch/src/main/java/org/sonar/batch/scan2/DefaultAnalyzerContext.java b/sonar-batch/src/main/java/org/sonar/batch/scan2/DefaultAnalyzerContext.java
index 5fc2961ef84..e411fbbfe74 100644
--- a/sonar-batch/src/main/java/org/sonar/batch/scan2/DefaultAnalyzerContext.java
+++ b/sonar-batch/src/main/java/org/sonar/batch/scan2/DefaultAnalyzerContext.java
@@ -21,13 +21,18 @@ package org.sonar.batch.scan2;
import org.sonar.api.batch.analyzer.AnalyzerContext;
import org.sonar.api.batch.analyzer.issue.AnalyzerIssue;
+import org.sonar.api.batch.analyzer.issue.AnalyzerIssueBuilder;
+import org.sonar.api.batch.analyzer.issue.internal.DefaultAnalyzerIssueBuilder;
import org.sonar.api.batch.analyzer.measure.AnalyzerMeasure;
import org.sonar.api.batch.analyzer.measure.AnalyzerMeasureBuilder;
import org.sonar.api.batch.analyzer.measure.internal.DefaultAnalyzerMeasure;
import org.sonar.api.batch.analyzer.measure.internal.DefaultAnalyzerMeasureBuilder;
import org.sonar.api.batch.bootstrap.ProjectDefinition;
+import org.sonar.api.batch.fs.FileSystem;
import org.sonar.api.batch.fs.InputFile;
import org.sonar.api.batch.measures.Metric;
+import org.sonar.api.batch.rule.ActiveRules;
+import org.sonar.api.config.Settings;
import org.sonar.api.issue.internal.DefaultIssue;
import org.sonar.api.rule.RuleKey;
import org.sonar.batch.issue.ModuleIssues;
@@ -35,18 +40,39 @@ import org.sonar.core.component.ComponentKeys;
import org.sonar.core.issue.DefaultIssueBuilder;
import java.io.Serializable;
-import java.util.Collection;
public class DefaultAnalyzerContext implements AnalyzerContext {
private final AnalyzerMeasureCache measureCache;
private ProjectDefinition def;
private ModuleIssues moduleIssues;
+ private Settings settings;
+ private FileSystem fs;
+ private ActiveRules activeRules;
- public DefaultAnalyzerContext(ProjectDefinition def, AnalyzerMeasureCache measureCache, ModuleIssues moduleIssues) {
+ public DefaultAnalyzerContext(ProjectDefinition def, AnalyzerMeasureCache measureCache,
+ ModuleIssues moduleIssues, Settings settings, FileSystem fs, ActiveRules activeRules) {
this.def = def;
this.measureCache = measureCache;
this.moduleIssues = moduleIssues;
+ this.settings = settings;
+ this.fs = fs;
+ this.activeRules = activeRules;
+ }
+
+ @Override
+ public Settings settings() {
+ return settings;
+ }
+
+ @Override
+ public FileSystem fileSystem() {
+ return fs;
+ }
+
+ @Override
+ public ActiveRules activeRules() {
+ return activeRules;
}
@Override
@@ -84,6 +110,11 @@ public class DefaultAnalyzerContext implements AnalyzerContext {
}
@Override
+ public AnalyzerIssueBuilder issueBuilder() {
+ return new DefaultAnalyzerIssueBuilder();
+ }
+
+ @Override
public void addIssue(AnalyzerIssue issue) {
DefaultIssueBuilder builder = new DefaultIssueBuilder()
.projectKey(def.getKey());
@@ -101,12 +132,4 @@ public class DefaultAnalyzerContext implements AnalyzerContext {
.build());
}
- @Override
- public void addIssues(Collection<AnalyzerIssue> issues) {
- for (AnalyzerIssue analyzerIssue : issues) {
- addIssue(analyzerIssue);
- }
-
- }
-
}