%>
<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 %>
public class LanguageDistributionDecorator implements Decorator {
+ private static final String UNKNOWN_LANGUAGE_KEY = "<null>";
+
@Override
public boolean shouldExecuteOnProject(Project project) {
return true;
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)) {
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);
operations=Operations
optional=Optional
order=Order
+other=Other
owner=Owner
package=Package
packages=Packages