continuous4r 0.0.1 → 0.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/History.txt +1 -1
- data/Manifest.txt +34 -34
- data/PostInstall.txt +3 -0
- data/README.rdoc +58 -0
- data/Rakefile +28 -3
- data/lib/changelog_builder.rb +51 -0
- data/lib/continuous4r.rb +63 -426
- data/lib/dcov_builder.rb +144 -0
- data/lib/flay_builder.rb +38 -0
- data/lib/flog_builder.rb +120 -0
- data/lib/git_extractor.rb +48 -0
- data/lib/rcov_builder.rb +23 -0
- data/lib/rdoc_builder.rb +33 -0
- data/lib/reek_builder.rb +38 -0
- data/lib/roodi_builder.rb +41 -0
- data/lib/saikuro_builder.rb +20 -0
- data/lib/site/body-changelog.rhtml +1 -1
- data/lib/site/body-continuous4r-reports.rhtml +40 -47
- data/lib/site/body-dcov.rhtml +1 -21
- data/lib/site/body-flay.rhtml +16 -0
- data/lib/site/body-flog.rhtml +2 -10
- data/lib/site/body-rcov.rhtml +2 -3
- data/lib/site/body-rdoc.rhtml +1 -1
- data/lib/site/body-reek.rhtml +16 -0
- data/lib/site/body-roodi.rhtml +16 -0
- data/lib/site/body-saikuro.rhtml +32 -0
- data/lib/site/body-scm-usage.rhtml +13 -12
- data/lib/site/body-stats.rhtml +1 -1
- data/lib/site/body-tests.rhtml +1 -1
- data/lib/site/body-xdoclet.rhtml +29 -0
- data/lib/site/body-zentest.rhtml +1 -1
- data/lib/site/flog.html.erb +33 -0
- data/lib/site/flog_page.html.erb +74 -0
- data/lib/site/header.rhtml +36 -20
- data/lib/site/images/added.png +0 -0
- data/lib/site/images/deleted.png +0 -0
- data/lib/site/images/modified.png +0 -0
- data/lib/site/menu-continuous4r-reports.rhtml +4 -14
- data/lib/site/{menu-dcov.rhtml → menu-task.rhtml} +3 -5
- data/lib/site/style/maven-base.css +3 -0
- data/lib/site/syntax_highlighting.css +30 -0
- data/lib/stats_builder.rb +18 -0
- data/lib/subversion_extractor.rb +29 -19
- data/lib/tasks/continuous4r-project.xml +26 -0
- data/lib/tasks/continuous4r.rake +23 -0
- data/lib/tasks/continuous4r.rb +6 -0
- data/lib/tests_builder.rb +21 -0
- data/lib/tests_formatter.rb +13 -46
- data/lib/utils.rb +47 -0
- data/lib/xdoclet_builder.rb +48 -0
- data/lib/zen_test_formatter.rb +58 -28
- data/lib/zentest_builder.rb +19 -0
- data/script/console +10 -0
- data/script/console.cmd +1 -0
- data/script/destroy +1 -1
- data/script/generate +1 -1
- data/test/test_continuous4r.rb +1 -1
- data/test/test_helper.rb +1 -0
- data/website/index.html +141 -363
- data/website/index.txt +169 -228
- data/website/template.rhtml +2 -2
- metadata +66 -46
- data/License.txt +0 -20
- data/README.txt +0 -1
- data/config/hoe.rb +0 -71
- data/config/requirements.rb +0 -17
- data/lib/capistrano_formatter.rb +0 -19
- data/lib/continuous4r/version.rb +0 -9
- data/lib/flog_formatter.rb +0 -48
- data/lib/heckle_formatter.rb +0 -27
- data/lib/httperf_formatter.rb +0 -160
- data/lib/site/body-capistrano.rhtml +0 -8
- data/lib/site/body-heckle.rhtml +0 -16
- data/lib/site/body-httperf.rhtml +0 -8
- data/lib/site/body-kwala.rhtml +0 -35
- data/lib/site/body-railroad.rhtml +0 -29
- data/lib/site/menu-capistrano.rhtml +0 -23
- data/lib/site/menu-changelog.rhtml +0 -23
- data/lib/site/menu-flog.rhtml +0 -23
- data/lib/site/menu-heckle.rhtml +0 -23
- data/lib/site/menu-httperf.rhtml +0 -23
- data/lib/site/menu-kwala.rhtml +0 -23
- data/lib/site/menu-railroad.rhtml +0 -23
- data/lib/site/menu-rcov.rhtml +0 -23
- data/lib/site/menu-rdoc.rhtml +0 -23
- data/lib/site/menu-stats.rhtml +0 -23
- data/lib/site/menu-tests.rhtml +0 -23
- data/lib/site/menu-zentest.rhtml +0 -23
- data/log/debug.log +0 -0
- data/script/txt2html +0 -74
- data/script/txt2html.cmd +0 -1
- data/setup.rb +0 -1585
- data/tasks/deployment.rake +0 -34
- data/tasks/environment.rake +0 -7
- data/tasks/website.rake +0 -17
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# ==========================================================================
|
|
2
|
+
# Construction de la tache roodi (problemes de conception dans le code)
|
|
3
|
+
# author: Vincent Dubois
|
|
4
|
+
# date: 08 fevrier 2009
|
|
5
|
+
# ==========================================================================
|
|
6
|
+
class RoodiBuilder
|
|
7
|
+
include Utils
|
|
8
|
+
|
|
9
|
+
# Implementation de la construction de la tache
|
|
10
|
+
def build(project_name, auto_install, proxy_option)
|
|
11
|
+
# On verifie la presence de roodi
|
|
12
|
+
Utils.verify_gem_presence("roodi", auto_install, proxy_option)
|
|
13
|
+
# On lance la generation
|
|
14
|
+
puts " Building roodi report..."
|
|
15
|
+
files = Array.new
|
|
16
|
+
files << Dir.glob("app/**/*.rb")
|
|
17
|
+
files << Dir.glob("lib/**/*.rb")
|
|
18
|
+
files << Dir.glob("test/**/*.rb")
|
|
19
|
+
files.flatten!
|
|
20
|
+
roodi_command = "roodi"
|
|
21
|
+
files.each do |file|
|
|
22
|
+
roodi_command += " '#{file}'"
|
|
23
|
+
end
|
|
24
|
+
roodi_result = Utils.run_command(roodi_command)
|
|
25
|
+
matches = roodi_result.chomp.split("\n").map{|m| m.split(" - ") }
|
|
26
|
+
FileUtils.mkdir("#{Continuous4r::WORK_DIR}/roodi")
|
|
27
|
+
roodi_file = File.open("#{Continuous4r::WORK_DIR}/roodi/index.html","w")
|
|
28
|
+
matches.each_with_index do |match, count|
|
|
29
|
+
roodi_file.write("<tr class='#{count % 2 == 0 ? "a" : "b"}'>")
|
|
30
|
+
if match.first and match.first.index("Found ").nil?
|
|
31
|
+
roodi_file.write("<td><a href='xdoclet/#{match.first.split(':').first.gsub(/\//,'_')}.html' target='_blank'>#{match.first.split(':').first}</a></td>")
|
|
32
|
+
elsif match.first and !match.first.index("Found ").nil?
|
|
33
|
+
roodi_file.write("<td><b>#{match.first}</b></td>")
|
|
34
|
+
else
|
|
35
|
+
roodi_file.write("<td> </td>")
|
|
36
|
+
end
|
|
37
|
+
roodi_file.write("<td>#{match[1]}</td></tr>")
|
|
38
|
+
end
|
|
39
|
+
roodi_file.close
|
|
40
|
+
end
|
|
41
|
+
end
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# ==========================================================================
|
|
2
|
+
# Construction de la tache saikuro (complexité cyclomatique du code)
|
|
3
|
+
# author: Vincent Dubois
|
|
4
|
+
# date: 08 fevrier 2009
|
|
5
|
+
# ==========================================================================
|
|
6
|
+
class SaikuroBuilder
|
|
7
|
+
include Utils
|
|
8
|
+
|
|
9
|
+
# Implementation de la construction de la tache
|
|
10
|
+
def build(project_name, auto_install, proxy_option)
|
|
11
|
+
# On verifie la presence de saikuro
|
|
12
|
+
Utils.verify_gem_presence("Saikuro", auto_install, proxy_option)
|
|
13
|
+
# On lance la generation
|
|
14
|
+
puts " Building saikuro report..."
|
|
15
|
+
puts Utils.run_command("saikuro -c -i app -i lib -i test -y 0 -w 5 -e 7 -o #{Continuous4r::WORK_DIR}/saikuro")
|
|
16
|
+
if !File.exist?("#{Continuous4r::WORK_DIR}/saikuro/index_cyclo.html")
|
|
17
|
+
raise " Execution of saikuro with the metric_fu gem failed.\n BUILD FAILED."
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
<%
|
|
2
|
-
|
|
3
|
-
require 'XmlElements'
|
|
4
|
-
project = XmlElements.fromString(File.read("continuous4r-project.xml"))
|
|
2
|
+
tasks = Continuous4r::TASKS
|
|
5
3
|
%>
|
|
6
4
|
<div id="bodyColumn">
|
|
7
5
|
<div class="contentBox">
|
|
@@ -25,57 +23,52 @@
|
|
|
25
23
|
</tr>
|
|
26
24
|
<%
|
|
27
25
|
i = 0
|
|
28
|
-
|
|
29
|
-
project.tasks.each('task') do |task|
|
|
26
|
+
tasks.each do |task|
|
|
30
27
|
%>
|
|
31
28
|
<tr class="<% if i % 2 == 0 %>a<% else %>b<% end %>">
|
|
32
29
|
<td>
|
|
33
|
-
<a href="<%= task
|
|
34
|
-
<%= task
|
|
30
|
+
<a href="<%= task %>.html">
|
|
31
|
+
<%= task %>
|
|
35
32
|
</a>
|
|
36
33
|
</td>
|
|
37
|
-
<td
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
end
|
|
34
|
+
<td><%=
|
|
35
|
+
case task
|
|
36
|
+
when "changelog"
|
|
37
|
+
"Displays changes in the SCM repository."
|
|
38
|
+
when "stats"
|
|
39
|
+
"Provides statistics for your Rails code."
|
|
40
|
+
when "dcov"
|
|
41
|
+
"Provides statistics on the coverage of your documentation (rdoc)."
|
|
42
|
+
when "rcov"
|
|
43
|
+
"Provides general and detailed statistics on the coverage of your unit tests."
|
|
44
|
+
when "rdoc"
|
|
45
|
+
"Report for the generation of the apidoc for #{project['name']}"
|
|
46
|
+
when "heckle"
|
|
47
|
+
"Provides results for the attempts of breaking your tests with heckle."
|
|
48
|
+
when "flog"
|
|
49
|
+
"Flog measures code complexity."
|
|
50
|
+
when "zentest"
|
|
51
|
+
"Provides generated code for units tests which are missing in your project."
|
|
52
|
+
when "kwala"
|
|
53
|
+
"Provides various reports on quality and metrics for your Ruby code."
|
|
54
|
+
when "tests"
|
|
55
|
+
"Report on the execution of you unit tests."
|
|
56
|
+
when "flay"
|
|
57
|
+
"Flay analyzes ruby code for structural similarities."
|
|
58
|
+
when "xdoclet"
|
|
59
|
+
"Displays your Ruby files in HTML format."
|
|
60
|
+
when "reek"
|
|
61
|
+
"Reek detects common code smells in ruby code."
|
|
62
|
+
when "roodi"
|
|
63
|
+
"Roodi parses your Ruby code and warns you about design issues you have based on the checks that is has configured."
|
|
64
|
+
when "saikuro"
|
|
65
|
+
"Saikuro is a Ruby cyclomatic complexity analyzer."
|
|
66
|
+
end
|
|
67
|
+
%></td>
|
|
70
68
|
</tr>
|
|
71
|
-
<%
|
|
69
|
+
<% i = i + 1
|
|
72
70
|
end
|
|
73
|
-
|
|
74
|
-
unless e.to_s == "no childs named 'task' found!"
|
|
75
|
-
raise e
|
|
76
|
-
end
|
|
77
|
-
puts "<tr class='a'><td colspan='2'>No reports</td></tr>"
|
|
78
|
-
end %>
|
|
71
|
+
%>
|
|
79
72
|
</table>
|
|
80
73
|
</div>
|
|
81
74
|
</div>
|
data/lib/site/body-dcov.rhtml
CHANGED
|
@@ -1,27 +1,7 @@
|
|
|
1
|
-
<%
|
|
2
|
-
require 'rubygems'
|
|
3
|
-
require 'hpricot'
|
|
4
|
-
require 'XmlElements'
|
|
5
|
-
project = XmlElements.fromString(File.read("continuous4r-project.xml"))
|
|
6
|
-
%>
|
|
7
1
|
<div id="bodyColumn">
|
|
8
2
|
<div class="contentBox">
|
|
9
3
|
<div class="section"><a name="dcov"></a>
|
|
10
|
-
|
|
11
|
-
# chargement/modification du rapport dcov
|
|
12
|
-
path = ""
|
|
13
|
-
project.tasks.each('task') do |task|
|
|
14
|
-
if task['name'] == "dcov"
|
|
15
|
-
path = task.params.report['path']
|
|
16
|
-
end
|
|
17
|
-
end
|
|
18
|
-
doc = Hpricot(File.read(path))
|
|
19
|
-
doc.at("h1").swap("<h2>Dcov Results</h2>")
|
|
20
|
-
doc.search('//font') do |font|
|
|
21
|
-
font.swap("<span style='color: red;'>" + font.inner_html + "</span>")
|
|
22
|
-
end
|
|
23
|
-
%>
|
|
24
|
-
<%= (doc/"body").inner_html %>
|
|
4
|
+
<%= File.read("#{Continuous4r::WORK_DIR}/dcov/coverage.html") %>
|
|
25
5
|
</div>
|
|
26
6
|
</div>
|
|
27
7
|
</div>
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
<div id="bodyColumn">
|
|
2
|
+
<div class="contentBox">
|
|
3
|
+
<div class="section"><a name="flay"></a>
|
|
4
|
+
<h2>Flay Results</h2>
|
|
5
|
+
<p><a href='http://ruby.sadi.st/Flay.html'>Flay</a> analyzes ruby code for structural similarities.</p>
|
|
6
|
+
<table class="bodyTable">
|
|
7
|
+
<tr>
|
|
8
|
+
<th>Files</th>
|
|
9
|
+
<th>Matches</th>
|
|
10
|
+
</tr>
|
|
11
|
+
<%= File.read("#{Continuous4r::WORK_DIR}/flay/index.html") %>
|
|
12
|
+
</table>
|
|
13
|
+
<p>Generated on <%= Time.now.localtime %></p>
|
|
14
|
+
</div>
|
|
15
|
+
</div>
|
|
16
|
+
</div>
|
data/lib/site/body-flog.rhtml
CHANGED
|
@@ -1,15 +1,7 @@
|
|
|
1
|
-
<%
|
|
2
|
-
require 'rubygems'
|
|
3
|
-
require 'XmlElements'
|
|
4
|
-
require "#{File.dirname(__FILE__)}/../flog_formatter.rb"
|
|
5
|
-
%>
|
|
6
1
|
<div id="bodyColumn">
|
|
7
2
|
<div class="contentBox">
|
|
8
|
-
<div class="section"><a name="
|
|
9
|
-
|
|
10
|
-
<p>Flog shows you the most torturous code you wrote. The more painful the code, the higher the score.</p>
|
|
11
|
-
<p>Flog essentially scores an ABC metric: Assignments, Branches, Calls, with particular attention placed on calls.</p>
|
|
12
|
-
<%= FlogFormatter.new(File.read("flog.log")).to_html %>
|
|
3
|
+
<div class="section"><a name="flog"></a>
|
|
4
|
+
<%= File.read("#{Continuous4r::WORK_DIR}/flog/index.html") %>
|
|
13
5
|
</div>
|
|
14
6
|
</div>
|
|
15
7
|
</div>
|
data/lib/site/body-rcov.rhtml
CHANGED
|
@@ -1,17 +1,16 @@
|
|
|
1
1
|
<%
|
|
2
2
|
require 'rubygems'
|
|
3
3
|
require 'hpricot'
|
|
4
|
-
require 'XmlElements'
|
|
5
4
|
%>
|
|
6
5
|
<div id="bodyColumn">
|
|
7
6
|
<div class="contentBox">
|
|
8
7
|
<div class="section"><a name="rcov"></a>
|
|
9
8
|
<%
|
|
10
9
|
# chargement/modification du rapport rcov
|
|
11
|
-
doc = Hpricot(File.read("
|
|
10
|
+
doc = Hpricot(File.read("#{Continuous4r::WORK_DIR}/rcov/coverage/index.html"))
|
|
12
11
|
doc.search('//a') do |link|
|
|
13
12
|
if link.inner_text.index('rcov').nil?
|
|
14
|
-
link.swap("<a target='_blank' href='rcov/#{link.attributes['href']}'>#{link.inner_text}</a>")
|
|
13
|
+
link.swap("<a target='_blank' href='rcov/coverage/#{link.attributes['href']}'>#{link.inner_text}</a>")
|
|
15
14
|
end
|
|
16
15
|
end
|
|
17
16
|
%>
|
data/lib/site/body-rdoc.rhtml
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
<h2>Rdoc Report</h2>
|
|
5
5
|
<p style="padding-left: 20px;"><a target="_blank" class="newWindow" href="rdoc/app/index.html">View generated apidoc</a></p>
|
|
6
6
|
<div>
|
|
7
|
-
|
|
7
|
+
<pre class="source"><%= File.read("#{Continuous4r::WORK_DIR}/rdoc/rdoc.log") %>
|
|
8
8
|
</pre>
|
|
9
9
|
</div>
|
|
10
10
|
</div>
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
<div id="bodyColumn">
|
|
2
|
+
<div class="contentBox">
|
|
3
|
+
<div class="section"><a name="reek"></a>
|
|
4
|
+
<h2>Reek Results</h2>
|
|
5
|
+
<p><a href="http://reek.rubyforge.org/">Reek</a> detects common code smells in ruby code.</p>
|
|
6
|
+
<table class="bodyTable">
|
|
7
|
+
<tr>
|
|
8
|
+
<th>File Path</th>
|
|
9
|
+
<th>Code Smell</th>
|
|
10
|
+
</tr>
|
|
11
|
+
<%= File.read("#{Continuous4r::WORK_DIR}/reek/index.html") %>
|
|
12
|
+
</table>
|
|
13
|
+
<p>Generated on <%= Time.now.localtime %></p>
|
|
14
|
+
</div>
|
|
15
|
+
</div>
|
|
16
|
+
</div>
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
<div id="bodyColumn">
|
|
2
|
+
<div class="contentBox">
|
|
3
|
+
<div class="section"><a name="roodi"></a>
|
|
4
|
+
<h2>Roodi Results</h2>
|
|
5
|
+
<p><a href="http://roodi.rubyforge.org/">Roodi</a> parses your Ruby code and warns you about design issues you have based on the checks that is has configured.</p>
|
|
6
|
+
<table class="bodyTable">
|
|
7
|
+
<tr>
|
|
8
|
+
<th>File Path</th>
|
|
9
|
+
<th>Warning</th>
|
|
10
|
+
</tr>
|
|
11
|
+
<%= File.read("#{Continuous4r::WORK_DIR}/roodi/index.html") %>
|
|
12
|
+
</table>
|
|
13
|
+
<p>Generated on <%= Time.now.localtime %></p>
|
|
14
|
+
</div>
|
|
15
|
+
</div>
|
|
16
|
+
</div>
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
<%
|
|
2
|
+
require 'rubygems'
|
|
3
|
+
require 'hpricot'
|
|
4
|
+
%>
|
|
5
|
+
<div id="bodyColumn">
|
|
6
|
+
<div class="contentBox">
|
|
7
|
+
<div class="section"><a name="saikuro"></a>
|
|
8
|
+
<%
|
|
9
|
+
# chargement/modification du rapport roodi
|
|
10
|
+
doc = Hpricot(File.read("#{Continuous4r::WORK_DIR}/saikuro/index_cyclo.html"))
|
|
11
|
+
doc.search("h2") do |h2|
|
|
12
|
+
h2.swap("<h3>#{h2.inner_text}</h3>")
|
|
13
|
+
end
|
|
14
|
+
description = "Saikuro is a Ruby cyclomatic complexity analyzer. When given Ruby source code Saikuro will generate a report listing the cyclomatic complexity of each method found. In addition, Saikuro counts the number of lines per method and can generate a listing of the number of tokens on each line of code."
|
|
15
|
+
doc.at("h1").swap("<h2>Index for cyclomatic complexity</h2>\n<p>#{description}</p>")
|
|
16
|
+
doc.search('//a') do |link|
|
|
17
|
+
link.swap("<a target='_blank' href='saikuro/#{link.attributes['href']}'>#{link.inner_text}</a>") if link.attributes['href'].index("http://").nil?
|
|
18
|
+
end
|
|
19
|
+
doc.search('table') do |table|
|
|
20
|
+
table.swap("<table class='bodyTable'>#{table.html}</table>")
|
|
21
|
+
end
|
|
22
|
+
doc.search(".light") do |tr|
|
|
23
|
+
tr.swap("<tr class='a'>#{tr.inner_html}</tr>")
|
|
24
|
+
end
|
|
25
|
+
doc.search(".dark") do |tr|
|
|
26
|
+
tr.swap("<tr class='b'>#{tr.inner_html}</tr>")
|
|
27
|
+
end
|
|
28
|
+
%>
|
|
29
|
+
<%= (doc/"body").html %>
|
|
30
|
+
</div>
|
|
31
|
+
</div>
|
|
32
|
+
</div>
|
|
@@ -9,28 +9,29 @@
|
|
|
9
9
|
<div class="section"><a name="Source_repository"></a>
|
|
10
10
|
<h2>Source repository</h2>
|
|
11
11
|
<%
|
|
12
|
-
scms = {'
|
|
13
|
-
if
|
|
12
|
+
scms = {'git' => ['Git', 'http://git-scm.com'], 'svn' => ['Subversion', 'http://subversion.tigris.org']}
|
|
13
|
+
if File.exist?(".git")
|
|
14
|
+
scm_name = "git"
|
|
15
|
+
scm_url = File.read(".git/config").split(/$/).select {|l| l =~ /url = /}[0].split(/url = /)[1]
|
|
16
|
+
end
|
|
17
|
+
if File.exist?(".svn")
|
|
18
|
+
scm_name = "svn"
|
|
19
|
+
svn_info = Utils.run_command("svn info")
|
|
20
|
+
scm_url = svn_info.split(/$/)[1].split(/^URL/)[1].strip.split(/: /)[1]
|
|
21
|
+
end
|
|
22
|
+
if !scms.has_key?(scm_name)
|
|
14
23
|
%>
|
|
15
24
|
<p>
|
|
16
25
|
<%= project['name'] %> is hosted on an unknown repository type.
|
|
17
26
|
</p>
|
|
18
27
|
<% else %>
|
|
19
28
|
<p>
|
|
20
|
-
<%= project['name'] %> is hosted on a <a href="<%= scms[
|
|
29
|
+
<%= project['name'] %> is hosted on a <a href="<%= scms[scm_name][1] %>" target="_blank" class="externalLink" title="External Link"><%= scms[scm_name][0] %></a> repository.
|
|
21
30
|
</p>
|
|
22
31
|
<% end %>
|
|
23
32
|
<p>
|
|
24
33
|
The project URL is:<br></br>
|
|
25
|
-
<code><%=
|
|
26
|
-
</p>
|
|
27
|
-
<p>
|
|
28
|
-
The best way to view the repository is via the
|
|
29
|
-
<a href="<%= project.scm.view.text %>" class="externalLink" target="_blank" title="External Link"><%= scms[project.scm.repository_type.text][0] %> viewer</a>.
|
|
30
|
-
</p>
|
|
31
|
-
<p>
|
|
32
|
-
The alternative is to use the
|
|
33
|
-
<a href="<%= project.scm.url.text %>" class="externalLink" target="_blank" title="External Link">native <%= scms[project.scm.repository_type.text][0] %></a> display.
|
|
34
|
+
<code><%= scm_url %></code>
|
|
34
35
|
</p>
|
|
35
36
|
</div>
|
|
36
37
|
</div>
|
data/lib/site/body-stats.rhtml
CHANGED
data/lib/site/body-tests.rhtml
CHANGED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
<div id="bodyColumn">
|
|
2
|
+
<div class="contentBox">
|
|
3
|
+
<div class="section"><a name="xdoc"></a>
|
|
4
|
+
<h2>XDoclet Report</h2>
|
|
5
|
+
<table class="bodyTable">
|
|
6
|
+
<thead>
|
|
7
|
+
<tr class="b">
|
|
8
|
+
<th>Source file</th>
|
|
9
|
+
</tr>
|
|
10
|
+
</thead>
|
|
11
|
+
<tbody>
|
|
12
|
+
<%
|
|
13
|
+
files = Array.new
|
|
14
|
+
files << Dir.glob("#{RAILS_ROOT}/app/**/*.rb")
|
|
15
|
+
files << Dir.glob("#{RAILS_ROOT}/lib/**/*.rb")
|
|
16
|
+
files.flatten!
|
|
17
|
+
files.each_with_index do |file,index|
|
|
18
|
+
%>
|
|
19
|
+
<tr class="<%= index % 2 == 0 ? 'a' : 'b' %>">
|
|
20
|
+
<td><a href="xdoclet/<%= "#{file.gsub(Regexp.new("#{RAILS_ROOT}/"),'').gsub(/\//,'_')}" %>.html" target="_blank"><%= file.gsub(Regexp.new("#{RAILS_ROOT}/"),'') %></a></td>
|
|
21
|
+
</tr>
|
|
22
|
+
<%
|
|
23
|
+
end
|
|
24
|
+
%>
|
|
25
|
+
</tbody>
|
|
26
|
+
</table>
|
|
27
|
+
</div>
|
|
28
|
+
</div>
|
|
29
|
+
</div>
|