]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-5256 Fix NPE and add warning when sonar.importSources=false
authorJulien HENRY <julien.henry@sonarsource.com>
Fri, 10 Oct 2014 09:17:24 +0000 (11:17 +0200)
committerJulien HENRY <julien.henry@sonarsource.com>
Tue, 14 Oct 2014 09:59:06 +0000 (11:59 +0200)
plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/issue/SourceHashHolder.java
sonar-batch/src/main/java/org/sonar/batch/scan/filesystem/ComponentIndexer.java
sonar-plugin-api/src/main/java/org/sonar/api/batch/SonarIndex.java

index 8caec63784f700ba9939fcb64b5124e207127d03..c10586fda0583edb946f7cf3d71bcffab9601f58 100644 (file)
@@ -19,8 +19,7 @@
  */
 package org.sonar.plugins.core.issue;
 
-import java.util.Collection;
-
+import org.apache.commons.lang.StringUtils;
 import org.sonar.api.batch.SonarIndex;
 import org.sonar.api.resources.Resource;
 import org.sonar.batch.scan.LastSnapshots;
@@ -28,7 +27,7 @@ import org.sonar.plugins.core.issue.tracking.HashedSequence;
 import org.sonar.plugins.core.issue.tracking.StringText;
 import org.sonar.plugins.core.issue.tracking.StringTextComparator;
 
-
+import java.util.Collection;
 
 public class SourceHashHolder {
 
@@ -66,15 +65,15 @@ public class SourceHashHolder {
   }
 
   public String getSource() {
-    if (! sourceInitialized) {
-      source = index.getSource(resource);
+    if (!sourceInitialized) {
+      source = StringUtils.defaultString(index.getSource(resource), "");
       sourceInitialized = true;
     }
     return source;
   }
 
   public String getReferenceSource() {
-    if (! referenceSourceInitialized) {
+    if (!referenceSourceInitialized) {
       if (resource != null) {
         referenceSource = lastSnapshots.getSource(resource);
       }
@@ -88,7 +87,7 @@ public class SourceHashHolder {
   }
 
   private void initHashesIfNull(Object required) {
-    if(required == null) {
+    if (required == null) {
       initHashes();
     }
   }
@@ -97,4 +96,3 @@ public class SourceHashHolder {
     return getHashedSource().getLinesForHash(getHashedReference().getHash(originLine));
   }
 }
-
index 1e185487a05f1f9dd0549746138650f239f1afd7..65a7585555e09fd73f273d60917f05a525f59631 100644 (file)
@@ -22,6 +22,8 @@ package org.sonar.batch.scan.filesystem;
 import com.google.common.annotations.VisibleForTesting;
 import com.google.common.base.CharMatcher;
 import com.google.common.io.Files;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.sonar.api.BatchComponent;
 import org.sonar.api.CoreProperties;
 import org.sonar.api.batch.SonarIndex;
@@ -44,6 +46,8 @@ import org.sonar.batch.util.DeprecatedKeyUtils;
  */
 public class ComponentIndexer implements BatchComponent {
 
+  private static final Logger LOG = LoggerFactory.getLogger(ComponentIndexer.class);
+
   private final Languages languages;
   private final Settings settings;
   private final SonarIndex sonarIndex;
@@ -62,6 +66,9 @@ public class ComponentIndexer implements BatchComponent {
     migration.migrateIfNeeded(module, fs);
 
     boolean shouldImportSource = settings.getBoolean(CoreProperties.CORE_IMPORT_SOURCES_PROPERTY);
+    if (!shouldImportSource) {
+      LOG.warn("Not importing source will prevent issues to be properly tracked between consecutive analyses");
+    }
     for (InputFile inputFile : fs.inputFiles(fs.predicates().all())) {
       String languageKey = inputFile.language();
       boolean unitTest = InputFile.Type.TEST == inputFile.type();
index f52fcb98f0a859a39564f78739f40ed62cd5d34a..cbe29014b2f5fd733d657162bdb78ef8f07b2a1c 100644 (file)
@@ -100,9 +100,11 @@ public abstract class SonarIndex implements DirectedGraphAccessor<Resource, Depe
   public abstract void setSource(Resource reference, String source);
 
   /**
-   * @return source code associated with a specified resource, <code>null</code> if not available
+   * @return source code associated with a specified resource, <code>null</code> if not available 
+   * (for example when sonar.importSources=false)
    * @since 2.9
    */
+  @CheckForNull
   public abstract String getSource(Resource resource);
 
   public abstract Project getProject();