rubycritic 0.0.5 → 0.0.16
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/.travis.yml +10 -0
- data/README.md +72 -11
- data/bin/rubycritic +2 -0
- data/lib/rubycritic/adapters/complexity/flog.rb +22 -0
- data/lib/rubycritic/adapters/smell/flay.rb +68 -0
- data/lib/rubycritic/adapters/smell/flog.rb +62 -0
- data/lib/rubycritic/adapters/smell/reek.rb +44 -0
- data/lib/rubycritic/analysers/churn.rb +19 -0
- data/lib/rubycritic/analysers/config.reek +8 -0
- data/lib/rubycritic/analysers/flay.rb +15 -0
- data/lib/rubycritic/analysers/flog.rb +1 -2
- data/lib/rubycritic/analysers/stats.rb +31 -0
- data/lib/rubycritic/analysers_runner.rb +15 -14
- data/lib/rubycritic/cli.rb +35 -14
- data/lib/rubycritic/configuration.rb +24 -0
- data/lib/rubycritic/core/analysed_file.rb +50 -0
- data/lib/rubycritic/{location.rb → core/location.rb} +6 -2
- data/lib/rubycritic/core/rating.rb +22 -0
- data/lib/rubycritic/{smell.rb → core/smell.rb} +5 -12
- data/lib/rubycritic/files_initializer.rb +15 -0
- data/lib/rubycritic/orchestrator.rb +23 -0
- data/lib/rubycritic/report_generators/assets/javascripts/application.js +87 -8
- data/lib/rubycritic/report_generators/assets/javascripts/highcharts.src-4.0.1.js +17672 -0
- data/lib/rubycritic/report_generators/assets/javascripts/jquery.floatThead-v1.2.7.js +754 -0
- data/lib/rubycritic/report_generators/assets/javascripts/jquery.scrollTo-1.4.11.js +186 -0
- data/lib/rubycritic/report_generators/assets/javascripts/jquery.tablesorter-2.0.js +1031 -0
- data/lib/rubycritic/report_generators/assets/javascripts/jquery.timeago-v1.4.1.js +214 -0
- data/lib/rubycritic/report_generators/assets/stylesheets/application.css +204 -1
- data/lib/rubycritic/report_generators/assets/stylesheets/prettify.custom_theme.css +1 -4
- data/lib/rubycritic/report_generators/base.rb +49 -0
- data/lib/rubycritic/report_generators/code_file.rb +38 -0
- data/lib/rubycritic/report_generators/code_index.rb +24 -0
- data/lib/rubycritic/report_generators/current_code_file.rb +17 -0
- data/lib/rubycritic/report_generators/line.rb +31 -0
- data/lib/rubycritic/report_generators/overview.rb +25 -0
- data/lib/rubycritic/report_generators/smells_index.rb +24 -0
- data/lib/rubycritic/report_generators/templates/code_file.html.erb +36 -0
- data/lib/rubycritic/report_generators/templates/code_index.html.erb +26 -0
- data/lib/rubycritic/report_generators/templates/layouts/application.html.erb +27 -16
- data/lib/rubycritic/report_generators/templates/overview.html.erb +5 -0
- data/lib/rubycritic/report_generators/templates/smells_index.html.erb +20 -0
- data/lib/rubycritic/report_generators/view_helpers.rb +28 -9
- data/lib/rubycritic/reporters/base.rb +24 -0
- data/lib/rubycritic/reporters/main.rb +52 -0
- data/lib/rubycritic/reporters/mini.rb +30 -0
- data/lib/rubycritic/revision_comparator.rb +21 -28
- data/lib/rubycritic/serializer.rb +32 -0
- data/lib/rubycritic/smells_status_setter.rb +7 -16
- data/lib/rubycritic/source_control_systems/base.rb +60 -0
- data/lib/rubycritic/source_control_systems/double.rb +19 -0
- data/lib/rubycritic/source_control_systems/git.rb +47 -37
- data/lib/rubycritic/source_locator.rb +8 -12
- data/lib/rubycritic/turbulence.rb +17 -0
- data/lib/rubycritic/version.rb +1 -1
- data/lib/rubycritic.rb +2 -27
- data/rubycritic.gemspec +3 -0
- data/test/lib/rubycritic/adapters/complexity/flog_test.rb +18 -0
- data/test/lib/rubycritic/adapters/smell/flay_test.rb +34 -0
- data/test/lib/rubycritic/adapters/smell/flog_test.rb +26 -0
- data/test/lib/rubycritic/adapters/smell/reek_test.rb +35 -0
- data/test/lib/rubycritic/analysers/churn_test.rb +38 -0
- data/test/lib/rubycritic/configuration_test.rb +17 -0
- data/test/lib/rubycritic/core/analysed_file_test.rb +71 -0
- data/test/lib/rubycritic/{location_test.rb → core/location_test.rb} +8 -4
- data/test/lib/rubycritic/core/smell_test.rb +73 -0
- data/test/lib/rubycritic/{smells_array_test.rb → core/smells_array_test.rb} +1 -1
- data/test/lib/rubycritic/smells_status_setter_test.rb +5 -5
- data/test/lib/rubycritic/source_control_systems/source_control_system_test.rb +5 -11
- data/test/lib/rubycritic/source_locator_test.rb +26 -17
- data/test/lib/rubycritic/turbulence_test.rb +17 -0
- data/test/lib/rubycritic/version_test.rb +1 -0
- data/test/samples/flay/smelly.rb +17 -0
- data/test/samples/flog/complex.rb +11 -0
- data/test/samples/flog/smelly.rb +7 -2
- data/test/samples/reek/not_smelly.rb +31 -3
- data/test/test_helper.rb +1 -0
- metadata +97 -32
- data/SPEC.md +0 -58
- data/lib/rubycritic/report_generators/base_generator.rb +0 -42
- data/lib/rubycritic/report_generators/file_generator.rb +0 -42
- data/lib/rubycritic/report_generators/index_generator.rb +0 -28
- data/lib/rubycritic/report_generators/line_generator.rb +0 -27
- data/lib/rubycritic/report_generators/reporter.rb +0 -45
- data/lib/rubycritic/report_generators/templates/file.html.erb +0 -3
- data/lib/rubycritic/report_generators/templates/index.html.erb +0 -14
- data/lib/rubycritic/smell_adapters/flog.rb +0 -41
- data/lib/rubycritic/smell_adapters/reek.rb +0 -35
- data/lib/rubycritic/smells_aggregator.rb +0 -29
- data/lib/rubycritic/smelly_pathnames_serializer.rb +0 -34
- data/lib/rubycritic/source_control_systems/source_control_system.rb +0 -42
- data/test/lib/rubycritic/metric_adapters/flog_adapter_test.rb +0 -25
- data/test/lib/rubycritic/metric_adapters/reek_adapter_test.rb +0 -34
- data/test/lib/rubycritic/smell_test.rb +0 -71
- data/test/lib/rubycritic/smells_aggregator_test.rb +0 -47
- /data/lib/rubycritic/report_generators/assets/javascripts/{prettify.js → prettify-4-Mar-2013.js} +0 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
require "virtus"
|
|
2
|
-
require "rubycritic/location"
|
|
2
|
+
require "rubycritic/core/location"
|
|
3
3
|
|
|
4
4
|
module Rubycritic
|
|
5
5
|
|
|
@@ -7,17 +7,14 @@ module Rubycritic
|
|
|
7
7
|
include Virtus.model
|
|
8
8
|
|
|
9
9
|
attribute :context
|
|
10
|
+
attribute :cost
|
|
10
11
|
attribute :locations
|
|
11
12
|
attribute :message
|
|
12
13
|
attribute :score
|
|
13
|
-
attribute :type
|
|
14
14
|
attribute :status
|
|
15
|
+
attribute :type
|
|
15
16
|
|
|
16
|
-
def
|
|
17
|
-
@pathnames ||= locations.map(&:pathname).uniq
|
|
18
|
-
end
|
|
19
|
-
|
|
20
|
-
def located_in?(other_location)
|
|
17
|
+
def at_location?(other_location)
|
|
21
18
|
locations.any? { |location| location == other_location }
|
|
22
19
|
end
|
|
23
20
|
|
|
@@ -26,14 +23,10 @@ module Rubycritic
|
|
|
26
23
|
end
|
|
27
24
|
|
|
28
25
|
def ==(other)
|
|
29
|
-
|
|
26
|
+
state == other.state
|
|
30
27
|
end
|
|
31
28
|
alias_method :eql?, :==
|
|
32
29
|
|
|
33
|
-
def <=>(other)
|
|
34
|
-
locations <=> other.locations
|
|
35
|
-
end
|
|
36
|
-
|
|
37
30
|
def to_s
|
|
38
31
|
"(#{type}) #{context} #{message}"
|
|
39
32
|
end
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
require "rubycritic/source_locator"
|
|
2
|
+
require "rubycritic/core/analysed_file"
|
|
3
|
+
|
|
4
|
+
module Rubycritic
|
|
5
|
+
|
|
6
|
+
module FilesInitializer
|
|
7
|
+
def self.init(paths)
|
|
8
|
+
source = SourceLocator.new(paths)
|
|
9
|
+
source.pathnames.map do |pathname|
|
|
10
|
+
AnalysedFile.new(:pathname => pathname, :smells => [], :duplication => 0)
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
end
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
require "rubycritic/source_control_systems/base"
|
|
2
|
+
require "rubycritic/files_initializer"
|
|
3
|
+
require "rubycritic/analysers_runner"
|
|
4
|
+
require "rubycritic/revision_comparator"
|
|
5
|
+
|
|
6
|
+
module Rubycritic
|
|
7
|
+
|
|
8
|
+
class Orchestrator
|
|
9
|
+
def initialize
|
|
10
|
+
@source_control_system = SourceControlSystem::Base.create
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def critique(paths)
|
|
14
|
+
analysed_files = FilesInitializer.init(paths)
|
|
15
|
+
AnalysersRunner.new(analysed_files, @source_control_system).run
|
|
16
|
+
if @source_control_system.has_revision?
|
|
17
|
+
RevisionComparator.new(analysed_files, @source_control_system).set_statuses
|
|
18
|
+
end
|
|
19
|
+
analysed_files
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
end
|
|
@@ -1,17 +1,39 @@
|
|
|
1
1
|
prettyPrint();
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
emphasizeLineFromFragment();
|
|
4
4
|
|
|
5
|
-
function
|
|
6
|
-
|
|
5
|
+
function emphasizeLineFromFragment() {
|
|
6
|
+
emphasizeLine(window.location.hash)
|
|
7
7
|
}
|
|
8
8
|
|
|
9
|
-
$(".js-file-code").on("click", ".js-smell-location",
|
|
9
|
+
$(".js-file-code").on("click", ".js-smell-location", emphasizeLineFromHref);
|
|
10
10
|
|
|
11
|
-
function
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
11
|
+
function emphasizeLineFromHref(event) {
|
|
12
|
+
if (hrefTargetIsOnCurrentPage(this) && !event.ctrlKey) {
|
|
13
|
+
$(".js-file-code li").removeClass("highlight");
|
|
14
|
+
var lineId = "#" + this.href.split("#")[1];
|
|
15
|
+
emphasizeLine(lineId);
|
|
16
|
+
return false;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
function hrefTargetIsOnCurrentPage(aTag) {
|
|
21
|
+
return (window.location.pathname === aTag.pathname);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
function emphasizeLine(lineReference) {
|
|
25
|
+
scrollToTarget(lineReference);
|
|
26
|
+
highlightLine(lineReference);
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
function scrollToTarget(lineReference) {
|
|
30
|
+
$.scrollTo(lineReference, {
|
|
31
|
+
duration: 300,
|
|
32
|
+
easing: "linear",
|
|
33
|
+
onAfter: function() {
|
|
34
|
+
window.location.hash = lineReference;
|
|
35
|
+
}
|
|
36
|
+
});
|
|
15
37
|
}
|
|
16
38
|
|
|
17
39
|
function highlightLine(lineReference) {
|
|
@@ -23,3 +45,60 @@ $("#js-toggle-smells").on("click", toggleSmells);
|
|
|
23
45
|
function toggleSmells() {
|
|
24
46
|
$(".js-smells").toggle();
|
|
25
47
|
}
|
|
48
|
+
|
|
49
|
+
$("#js-index-table")
|
|
50
|
+
.tablesorter({ // Sort the table
|
|
51
|
+
sortList: [[0,0]] // on the first column, in ascending order
|
|
52
|
+
})
|
|
53
|
+
.floatThead(); // Make table headers stick to the top when scrolling
|
|
54
|
+
|
|
55
|
+
$(".js-timeago").timeago();
|
|
56
|
+
|
|
57
|
+
$("#js-chart-container").highcharts({
|
|
58
|
+
chart: {
|
|
59
|
+
type: "scatter",
|
|
60
|
+
zoomType: "xy"
|
|
61
|
+
},
|
|
62
|
+
title: {
|
|
63
|
+
text: "Churn vs Complexity"
|
|
64
|
+
},
|
|
65
|
+
xAxis: {
|
|
66
|
+
title: {
|
|
67
|
+
enabled: true,
|
|
68
|
+
text: "Churn"
|
|
69
|
+
},
|
|
70
|
+
floor: 0,
|
|
71
|
+
startOnTick: true,
|
|
72
|
+
endOnTick: true
|
|
73
|
+
},
|
|
74
|
+
yAxis: {
|
|
75
|
+
title: {
|
|
76
|
+
text: "Complexity"
|
|
77
|
+
},
|
|
78
|
+
floor: 0,
|
|
79
|
+
startOnTick: true,
|
|
80
|
+
endOnTick: true
|
|
81
|
+
},
|
|
82
|
+
plotOptions: {
|
|
83
|
+
scatter: {
|
|
84
|
+
marker: {
|
|
85
|
+
radius: 5,
|
|
86
|
+
states: {
|
|
87
|
+
hover: {
|
|
88
|
+
enabled: true,
|
|
89
|
+
lineColor: "rgb(100,100,100)"
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
},
|
|
93
|
+
tooltip: {
|
|
94
|
+
headerFormat: "<b>{point.key}</b><br>",
|
|
95
|
+
pointFormat: "Committed {point.x} times, with Flog score of {point.y}"
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
},
|
|
99
|
+
series: [{
|
|
100
|
+
showInLegend: false,
|
|
101
|
+
color: "steelblue",
|
|
102
|
+
data: turbulenceData
|
|
103
|
+
}]
|
|
104
|
+
});
|