]> source.dussan.org Git - sonarqube.git/commitdiff
Fix some quality flaws
authorJulien HENRY <julien.henry@sonarsource.com>
Fri, 20 Jun 2014 09:53:57 +0000 (11:53 +0200)
committerJulien HENRY <julien.henry@sonarsource.com>
Fri, 20 Jun 2014 10:03:10 +0000 (12:03 +0200)
16 files changed:
sonar-batch/src/main/java/org/sonar/batch/DefaultProjectClasspath.java
sonar-batch/src/main/java/org/sonar/batch/bootstrap/BatchExtensionDictionnary.java
sonar-batch/src/main/java/org/sonar/batch/index/Bucket.java
sonar-batch/src/main/java/org/sonar/batch/index/DefaultResourcePersister.java
sonar-batch/src/main/java/org/sonar/batch/index/MeasurePersister.java
sonar-batch/src/main/java/org/sonar/batch/index/PersistenceManager.java
sonar-batch/src/main/java/org/sonar/batch/index/ResourcePersister.java
sonar-batch/src/main/java/org/sonar/batch/mediumtest/AnalyzerMediumTester.java
sonar-batch/src/main/java/org/sonar/batch/phases/PhaseExecutor.java
sonar-batch/src/main/java/org/sonar/batch/scan/SensorWrapper.java
sonar-batch/src/main/java/org/sonar/batch/scan2/AnalysisPublisher.java [new file with mode: 0644]
sonar-batch/src/main/java/org/sonar/batch/scan2/AnalyzisPublisher.java [deleted file]
sonar-batch/src/main/java/org/sonar/batch/scan2/ModuleScanContainer.java
sonar-batch/src/main/java/org/sonar/batch/scan2/ModuleScanExecutor.java
sonar-batch/src/test/java/org/sonar/batch/bootstrap/BatchExtensionDictionnaryTest.java
sonar-batch/src/test/java/org/sonar/batch/mediumtest/xoo/XooMediumTest.java

index 3c124baad6709d1b0a9d67e249932f6d3c6132ad..d497906439fcf323cea67a141922c9e9c0f48b9a 100644 (file)
@@ -25,6 +25,8 @@ import org.sonar.api.batch.ProjectClasspath;
 import org.sonar.api.batch.bootstrap.ProjectDefinition;
 import org.sonar.api.resources.ProjectFileSystem;
 
+import javax.annotation.Nullable;
+
 import java.io.File;
 import java.util.List;
 
@@ -37,7 +39,7 @@ public class DefaultProjectClasspath extends ProjectClasspath {
     this(def, projectFileSystem, null);
   }
 
