extensions.add(CodeCoverageWidget.class);
extensions.add(CommentsDuplicationsWidget.class);
extensions.add(DescriptionWidget.class);
- extensions.add(DefaultExtendedAnalysisWidget.class);
+ extensions.add(ComplexityWidget.class);
extensions.add(RulesWidget.class);
- extensions.add(DefaultStaticAnalysisWidget.class);
+ extensions.add(SizeWidget.class);
extensions.add(EventsWidget.class);
extensions.add(CustomMeasuresWidget.class);
--- /dev/null
+/*\r
+ * Sonar, open source software quality management tool.\r
+ * Copyright (C) 2009 SonarSource SA\r
+ * mailto:contact AT sonarsource DOT com\r
+ *\r
+ * Sonar is free software; you can redistribute it and/or\r
+ * modify it under the terms of the GNU Lesser General Public\r
+ * License as published by the Free Software Foundation; either\r
+ * version 3 of the License, or (at your option) any later version.\r
+ *\r
+ * Sonar is distributed in the hope that it will be useful,\r
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\r
+ * Lesser General Public License for more details.\r
+ *\r
+ * You should have received a copy of the GNU Lesser General Public\r
+ * License along with Sonar; if not, write to the Free Software\r
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02\r
+ */\r
+package org.sonar.plugins.core.widgets;\r
+\r
+import org.sonar.api.web.AbstractRubyTemplate;\r
+import org.sonar.api.web.Description;\r
+import org.sonar.api.web.RubyRailsWidget;\r
+\r
+@Description("Reports on complexity, average complexity and complexity distribution.")\r
+public class ComplexityWidget extends AbstractRubyTemplate implements RubyRailsWidget {\r
+ public String getId() {\r
+ return "complexity";\r
+ }\r
+\r
+ public String getTitle() {\r
+ return "Complexity";\r
+ }\r
+\r
+ @Override\r
+ protected String getTemplatePath() {\r
+ return "/org/sonar/plugins/core/widgets/complexity.html.erb";\r
+ }\r
+}
\ No newline at end of file
+++ /dev/null
-/*\r
- * Sonar, open source software quality management tool.\r
- * Copyright (C) 2009 SonarSource SA\r
- * mailto:contact AT sonarsource DOT com\r
- *\r
- * Sonar is free software; you can redistribute it and/or\r
- * modify it under the terms of the GNU Lesser General Public\r
- * License as published by the Free Software Foundation; either\r
- * version 3 of the License, or (at your option) any later version.\r
- *\r
- * Sonar is distributed in the hope that it will be useful,\r
- * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\r
- * Lesser General Public License for more details.\r
- *\r
- * You should have received a copy of the GNU Lesser General Public\r
- * License along with Sonar; if not, write to the Free Software\r
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02\r
- */\r
-package org.sonar.plugins.core.widgets;\r
-\r
-import org.sonar.api.web.AbstractRubyTemplate;\r
-import org.sonar.api.web.Description;\r
-import org.sonar.api.web.RubyRailsWidget;\r
-\r
-@Description("Reports on complexity, average complexity and complexity distribution.")\r
-public class DefaultExtendedAnalysisWidget extends AbstractRubyTemplate implements RubyRailsWidget {\r
- public String getId() {\r
- return "extended_analysis";\r
- }\r
-\r
- public String getTitle() {\r
- return "Complexity";\r
- }\r
-\r
- @Override\r
- protected String getTemplatePath() {\r
- return "/org/sonar/plugins/core/widgets/_extended_analysis.html.erb";\r
- }\r
-}
\ No newline at end of file
+++ /dev/null
-/*\r
- * Sonar, open source software quality management tool.\r
- * Copyright (C) 2009 SonarSource SA\r
- * mailto:contact AT sonarsource DOT com\r
- *\r
- * Sonar is free software; you can redistribute it and/or\r
- * modify it under the terms of the GNU Lesser General Public\r
- * License as published by the Free Software Foundation; either\r
- * version 3 of the License, or (at your option) any later version.\r
- *\r
- * Sonar is distributed in the hope that it will be useful,\r
- * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\r
- * Lesser General Public License for more details.\r
- *\r
- * You should have received a copy of the GNU Lesser General Public\r
- * License along with Sonar; if not, write to the Free Software\r
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02\r
- */\r
-package org.sonar.plugins.core.widgets;\r
-\r
-import org.sonar.api.web.AbstractRubyTemplate;\r
-import org.sonar.api.web.Description;\r
-import org.sonar.api.web.RubyRailsWidget;\r
-\r
-@Description("Reports general metrics on the size of the project.")\r
-public class DefaultStaticAnalysisWidget extends AbstractRubyTemplate implements RubyRailsWidget {\r
- public String getId() {\r
- return "static_analysis";\r
- }\r
-\r
- public String getTitle() {\r
- return "Size metrics";\r
- }\r
-\r
- @Override\r
- protected String getTemplatePath() {\r
- return "/org/sonar/plugins/core/widgets/_static_analysis.html.erb";\r
- }\r
-}\r
--- /dev/null
+/*\r
+ * Sonar, open source software quality management tool.\r
+ * Copyright (C) 2009 SonarSource SA\r
+ * mailto:contact AT sonarsource DOT com\r
+ *\r
+ * Sonar is free software; you can redistribute it and/or\r
+ * modify it under the terms of the GNU Lesser General Public\r
+ * License as published by the Free Software Foundation; either\r
+ * version 3 of the License, or (at your option) any later version.\r
+ *\r
+ * Sonar is distributed in the hope that it will be useful,\r
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\r
+ * Lesser General Public License for more details.\r
+ *\r
+ * You should have received a copy of the GNU Lesser General Public\r
+ * License along with Sonar; if not, write to the Free Software\r
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02\r
+ */\r
+package org.sonar.plugins.core.widgets;\r
+\r
+import org.sonar.api.web.AbstractRubyTemplate;\r
+import org.sonar.api.web.Description;\r
+import org.sonar.api.web.RubyRailsWidget;\r
+\r
+@Description("Reports general metrics on the size of the project.")\r
+public class SizeWidget extends AbstractRubyTemplate implements RubyRailsWidget {\r
+ public String getId() {\r
+ return "size";\r
+ }\r
+\r
+ public String getTitle() {\r
+ return "Size metrics";\r
+ }\r
+\r
+ @Override\r
+ protected String getTemplatePath() {\r
+ return "/org/sonar/plugins/core/widgets/size.html.erb";\r
+ }\r
+}\r
+++ /dev/null
-
-<%
- file_complexity=measure('file_complexity')
- function_complexity=measure('function_complexity')
- class_complexity=measure('class_complexity')
- paragraph_complexity=measure('paragraph_complexity')
-
- if file_complexity || function_complexity || class_complexity || paragraph_complexity
-complexity=measure('complexity')
-%>
-<div class="dashbox" >
- <h3>Complexity</h3>
- <% if function_complexity %>
- <p>
- <span class="big"><%= format_measure(function_complexity, :suffix => '', :url => url_for_drilldown(function_complexity)) -%> <%= tendency_icon(function_complexity, false) -%></span>/ method
- </p>
- <% end %>
- <% if paragraph_complexity %>
- <p>
- <span class="big"><%= format_measure(paragraph_complexity, :suffix => '', :url => url_for_drilldown(paragraph_complexity)) -%> <%= tendency_icon(paragraph_complexity, false) -%></span>/ paragraph
- </p>
- <% end %>
- <% if class_complexity %>
- <p>
- <span class="big"><%= format_measure(class_complexity, :suffix => '', :url => url_for_drilldown(class_complexity)) -%> <%= tendency_icon(class_complexity, false) -%></span>/ class
- </p>
- <% end %>
- <% if file_complexity %>
- <p>
- <span class="big"><%= format_measure(file_complexity, :suffix => '', :url => url_for_drilldown(file_complexity)) -%> <%= tendency_icon(file_complexity, false) -%></span>/ file
- </p>
- <% end %>
- <% if complexity %>
- <p>
- Total: <%= format_measure(complexity, :url => url_for_drilldown(complexity)) -%> <%= tendency_icon(complexity) -%>
- </p>
- <% end %>
-</div>
-
-
-<%
- function_distribution=measure('function_complexity_distribution')
- paragraph_distribution=measure('paragraph_complexity_distribution')
- class_distribution=measure('class_complexity_distribution')
- file_distribution=measure('file_complexity_distribution')
- distributions=[function_distribution,paragraph_distribution,class_distribution,file_distribution].compact
- selected_distribution=nil
- if distributions.size>0
- selected_distribution=distributions.first
- end
- if selected_distribution
-%>
-<div class="dashbox" id="cmp_charts" style="float:right">
- <script type='text/javascript'>
- //<![CDATA[
- function selectComplexity(metric) {
- $$('#cmp_charts .chart').each(function(chart) {
- chart.hide();
- });
- $('chart_' + metric).show();
- }
- </script>
- <style>
- #cmp_charts form {
- font-size: 93%;padding-left: 30px;
- }
-#cmp_charts form label {
- padding-right: 5px;
- }
- </style>
- <% distributions.each do |distribution_measure| %>
- <%= render :partial => 'project/widgets/complexity_chart', :locals => { :metric => distribution_measure.metric.key, :title => distribution_measure.metric.description, :visible => (selected_distribution==distribution_measure) } %>
- <% end %>
-
- <form>
- <%
- count_dist=0
- if function_distribution
- count_dist+=1
- %>
-<input type="radio" name="cmp_dist" value="function_complexity_distribution" id="cmp_dist_function_complexity_distribution" onClick="selectComplexity('function_complexity_distribution');" <%= 'checked' if function_distribution==selected_distribution -%>></input> <label for="cmp_dist_function_complexity_distribution">Methods</label>
-<%
-end
-if paragraph_distribution
- count_dist+=1
-%>
-<input type="radio" name="cmp_dist" value="paragraph_complexity_distribution" id="cmp_dist_paragraph_complexity_distribution" onClick="selectComplexity('paragraph_complexity_distribution');" <%= 'checked' if paragraph_distribution==selected_distribution -%>></input> <label for="cmp_dist_paragraph_complexity_distribution">Paragraphs</label><%= '<br/>' if count_dist==2 %>
-<%
-end
-if class_distribution
- count_dist+=1
-%>
-<input type="radio" name="cmp_dist" value="class_complexity_distribution" id="cmp_dist_class_complexity_distribution" onClick="selectComplexity('class_complexity_distribution');" <%= 'checked' if class_distribution==selected_distribution -%>></input> <label for="cmp_dist_class_complexity_distribution">Classes</label><%= '<br/>' if count_dist==2 %>
-<%
-end
-if file_distribution
- count_dist+=1
-%>
-<input type="radio" name="cmp_dist" value="file_complexity_distribution" id="cmp_dist_file_complexity_distribution" onClick="selectComplexity('file_complexity_distribution');" <%= 'checked' if file_distribution==selected_distribution -%>></input> <label for="cmp_dist_file_complexity_distribution">Files</label>
-<% end %>
-
- </form>
-
-</div>
-<% end %>
-
-<div class="clear"></div>
-<% end %>
-
+++ /dev/null
-<%
-if measure('lines') || measure('ncloc')
- files=measure('files')
- statements=measure('statements')
-%>
-<table width="100%">
- <tr>
- <td valign="top" width="48%" nowrap>
- <div class="dashbox">
- <h3>Lines of code</h3>
- <% if measure('ncloc') %>
- <p><span class="big">
- <%= format_measure('ncloc', :suffix => '', :url => url_for_drilldown('ncloc')) -%> <%= tendency_icon('ncloc', false) -%></span></p>
- <%
- generated_ncloc=measure('generated_ncloc')
- if generated_ncloc && generated_ncloc.value>0
- %>
- <p>+<%= format_measure(generated_ncloc, :suffix => ' generated', :url => url_for_drilldown(generated_ncloc)) -%> <%= tendency_icon(generated_ncloc) -%></p>
- <% end %>
- <p><%= format_measure('lines', :suffix => ' lines', :url => url_for_drilldown('lines')) -%> <%= tendency_icon('lines') -%></p>
- <% else%>
- <p><span class="big"><%= format_measure('lines', :suffix => '', :url => url_for_drilldown('lines')) -%> <%= tendency_icon('lines', false) -%></span></p>
- <% end %>
- <%
- generated_lines=measure('generated_lines')
- if generated_lines && generated_lines.value>0
- %>
- <p>incl. <%= format_measure(generated_lines, :suffix => ' generated', :url => url_for_drilldown(generated_lines)) -%> <%= tendency_icon(generated_lines) -%></p>
- <% end %>
- <% if statements %>
- <p>
- <%= format_measure(statements, :suffix => ' statements', :url => url_for_drilldown(statements)) -%> <%= tendency_icon(statements) -%>
- </p>
- <% end %>
- <% if files && measure('classes') %>
- <p><%= format_measure(files, :suffix => ' files', :url => url_for_drilldown(files)) -%> <%= tendency_icon(files) -%></p>
- <% end %>
- </div>
- </td>
- <td width="10"> </td>
- <td valign="top">
- <div class="dashbox">
- <% if measure('classes') %>
- <h3>Classes</h3>
- <p><span class="big"><%= format_measure('classes', :url => url_for_drilldown('classes')) -%> <%= tendency_icon('classes') -%></span></p>
- <p><%= format_measure('packages', :suffix => ' packages', :url => url_for_drilldown('packages')) -%> <%= tendency_icon('packages') -%></p>
- <% else %>
- <h3>Files</h3>
- <p><span class="big"><%= format_measure('files', :url => url_for_drilldown('files')) -%> <%= tendency_icon('files') -%></span></p>
- <p><%= format_measure('directories', :suffix => ' directories', :url => url_for_drilldown('directories')) -%> <%= tendency_icon('directories') -%></p>
- <% end %>
- <p><%= format_measure('functions', :suffix => ' methods', :url => url_for_drilldown('functions')) -%> <%= tendency_icon('functions') -%></p>
- <% if (measure('accessors')) %>
- <p><%= format_measure('accessors', :prefix => '+', :suffix => ' accessors', :url => url_for_drilldown('accessors')) -%> <%= tendency_icon('accessors') -%></p>
- <% end %>
- <% if measure('paragraphs') %>
- <p><%= format_measure('paragraphs', :suffix => ' paragraphs', :url => url_for_drilldown('paragraphs')) -%> <%= tendency_icon('paragraphs') -%></p>
- <% end %>
- </div>
- </td>
- </tr>
-</table>
-<% end %>
\ No newline at end of file
code_coverage_measure=measure(Metric::COVERAGE)
tests_measure=measure(Metric::TESTS)
if code_coverage_measure || tests_measure %>
-<div class="yui-g">
- <div class="yui-u first">
-<div class="dashbox">
- <p class="title">Code coverage</p>
- <p><span class="big"><%= format_measure(code_coverage_measure, :suffix => '', :url => url_for_drilldown(Metric::COVERAGE), :default => '-') %> <%= tendency_icon(code_coverage_measure, false) %></span></p>
- <% line_coverage=measure(Metric::LINE_COVERAGE)
- if line_coverage %>
- <p><%= format_measure(line_coverage, :suffix => ' line coverage', :url => url_for_drilldown(Metric::UNCOVERED_LINES, :highlight => Metric::LINE_COVERAGE)) %> <%= tendency_icon(line_coverage) %></p>
- <% end %>
- <% branch_coverage=measure(Metric::BRANCH_COVERAGE)
- if branch_coverage %>
- <p><%= format_measure(branch_coverage, :suffix => ' branch coverage', :url => url_for_drilldown(Metric::UNCOVERED_CONDITIONS, :highlight => Metric::BRANCH_COVERAGE)) %> <%= tendency_icon(branch_coverage) %></p>
- <% end %>
- <p><%= format_measure(tests_measure, :suffix => ' tests', :url => url_for_drilldown(Metric::TESTS)) %> <%= tendency_icon(tests_measure) %></p>
- <% skipped_measure=measure(Metric::SKIPPED_TESTS)
- if skipped_measure && skipped_measure.value>0
- %>
- <p>+<%= format_measure(skipped_measure, :suffix => ' skipped', :url => url_for_drilldown(Metric::SKIPPED_TESTS)) %> <%= tendency_icon(skipped_measure) %></p>
- <% end %>
- <p><%= format_measure(Metric::TEST_EXECUTION_TIME, :suffix => '', :url => url_for_drilldown(Metric::TEST_EXECUTION_TIME)) %> <%= tendency_icon(measure(Metric::TEST_EXECUTION_TIME)) %></p>
-</div>
-</div>
-<div class="yui-u">
+<table width="100%">
+ <tr>
+ <td valign="top" width="50%" nowrap>
+ <div class="dashbox">
+ <p class="title">Code coverage</p>
+ <p><span class="big"><%= format_measure(code_coverage_measure, :suffix => '', :url => url_for_drilldown(Metric::COVERAGE), :default => '-') %> <%= tendency_icon(code_coverage_measure, false) %></span></p>
+ <% line_coverage=measure(Metric::LINE_COVERAGE)
+ if line_coverage %>
+ <p><%= format_measure(line_coverage, :suffix => ' line coverage', :url => url_for_drilldown(Metric::UNCOVERED_LINES, :highlight => Metric::LINE_COVERAGE)) %> <%= tendency_icon(line_coverage) %></p>
+ <% end %>
+ <% branch_coverage=measure(Metric::BRANCH_COVERAGE)
+ if branch_coverage %>
+ <p><%= format_measure(branch_coverage, :suffix => ' branch coverage', :url => url_for_drilldown(Metric::UNCOVERED_CONDITIONS, :highlight => Metric::BRANCH_COVERAGE)) %> <%= tendency_icon(branch_coverage) %></p>
+ <% end %>
+ <p><%= format_measure(tests_measure, :suffix => ' tests', :url => url_for_drilldown(Metric::TESTS)) %> <%= tendency_icon(tests_measure) %></p>
+ <% skipped_measure=measure(Metric::SKIPPED_TESTS)
+ if skipped_measure && skipped_measure.value>0
+ %>
+ <p>+<%= format_measure(skipped_measure, :suffix => ' skipped', :url => url_for_drilldown(Metric::SKIPPED_TESTS)) %> <%= tendency_icon(skipped_measure) %></p>
+ <% end %>
+ <p><%= format_measure(Metric::TEST_EXECUTION_TIME, :suffix => '', :url => url_for_drilldown(Metric::TEST_EXECUTION_TIME)) %> <%= tendency_icon(measure(Metric::TEST_EXECUTION_TIME)) %></p>
+ </div>
+ </td>
+ <td valign="top" width="50%" nowrap>
<%
success_percentage=measure(Metric::TEST_SUCCESS_DENSITY)
if success_percentage
</p>
</div>
<% end %>
-</div>
-</div>
+</td>
+</tr>
+</table>
<% end %>
<% if measure(Metric::LINES) || measure(Metric::NCLOC) %>
<table width="100%">
<tr>
- <td valign="top" width="48%" nowrap>
+ <td valign="top" width="50%" nowrap>
<% if (measure(Metric::COMMENT_LINES)) %>
<div class="dashbox">
<h3>Comments</h3>
</div>
<% end %>
</td>
- <td width="10"> </td>
- <td valign="top">
+ <td valign="top" width="50%" nowrap>
<% if (measure(Metric::DUPLICATED_LINES_DENSITY)) %>
<div class="dashbox">
<h3>Duplications</h3>
--- /dev/null
+
+<%
+ file_complexity=measure('file_complexity')
+ function_complexity=measure('function_complexity')
+ class_complexity=measure('class_complexity')
+ paragraph_complexity=measure('paragraph_complexity')
+
+ if file_complexity || function_complexity || class_complexity || paragraph_complexity
+complexity=measure('complexity')
+%>
+<table class="width100">
+ <tbody>
+ <tr>
+ <td valign="top" width="50%">
+ <div class="dashbox" >
+ <h3>Complexity</h3>
+ <% if function_complexity %>
+ <p>
+ <span class="big"><%= format_measure(function_complexity, :suffix => '', :url => url_for_drilldown(function_complexity)) -%> <%= tendency_icon(function_complexity, false) -%></span>/ method
+ </p>
+ <% end %>
+ <% if paragraph_complexity %>
+ <p>
+ <span class="big"><%= format_measure(paragraph_complexity, :suffix => '', :url => url_for_drilldown(paragraph_complexity)) -%> <%= tendency_icon(paragraph_complexity, false) -%></span>/ paragraph
+ </p>
+ <% end %>
+ <% if class_complexity %>
+ <p>
+ <span class="big"><%= format_measure(class_complexity, :suffix => '', :url => url_for_drilldown(class_complexity)) -%> <%= tendency_icon(class_complexity, false) -%></span>/ class
+ </p>
+ <% end %>
+ <% if file_complexity %>
+ <p>
+ <span class="big"><%= format_measure(file_complexity, :suffix => '', :url => url_for_drilldown(file_complexity)) -%> <%= tendency_icon(file_complexity, false) -%></span>/ file
+ </p>
+ <% end %>
+ <% if complexity %>
+ <p>
+ Total: <%= format_measure(complexity, :url => url_for_drilldown(complexity)) -%> <%= tendency_icon(complexity) -%>
+ </p>
+ <% end %>
+ </div>
+ </td>
+ <td valign="top" width="50%" nowrap>
+<%
+ function_distribution=measure('function_complexity_distribution')
+ paragraph_distribution=measure('paragraph_complexity_distribution')
+ class_distribution=measure('class_complexity_distribution')
+ file_distribution=measure('file_complexity_distribution')
+ distributions=[function_distribution,paragraph_distribution,class_distribution,file_distribution].compact
+ selected_distribution=nil
+ if distributions.size>0
+ selected_distribution=distributions.first
+ end
+ if selected_distribution
+%>
+<div class="dashbox" id="cmp_charts">
+ <script type='text/javascript'>
+ //<![CDATA[
+ function selectComplexity(metric) {
+ $$('#cmp_charts .chart').each(function(chart) {
+ chart.hide();
+ });
+ $('chart_' + metric).show();
+ }
+ </script>
+ <style>
+ #cmp_charts form {
+ font-size: 93%;padding-left: 30px;
+ }
+#cmp_charts form label {
+ padding-right: 5px;
+ }
+ </style>
+ <% distributions.each do |distribution_measure| %>
+ <%= render :partial => 'project/widgets/complexity_chart', :locals => { :metric => distribution_measure.metric.key, :title => distribution_measure.metric.description, :visible => (selected_distribution==distribution_measure) } %>
+ <% end %>
+
+ <form>
+ <%
+ count_dist=0
+ if function_distribution
+ count_dist+=1
+ %>
+<input type="radio" name="cmp_dist" value="function_complexity_distribution" id="cmp_dist_function_complexity_distribution" onClick="selectComplexity('function_complexity_distribution');" <%= 'checked' if function_distribution==selected_distribution -%>></input> <label for="cmp_dist_function_complexity_distribution">Methods</label>
+<%
+end
+if paragraph_distribution
+ count_dist+=1
+%>
+<input type="radio" name="cmp_dist" value="paragraph_complexity_distribution" id="cmp_dist_paragraph_complexity_distribution" onClick="selectComplexity('paragraph_complexity_distribution');" <%= 'checked' if paragraph_distribution==selected_distribution -%>></input> <label for="cmp_dist_paragraph_complexity_distribution">Paragraphs</label><%= '<br/>' if count_dist==2 %>
+<%
+end
+if class_distribution
+ count_dist+=1
+%>
+<input type="radio" name="cmp_dist" value="class_complexity_distribution" id="cmp_dist_class_complexity_distribution" onClick="selectComplexity('class_complexity_distribution');" <%= 'checked' if class_distribution==selected_distribution -%>></input> <label for="cmp_dist_class_complexity_distribution">Classes</label><%= '<br/>' if count_dist==2 %>
+<%
+end
+if file_distribution
+ count_dist+=1
+%>
+<input type="radio" name="cmp_dist" value="file_complexity_distribution" id="cmp_dist_file_complexity_distribution" onClick="selectComplexity('file_complexity_distribution');" <%= 'checked' if file_distribution==selected_distribution -%>></input> <label for="cmp_dist_file_complexity_distribution">Files</label>
+<% end %>
+
+ </form>
+
+</div>
+<% end %>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+<div class="clear"></div>
+<% end %>
+
<% if measure(Metric::LINES) %>
-<div id="widget_rules">
<table width="100%">
<tr>
- <td valign="top">
+ <td valign="top" width="50%">
<div class="dashbox">
<h3>Rules compliance</h3>
<div class="big">
</div>
</div>
</td>
- <td width="10"> </td>
- <td valign="top">
+ <td valign="top" width="50%" nowrap>
<div class="dashbox">
<h3>Violations</h3>
<div class="big">
</td>
</tr>
</table>
-
-</div>
<% end %>
\ No newline at end of file
--- /dev/null
+<%
+if measure('lines') || measure('ncloc')
+ files=measure('files')
+ statements=measure('statements')
+%>
+<table width="100%">
+ <tr>
+ <td valign="top" width="48%" nowrap>
+ <div class="dashbox">
+ <h3>Lines of code</h3>
+ <% if measure('ncloc') %>
+ <p><span class="big">
+ <%= format_measure('ncloc', :suffix => '', :url => url_for_drilldown('ncloc')) -%> <%= tendency_icon('ncloc', false) -%></span></p>
+ <%
+ generated_ncloc=measure('generated_ncloc')
+ if generated_ncloc && generated_ncloc.value>0
+ %>
+ <p>+<%= format_measure(generated_ncloc, :suffix => ' generated', :url => url_for_drilldown(generated_ncloc)) -%> <%= tendency_icon(generated_ncloc) -%></p>
+ <% end %>
+ <p><%= format_measure('lines', :suffix => ' lines', :url => url_for_drilldown('lines')) -%> <%= tendency_icon('lines') -%></p>
+ <% else%>
+ <p><span class="big"><%= format_measure('lines', :suffix => '', :url => url_for_drilldown('lines')) -%> <%= tendency_icon('lines', false) -%></span></p>
+ <% end %>
+ <%
+ generated_lines=measure('generated_lines')
+ if generated_lines && generated_lines.value>0
+ %>
+ <p>incl. <%= format_measure(generated_lines, :suffix => ' generated', :url => url_for_drilldown(generated_lines)) -%> <%= tendency_icon(generated_lines) -%></p>
+ <% end %>
+ <% if statements %>
+ <p>
+ <%= format_measure(statements, :suffix => ' statements', :url => url_for_drilldown(statements)) -%> <%= tendency_icon(statements) -%>
+ </p>
+ <% end %>
+ <% if files && measure('classes') %>
+ <p><%= format_measure(files, :suffix => ' files', :url => url_for_drilldown(files)) -%> <%= tendency_icon(files) -%></p>
+ <% end %>
+ </div>
+ </td>
+ <td width="10"> </td>
+ <td valign="top">
+ <div class="dashbox">
+ <% if measure('classes') %>
+ <h3>Classes</h3>
+ <p><span class="big"><%= format_measure('classes', :url => url_for_drilldown('classes')) -%> <%= tendency_icon('classes') -%></span></p>
+ <p><%= format_measure('packages', :suffix => ' packages', :url => url_for_drilldown('packages')) -%> <%= tendency_icon('packages') -%></p>
+ <% else %>
+ <h3>Files</h3>
+ <p><span class="big"><%= format_measure('files', :url => url_for_drilldown('files')) -%> <%= tendency_icon('files') -%></span></p>
+ <p><%= format_measure('directories', :suffix => ' directories', :url => url_for_drilldown('directories')) -%> <%= tendency_icon('directories') -%></p>
+ <% end %>
+ <p><%= format_measure('functions', :suffix => ' methods', :url => url_for_drilldown('functions')) -%> <%= tendency_icon('functions') -%></p>
+ <% if (measure('accessors')) %>
+ <p><%= format_measure('accessors', :prefix => '+', :suffix => ' accessors', :url => url_for_drilldown('accessors')) -%> <%= tendency_icon('accessors') -%></p>
+ <% end %>
+ <% if measure('paragraphs') %>
+ <p><%= format_measure('paragraphs', :suffix => ' paragraphs', :url => url_for_drilldown('paragraphs')) -%> <%= tendency_icon('paragraphs') -%></p>
+ <% end %>
+ </div>
+ </td>
+ </tr>
+</table>
+<% end %>
\ No newline at end of file
@Description("Reports on files dependency cycles and tangle index.")
public final class FileDesignWidget extends AbstractRubyTemplate implements RubyRailsWidget {
public String getId() {
- return "file-design";
+ return "file_design";
}
public String getTitle() {
@Description("Reports on package dependency cycles and tangle index.")
public final class PackageDesignWidget extends AbstractRubyTemplate implements RubyRailsWidget {
public String getId() {
- return "package-design";
+ return "package_design";
}
public String getTitle() {
<table width="100%">
<tbody>
<tr>
- <td valign="top">
+ <td valign="top" width="50%">
<div class="dashbox">
<p class="title">File tangle index</p>
<p><span class="big"><%= format_measure(file_tangle_index, :suffix => '', :default => '-', :url => url_for_drilldown('file_tangle_index')) %> <%= tendency_icon(file_tangle_index, false) %></span></p>
<% end %>
</div>
</td>
- <td valign="top">
+ <td valign="top" width="50%">
<% if file_feedback_edges %>
<div class="dashbox">
<p class="title">Suspect file dependencies</p>
package_feedback_edges=measure('package_feedback_edges')
package_tangles=measure('package_tangles')
%>
- <td valign="top">
+ <td valign="top" width="50%">
<div class="dashbox">
<p class="title">Package tangle index</p>
<p><span class="big"><%= format_measure(package_tangle_index, :suffix => '', :default => '-', :url => url_for_drilldown('package_tangle_index')) %> <%= tendency_icon(package_tangle_index, false) %></span></p>
<% end %>
</div>
</td>
- <td valign="top">
+ <td valign="top" width="50%">
<% if package_feedback_edges || package_tangles %>
<div class="dashbox">
<p class="title">Dependencies to cut</p>
def self.create_dashboard
dashboard=::Dashboard.new(:name => 'Dashboard', :shared => true, :description => 'Default dashboard', :column_layout => Dashboard::DEFAULT_LAYOUT)
- dashboard.widgets.build(:widget_key => 'static_analysis', :name => 'Static analysis', :column_index => 1, :row_index => 1, :configured => true)
+ dashboard.widgets.build(:widget_key => 'size', :name => 'Size metrics', :column_index => 1, :row_index => 1, :configured => true)
dashboard.widgets.build(:widget_key => 'comments_duplications', :name => 'Comments duplications', :column_index => 1, :row_index => 2, :configured => true)
- dashboard.widgets.build(:widget_key => 'extended_analysis', :name => 'Extended analysis', :column_index => 1, :row_index => 3, :configured => true)
+ dashboard.widgets.build(:widget_key => 'complexity', :name => 'Complexity', :column_index => 1, :row_index => 3, :configured => true)
dashboard.widgets.build(:widget_key => 'code_coverage', :name => 'Code coverage', :column_index => 1, :row_index => 4, :configured => true)
dashboard.widgets.build(:widget_key => 'events', :name => 'Events', :column_index => 1, :row_index => 5, :configured => true)
dashboard.widgets.build(:widget_key => 'description', :name => 'Description', :column_index => 1, :row_index => 6, :configured => true)
dashboard.widgets.build(:widget_key => 'rules', :name => 'Rules', :column_index => 2, :row_index => 1, :configured => true)
dashboard.widgets.build(:widget_key => 'alerts', :name => 'Alerts', :column_index => 2, :row_index => 2, :configured => true)
dashboard.widgets.build(:widget_key => 'custom_measures', :name => 'Custom measures', :column_index => 2, :row_index => 3, :configured => true)
- dashboard.widgets.build(:widget_key => 'file-design', :name => 'File design', :column_index => 2, :row_index => 4, :configured => true)
- dashboard.widgets.build(:widget_key => 'package-design', :name => 'Package design', :column_index => 2, :row_index => 5, :configured => true)
+ dashboard.widgets.build(:widget_key => 'file_design', :name => 'File design', :column_index => 2, :row_index => 4, :configured => true)
+ dashboard.widgets.build(:widget_key => 'package_design', :name => 'Package design', :column_index => 2, :row_index => 5, :configured => true)
dashboard.widgets.build(:widget_key => 'ckjm', :name => 'CKJM', :column_index => 2, :row_index => 6, :configured => true)
dashboard.save
</thead><tbody>
<tr>
<td>open</td>
- <td>/dashboard/index/org.sonar.tests:reference&locale=fr-FR</td>
+ <td>/dashboard/index/org.sonar.tests:reference?locale=fr-FR</td>
<td></td>
</tr>
<tr>