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.
Files changed (96) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +10 -0
  3. data/README.md +72 -11
  4. data/bin/rubycritic +2 -0
  5. data/lib/rubycritic/adapters/complexity/flog.rb +22 -0
  6. data/lib/rubycritic/adapters/smell/flay.rb +68 -0
  7. data/lib/rubycritic/adapters/smell/flog.rb +62 -0
  8. data/lib/rubycritic/adapters/smell/reek.rb +44 -0
  9. data/lib/rubycritic/analysers/churn.rb +19 -0
  10. data/lib/rubycritic/analysers/config.reek +8 -0
  11. data/lib/rubycritic/analysers/flay.rb +15 -0
  12. data/lib/rubycritic/analysers/flog.rb +1 -2
  13. data/lib/rubycritic/analysers/stats.rb +31 -0
  14. data/lib/rubycritic/analysers_runner.rb +15 -14
  15. data/lib/rubycritic/cli.rb +35 -14
  16. data/lib/rubycritic/configuration.rb +24 -0
  17. data/lib/rubycritic/core/analysed_file.rb +50 -0
  18. data/lib/rubycritic/{location.rb → core/location.rb} +6 -2
  19. data/lib/rubycritic/core/rating.rb +22 -0
  20. data/lib/rubycritic/{smell.rb → core/smell.rb} +5 -12
  21. data/lib/rubycritic/files_initializer.rb +15 -0
  22. data/lib/rubycritic/orchestrator.rb +23 -0
  23. data/lib/rubycritic/report_generators/assets/javascripts/application.js +87 -8
  24. data/lib/rubycritic/report_generators/assets/javascripts/highcharts.src-4.0.1.js +17672 -0
  25. data/lib/rubycritic/report_generators/assets/javascripts/jquery.floatThead-v1.2.7.js +754 -0
  26. data/lib/rubycritic/report_generators/assets/javascripts/jquery.scrollTo-1.4.11.js +186 -0
  27. data/lib/rubycritic/report_generators/assets/javascripts/jquery.tablesorter-2.0.js +1031 -0
  28. data/lib/rubycritic/report_generators/assets/javascripts/jquery.timeago-v1.4.1.js +214 -0
  29. data/lib/rubycritic/report_generators/assets/stylesheets/application.css +204 -1
  30. data/lib/rubycritic/report_generators/assets/stylesheets/prettify.custom_theme.css +1 -4
  31. data/lib/rubycritic/report_generators/base.rb +49 -0
  32. data/lib/rubycritic/report_generators/code_file.rb +38 -0
  33. data/lib/rubycritic/report_generators/code_index.rb +24 -0
  34. data/lib/rubycritic/report_generators/current_code_file.rb +17 -0
  35. data/lib/rubycritic/report_generators/line.rb +31 -0
  36. data/lib/rubycritic/report_generators/overview.rb +25 -0
  37. data/lib/rubycritic/report_generators/smells_index.rb +24 -0
  38. data/lib/rubycritic/report_generators/templates/code_file.html.erb +36 -0
  39. data/lib/rubycritic/report_generators/templates/code_index.html.erb +26 -0
  40. data/lib/rubycritic/report_generators/templates/layouts/application.html.erb +27 -16
  41. data/lib/rubycritic/report_generators/templates/overview.html.erb +5 -0
  42. data/lib/rubycritic/report_generators/templates/smells_index.html.erb +20 -0
  43. data/lib/rubycritic/report_generators/view_helpers.rb +28 -9
  44. data/lib/rubycritic/reporters/base.rb +24 -0
  45. data/lib/rubycritic/reporters/main.rb +52 -0
  46. data/lib/rubycritic/reporters/mini.rb +30 -0
  47. data/lib/rubycritic/revision_comparator.rb +21 -28
  48. data/lib/rubycritic/serializer.rb +32 -0
  49. data/lib/rubycritic/smells_status_setter.rb +7 -16
  50. data/lib/rubycritic/source_control_systems/base.rb +60 -0
  51. data/lib/rubycritic/source_control_systems/double.rb +19 -0
  52. data/lib/rubycritic/source_control_systems/git.rb +47 -37
  53. data/lib/rubycritic/source_locator.rb +8 -12
  54. data/lib/rubycritic/turbulence.rb +17 -0
  55. data/lib/rubycritic/version.rb +1 -1
  56. data/lib/rubycritic.rb +2 -27
  57. data/rubycritic.gemspec +3 -0
  58. data/test/lib/rubycritic/adapters/complexity/flog_test.rb +18 -0
  59. data/test/lib/rubycritic/adapters/smell/flay_test.rb +34 -0
  60. data/test/lib/rubycritic/adapters/smell/flog_test.rb +26 -0
  61. data/test/lib/rubycritic/adapters/smell/reek_test.rb +35 -0
  62. data/test/lib/rubycritic/analysers/churn_test.rb +38 -0
  63. data/test/lib/rubycritic/configuration_test.rb +17 -0
  64. data/test/lib/rubycritic/core/analysed_file_test.rb +71 -0
  65. data/test/lib/rubycritic/{location_test.rb → core/location_test.rb} +8 -4
  66. data/test/lib/rubycritic/core/smell_test.rb +73 -0
  67. data/test/lib/rubycritic/{smells_array_test.rb → core/smells_array_test.rb} +1 -1
  68. data/test/lib/rubycritic/smells_status_setter_test.rb +5 -5
  69. data/test/lib/rubycritic/source_control_systems/source_control_system_test.rb +5 -11
  70. data/test/lib/rubycritic/source_locator_test.rb +26 -17
  71. data/test/lib/rubycritic/turbulence_test.rb +17 -0
  72. data/test/lib/rubycritic/version_test.rb +1 -0
  73. data/test/samples/flay/smelly.rb +17 -0
  74. data/test/samples/flog/complex.rb +11 -0
  75. data/test/samples/flog/smelly.rb +7 -2
  76. data/test/samples/reek/not_smelly.rb +31 -3
  77. data/test/test_helper.rb +1 -0
  78. metadata +97 -32
  79. data/SPEC.md +0 -58
  80. data/lib/rubycritic/report_generators/base_generator.rb +0 -42
  81. data/lib/rubycritic/report_generators/file_generator.rb +0 -42
  82. data/lib/rubycritic/report_generators/index_generator.rb +0 -28
  83. data/lib/rubycritic/report_generators/line_generator.rb +0 -27
  84. data/lib/rubycritic/report_generators/reporter.rb +0 -45
  85. data/lib/rubycritic/report_generators/templates/file.html.erb +0 -3
  86. data/lib/rubycritic/report_generators/templates/index.html.erb +0 -14
  87. data/lib/rubycritic/smell_adapters/flog.rb +0 -41
  88. data/lib/rubycritic/smell_adapters/reek.rb +0 -35
  89. data/lib/rubycritic/smells_aggregator.rb +0 -29
  90. data/lib/rubycritic/smelly_pathnames_serializer.rb +0 -34
  91. data/lib/rubycritic/source_control_systems/source_control_system.rb +0 -42
  92. data/test/lib/rubycritic/metric_adapters/flog_adapter_test.rb +0 -25
  93. data/test/lib/rubycritic/metric_adapters/reek_adapter_test.rb +0 -34
  94. data/test/lib/rubycritic/smell_test.rb +0 -71
  95. data/test/lib/rubycritic/smells_aggregator_test.rb +0 -47
  96. /data/lib/rubycritic/report_generators/assets/javascripts/{prettify.js → prettify-4-Mar-2013.js} +0 -0
