cobench 0.0.21 → 0.0.24
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/assets/index.xsl +74 -23
- data/bin/cobench +45 -9
- data/lib/cobench/metrics/commits.rb +1 -2
- data/lib/cobench/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c88b2884af1c5f379f0ffc146188ae2b1c7ab4ffd1fa6690a1bebc1120b2f848
|
4
|
+
data.tar.gz: 4ccd4da7ea79c1f0b121c289a28def7b4decbb6b4792856f59bc0b4ca8cd87d9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 884a2cf5e5bff6d1050a94e2abc09ea4c4c96d45144a529ae7e7a9c4b86382ce8ec73841f6119a0c5a42b96896105658b1436e6204ffb99e9bf80733f49204da
|
7
|
+
data.tar.gz: 9a55303410d004305736bcafa56e61c10e323fe698f7c59b210dbb8135e9c5b21836ae9fc29057b26c31cb3761e0634f3fc94230da830ef2237598ad6a722843
|
data/assets/index.xsl
CHANGED
@@ -67,8 +67,14 @@ SOFTWARE.
|
|
67
67
|
</header>
|
68
68
|
<article>
|
69
69
|
<table id="metrics">
|
70
|
-
<
|
70
|
+
<thead>
|
71
|
+
<xsl:apply-templates select="cobench/titles"/>
|
72
|
+
</thead>
|
71
73
|
<xsl:apply-templates select="cobench/coders"/>
|
74
|
+
<tfoot>
|
75
|
+
<xsl:apply-templates select="cobench/totals"/>
|
76
|
+
<xsl:apply-templates select="cobench/averages"/>
|
77
|
+
</tfoot>
|
72
78
|
</table>
|
73
79
|
</article>
|
74
80
|
<footer>
|
@@ -133,6 +139,19 @@ SOFTWARE.
|
|
133
139
|
</xsl:for-each>
|
134
140
|
<xsl:text>.</xsl:text>
|
135
141
|
</p>
|
142
|
+
<p>
|
143
|
+
<xsl:for-each select="cobench/titles/title[@subtitle]">
|
144
|
+
<xsl:if test="position() > 1">
|
145
|
+
<xsl:text>, </xsl:text>
|
146
|
+
</xsl:if>
|
147
|
+
<xsl:text>"</xsl:text>
|
148
|
+
<xsl:value-of select="."/>
|
149
|
+
<xsl:text>"</xsl:text>
|
150
|
+
<xsl:text> stands for </xsl:text>
|
151
|
+
<xsl:value-of select="@subtitle"/>
|
152
|
+
</xsl:for-each>
|
153
|
+
<xsl:text>.</xsl:text>
|
154
|
+
</p>
|
136
155
|
<p>
|
137
156
|
<xsl:text>The numbers you see reflect the activity of the last </xsl:text>
|
138
157
|
<b>
|
@@ -140,6 +159,12 @@ SOFTWARE.
|
|
140
159
|
<xsl:text> days</xsl:text>
|
141
160
|
</b>
|
142
161
|
<xsl:text>.</xsl:text>
|
162
|
+
<br/>
|
163
|
+
<xsl:text>The XML with the data </xsl:text>
|
164
|
+
<a href="index.xml">
|
165
|
+
<xsl:text>is here</xsl:text>
|
166
|
+
</a>
|
167
|
+
<xsl:text>.</xsl:text>
|
143
168
|
</p>
|
144
169
|
</footer>
|
145
170
|
</section>
|
@@ -147,18 +172,42 @@ SOFTWARE.
|
|
147
172
|
</html>
|
148
173
|
</xsl:template>
|
149
174
|
<xsl:template match="cobench/titles">
|
150
|
-
<
|
151
|
-
<
|
152
|
-
|
153
|
-
|
154
|
-
<xsl:
|
155
|
-
|
156
|
-
<
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
175
|
+
<tr>
|
176
|
+
<th/>
|
177
|
+
<th/>
|
178
|
+
<xsl:for-each select="title[generate-id() = generate-id(key('titles', .)[1])]">
|
179
|
+
<xsl:sort select="."/>
|
180
|
+
<th class="sorter num">
|
181
|
+
<xsl:value-of select="."/>
|
182
|
+
</th>
|
183
|
+
</xsl:for-each>
|
184
|
+
</tr>
|
185
|
+
</xsl:template>
|
186
|
+
<xsl:template match="cobench/totals">
|
187
|
+
<xsl:variable name="totals" select="."/>
|
188
|
+
<tr>
|
189
|
+
<td colspan="2" style="text-align:right">Total:</td>
|
190
|
+
<xsl:for-each select="/cobench/titles/title[generate-id() = generate-id(key('titles', .)[1])]">
|
191
|
+
<xsl:sort select="."/>
|
192
|
+
<xsl:variable name="t" select="."/>
|
193
|
+
<td class="num">
|
194
|
+
<xsl:value-of select="$totals/w[@id=$t]"/>
|
195
|
+
</td>
|
196
|
+
</xsl:for-each>
|
197
|
+
</tr>
|
198
|
+
</xsl:template>
|
199
|
+
<xsl:template match="cobench/averages">
|
200
|
+
<xsl:variable name="averages" select="."/>
|
201
|
+
<tr>
|
202
|
+
<td colspan="2" style="text-align:right">Average:</td>
|
203
|
+
<xsl:for-each select="/cobench/titles/title[generate-id() = generate-id(key('titles', .)[1])]">
|
204
|
+
<xsl:sort select="."/>
|
205
|
+
<xsl:variable name="t" select="."/>
|
206
|
+
<td class="num">
|
207
|
+
<xsl:value-of select="$averages/w[@id=$t]"/>
|
208
|
+
</td>
|
209
|
+
</xsl:for-each>
|
210
|
+
</tr>
|
162
211
|
</xsl:template>
|
163
212
|
<xsl:template match="cobench/coders">
|
164
213
|
<tbody>
|
@@ -175,10 +224,12 @@ SOFTWARE.
|
|
175
224
|
<xsl:text>@</xsl:text>
|
176
225
|
<xsl:value-of select="@id"/>
|
177
226
|
</a>
|
178
|
-
<
|
179
|
-
|
180
|
-
<
|
181
|
-
|
227
|
+
<xsl:if test="@details">
|
228
|
+
<br/>
|
229
|
+
<span class="subtitle">
|
230
|
+
<xsl:value-of select="@details"/>
|
231
|
+
</span>
|
232
|
+
</xsl:if>
|
182
233
|
</td>
|
183
234
|
<xsl:for-each select="metrics/m">
|
184
235
|
<xsl:sort select="@id"/>
|
@@ -189,13 +240,13 @@ SOFTWARE.
|
|
189
240
|
<xsl:template match="m">
|
190
241
|
<xsl:variable name="body">
|
191
242
|
<xsl:choose>
|
192
|
-
<xsl:when test="@href
|
193
|
-
<xsl:value-of select="."/>
|
194
|
-
</xsl:when>
|
195
|
-
<xsl:otherwise>
|
243
|
+
<xsl:when test="@href">
|
196
244
|
<a href="{@href}">
|
197
245
|
<xsl:value-of select="."/>
|
198
246
|
</a>
|
247
|
+
</xsl:when>
|
248
|
+
<xsl:otherwise>
|
249
|
+
<xsl:value-of select="."/>
|
199
250
|
</xsl:otherwise>
|
200
251
|
</xsl:choose>
|
201
252
|
</xsl:variable>
|
@@ -203,11 +254,11 @@ SOFTWARE.
|
|
203
254
|
<xsl:choose>
|
204
255
|
<xsl:when test="@actual">
|
205
256
|
<span class="firebrick">
|
206
|
-
<xsl:
|
257
|
+
<xsl:copy-of select="$body"/>
|
207
258
|
</span>
|
208
259
|
</xsl:when>
|
209
260
|
<xsl:otherwise>
|
210
|
-
<xsl:
|
261
|
+
<xsl:copy-of select="$body"/>
|
211
262
|
</xsl:otherwise>
|
212
263
|
</xsl:choose>
|
213
264
|
<xsl:if test="@actual">
|
data/bin/cobench
CHANGED
@@ -121,7 +121,7 @@ def build_xml(opts, loog)
|
|
121
121
|
end
|
122
122
|
end
|
123
123
|
caps = {
|
124
|
-
'HoC' => lambda { |ms| ms['
|
124
|
+
'HoC' => lambda { |ms| ms['Pulls'][:total] * 1024 },
|
125
125
|
}
|
126
126
|
data.each do |u, ms|
|
127
127
|
ms.map do |t, h|
|
@@ -136,39 +136,75 @@ def build_xml(opts, loog)
|
|
136
136
|
end
|
137
137
|
weights = {
|
138
138
|
'HoC' => 1,
|
139
|
-
'Pulls' =>
|
139
|
+
'Pulls' => 250,
|
140
140
|
'Issues' => 50,
|
141
141
|
'Commits' => 5,
|
142
|
-
'Reviews' =>
|
142
|
+
'Reviews' => 150
|
143
143
|
}
|
144
144
|
data.each do |u, ms|
|
145
145
|
score = ms.map do |t, h|
|
146
146
|
raise "Unknown title '#{t}'" unless weights.key?(t)
|
147
147
|
h[:total] * weights[t]
|
148
148
|
end.inject(0, :+)
|
149
|
-
data[u]['Score'] = { total: score
|
149
|
+
data[u]['Score'] = { total: score }
|
150
|
+
end
|
151
|
+
averages = {
|
152
|
+
'HpP': {
|
153
|
+
f: lambda { |ms| ms['HoC'][:total] / ms['Pulls'][:total] },
|
154
|
+
title: 'HoC per Pull'
|
155
|
+
},
|
156
|
+
'HpC': {
|
157
|
+
f: lambda { |ms| ms['HoC'][:total] / ms['Commits'][:total] },
|
158
|
+
title: 'HoC per Commit'
|
159
|
+
}
|
160
|
+
}
|
161
|
+
data.each do |u, ms|
|
162
|
+
averages.each do |k, a|
|
163
|
+
data[u][k] = { total: a[:f].call(ms) }
|
164
|
+
end
|
150
165
|
end
|
151
166
|
builder = Nokogiri::XML::Builder.new(:encoding => 'UTF-8') do |xml|
|
152
167
|
xml.cobench(time: Time.now, days: opts[:days]) do
|
153
168
|
xml.titles do
|
154
|
-
data.map { |_, ms| ms.keys }.flatten.each do |t|
|
155
|
-
xml.title
|
169
|
+
data.map { |_, ms| ms.keys }.flatten.uniq.each do |t|
|
170
|
+
xml.title do
|
171
|
+
xml.parent.set_attribute('subtitle', averages[t][:title]) if averages.key?(t)
|
172
|
+
xml.text t
|
173
|
+
end
|
156
174
|
end
|
157
175
|
end
|
158
176
|
xml.weights do
|
159
177
|
weights.each do |t, w|
|
160
178
|
xml.w(id: t) do
|
161
|
-
xml.text
|
179
|
+
xml.text(w)
|
180
|
+
end
|
181
|
+
end
|
182
|
+
end
|
183
|
+
xml.totals do
|
184
|
+
data.map { |_, ms| ms.keys }.flatten.uniq.each do |t|
|
185
|
+
next if t == 'Score'
|
186
|
+
next if averages.key?(t)
|
187
|
+
xml.w(id: t) do
|
188
|
+
xml.text(data.values.map { |ms| ms[t][:total] }.inject(&:+))
|
189
|
+
end
|
190
|
+
end
|
191
|
+
end
|
192
|
+
xml.averages do
|
193
|
+
data.map { |_, ms| ms.keys }.flatten.uniq.each do |t|
|
194
|
+
next if t == 'Score'
|
195
|
+
xml.w(id: t) do
|
196
|
+
vals = data.values.map { |ms| ms[t][:total] }.select { |v| v > 0 }
|
197
|
+
xml.text(vals.inject(&:+) / vals.count)
|
162
198
|
end
|
163
199
|
end
|
164
200
|
end
|
165
201
|
xml.coders do
|
166
202
|
data.each do |u, ms|
|
167
203
|
xml.coder(id: u) do
|
168
|
-
xml.parent.set_attribute('details', api.user(u).name)
|
204
|
+
xml.parent.set_attribute('details', api.user(u).name) unless opts[:dry]
|
169
205
|
xml.metrics do
|
170
206
|
ms.each do |k, v|
|
171
|
-
xml.m(id: k
|
207
|
+
xml.m(id: k) do
|
172
208
|
xml.parent.set_attribute('actual', v[:actual]) unless v[:actual].nil?
|
173
209
|
xml.parent.set_attribute('href', v[:href]) unless v[:href].nil?
|
174
210
|
xml.text v[:total]
|
data/lib/cobench/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cobench
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.24
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Yegor Bugayenko
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-09-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: backtrace
|