]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-5077 Display ncloc of files with no language in size widget
authorJulien HENRY <julien.henry@sonarsource.com>
Mon, 2 Mar 2015 13:29:16 +0000 (14:29 +0100)
committerJulien HENRY <julien.henry@sonarsource.com>
Mon, 2 Mar 2015 13:41:44 +0000 (14:41 +0100)
plugins/sonar-core-plugin/src/main/resources/org/sonar/plugins/core/widgets/size.html.erb
sonar-batch/src/main/java/org/sonar/batch/language/LanguageDistributionDecorator.java
sonar-batch/src/test/java/org/sonar/batch/language/LanguageDistributionDecoratorTest.java
sonar-core/src/main/resources/org/sonar/l10n/core.properties

index 0a28f86c05c5ef730cd9bb9c65d37a9fb049e439..9e0797f8005e22eae14517c0aacc257665b13f72 100644 (file)
               %>
                 <tr>
                   <td>
-                    <% language = languages.find { |l| l.getKey()==language_key.to_s } -%>
-                    <%= language ? language.getName() : language_key -%>
+                    <% if  language_key.eql? '<null>' %>
+                      <%= message('other') -%>
+                    <% else %>
+                      <% language = languages.find { |l| l.getKey()==language_key.to_s } -%>
+                      <%= language ? language.getName() : language_key -%>
+                    <% end %>
                   </td>
                   <td class="thin right nowrap">
                     <%= ncloc.format_numeric_value(language_ncloc) %>
               });
             </script>
           <% else %>
-            <%
+            <% 
               language_key = ncloc_language_dist_hash.first[0]
-              language = languages.find { |l| l.getKey()==language_key.to_s }
-            -%>
-            <%= language ? language.getName() : language_key -%>
+              if  language_key.eql? '<null>' %>
+              <%= message('other') -%>
+            <% else %>
+              <% language = languages.find { |l| l.getKey()==language_key.to_s } -%>
+              <%= language ? language.getName() : language_key -%>
+            <% end %>
           <% end %>
         <% end %>
       <% else %>
index cc246cfc79303636ba64ad164fa55c7267ef16ee..ab9fb78b8fffc79b86f35c2cbddc378fe1570ba0 100644 (file)
@@ -35,6 +35,8 @@ import org.sonar.api.resources.ResourceUtils;
 
 public class LanguageDistributionDecorator implements Decorator {
 
+  private static final String UNKNOWN_LANGUAGE_KEY = "<null>";
+
   @Override
   public boolean shouldExecuteOnProject(Project project) {
     return true;
@@ -56,8 +58,8 @@ public class LanguageDistributionDecorator implements Decorator {
     if (ResourceUtils.isFile(resource)) {
       Language language = resource.getLanguage();
       Measure ncloc = context.getMeasure(CoreMetrics.NCLOC);
-      if (language != null && ncloc != null) {
-        nclocDistribution.add(language.getKey(), ncloc.getIntValue());
+      if (ncloc != null) {
+        nclocDistribution.add(language != null ? language.getKey() : UNKNOWN_LANGUAGE_KEY, ncloc.getIntValue());
       }
     } else {
       for (Measure measure : context.getChildrenMeasures(CoreMetrics.NCLOC_LANGUAGE_DISTRIBUTION)) {
index cb9d52bae9ef3555536721d8160f02eabec1960b..155b9cd4910f85a7ca0a09f4337e989af3b93069 100644 (file)
@@ -92,6 +92,21 @@ public class LanguageDistributionDecoratorTest {
     assertThat(result.getData()).isEqualTo("xoo=200");
   }
 
+  @Test
+  public void save_ncloc_language_distribution_on_file_without_language() {
+
+    when(resource.getScope()).thenReturn(Scopes.FILE);
+    when(context.getMeasure(CoreMetrics.NCLOC)).thenReturn(new Measure(CoreMetrics.NCLOC, 200.0));
+
+    decorator.decorate(resource, context);
+
+    verify(context).saveMeasure(measureCaptor.capture());
+
+    Measure result = measureCaptor.getValue();
+    assertThat(result.getMetric()).isEqualTo(CoreMetrics.NCLOC_LANGUAGE_DISTRIBUTION);
+    assertThat(result.getData()).isEqualTo("<null>=200");
+  }
+
   @Test
   public void save_ncloc_language_distribution_on_project() {
     when(resource.getScope()).thenReturn(Scopes.PROJECT);
index 9f6f5dbfdfbf1b91b300c6cbc0c4068a718f365e..daa7a8c7a4aadc99e000181f2261fea9ead4d87b 100644 (file)
@@ -104,6 +104,7 @@ open_verb=Open
 operations=Operations
 optional=Optional
 order=Order
+other=Other
 owner=Owner
 package=Package
 packages=Packages