]> source.dussan.org Git - sonarqube.git/commitdiff
Fix some quality flaws
authorSimon Brandhof <simon.brandhof@sonarsource.com>
Sun, 22 Feb 2015 23:41:42 +0000 (00:41 +0100)
committerSimon Brandhof <simon.brandhof@sonarsource.com>
Sun, 22 Feb 2015 23:41:42 +0000 (00:41 +0100)
plugins/sonar-xoo-plugin/src/main/java/org/sonar/xoo/lang/SymbolReferencesSensor.java
server/sonar-server/src/main/java/org/sonar/server/issue/ws/SearchAction.java
server/sonar-server/src/main/java/org/sonar/server/source/index/SourceLineDoc.java
sonar-core/src/main/resources/org/sonar/l10n/core.properties
sonar-plugin-api/src/main/java/org/sonar/api/utils/ValidationMessages.java
sonar-plugin-api/src/main/java/org/sonar/api/utils/log/ListInterceptor.java
sonar-plugin-api/src/main/java/org/sonar/api/utils/log/LogInterceptor.java
sonar-plugin-api/src/test/java/org/sonar/api/utils/ValidationMessagesTest.java
sonar-plugin-api/src/test/java/org/sonar/api/utils/log/ConsoleFormatterTest.java

index 118fe82824317e8f9f0ed0c9ad0afdf719df89f9..e90feb4310f4cdb4e43be603743d9b913a20b3cf 100644 (file)
@@ -62,16 +62,17 @@ public class SymbolReferencesSensor implements Sensor {
         List<String> lines = FileUtils.readLines(symbolFile, context.fileSystem().encoding().name());
         int lineNumber = 0;
         Symbolizable symbolizable = perspectives.as(Symbolizable.class, inputFile);
-
-        Symbolizable.SymbolTableBuilder symbolTableBuilder = symbolizable.newSymbolTableBuilder();
-        for (String line : lines) {
-          lineNumber++;
-          if (StringUtils.isBlank(line) || line.startsWith("#")) {
-            continue;
+        if (symbolizable != null) {
+          Symbolizable.SymbolTableBuilder symbolTableBuilder = symbolizable.newSymbolTableBuilder();
+          for (String line : lines) {
+            lineNumber++;
+            if (StringUtils.isBlank(line) || line.startsWith("#")) {
+              continue;
+            }
+            processLine(symbolFile, lineNumber, symbolTableBuilder, line);
           }
-          processLine(symbolFile, lineNumber, symbolTableBuilder, line);
+          symbolizable.setSymbolTable(symbolTableBuilder.build());
         }
-        symbolizable.setSymbolTable(symbolTableBuilder.build());
       } catch (IOException e) {
         throw new IllegalStateException(e);
       }
index 52572d1529c8040d219de70058726e9a8c6d4335..c5e4b4770a0e3e325e7e17b553719e217c3e120f 100644 (file)
@@ -416,9 +416,10 @@ public class SearchAction implements BaseIssuesWsAction {
       json.beginObject();
       json.prop("property", facetName);
       json.name("values").beginArray();
-      if (results.getFacets().contains(facetName)) {
+      LinkedHashMap<String, Long> buckets = results.getFacets().get(facetName);
+      if (buckets != null) {
         Set<String> itemsFromFacets = Sets.newHashSet();
-        for (Map.Entry<String, Long> bucket : results.getFacets().get(facetName).entrySet()) {
+        for (Map.Entry<String, Long> bucket : buckets.entrySet()) {
           itemsFromFacets.add(bucket.getKey());
           json.beginObject();
           json.prop("val", bucket.getKey());
index 45fb14630c439386257b2b90282e45a1a5a00d81..fd8e475a4d17ae87eae9d857d0eb2beabc4064f1 100644 (file)
@@ -74,7 +74,7 @@ public class SourceLineDoc extends BaseDoc {
     return getNullableField(SourceLineIndexDefinition.FIELD_SCM_REVISION);
   }
 
-  public SourceLineDoc setScmRevision(String scmRevision) {
+  public SourceLineDoc setScmRevision(@Nullable String scmRevision) {
     setField(SourceLineIndexDefinition.FIELD_SCM_REVISION, scmRevision);
     return this;
   }
@@ -84,7 +84,7 @@ public class SourceLineDoc extends BaseDoc {
     return getNullableField(SourceLineIndexDefinition.FIELD_SCM_AUTHOR);
   }
 
-  public SourceLineDoc setScmAuthor(String scmAuthor) {
+  public SourceLineDoc setScmAuthor(@Nullable String scmAuthor) {
     setField(SourceLineIndexDefinition.FIELD_SCM_AUTHOR, scmAuthor);
     return this;
   }
@@ -104,7 +104,7 @@ public class SourceLineDoc extends BaseDoc {
     return getNullableField(SourceLineIndexDefinition.FIELD_HIGHLIGHTING);
   }
 
-  public SourceLineDoc setHighlighting(String s) {
+  public SourceLineDoc setHighlighting(@Nullable String s) {
     setField(SourceLineIndexDefinition.FIELD_HIGHLIGHTING, s);
     return this;
   }
@@ -113,7 +113,7 @@ public class SourceLineDoc extends BaseDoc {
     return getField(SourceLineIndexDefinition.FIELD_SOURCE);
   }
 
-  public SourceLineDoc setSource(String source) {
+  public SourceLineDoc setSource(@Nullable String source) {
     setField(SourceLineIndexDefinition.FIELD_SOURCE, source);
     return this;
   }
@@ -122,7 +122,7 @@ public class SourceLineDoc extends BaseDoc {
     return getFieldAsDate(BaseNormalizer.UPDATED_AT_FIELD);
   }
 
-  public SourceLineDoc setUpdateDate(Date updatedAt) {
+  public SourceLineDoc setUpdateDate(@Nullable Date updatedAt) {
     setField(BaseNormalizer.UPDATED_AT_FIELD, updatedAt);
     return this;
   }
index b52bc563e9fb1f0c0b7c510cce6b1f4e04257ca2..cd929d05a366cf9a51c6ca3ee3136dc22d8fb748 100644 (file)
@@ -476,7 +476,6 @@ project_roles.page.description2=Grant and revoke project-level permissions. Perm
 settings.page=General Settings
 settings.page.description=Edit global settings for this SonarQube instance.
 system_info.page=System Info
-system_info.page.description=This page provides system statistics, including plugin versions, environmental variables, and data on SonarQube itself.
 users.page=Users
 users.page.description=Create and administer individual users.
 user_groups.page=Groups
index e2455ef29e29c700b498e2f36dedf754d6e80f2e..967bcd67dbb10b72d1f8b14de6021641d66d9c8a 100644 (file)
@@ -21,7 +21,7 @@ package org.sonar.api.utils;
 
 import org.apache.commons.lang.builder.ToStringBuilder;
 import org.apache.commons.lang.builder.ToStringStyle;
-import org.sonar.api.utils.log.Logger;
+import org.slf4j.Logger;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -81,6 +81,25 @@ public final class ValidationMessages {
     return this;
   }
 
+  /**
+   * @since 5.1
+   */
+  public void log(org.sonar.api.utils.log.Logger logger) {
+    for (String error : getErrors()) {
+      logger.error(error);
+    }
+    for (String warning : getWarnings()) {
+      logger.warn(warning);
+    }
+    for (String info : getInfos()) {
+      logger.info(info);
+    }
+  }
+
+  /**
+   * @deprecated replaced by {@link #log(org.sonar.api.utils.log.Logger)} since deprecation of slf4j in 5.1
+   */
+  @Deprecated
   public void log(Logger logger) {
     for (String error : getErrors()) {
       logger.error(error);
index 58c86d8387a43a666d81a72250d65bd72fcc21f8..76e3c444829221f8aae1807cfaf7dfd13aabef46 100644 (file)
@@ -19,6 +19,8 @@
  */
 package org.sonar.api.utils.log;
 
+import javax.annotation.Nullable;
+
 import java.util.ArrayList;
 import java.util.List;
 
@@ -32,12 +34,12 @@ class ListInterceptor extends LogInterceptor {
   }
 
   @Override
-  public void log(String msg, Object arg) {
+  public void log(String msg, @Nullable Object arg) {
     logs.add(ConsoleFormatter.format(msg, arg));
   }
 
   @Override
-  public void log(String msg, Object arg1, Object arg2) {
+  public void log(String msg, @Nullable Object arg1, @Nullable Object arg2) {
     logs.add(ConsoleFormatter.format(msg, arg1, arg2));
   }
 
index 49701a01df3c35af924dac97e3b1bd454741a2b8..bccd7e9797a6f4b97a3d2dd8ecee87417d350b9c 100644 (file)
  */
 package org.sonar.api.utils.log;
 
+import javax.annotation.Nullable;
+
 abstract class LogInterceptor {
 
   abstract void log(String msg);
 
-  abstract void log(String msg, Object arg);
+  abstract void log(String msg, @Nullable Object arg);
 
-  abstract void log(String msg, Object arg1, Object arg2);
+  abstract void log(String msg, @Nullable Object arg1, @Nullable Object arg2);
 
   abstract void log(String msg, Object... args);
 
index 7a4e34683626bd4c44116374f8e134fc7937bc09..6217e6d4f1b1a1e973a6361ff34dd2764bd43499 100644 (file)
@@ -40,6 +40,12 @@ public class ValidationMessagesTest {
     verify(logger, never()).error(anyString());
     verify(logger, never()).warn(anyString());
     verify(logger, never()).info(anyString());
+
+    org.slf4j.Logger slf4j = mock(org.slf4j.Logger.class);
+    messages.log(slf4j);
+    verify(slf4j, never()).error(anyString());
+    verify(slf4j, never()).warn(anyString());
+    verify(slf4j, never()).info(anyString());
   }
 
   @Test
@@ -58,5 +64,11 @@ public class ValidationMessagesTest {
     verify(logger, times(1)).error("my error");
     verify(logger, never()).warn(anyString());
     verify(logger, never()).info(anyString());
+
+    org.slf4j.Logger slf4j = mock(org.slf4j.Logger.class);
+    messages.log(slf4j);
+    verify(slf4j, times(1)).error("my error");
+    verify(slf4j, never()).warn(anyString());
+    verify(slf4j, never()).info(anyString());
   }
 }
index 4e2280fe775c322290b262d14b4a03d444a2d139..834860d7a83ac52c390db172828c8e818a6d6a5f 100644 (file)
@@ -32,6 +32,7 @@ public class ConsoleFormatterTest {
     assertThat(ConsoleFormatter.format("arg: {}", "foo")).isEqualTo("arg: foo");
     assertThat(ConsoleFormatter.format("two args: {} and {}", "foo", 42)).isEqualTo("two args: foo and 42");
     assertThat(ConsoleFormatter.format("args: {}, {} and {}", true, 42, 2L)).isEqualTo("args: true, 42 and 2");
+    assertThat(ConsoleFormatter.format("args: {}, {} and {}", null, null, null)).isEqualTo("args: null, null and null");
   }
 
   @Test