rubycritic 3.1.0 → 3.1.1
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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +7 -0
- data/README.md +7 -7
- data/docs/core-metrics.md +3 -3
- data/images/churn-vs-complexity.png +0 -0
- data/images/code.png +0 -0
- data/images/logo.png +0 -0
- data/images/overview.png +0 -0
- data/images/rating.png +0 -0
- data/images/reek.png +0 -0
- data/images/smell-details.png +0 -0
- data/images/smells.png +0 -0
- data/images/whitesmith.png +0 -0
- data/lib/rubycritic/core/analysed_module.rb +1 -1
- data/lib/rubycritic/generators/html/assets/javascripts/application.js +19 -5
- data/lib/rubycritic/generators/html/assets/javascripts/jquery.filtertable.min.js +13 -0
- data/lib/rubycritic/generators/html/assets/stylesheets/application.css +18 -0
- data/lib/rubycritic/generators/html/templates/layouts/application.html.erb +1 -0
- data/lib/rubycritic/generators/html/templates/smelly_line.html.erb +16 -14
- data/lib/rubycritic/source_control_systems/perforce.rb +9 -3
- data/lib/rubycritic/version.rb +1 -1
- data/rubycritic.gemspec +1 -1
- data/test/lib/rubycritic/source_control_systems/perforce_test.rb +10 -0
- metadata +14 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0555c63872e8ba208eed9e2b2ba2e409b6bcc2af
|
4
|
+
data.tar.gz: 4ec5b4de84de9b3f9ab6c864d9cf1056f38c07b8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 652e9d64e4ac113cb346833907e4d05b289f98f236aaa52970b40f9d472b38bf56bcb48fff30fc31d4e4774f28740dbbfafc5950a75c356d6bc3894b0dbf00bc
|
7
|
+
data.tar.gz: 20d381594ebb3ab984e95e0d62b00086ea379f119bbbd63698c51439f8e8b7ce83145b5d9bfba57d1d5c4e2868dee0cea239d5b3ef40d961decae640de9d240f
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,10 @@
|
|
1
|
+
# 3.1.1 / 2016-12-01
|
2
|
+
|
3
|
+
* [FEATURE] Implement search and filter on code and smells view (rohitcy)
|
4
|
+
* [CHANGE] Use Ruby's File instead of `wc` system command (by tejasbubane)
|
5
|
+
* [BUGFIX] Fix code navigation links in the new UI (by rohitcy)
|
6
|
+
* [BUGFIX] Add missing method 'head_reference' for Perforce source control (Rataah)
|
7
|
+
|
1
8
|
# 3.1.0 / 2016-11-23
|
2
9
|
|
3
10
|
* [FEATURE] Support for Perforce source control system (by Loic Gudet)
|
data/README.md
CHANGED
@@ -5,7 +5,7 @@ RubyCritic
|
|
5
5
|
[](https://travis-ci.org/whitesmith/rubycritic)
|
6
6
|
[](https://codeclimate.com/github/whitesmith/rubycritic)
|
7
7
|
|
8
|
-
<img src="
|
8
|
+
<img src="/images/logo.png" alt="RubyCritic Icon" align="right" />
|
9
9
|
RubyCritic is a gem that wraps around static analysis gems such as [Reek][1], [Flay][2] and [Flog][3] to provide a quality report of your Ruby code.
|
10
10
|
|
11
11
|
**Table of Contents**
|
@@ -28,15 +28,15 @@ This gem provides features such as:
|
|
28
28
|
|
29
29
|
1. An overview of your project:
|
30
30
|
|
31
|
-

|
32
32
|
|
33
33
|
2. An index of the project files with their respective number of smells:
|
34
34
|
|
35
|
-

|
36
36
|
|
37
37
|
3. An index of the smells detected:
|
38
38
|
|
39
|
-

|
40
40
|
|
41
41
|
4. When analysing code like the following:
|
42
42
|
|
@@ -52,11 +52,11 @@ This gem provides features such as:
|
|
52
52
|
|
53
53
|
It basically turns something like this:
|
54
54
|
|
55
|
-

|
56
56
|
|
57
57
|
Into something like this:
|
58
58
|
|
59
|
-

|
60
60
|
|
61
61
|
5. It uses your source control system (only Git, Mercurial and Perforce
|
62
62
|
are currently supported) to compare your currently uncommitted
|
@@ -215,7 +215,7 @@ The current core team consists of:
|
|
215
215
|
|
216
216
|
## Credits
|
217
217
|
|
218
|
-

|
219
219
|
|
220
220
|
RubyCritic is maintained and funded by [Whitesmith][9]. Tweet your questions or suggestions to [@Whitesmithco][10].
|
221
221
|
|
data/docs/core-metrics.md
CHANGED
@@ -3,7 +3,7 @@
|
|
3
3
|
RubyCritic wraps around static analysis gems such as [Reek][2], [Flay][3] and [Flog][4] to provide a quality report of your Ruby code.
|
4
4
|
|
5
5
|
Each of these gems are internally wrapped as an **Analyser**, with a collection of **AnalysedModule**s, which give us calculations of key metrics.
|
6
|
-
The most important ones are **churn**, **complexity**, **cost** and **rating**.
|
6
|
+
The most important ones are **churn**, **complexity**, **cost** and **rating**.
|
7
7
|
|
8
8
|
The output of RubyCritic will give you four values to help you judge your code's _odorousness_:
|
9
9
|
|
@@ -40,7 +40,7 @@ Complexity is the output of [Flog][4]. You can [read more about how it works][7]
|
|
40
40
|
|
41
41
|
Both **churn** and **complexity** are presented as a chart:
|
42
42
|
|
43
|
-

|
44
44
|
|
45
45
|
Each file is represented by a dot. **The closer they are to the bottom-left corner, the better.**
|
46
46
|
But keep in mind that you cannot reduce churn (well... not unless you re-write your repo's history :neckbeard:), so try to keep the dots as close to the bottom as possible.
|
@@ -54,7 +54,7 @@ Generally `A`'s & `B`'s are good enough, `C`'s serve as a warning and `D`'s & `F
|
|
54
54
|
|
55
55
|
**Rating** is simply [a conversion][5] from the calculated **cost** to a letter.
|
56
56
|
|
57
|
-

|
58
58
|
|
59
59
|
### Cost
|
60
60
|
|
Binary file
|
data/images/code.png
ADDED
Binary file
|
data/images/logo.png
ADDED
Binary file
|
data/images/overview.png
ADDED
Binary file
|
data/images/rating.png
ADDED
Binary file
|
data/images/reek.png
ADDED
Binary file
|
Binary file
|
data/images/smells.png
ADDED
Binary file
|
Binary file
|
@@ -168,8 +168,6 @@ function getRatingWiseCount(rating){
|
|
168
168
|
return count;
|
169
169
|
};
|
170
170
|
|
171
|
-
emphasizeLineFromFragment();
|
172
|
-
|
173
171
|
function emphasizeLineFromFragment() {
|
174
172
|
emphasizeLine(window.location.hash)
|
175
173
|
}
|
@@ -195,12 +193,11 @@ function emphasizeLine(lineReference) {
|
|
195
193
|
}
|
196
194
|
|
197
195
|
function scrollToTarget(lineReference) {
|
196
|
+
window.location.hash = lineReference;
|
198
197
|
$.scrollTo(lineReference, {
|
199
198
|
duration: 300,
|
200
199
|
easing: "linear",
|
201
|
-
|
202
|
-
window.location.hash = lineReference;
|
203
|
-
}
|
200
|
+
offset: {top: -87}
|
204
201
|
});
|
205
202
|
}
|
206
203
|
|
@@ -251,3 +248,20 @@ $(function(){
|
|
251
248
|
}
|
252
249
|
});
|
253
250
|
});
|
251
|
+
|
252
|
+
function assignIdsToCodeLines(){
|
253
|
+
$($('.linenums')[1]).children().each(function(index){
|
254
|
+
$(this).attr('id', "L" + index)
|
255
|
+
});
|
256
|
+
};
|
257
|
+
|
258
|
+
$(document).ready(function(){
|
259
|
+
assignIdsToCodeLines();
|
260
|
+
emphasizeLineFromFragment();
|
261
|
+
initTableFilters();
|
262
|
+
});
|
263
|
+
|
264
|
+
var initTableFilters = function() {
|
265
|
+
$("#codeTable").filterTable({ignoreColumns: [2], placeholder: 'Filter by Name'});
|
266
|
+
$("#js-index-table").filterTable({ignoreColumns: [2, 3, 4, 5], placeholder: 'Filter by Smell or Location', inputSelector: 'form-control'});
|
267
|
+
}
|
@@ -0,0 +1,13 @@
|
|
1
|
+
/**
|
2
|
+
* jquery.filterTable
|
3
|
+
*
|
4
|
+
* This plugin will add a search filter to tables. When typing in the filter,
|
5
|
+
* any rows that do not contain the filter will be hidden.
|
6
|
+
*
|
7
|
+
* Utilizes bindWithDelay() if available. https://github.com/bgrins/bindWithDelay
|
8
|
+
*
|
9
|
+
* @version v1.5.6
|
10
|
+
* @author Sunny Walker, swalker@hawaii.edu
|
11
|
+
* @license MIT
|
12
|
+
*/
|
13
|
+
!function($){var e=$.fn.jquery.split("."),t=parseFloat(e[0]),n=parseFloat(e[1]);2>t&&8>n?($.expr[":"].filterTableFind=function(e,t,n){return $(e).text().toUpperCase().indexOf(n[3].toUpperCase().replace(/"""/g,'"').replace(/"\\"/g,"\\"))>=0},$.expr[":"].filterTableFindAny=function(e,t,n){var i=n[3].split(/[\s,]/),r=[];return $.each(i,function(e,t){var n=t.replace(/^\s+|\s$/g,"");n&&r.push(n)}),r.length?function(e){var t=!1;return $.each(r,function(n,i){return $(e).text().toUpperCase().indexOf(i.toUpperCase().replace(/"""/g,'"').replace(/"\\"/g,"\\"))>=0?(t=!0,!1):void 0}),t}:!1},$.expr[":"].filterTableFindAll=function(e,t,n){var i=n[3].split(/[\s,]/),r=[];return $.each(i,function(e,t){var n=t.replace(/^\s+|\s$/g,"");n&&r.push(n)}),r.length?function(e){var t=0;return $.each(r,function(n,i){$(e).text().toUpperCase().indexOf(i.toUpperCase().replace(/"""/g,'"').replace(/"\\"/g,"\\"))>=0&&t++}),t===r.length}:!1}):($.expr[":"].filterTableFind=jQuery.expr.createPseudo(function(e){return function(t){return $(t).text().toUpperCase().indexOf(e.toUpperCase().replace(/"""/g,'"').replace(/"\\"/g,"\\"))>=0}}),$.expr[":"].filterTableFindAny=jQuery.expr.createPseudo(function(e){var t=e.split(/[\s,]/),n=[];return $.each(t,function(e,t){var i=t.replace(/^\s+|\s$/g,"");i&&n.push(i)}),n.length?function(e){var t=!1;return $.each(n,function(n,i){return $(e).text().toUpperCase().indexOf(i.toUpperCase().replace(/"""/g,'"').replace(/"\\"/g,"\\"))>=0?(t=!0,!1):void 0}),t}:!1}),$.expr[":"].filterTableFindAll=jQuery.expr.createPseudo(function(e){var t=e.split(/[\s,]/),n=[];return $.each(t,function(e,t){var i=t.replace(/^\s+|\s$/g,"");i&&n.push(i)}),n.length?function(e){var t=0;return $.each(n,function(n,i){$(e).text().toUpperCase().indexOf(i.toUpperCase().replace(/"""/g,'"').replace(/"\\"/g,"\\"))>=0&&t++}),t===n.length}:!1})),$.fn.filterTable=function(e){var t={autofocus:!1,callback:null,containerClass:"filter-table",containerTag:"p",filterExpression:"filterTableFind",hideTFootOnFilter:!1,highlightClass:"alt",ignoreClass:"",ignoreColumns:[],inputSelector:null,inputName:"",inputType:"search",label:"Filter:",minChars:1,minRows:8,placeholder:"search this table",preventReturnKey:!0,quickList:[],quickListClass:"quick",quickListGroupTag:"",quickListTag:"a",visibleClass:"visible"},n=function(e){return e.replace(/&/g,"&").replace(/"/g,""").replace(/</g,"<").replace(/>/g,">")},i=$.extend({},t,e),r=function(e,t){var n=e.find("tbody");if(""===t||t.length<i.minChars)n.find("tr").show().addClass(i.visibleClass),n.find("td").removeClass(i.highlightClass),i.hideTFootOnFilter&&e.find("tfoot").show();else{var r=n.find("td");if(n.find("tr").hide().removeClass(i.visibleClass),r.removeClass(i.highlightClass),i.hideTFootOnFilter&&e.find("tfoot").hide(),i.ignoreColumns.length){var a=[];i.ignoreClass&&(r=r.not("."+i.ignoreClass)),a=r.filter(":"+i.filterExpression+'("'+t+'")'),a.each(function(){var e=$(this),t=e.parent().children().index(e);-1===$.inArray(t,i.ignoreColumns)&&e.addClass(i.highlightClass).closest("tr").show().addClass(i.visibleClass)})}else i.ignoreClass&&(r=r.not("."+i.ignoreClass)),r.filter(":"+i.filterExpression+'("'+t+'")').addClass(i.highlightClass).closest("tr").show().addClass(i.visibleClass)}i.callback&&i.callback(t,e)};return this.each(function(){var e=$(this),t=e.find("tbody"),a=null,l=null,s=null,o=!0;"TABLE"===e[0].nodeName&&t.length>0&&(0===i.minRows||i.minRows>0&&t.find("tr").length>=i.minRows)&&!e.prev().hasClass(i.containerClass)&&(i.inputSelector&&1===$(i.inputSelector).length?(s=$(i.inputSelector),a=s.parent(),o=!1):(a=$("<"+i.containerTag+" />"),""!==i.containerClass&&a.addClass(i.containerClass),a.prepend(i.label+" "),s=$('<input type="'+i.inputType+'" placeholder="'+i.placeholder+'" name="'+i.inputName+'" />'),i.preventReturnKey&&s.on("keydown",function(e){return 13===(e.keyCode||e.which)?(e.preventDefault(),!1):void 0})),i.autofocus&&s.attr("autofocus",!0),$.fn.bindWithDelay?s.bindWithDelay("keyup",function(){r(e,$(this).val())},200):s.bind("keyup",function(){r(e,$(this).val())}),s.bind("click search input paste blur",function(){r(e,$(this).val())}),o&&a.append(s),i.quickList.length>0&&(l=i.quickListGroupTag?$("<"+i.quickListGroupTag+" />"):a,$.each(i.quickList,function(e,t){var r=$("<"+i.quickListTag+' class="'+i.quickListClass+'" />');r.text(n(t)),"A"===r[0].nodeName&&r.attr("href","#"),r.bind("click",function(e){e.preventDefault(),s.val(t).focus().trigger("click")}),l.append(r)}),l!==a&&a.append(l)),o&&e.before(a))})}}(jQuery);
|
@@ -526,3 +526,21 @@ span.metric {
|
|
526
526
|
display: inline-block;
|
527
527
|
margin-left: 20px;
|
528
528
|
}
|
529
|
+
|
530
|
+
.filter-table {
|
531
|
+
text-align: right;
|
532
|
+
}
|
533
|
+
|
534
|
+
.filter-table input {
|
535
|
+
width: 200px;
|
536
|
+
display: inline;
|
537
|
+
height: 34px;
|
538
|
+
padding: 6px 12px;
|
539
|
+
font-size: 14px;
|
540
|
+
line-height: 1.42857143;
|
541
|
+
color: #555;
|
542
|
+
background-color: #fff;
|
543
|
+
background-image: none;
|
544
|
+
border: 1px solid #ccc;
|
545
|
+
border-radius: 4px;
|
546
|
+
}
|
@@ -2,20 +2,22 @@
|
|
2
2
|
|
3
3
|
<div class="nocode errors smells">
|
4
4
|
<% @smells.each do |smell| %>
|
5
|
-
<
|
6
|
-
<div class="
|
7
|
-
<
|
8
|
-
<
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
5
|
+
<li>
|
6
|
+
<div class="description">
|
7
|
+
<div class="heading">
|
8
|
+
<span>
|
9
|
+
<i class="fa fa-warning" aria-hidden"true"=""></i>
|
10
|
+
<a href="<%= smell.doc_url %>" target="_blank"><b><%= smell.type %></b></a>
|
11
|
+
</span>
|
12
|
+
</div>
|
13
|
+
<span><%= "#{smell.context} #{smell.message}" %></span>
|
14
|
+
<% if smell.multiple_locations? %>
|
15
|
+
<span>Locations:</span>
|
16
|
+
<% smell.locations.each_with_index do |location, index| %>
|
17
|
+
<a href="<%= smell_location_path(location) %>" class="js-smell-location"><%= index %></a>
|
18
|
+
<% end %>
|
17
19
|
<% end %>
|
18
|
-
|
19
|
-
</
|
20
|
+
</div>
|
21
|
+
</li>
|
20
22
|
<% end %>
|
21
23
|
</div>
|
@@ -3,7 +3,8 @@ require 'date'
|
|
3
3
|
|
4
4
|
module RubyCritic
|
5
5
|
module SourceControlSystem
|
6
|
-
|
6
|
+
PERFORCE_FSTAT_OPTS = '-F "clientFile=*.rb" -T clientFile,headRev,headTime,headChange,action'.freeze
|
7
|
+
PerforceStats = Struct.new(:filename, :revision, :last_commit, :opened?, :head)
|
7
8
|
|
8
9
|
class Perforce < Base
|
9
10
|
register_system
|
@@ -53,12 +54,16 @@ module RubyCritic
|
|
53
54
|
!perforce_files.values.count(&:opened?).zero?
|
54
55
|
end
|
55
56
|
|
57
|
+
def head_reference
|
58
|
+
perforce_files.values.map(&:head).max_by(&:to_i)
|
59
|
+
end
|
60
|
+
|
56
61
|
def self.build_file_cache
|
57
62
|
# Chun is very slow if files stats are requested one by one
|
58
63
|
# this fill a hash with the result of all ruby file in the current directory (and sub-directories)
|
59
64
|
{}.tap do |file_cache|
|
60
65
|
line_aggregator = []
|
61
|
-
`p4 fstat
|
66
|
+
`p4 fstat #{PERFORCE_FSTAT_OPTS} #{Dir.getwd}...`.each_line do |line|
|
62
67
|
Perforce.compute_line(file_cache, line_aggregator, line)
|
63
68
|
end
|
64
69
|
# handle remaining lines
|
@@ -86,7 +91,8 @@ module RubyCritic
|
|
86
91
|
Perforce.normalized_file_path(perforce_lines['clientFile']),
|
87
92
|
perforce_lines['headRev'],
|
88
93
|
perforce_lines['headTime'],
|
89
|
-
perforce_lines.key?('action')
|
94
|
+
perforce_lines.key?('action'),
|
95
|
+
perforce_lines['headChange']
|
90
96
|
)
|
91
97
|
end
|
92
98
|
|
data/lib/rubycritic/version.rb
CHANGED
data/rubycritic.gemspec
CHANGED
@@ -25,7 +25,7 @@ Gem::Specification.new do |spec|
|
|
25
25
|
spec.add_runtime_dependency 'flay', '~> 2.8'
|
26
26
|
spec.add_runtime_dependency 'flog', '~> 4.4'
|
27
27
|
spec.add_runtime_dependency 'reek', '~> 4.4'
|
28
|
-
spec.add_runtime_dependency 'parser', '2.3.1
|
28
|
+
spec.add_runtime_dependency 'parser', '2.3.3.1'
|
29
29
|
spec.add_runtime_dependency 'ruby_parser', '~> 3.8'
|
30
30
|
spec.add_runtime_dependency 'rainbow'
|
31
31
|
spec.add_runtime_dependency 'launchy', '2.4.3'
|
@@ -110,11 +110,13 @@ Server address: the.server.address.com
|
|
110
110
|
... clientFile /path/to/client/a_ruby_file.rb
|
111
111
|
... headTime 1473075551
|
112
112
|
... headRev 16
|
113
|
+
... headChange 2103503
|
113
114
|
|
114
115
|
... clientFile /path/to/client/second_ruby_file.rb
|
115
116
|
... headTime 1464601668
|
116
117
|
... action opened
|
117
118
|
... headRev 12
|
119
|
+
... headChange 2103504
|
118
120
|
END
|
119
121
|
end
|
120
122
|
|
@@ -128,12 +130,14 @@ Server address: the.server.address.com
|
|
128
130
|
first_file.filename.must_equal '/path/to/client/a_ruby_file.rb'
|
129
131
|
first_file.revision.must_equal '16'
|
130
132
|
first_file.last_commit.must_equal '1473075551'
|
133
|
+
first_file.head.must_equal '2103503'
|
131
134
|
first_file.opened?.must_equal false
|
132
135
|
|
133
136
|
second_file = file_cache['/path/to/client/second_ruby_file.rb']
|
134
137
|
second_file.filename.must_equal '/path/to/client/second_ruby_file.rb'
|
135
138
|
second_file.revision.must_equal '12'
|
136
139
|
second_file.last_commit.must_equal '1464601668'
|
140
|
+
second_file.head.must_equal '2103504'
|
137
141
|
second_file.opened?.must_equal true
|
138
142
|
end
|
139
143
|
end
|
@@ -157,6 +161,12 @@ Server address: the.server.address.com
|
|
157
161
|
RubyCritic::SourceControlSystem::Perforce.stubs(:`).once.returns(p4_stats)
|
158
162
|
@system.revision?.must_equal true
|
159
163
|
end
|
164
|
+
|
165
|
+
it 'retrieves the head reference of the repository' do
|
166
|
+
Dir.stubs(:getwd).returns('/path/to/client')
|
167
|
+
RubyCritic::SourceControlSystem::Perforce.stubs(:`).once.returns(p4_stats)
|
168
|
+
@system.head_reference.must_equal '2103504'
|
169
|
+
end
|
160
170
|
end
|
161
171
|
end
|
162
172
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rubycritic
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.1.
|
4
|
+
version: 3.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Guilherme Simoes
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-12-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: virtus
|
@@ -72,14 +72,14 @@ dependencies:
|
|
72
72
|
requirements:
|
73
73
|
- - '='
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version: 2.3.1
|
75
|
+
version: 2.3.3.1
|
76
76
|
type: :runtime
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
80
|
- - '='
|
81
81
|
- !ruby/object:Gem::Version
|
82
|
-
version: 2.3.1
|
82
|
+
version: 2.3.3.1
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
84
|
name: ruby_parser
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
@@ -265,6 +265,15 @@ files:
|
|
265
265
|
- features/step_definitions/rubycritic_steps.rb
|
266
266
|
- features/step_definitions/sample_file_steps.rb
|
267
267
|
- features/support/env.rb
|
268
|
+
- images/churn-vs-complexity.png
|
269
|
+
- images/code.png
|
270
|
+
- images/logo.png
|
271
|
+
- images/overview.png
|
272
|
+
- images/rating.png
|
273
|
+
- images/reek.png
|
274
|
+
- images/smell-details.png
|
275
|
+
- images/smells.png
|
276
|
+
- images/whitesmith.png
|
268
277
|
- lib/rubycritic.rb
|
269
278
|
- lib/rubycritic/analysers/attributes.rb
|
270
279
|
- lib/rubycritic/analysers/churn.rb
|
@@ -316,6 +325,7 @@ files:
|
|
316
325
|
- lib/rubycritic/generators/html/assets/javascripts/application.js
|
317
326
|
- lib/rubycritic/generators/html/assets/javascripts/bootstrap.min.js
|
318
327
|
- lib/rubycritic/generators/html/assets/javascripts/highcharts.src-4.0.1.js
|
328
|
+
- lib/rubycritic/generators/html/assets/javascripts/jquery.filtertable.min.js
|
319
329
|
- lib/rubycritic/generators/html/assets/javascripts/jquery.min.js
|
320
330
|
- lib/rubycritic/generators/html/assets/javascripts/jquery.scrollTo.min.js
|
321
331
|
- lib/rubycritic/generators/html/assets/javascripts/jquery.tablesorter.js
|