-  public DefaultProjectClasspath(ProjectDefinition def, ProjectFileSystem projectFileSystem, MavenProject pom) {
+  public DefaultProjectClasspath(ProjectDefinition def, ProjectFileSystem projectFileSystem, @Nullable MavenProject pom) {
     super(pom);
     this.def = def;
     this.projectFileSystem = projectFileSystem;
index 622a7ef92b9bbd7b076ca9d3110a212b70c5d4b1..8d0d269265696c5dfd46b96fca5380222fca9038 100644 (file)
@@ -25,7 +25,6 @@ import org.sonar.api.batch.CheckProject;
 import org.sonar.api.batch.Sensor;
 import org.sonar.api.batch.analyzer.Analyzer;
 import org.sonar.api.batch.analyzer.AnalyzerContext;
-import org.sonar.api.batch.fs.FileSystem;
 import org.sonar.api.platform.ComponentContainer;
 import org.sonar.api.resources.Project;
 import org.sonar.batch.scan.SensorWrapper;
@@ -41,13 +40,11 @@ import java.util.List;
  */
 public class BatchExtensionDictionnary extends org.sonar.api.batch.BatchExtensionDictionnary {
 
-  private FileSystem fs;
   private AnalyzerContext context;
   private AnalyzerOptimizer analyzerOptimizer;
 
-  public BatchExtensionDictionnary(ComponentContainer componentContainer, FileSystem fs, AnalyzerContext context, AnalyzerOptimizer analyzerOptimizer) {
+  public BatchExtensionDictionnary(ComponentContainer componentContainer, AnalyzerContext context, AnalyzerOptimizer analyzerOptimizer) {
     super(componentContainer);
-    this.fs = fs;
     this.context = context;
     this.analyzerOptimizer = analyzerOptimizer;
   }
@@ -64,7 +61,7 @@ public class BatchExtensionDictionnary extends org.sonar.api.batch.BatchExtensio
     List<T> result = Lists.newArrayList();
     for (Object extension : getExtensions(type)) {
       if (type == Sensor.class && extension instanceof Analyzer) {
-        extension = new SensorWrapper((Analyzer) extension, context, fs, analyzerOptimizer);
+        extension = new SensorWrapper((Analyzer) extension, context, analyzerOptimizer);
       }
       if (shouldKeep(type, extension, project, matcher)) {
         result.add((T) extension);
index ea4ed3b11a0219c58e420c8b98d39ccdfc8b7625..5f058e3632dd3d40d85615edb272d77797572f8e 100644 (file)
@@ -22,6 +22,8 @@ package org.sonar.batch.index;
 import com.google.common.collect.Lists;
 import org.sonar.api.resources.Resource;
 
+import javax.annotation.Nullable;
+
 import java.util.Collections;
 import java.util.List;
 
@@ -40,7 +42,7 @@ public final class Bucket {
     return resource;
   }
 
-  public Bucket setParent(Bucket parent) {
+  public Bucket setParent(@Nullable Bucket parent) {
     this.parent = parent;
     if (parent != null) {
       parent.addChild(this);
index 1e6f9d8af487f24cf58219667084df79833437e9..4e9082bc458392c3ecab2dd6f2a23991f0280baa 100644 (file)
@@ -36,6 +36,7 @@ import org.sonar.api.resources.Scopes;
 import org.sonar.api.security.ResourcePermissions;
 import org.sonar.api.utils.SonarException;
 
+import javax.annotation.Nullable;
 import javax.persistence.NonUniqueResultException;
 import javax.persistence.Query;
 
@@ -65,7 +66,7 @@ public final class DefaultResourcePersister implements ResourcePersister {
     this.resourceCache = resourceCache;
   }
 
-  public Snapshot saveProject(Project project, Project parent) {
+  public Snapshot saveProject(Project project, @Nullable Project parent) {
     Snapshot snapshot = snapshotsByResource.get(project);
     if (snapshot == null) {
       snapshot = persistProject(project, parent);
@@ -85,7 +86,7 @@ public final class DefaultResourcePersister implements ResourcePersister {
     }
   }
 
-  private Snapshot persistProject(Project project, Project parent) {
+  private Snapshot persistProject(Project project, @Nullable Project parent) {
     // temporary hack
     project.setEffectiveKey(project.getKey());
 
@@ -157,7 +158,7 @@ public final class DefaultResourcePersister implements ResourcePersister {
     return saveResource(project, resource, null);
   }
 
-  public Snapshot saveResource(Project project, Resource resource, Resource parent) {
+  public Snapshot saveResource(Project project, Resource resource, @Nullable Resource parent) {
     Snapshot snapshot = snapshotsByResource.get(resource);
     if (snapshot == null) {
       snapshot = persist(project, resource, parent);
@@ -166,7 +167,7 @@ public final class DefaultResourcePersister implements ResourcePersister {
     return snapshot;
   }
 
-  private Snapshot persist(Project project, Resource resource, Resource parent) {
+  private Snapshot persist(Project project, Resource resource, @Nullable Resource parent) {
     Snapshot snapshot;
     if (resource instanceof Project) {
       // should not occur, please use the method saveProject()
@@ -224,7 +225,7 @@ public final class DefaultResourcePersister implements ResourcePersister {
   /**
    * Everything except project and library
    */
-  private Snapshot persistFileOrDirectory(Project project, Resource resource, Resource parentReference) {
+  private Snapshot persistFileOrDirectory(Project project, Resource resource, @Nullable Resource parentReference) {
     Snapshot moduleSnapshot = snapshotsByResource.get(project);
     Integer moduleId = moduleSnapshot.getResourceId();
     ResourceModel model = findOrCreateModel(resource);
index e317fe8056607436ca73889a3ca9771df0efaba6..2a63d4b8b9e0c35a2abed97f5d08168cc2096813 100644 (file)
@@ -82,7 +82,10 @@ public final class MeasurePersister implements ScanPersister {
 
   @VisibleForTesting
   static boolean shouldPersistMeasure(@Nullable Resource resource, @Nullable Measure measure) {
-    return resource != null && measure != null && measure.getPersistenceMode().useDatabase() &&
+    if (resource == null || measure == null) {
+      return false;
+    }
+    return measure.getPersistenceMode().useDatabase() &&
       !(ResourceUtils.isEntity(resource) && measure.isBestValue()) && isMeasureNotEmpty(measure);
   }
 
index d90f63d8b666dfbba8d18d6c9b029a4e98d9aa69..b97baa1b8ea826ac6a2e3b18de64c01ff2e5ac29 100644 (file)
@@ -26,12 +26,14 @@ import org.sonar.api.resources.Project;
 import org.sonar.api.resources.ProjectLink;
 import org.sonar.api.resources.Resource;
 
+import javax.annotation.Nullable;
+
 import java.util.List;
 
 public interface PersistenceManager {
   void clear();
 
-  void saveProject(Project project, Project parent);
+  void saveProject(Project project, @Nullable Project parent);
 
   Snapshot saveResource(Project project, Resource resource, Resource parent);
 
index 8ee6c8faf7da22d2096477ee6e8266e2cb63d240..af78d773c8dc752c4e183cb03cbfb92b8de1aac2 100644 (file)
@@ -24,9 +24,11 @@ import org.sonar.api.database.model.Snapshot;
 import org.sonar.api.resources.Project;
 import org.sonar.api.resources.Resource;
 
+import javax.annotation.Nullable;
+
 public interface ResourcePersister {
 
-  Snapshot saveProject(Project project, Project parent);
+  Snapshot saveProject(Project project, @Nullable Project parent);
 
   /**
    * Persist a resource in database. Returns null if the resource must not be persisted (scope lower than file)
index c35ccff3216f64b982fca263fe9fd49d9280132a..b55e13ae912b00b94f264cbe860468f056b80f16 100644 (file)
@@ -105,7 +105,8 @@ public class AnalyzerMediumTester {
     }
 
     public AnalyzerMediumTesterBuilder registerMetric(Metric<?> metric) {
-      metricFinder.add(metricId++, metric);
+      metricFinder.add(metricId, metric);
+      metricId++;
       return this;
     }
 
@@ -143,7 +144,7 @@ public class AnalyzerMediumTester {
 
   }
 
-  public void start() throws Throwable {
+  public void start() {
     batch.start();
   }
 
index 90bafa7dc3e009577dcc21701a284ae39cd34a02..5fc37a64dfdbb5b068f4cedd347b981da5f7418b 100644 (file)
@@ -88,16 +88,6 @@ public final class PhaseExecutor {
     this.issueExclusionsLoader = issueExclusionsLoader;
   }
 
-  public PhaseExecutor(Phases phases, DecoratorsExecutor decoratorsExecutor,
-    MavenPluginsConfigurator mavenPluginsConfigurator, InitializersExecutor initializersExecutor,
-    PostJobsExecutor postJobsExecutor, SensorsExecutor sensorsExecutor,
-    PersistenceManager persistenceManager, SensorContext sensorContext, DefaultIndex index,
-    EventBus eventBus, ProjectInitializer pi, ScanPersister[] persisters, FileSystemLogger fsLogger, JsonReport jsonReport,
-    DefaultModuleFileSystem fs, QProfileVerifier profileVerifier, IssueExclusionsLoader issueExclusionsLoader) {
-    this(phases, decoratorsExecutor, mavenPluginsConfigurator, initializersExecutor, postJobsExecutor,
-      sensorsExecutor, persistenceManager, sensorContext, index, eventBus, null, pi, persisters, fsLogger, jsonReport, fs, profileVerifier, issueExclusionsLoader);
-  }
-
   public static Collection<Class> getPhaseClasses() {
     return Lists.<Class>newArrayList(DecoratorsExecutor.class, MavenPluginsConfigurator.class,
       PostJobsExecutor.class, SensorsExecutor.class,
index 701233abbefbd25fc74e441424596963dfebc738..5489b9da52848f1218d9d68a2aacd602c403cc38 100644 (file)
@@ -26,7 +26,6 @@ import org.sonar.api.batch.SensorContext;
 import org.sonar.api.batch.analyzer.Analyzer;
 import org.sonar.api.batch.analyzer.AnalyzerContext;
 import org.sonar.api.batch.analyzer.internal.DefaultAnalyzerDescriptor;
-import org.sonar.api.batch.fs.FileSystem;
 import org.sonar.api.batch.measure.Metric;
 import org.sonar.api.resources.Project;
 import org.sonar.batch.scan2.AnalyzerOptimizer;
@@ -38,17 +37,15 @@ public class SensorWrapper implements Sensor {
 
   private Analyzer analyzer;
   private AnalyzerContext adaptor;
-  private FileSystem fs;
   private DefaultAnalyzerDescriptor descriptor;
   private AnalyzerOptimizer optimizer;
 
-  public SensorWrapper(Analyzer analyzer, AnalyzerContext adaptor, FileSystem fs, AnalyzerOptimizer optimizer) {
+  public SensorWrapper(Analyzer analyzer, AnalyzerContext adaptor, AnalyzerOptimizer optimizer) {
     this.analyzer = analyzer;
     this.optimizer = optimizer;
     descriptor = new DefaultAnalyzerDescriptor();
     analyzer.describe(descriptor);
     this.adaptor = adaptor;
-    this.fs = fs;
   }
 
   @DependedUpon
diff --git a/sonar-batch/src/main/java/org/sonar/batch/scan2/AnalysisPublisher.java b/sonar-batch/src/main/java/org/sonar/batch/scan2/AnalysisPublisher.java
new file mode 100644 (file)
index 0000000..c422da9
--- /dev/null
@@ -0,0 +1,189 @@
+/*
+ * SonarQube, open source software quality management tool.
+ * Copyright (C) 2008-2014 SonarSource
+ * mailto:contact AT sonarsource DOT com
+ *
+ * SonarQube is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 3 of the License, or (at your option) any later version.
+ *
+ * SonarQube is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ */
+package org.sonar.batch.scan2;
+
+import org.apache.commons.io.FileUtils;
+import org.apache.commons.io.IOUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.sonar.api.batch.analyzer.issue.AnalyzerIssue;
+import org.sonar.api.batch.analyzer.measure.AnalyzerMeasure;
+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.config.Settings;
+import org.sonar.api.utils.ZipUtils;
+import org.sonar.api.utils.text.JsonWriter;
+
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.util.Properties;
+
+public final class AnalysisPublisher {
+
+  private static final Logger LOG = LoggerFactory.getLogger(AnalysisPublisher.class);
+  private final Settings settings;
+  private final FileSystem fs;
+  private final AnalyzerMeasureCache measureCache;
+  private final ProjectDefinition def;
+  private AnalyzerIssueCache issueCache;
+
+  public AnalysisPublisher(ProjectDefinition def, Settings settings, FileSystem fs, AnalyzerMeasureCache measureCache, AnalyzerIssueCache analyzerIssueCache) {
+    this.def = def;
+    this.settings = settings;
+    this.fs = fs;
+    this.measureCache = measureCache;
+    this.issueCache = analyzerIssueCache;
+  }
+
+  public void execute() {
+    if (settings.getBoolean("sonar.skipPublish")) {
+      LOG.debug("Publishing of results is skipped");
+      return;
+    }
+    File exportDir = prepareExportDir();
+
+    exportAnalysisProperties(exportDir);
+
+    exportSourceFiles(exportDir);
+
+    exportMeasures(exportDir);
+
+    exportIssues(exportDir);
+
+    createZip(exportDir);
+
+  }
+
+  private void createZip(File exportDir) {
+    File exportZip = new File(fs.workDir(), def.getKey() + "-export.zip");
+    try {
+      ZipUtils.zipDir(exportDir, exportZip);
+      FileUtils.deleteDirectory(exportDir);
+    } catch (IOException e) {
+      throw unableToExport(e);
+    }
+    LOG.info("Results packaged in " + exportZip);
+  }
+
+  private IllegalStateException unableToExport(IOException e) {
+    return new IllegalStateException("Unable to export result of analyzis", e);
+  }
+
+  private void exportIssues(File exportDir) {
+    File issuesFile = new File(exportDir, "issues.json");
+    FileWriter issueWriter = null;
+    try {
+      issueWriter = new FileWriter(issuesFile);
+      JsonWriter jsonWriter = JsonWriter.of(issueWriter);
+      jsonWriter
+        .beginObject().name("issues")
+        .beginArray();
+      for (AnalyzerIssue issue : issueCache.byModule(def.getKey())) {
+        jsonWriter.beginObject()
+          .prop("repository", issue.ruleKey().repository())
+          .prop("rule", issue.ruleKey().rule());
+        if (issue.inputFile() != null) {
+          jsonWriter.prop("filePath", issue.inputFile().relativePath());
+        }
+        jsonWriter.prop("message", issue.message())
+          .prop("effortToFix", issue.effortToFix())
+          .prop("line", issue.line())
+          .endObject();
+      }
+      jsonWriter.endArray()
+        .endObject()
+        .close();
+    } catch (IOException e) {
+      throw unableToExport(e);
+    } finally {
+      IOUtils.closeQuietly(issueWriter);
+    }
+  }
+
+  private void exportMeasures(File exportDir) {
+    File measuresFile = new File(exportDir, "measures.json");
+    FileWriter measureWriter = null;
+    try {
+      measureWriter = new FileWriter(measuresFile);
+      JsonWriter jsonWriter = JsonWriter.of(measureWriter);
+      jsonWriter
+        .beginObject().name("measures")
+        .beginArray();
+      for (AnalyzerMeasure<?> measure : measureCache.byModule(def.getKey())) {
+        jsonWriter.beginObject()
+          .prop("metricKey", measure.metric().key());
+        if (measure.inputFile() != null) {
+          jsonWriter.prop("filePath", measure.inputFile().relativePath());
+        }
+        jsonWriter.prop("value", String.valueOf(measure.value()))
+          .endObject();
+      }
+      jsonWriter.endArray()
+        .endObject()
+        .close();
+    } catch (IOException e) {
+      throw unableToExport(e);
+    } finally {
+      IOUtils.closeQuietly(measureWriter);
+    }
+  }
+
+  private void exportSourceFiles(File exportDir) {
+    File sourceDir = new File(exportDir, "sources");
+    for (InputFile inputFile : fs.inputFiles(fs.predicates().all())) {
+      File dest = new File(sourceDir, inputFile.relativePath());
+      try {
+        FileUtils.copyFile(inputFile.file(), dest);
+      } catch (IOException e) {
+        throw unableToExport(e);
+      }
+    }
+  }
+
+  private void exportAnalysisProperties(File exportDir) {
+    File propsFile = new File(exportDir, "analysis.properties");
+    Properties props = new Properties();
+    props.putAll(settings.getProperties());
+    FileWriter writer = null;
+    try {
+      writer = new FileWriter(propsFile);
+      props.store(writer, "SonarQube batch");
+    } catch (IOException e) {
+      throw unableToExport(e);
+    } finally {
+      IOUtils.closeQuietly(writer);
+    }
+  }
+
+  private File prepareExportDir() {
+    File exportDir = new File(fs.workDir(), "export");
+    try {
+      if (exportDir.exists()) {
+        FileUtils.forceDelete(exportDir);
+      }
+      FileUtils.forceMkdir(exportDir);
+    } catch (IOException e) {
+      throw unableToExport(e);
+    }
+    return exportDir;
+  }
+}
diff --git a/sonar-batch/src/main/java/org/sonar/batch/scan2/AnalyzisPublisher.java b/sonar-batch/src/main/java/org/sonar/batch/scan2/AnalyzisPublisher.java
deleted file mode 100644 (file)
index 2c2e29d..0000000
+++ /dev/null
@@ -1,189 +0,0 @@
-/*
- * SonarQube, open source software quality management tool.
- * Copyright (C) 2008-2014 SonarSource
- * mailto:contact AT sonarsource DOT com
- *
- * SonarQube is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or (at your option) any later version.
- *
- * SonarQube is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
- */
-package org.sonar.batch.scan2;
-
-import org.apache.commons.io.FileUtils;
-import org.apache.commons.io.IOUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.sonar.api.batch.analyzer.issue.AnalyzerIssue;
-import org.sonar.api.batch.analyzer.measure.AnalyzerMeasure;
-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.config.Settings;
-import org.sonar.api.utils.ZipUtils;
-import org.sonar.api.utils.text.JsonWriter;
-
-import java.io.File;
-import java.io.FileWriter;
-import java.io.IOException;
-import java.util.Properties;
-
-public final class AnalyzisPublisher {
-
-  public static final Logger LOG = LoggerFactory.getLogger(AnalyzisPublisher.class);
-  private final Settings settings;
-  private final FileSystem fs;
-  private final AnalyzerMeasureCache measureCache;
-  private final ProjectDefinition def;
-  private AnalyzerIssueCache issueCache;
-
-  public AnalyzisPublisher(ProjectDefinition def, Settings settings, FileSystem fs, AnalyzerMeasureCache measureCache, AnalyzerIssueCache analyzerIssueCache) {
-    this.def = def;
-    this.settings = settings;
-    this.fs = fs;
-    this.measureCache = measureCache;
-    this.issueCache = analyzerIssueCache;
-  }
-
-  public void execute() {
-    if (settings.getBoolean("sonar.skipPublish")) {
-      LOG.debug("Publishing of results is skipped");
-      return;
-    }
-    File exportDir = prepareExportDir();
-
-    exportAnalysisProperties(exportDir);
-
-    exportSourceFiles(exportDir);
-
-    exportMeasures(exportDir);
-
-    exportIssues(exportDir);
-
-    createZip(exportDir);
-
-  }
-
-  private void createZip(File exportDir) {
-    File exportZip = new File(fs.workDir(), def.getKey() + "-export.zip");
-    try {
-      ZipUtils.zipDir(exportDir, exportZip);
-      FileUtils.deleteDirectory(exportDir);
-    } catch (IOException e) {
-      throw unableToExport(e);
-    }
-    LOG.info("Results packaged in " + exportZip);
-  }
-
-  private IllegalStateException unableToExport(IOException e) {
-    return new IllegalStateException("Unable to export result of analyzis", e);
-  }
-
-  private void exportIssues(File exportDir) {
-    File issuesFile = new File(exportDir, "issues.json");
-    FileWriter issueWriter = null;
-    try {
-      issueWriter = new FileWriter(issuesFile);
-      JsonWriter jsonWriter = JsonWriter.of(issueWriter);
-      jsonWriter
-        .beginObject().name("issues")
-        .beginArray();
-      for (AnalyzerIssue issue : issueCache.byModule(def.getKey())) {
-        jsonWriter.beginObject()
-          .prop("repository", issue.ruleKey().repository())
-          .prop("rule", issue.ruleKey().rule());
-        if (issue.inputFile() != null) {
-          jsonWriter.prop("filePath", issue.inputFile().relativePath());
-        }
-        jsonWriter.prop("message", issue.message())
-          .prop("effortToFix", issue.effortToFix())
-          .prop("line", issue.line())
-          .endObject();
-      }
-      jsonWriter.endArray()
-        .endObject()
-        .close();
-    } catch (IOException e) {
-
-    } finally {
-      IOUtils.closeQuietly(issueWriter);
-    }
-  }
-
-  private void exportMeasures(File exportDir) {
-    File measuresFile = new File(exportDir, "measures.json");
-    FileWriter measureWriter = null;
-    try {
-      measureWriter = new FileWriter(measuresFile);
-      JsonWriter jsonWriter = JsonWriter.of(measureWriter);
-      jsonWriter
-        .beginObject().name("measures")
-        .beginArray();
-      for (AnalyzerMeasure<?> measure : measureCache.byModule(def.getKey())) {
-        jsonWriter.beginObject()
-          .prop("metricKey", measure.metric().key());
-        if (measure.inputFile() != null) {
-          jsonWriter.prop("filePath", measure.inputFile().relativePath());
-        }
-        jsonWriter.prop("value", String.valueOf(measure.value()))
-          .endObject();
-      }
-      jsonWriter.endArray()
-        .endObject()
-        .close();
-    } catch (IOException e) {
-
-    } finally {
-      IOUtils.closeQuietly(measureWriter);
-    }
-  }
-
-  private void exportSourceFiles(File exportDir) {
-    File sourceDir = new File(exportDir, "sources");
-    for (InputFile inputFile : fs.inputFiles(fs.predicates().all())) {
-      File dest = new File(sourceDir, inputFile.relativePath());
-      try {
-        FileUtils.copyFile(inputFile.file(), dest);
-      } catch (IOException e) {
-        throw unableToExport(e);
-      }
-    }
-  }
-
-  private void exportAnalysisProperties(File exportDir) {
-    File propsFile = new File(exportDir, "analysis.properties");
-    Properties props = new Properties();
-    props.putAll(settings.getProperties());
-    FileWriter writer = null;
-    try {
-      writer = new FileWriter(propsFile);
-      props.store(writer, "SonarQube batch");
-    } catch (IOException e) {
-      throw unableToExport(e);
-    } finally {
-      IOUtils.closeQuietly(writer);
-    }
-  }
-
-  private File prepareExportDir() {
-    File exportDir = new File(fs.workDir(), "export");
-    try {
-      if (exportDir.exists()) {
-        FileUtils.forceDelete(exportDir);
-      }
-      FileUtils.forceMkdir(exportDir);
-    } catch (IOException e) {
-      throw unableToExport(e);
-    }
-    return exportDir;
-  }
-}
index 6309146221c3c09367b2927ce360c986ab39b4cb..d4fc0d708fd4c3298392149e60773377409020df 100644 (file)
@@ -123,7 +123,7 @@ public class ModuleScanContainer extends ComponentContainer {
       EnforceIssuesFilter.class,
       IgnoreIssuesFilter.class,
 
-      AnalyzisPublisher.class);
+      AnalysisPublisher.class);
   }
 
   private void addExtensions() {
index db5406afad4630811c13156ef30b683b27e7532c..15e78df740c16a0bbbb382e0e9d43c1bf594ee62 100644 (file)
@@ -20,8 +20,6 @@
 package org.sonar.batch.scan2;
 
 import com.google.common.collect.Lists;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 import org.sonar.api.batch.analyzer.AnalyzerContext;
 import org.sonar.api.batch.bootstrap.ProjectDefinition;
 import org.sonar.batch.issue.ignore.scanner.IssueExclusionsLoader;
@@ -34,8 +32,6 @@ import java.util.Collection;
 
 public final class ModuleScanExecutor {
 
-  public static final Logger LOGGER = LoggerFactory.getLogger(ModuleScanExecutor.class);
-
   private final AnalyzersExecutor analyzersExecutor;
   private final AnalyzerContext analyzerContext;
   private final FileSystemLogger fsLogger;
@@ -43,12 +39,12 @@ public final class ModuleScanExecutor {
   private final QProfileVerifier profileVerifier;
   private final IssueExclusionsLoader issueExclusionsLoader;
 
-  private AnalyzisPublisher analyzisPublisher;
+  private AnalysisPublisher analyzisPublisher;
 
   public ModuleScanExecutor(AnalyzersExecutor analyzersExecutor,
     AnalyzerContext analyzerContext,
     FileSystemLogger fsLogger, DefaultModuleFileSystem fs, QProfileVerifier profileVerifier,
-    IssueExclusionsLoader issueExclusionsLoader, AnalyzisPublisher analyzisPublisher) {
+    IssueExclusionsLoader issueExclusionsLoader, AnalysisPublisher analyzisPublisher) {
     this.analyzersExecutor = analyzersExecutor;
     this.analyzerContext = analyzerContext;
     this.fsLogger = fsLogger;
index 368dba8268fdf29465fc1dbeb4799a2114bd3cff..796408efea0aa677a3acc0a3650137101f2f08a6 100644 (file)
@@ -24,16 +24,15 @@ import org.sonar.api.BatchExtension;
 import org.sonar.api.batch.Sensor;
 import org.sonar.api.batch.SensorContext;
 import org.sonar.api.batch.analyzer.AnalyzerContext;
-import org.sonar.api.batch.fs.FileSystem;
 import org.sonar.api.platform.ComponentContainer;
 import org.sonar.api.resources.Project;
 import org.sonar.batch.scan2.AnalyzerOptimizer;
 
 import java.util.Collection;
 
+import static org.hamcrest.Matchers.hasItem;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertThat;
-import static org.hamcrest.Matchers.hasItem;
 import static org.mockito.Mockito.mock;
 
 public class BatchExtensionDictionnaryTest {
@@ -43,7 +42,7 @@ public class BatchExtensionDictionnaryTest {
     for (BatchExtension extension : extensions) {
       iocContainer.addSingleton(extension);
     }
-    return new BatchExtensionDictionnary(iocContainer, mock(FileSystem.class), mock(AnalyzerContext.class), mock(AnalyzerOptimizer.class));
+    return new BatchExtensionDictionnary(iocContainer, mock(AnalyzerContext.class), mock(AnalyzerOptimizer.class));
   }
 
   @Test
index 6a9fdb2403fbc85043ecc06f0e0f8e55ab9ecb9e..14a22cbb14c35861fe64bbb71db87a8926fd2b18 100644 (file)
@@ -55,7 +55,7 @@ public class XooMediumTest {
     .build();
 
   @Before
-  public void prepare() throws Throwable {
+  public void prepare() {
     tester.start();
   }