diff options
author | David Gageot <david@gageot.net> | 2012-10-29 10:44:42 +0100 |
---|---|---|
committer | David Gageot <david@gageot.net> | 2012-10-29 10:45:10 +0100 |
commit | e0603258d5ec0702a0a0610aa3b680c8c9a44b09 (patch) | |
tree | 3b5113e32b63e0d1e419192464d05d67ec20c4d7 /sonar-batch | |
parent | fe0bd12eec0ef48e11f79aacb0de3439663f16a6 (diff) | |
download | sonarqube-e0603258d5ec0702a0a0610aa3b680c8c9a44b09.tar.gz sonarqube-e0603258d5ec0702a0a0610aa3b680c8c9a44b09.zip |
SONAR-3895 Draft of export and can work when project doesn't exist
Diffstat (limited to 'sonar-batch')
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); } } |