@@ -0,0 +1,186 @@
1
+ /*!
2
+ * jQuery.ScrollTo
3
+ * Copyright (c) 2007-2014 Ariel Flesler - aflesler<a>gmail<d>com | http://flesler.blogspot.com
4
+ * Licensed under MIT
5
+ * http://flesler.blogspot.com/2007/10/jqueryscrollto.html
6
+ * @projectDescription Easy element scrolling using jQuery.
7
+ * @author Ariel Flesler
8
+ * @version 1.4.11
9
+ */
10
+
11
+ ;(function(plugin) {
12
+ // AMD Support
13
+ if (typeof define === 'function' && define.amd) {
14
+ define(['jquery'], plugin);
15
+ } else {
16
+ plugin(jQuery);
17
+ }
18
+ }(function($) {
19
+
20
+ var $scrollTo = $.scrollTo = function( target, duration, settings ) {
21
+ return $(window).scrollTo( target, duration, settings );
22
+ };
23
+
24
+ $scrollTo.defaults = {
25
+ axis:'xy',
26
+ duration: parseFloat($.fn.jquery) >= 1.3 ? 0 : 1,
27
+ limit:true
28
+ };
29
+
30
+ // Returns the element that needs to be animated to scroll the window.
31
+ // Kept for backwards compatibility (specially for localScroll & serialScroll)
32
+ $scrollTo.window = function( scope ) {
33
+ return $(window)._scrollable();
34
+ };
35
+
36
+ // Hack, hack, hack :)
37
+ // Returns the real elements to scroll (supports window/iframes, documents and regular nodes)
38
+ $.fn._scrollable = function() {
39
+ return this.map(function() {
40
+ var elem = this,
41
+ isWin = !elem.nodeName || $.inArray( elem.nodeName.toLowerCase(), ['iframe','#document','html','body'] ) != -1;
42
+
43
+ if (!isWin)
44
+ return elem;
45
+
46
+ var doc = (elem.contentWindow || elem).document || elem.ownerDocument || elem;
47
+
48
+ return /webkit/i.test(navigator.userAgent) || doc.compatMode == 'BackCompat' ?
49
+ doc.body :
50
+ doc.documentElement;
51
+ });
52
+ };
53
+
54
+ $.fn.scrollTo = function( target, duration, settings ) {
55
+ if (typeof duration == 'object') {
56
+ settings = duration;
57
+ duration = 0;
58
+ }
59
+ if (typeof settings == 'function')
60
+ settings = { onAfter:settings };
61
+
62
+ if (target == 'max')
63
+ target = 9e9;
64
+
65
+ settings = $.extend( {}, $scrollTo.defaults, settings );
66
+ // Speed is still recognized for backwards compatibility
67
+ duration = duration || settings.duration;
68
+ // Make sure the settings are given right
69
+ settings.queue = settings.queue && settings.axis.length > 1;
70
+
71
+ if (settings.queue)
72
+ // Let's keep the overall duration
73
+ duration /= 2;
74
+ settings.offset = both( settings.offset );
75
+ settings.over = both( settings.over );
76
+
77
+ return this._scrollable().each(function() {
78
+ // Null target yields nothing, just like jQuery does
79
+ if (target == null) return;
80
+
81
+ var elem = this,
82
+ $elem = $(elem),
83
+ targ = target, toff, attr = {},
84
+ win = $elem.is('html,body');
85
+
86
+ switch (typeof targ) {
87
+ // A number will pass the regex
88
+ case 'number':
89
+ case 'string':
90
+ if (/^([+-]=?)?\d+(\.\d+)?(px|%)?$/.test(targ)) {
91
+ targ = both( targ );
92
+ // We are done
93
+ break;
94
+ }
95
+ // Relative selector, no break!
96
+ targ = $(targ,this);
97
+ if (!targ.length) return;
98
+ case 'object':
99
+ // DOMElement / jQuery
100
+ if (targ.is || targ.style)
101
+ // Get the real position of the target
102
+ toff = (targ = $(targ)).offset();
103
+ }
104
+
105
+ var offset = $.isFunction(settings.offset) && settings.offset(elem, targ) || settings.offset;
106
+
107
+ $.each( settings.axis.split(''), function( i, axis ) {
108
+ var Pos = axis == 'x' ? 'Left' : 'Top',
109
+ pos = Pos.toLowerCase(),
110
+ key = 'scroll' + Pos,
111
+ old = elem[key],
112
+ max = $scrollTo.max(elem, axis);
113
+
114
+ if (toff) {// jQuery / DOMElement
115
+ attr[key] = toff[pos] + ( win ? 0 : old - $elem.offset()[pos] );
116
+
117
+ // If it's a dom element, reduce the margin
118
+ if (settings.margin) {
119
+ attr[key] -= parseInt(targ.css('margin'+Pos)) || 0;
120
+ attr[key] -= parseInt(targ.css('border'+Pos+'Width')) || 0;
121
+ }
122
+
123
+ attr[key] += offset[pos] || 0;
124
+
125
+ if(settings.over[pos])
126
+ // Scroll to a fraction of its width/height
127
+ attr[key] += targ[axis=='x'?'width':'height']() * settings.over[pos];
128
+ } else {
129
+ var val = targ[pos];
130
+ // Handle percentage values
131
+ attr[key] = val.slice && val.slice(-1) == '%' ?
132
+ parseFloat(val) / 100 * max
133
+ : val;
134
+ }
135
+
136
+ // Number or 'number'
137
+ if (settings.limit && /^\d+$/.test(attr[key]))
138
+ // Check the limits
139
+ attr[key] = attr[key] <= 0 ? 0 : Math.min( attr[key], max );
140
+
141
+ // Queueing axes
142
+ if (!i && settings.queue) {
143
+ // Don't waste time animating, if there's no need.
144
+ if (old != attr[key])
145
+ // Intermediate animation
146
+ animate( settings.onAfterFirst );
147
+ // Don't animate this axis again in the next iteration.
148
+ delete attr[key];
149
+ }
150
+ });
151
+
152
+ animate( settings.onAfter );
153
+
154
+ function animate( callback ) {
155
+ $elem.animate( attr, duration, settings.easing, callback && function() {
156
+ callback.call(this, targ, settings);
157
+ });
158
+ };
159
+
160
+ }).end();
161
+ };
162
+
163
+ // Max scrolling position, works on quirks mode
164
+ // It only fails (not too badly) on IE, quirks mode.
165
+ $scrollTo.max = function( elem, axis ) {
166
+ var Dim = axis == 'x' ? 'Width' : 'Height',
167
+ scroll = 'scroll'+Dim;
168
+
169
+ if (!$(elem).is('html,body'))
170
+ return elem[scroll] - $(elem)[Dim.toLowerCase()]();
171
+
172
+ var size = 'client' + Dim,
173
+ html = elem.ownerDocument.documentElement,
174
+ body = elem.ownerDocument.body;
175
+
176
+ return Math.max( html[scroll], body[scroll] )
177
+ - Math.min( html[size] , body[size] );
178
+ };
179
+
180
+ function both( val ) {
181
+ return $.isFunction(val) || typeof val == 'object' ? val : { top:val, left:val };
182
+ };
183
+
184
+ // AMD requirement
185
+ return $scrollTo;
186
+ }));