summaryrefslogtreecommitdiffstats
path: root/sonar-batch
diff options
context:
space:
mode:
authorDavid Gageot <david@gageot.net>2012-10-29 10:44:42 +0100
committerDavid Gageot <david@gageot.net>2012-10-29 10:45:10 +0100
commite0603258d5ec0702a0a0610aa3b680c8c9a44b09 (patch)
tree3b5113e32b63e0d1e419192464d05d67ec20c4d7 /sonar-batch
parentfe0bd12eec0ef48e11f79aacb0de3439663f16a6 (diff)
downloadsonarqube-e0603258d5ec0702a0a0610aa3b680c8c9a44b09.tar.gz
sonarqube-e0603258d5ec0702a0a0610aa3b680c8c9a44b09.zip
SONAR-3895 Draft of export and can work when project doesn't exist
Diffstat (limited to 'sonar-batch')
-rw-r--r--sonar-batch/pom.xml4
-rw-r--r--sonar-batch/src/main/java/org/sonar/batch/bootstrap/BootstrapModule.java1
-rw-r--r--sonar-batch/src/main/java/org/sonar/batch/bootstrap/ProjectModule.java10
-rw-r--r--sonar-batch/src/main/java/org/sonar/batch/local/DryRunExporter.java31
-rw-r--r--sonar-batch/src/test/java/org/sonar/batch/local/DryRunExporterTest.java6
5 files changed, 43 insertions, 9 deletions
diff --git a/sonar-batch/pom.xml b/sonar-batch/pom.xml
index 3000f785c94..e693da1521a 100644
--- a/sonar-batch/pom.xml
+++ b/sonar-batch/pom.xml
@@ -62,6 +62,10 @@
<artifactId>commons-lang</artifactId>
</dependency>
<dependency>
+ <groupId>com.google.code.gson</groupId>
+ <artifactId>gson</artifactId>
+ </dependency>
+ <dependency>
<!-- local database -->
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
diff --git a/sonar-batch/src/main/java/org/sonar/batch/bootstrap/BootstrapModule.java b/sonar-batch/src/main/java/org/sonar/batch/bootstrap/BootstrapModule.java
index bcb2e44d252..bc6f746351f 100644
--- a/sonar-batch/src/main/java/org/sonar/batch/bootstrap/BootstrapModule.java
+++ b/sonar-batch/src/main/java/org/sonar/batch/bootstrap/BootstrapModule.java
@@ -63,7 +63,6 @@ public class BootstrapModule extends Module {
container.addSingleton(BatchPluginRepository.class);
container.addSingleton(ExtensionInstaller.class);
container.addSingleton(DryRun.class);
- container.addSingleton(DryRunExporter.class);
container.addSingleton(Logback.class);
container.addSingleton(ServerClient.class);
container.addSingleton(ServerMetadata.class);
diff --git a/sonar-batch/src/main/java/org/sonar/batch/bootstrap/ProjectModule.java b/sonar-batch/src/main/java/org/sonar/batch/bootstrap/ProjectModule.java
index 8ddbf991cf5..ffb2a2f54fd 100644
--- a/sonar-batch/src/main/java/org/sonar/batch/bootstrap/ProjectModule.java
+++ b/sonar-batch/src/main/java/org/sonar/batch/bootstrap/ProjectModule.java
@@ -42,6 +42,7 @@ import org.sonar.batch.config.UnsupportedProperties;
import org.sonar.batch.events.EventBus;
import org.sonar.batch.index.DefaultIndex;
import org.sonar.batch.index.DefaultResourcePersister;
+import org.sonar.batch.local.DryRunExporter;
import org.sonar.batch.phases.Phases;
import org.sonar.batch.phases.PhasesTimeProfiler;
import org.sonar.core.qualitymodel.DefaultModelFinder;
@@ -64,7 +65,6 @@ public class ProjectModule extends Module {
addProjectPluginExtensions();
}
-
private void addProjectComponents() {
ProjectDefinition projectDefinition = container.getComponentByType(ProjectTree.class).getProjectDefinition(project);
container.addSingleton(projectDefinition);
@@ -94,6 +94,7 @@ public class ProjectModule extends Module {
container.addSingleton(ResourceFilters.class);
container.addSingleton(DefaultModelFinder.class);
container.addSingleton(DefaultProfileLoader.class);
+ container.addSingleton(DryRunExporter.class);
container.addPicoAdapter(new ProfileProvider());
}
@@ -111,7 +112,6 @@ public class ProjectModule extends Module {
installer.install(container, InstantiationStrategy.PROJECT);
}
-
private void logSettings() {
// TODO move these logs in a dedicated component
LOG.info("------------- Analyzing {}", project.getName());
@@ -124,9 +124,9 @@ public class ProjectModule extends Module {
protected void doStart() {
DefaultIndex index = container.getComponentByType(DefaultIndex.class);
index.setCurrentProject(project,
- container.getComponentByType(ResourceFilters.class),
- container.getComponentByType(ViolationFilters.class),
- container.getComponentByType(RulesProfile.class));
+ container.getComponentByType(ResourceFilters.class),
+ container.getComponentByType(ViolationFilters.class),
+ container.getComponentByType(RulesProfile.class));
container.getComponentByType(Phases.class).execute(project);
}
diff --git a/sonar-batch/src/main/java/org/sonar/batch/local/DryRunExporter.java b/sonar-batch/src/main/java/org/sonar/batch/local/DryRunExporter.java
index 25d9649961d..7323077518e 100644
--- a/sonar-batch/src/main/java/org/sonar/batch/local/DryRunExporter.java
+++ b/sonar-batch/src/main/java/org/sonar/batch/local/DryRunExporter.java
@@ -19,11 +19,22 @@
*/
package org.sonar.batch.local;
+import com.google.common.collect.ImmutableMap;
+import com.google.common.collect.Lists;
+import com.google.gson.Gson;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.sonar.api.BatchComponent;
import org.sonar.api.batch.SensorContext;
+import org.sonar.api.resources.Resource;
+import org.sonar.api.rules.Violation;
+import org.sonar.api.violations.ViolationQuery;
import org.sonar.batch.bootstrap.DryRun;
+import org.sonar.batch.index.DefaultIndex;
+
+import java.io.Serializable;
+import java.util.List;
+import java.util.Map;
/**
* @since 3.4
@@ -32,9 +43,11 @@ public class DryRunExporter implements BatchComponent {
private static final Logger LOG = LoggerFactory.getLogger(DryRunExporter.class);
private final DryRun dryRun;
+ private final DefaultIndex sonarIndex;
- public DryRunExporter(DryRun dryRun) {
+ public DryRunExporter(DryRun dryRun, DefaultIndex sonarIndex) {
this.dryRun = dryRun;
+ this.sonarIndex = sonarIndex;
}
public void execute(SensorContext context) {
@@ -43,5 +56,21 @@ public class DryRunExporter implements BatchComponent {
}
LOG.info("Exporting dry run results");
+
+ List<Map<String, ? extends Serializable>> results = Lists.newArrayList();
+
+ for (Resource resource : sonarIndex.getResources()) {
+ List<Violation> violations = sonarIndex.getViolations(ViolationQuery.create().forResource(resource));
+ for (Violation violation : violations) {
+ results.add(ImmutableMap.of(
+ "resource", violation.getResource().getKey(),
+ "line", violation.getLineId(),
+ "message", violation.getMessage()));
+
+ }
+ }
+
+ String json = new Gson().toJson(results);
+ System.out.println(json);
}
}
diff --git a/sonar-batch/src/test/java/org/sonar/batch/local/DryRunExporterTest.java b/sonar-batch/src/test/java/org/sonar/batch/local/DryRunExporterTest.java
index 0e1b25ef47b..bb09e9c3f18 100644
--- a/sonar-batch/src/test/java/org/sonar/batch/local/DryRunExporterTest.java
+++ b/sonar-batch/src/test/java/org/sonar/batch/local/DryRunExporterTest.java
@@ -23,6 +23,7 @@ import org.junit.Before;
import org.junit.Test;
import org.sonar.api.batch.SensorContext;
import org.sonar.batch.bootstrap.DryRun;
+import org.sonar.batch.index.DefaultIndex;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verifyZeroInteractions;
@@ -31,17 +32,18 @@ public class DryRunExporterTest {
DryRunExporter dryRunExporter;
DryRun dryRun = mock(DryRun.class);
+ DefaultIndex sonarIndex = mock(DefaultIndex.class);
SensorContext sensorContext = mock(SensorContext.class);
@Before
public void setUp() {
- dryRunExporter = new DryRunExporter(dryRun);
+ dryRunExporter = new DryRunExporter(dryRun, sonarIndex);
}
@Test
public void should_disable_if_no_dry_run() {
dryRunExporter.execute(sensorContext);
- verifyZeroInteractions(sensorContext);
+ verifyZeroInteractions(sensorContext, sonarIndex);
}
}