rubycritic 0.0.5 → 1.4.0

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 (135) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +593 -0
  3. data/.travis.yml +11 -0
  4. data/CHANGELOG.md +45 -0
  5. data/CONTRIBUTING.md +67 -15
  6. data/README.md +105 -14
  7. data/Rakefile +9 -6
  8. data/bin/rubycritic +3 -1
  9. data/lib/rubycritic/analysers/attributes.rb +21 -0
  10. data/lib/rubycritic/analysers/churn.rb +21 -0
  11. data/lib/rubycritic/analysers/complexity.rb +22 -0
  12. data/lib/rubycritic/analysers/helpers/ast_node.rb +69 -0
  13. data/lib/rubycritic/analysers/{config.reek → helpers/config.reek} +8 -0
  14. data/lib/rubycritic/analysers/helpers/flay.rb +13 -0
  15. data/lib/rubycritic/analysers/helpers/flog.rb +17 -0
  16. data/lib/rubycritic/analysers/helpers/methods_counter.rb +25 -0
  17. data/lib/rubycritic/analysers/helpers/modules_locator.rb +43 -0
  18. data/lib/rubycritic/analysers/helpers/parser.rb +12 -0
  19. data/lib/rubycritic/analysers/helpers/reek.rb +17 -0
  20. data/lib/rubycritic/analysers/smells/flay.rb +68 -0
  21. data/lib/rubycritic/analysers/smells/flog.rb +62 -0
  22. data/lib/rubycritic/analysers/smells/reek.rb +44 -0
  23. data/lib/rubycritic/analysers_runner.rb +21 -10
  24. data/lib/rubycritic/cli/application.rb +24 -0
  25. data/lib/rubycritic/cli/options.rb +79 -0
  26. data/lib/rubycritic/commands/ci.rb +26 -0
  27. data/lib/rubycritic/commands/default.rb +28 -0
  28. data/lib/rubycritic/commands/help.rb +13 -0
  29. data/lib/rubycritic/commands/version.rb +11 -0
  30. data/lib/rubycritic/configuration.rb +33 -0
  31. data/lib/rubycritic/core/analysed_module.rb +66 -0
  32. data/lib/rubycritic/{location.rb → core/location.rb} +17 -2
  33. data/lib/rubycritic/core/rating.rb +30 -0
  34. data/lib/rubycritic/{smell.rb → core/smell.rb} +22 -13
  35. data/lib/rubycritic/generators/html/assets/javascripts/application.js +104 -0
  36. data/lib/rubycritic/generators/html/assets/javascripts/highcharts.src-4.0.1.js +17672 -0
  37. data/lib/rubycritic/generators/html/assets/javascripts/jquery.floatThead-v1.2.7.js +754 -0
  38. data/lib/rubycritic/generators/html/assets/javascripts/jquery.scrollTo-1.4.11.js +186 -0
  39. data/lib/rubycritic/generators/html/assets/javascripts/jquery.tablesorter.js +2089 -0
  40. data/lib/rubycritic/generators/html/assets/javascripts/jquery.timeago-v1.4.1.js +214 -0
  41. data/lib/rubycritic/generators/html/assets/stylesheets/application.css +303 -0
  42. data/lib/rubycritic/{report_generators → generators/html}/assets/stylesheets/prettify.custom_theme.css +1 -4
  43. data/lib/rubycritic/generators/html/base.rb +52 -0
  44. data/lib/rubycritic/generators/html/code_file.rb +40 -0
  45. data/lib/rubycritic/generators/html/code_index.rb +26 -0
  46. data/lib/rubycritic/generators/html/line.rb +37 -0
  47. data/lib/rubycritic/generators/html/overview.rb +27 -0
  48. data/lib/rubycritic/generators/html/smells_index.rb +38 -0
  49. data/lib/rubycritic/generators/html/templates/code_file.html.erb +38 -0
  50. data/lib/rubycritic/generators/html/templates/code_index.html.erb +30 -0
  51. data/lib/rubycritic/generators/html/templates/layouts/application.html.erb +34 -0
  52. data/lib/rubycritic/generators/html/templates/overview.html.erb +5 -0
  53. data/lib/rubycritic/generators/html/templates/smells_index.html.erb +26 -0
  54. data/lib/rubycritic/{report_generators → generators/html}/templates/smelly_line.html.erb +1 -1
  55. data/lib/rubycritic/generators/html/turbulence.rb +17 -0
  56. data/lib/rubycritic/generators/html/view_helpers.rb +43 -0
  57. data/lib/rubycritic/generators/html_report.rb +66 -0
  58. data/lib/rubycritic/generators/json/simple.rb +30 -0
  59. data/lib/rubycritic/generators/json_report.rb +23 -0
  60. data/lib/rubycritic/reporter.rb +20 -0
  61. data/lib/rubycritic/revision_comparator.rb +27 -29
  62. data/lib/rubycritic/serializer.rb +32 -0
  63. data/lib/rubycritic/smells_status_setter.rb +7 -16
  64. data/lib/rubycritic/source_control_systems/base.rb +37 -0
  65. data/lib/rubycritic/source_control_systems/double.rb +18 -0
  66. data/lib/rubycritic/source_control_systems/git.rb +41 -37
  67. data/lib/rubycritic/source_control_systems/mercurial.rb +29 -0
  68. data/lib/rubycritic/source_locator.rb +25 -13
  69. data/lib/rubycritic/version.rb +1 -1
  70. data/lib/rubycritic.rb +17 -22
  71. data/rubycritic.gemspec +10 -7
  72. data/test/analysers_test_helper.rb +3 -0
  73. data/test/lib/rubycritic/analysers/churn_test.rb +33 -0
  74. data/test/lib/rubycritic/analysers/complexity_test.rb +16 -0
  75. data/test/lib/rubycritic/analysers/helpers/methods_counter_test.rb +29 -0
  76. data/test/lib/rubycritic/analysers/helpers/modules_locator_test.rb +53 -0
  77. data/test/lib/rubycritic/analysers/smells/flay_test.rb +39 -0
  78. data/test/lib/rubycritic/analysers/smells/flog_test.rb +26 -0
  79. data/test/lib/rubycritic/analysers/smells/reek_test.rb +33 -0
  80. data/test/lib/rubycritic/configuration_test.rb +29 -0
  81. data/test/lib/rubycritic/core/analysed_module_test.rb +88 -0
  82. data/test/lib/rubycritic/{location_test.rb → core/location_test.rb} +8 -4
  83. data/test/lib/rubycritic/core/smell_test.rb +72 -0
  84. data/test/lib/rubycritic/{smells_array_test.rb → core/smells_array_test.rb} +1 -1
  85. data/test/lib/rubycritic/report_generators/turbulence_test.rb +17 -0
  86. data/test/lib/rubycritic/report_generators/view_helpers_test.rb +83 -0
  87. data/test/lib/rubycritic/smells_status_setter_test.rb +5 -5
  88. data/test/lib/rubycritic/source_control_systems/base_test.rb +29 -0
  89. data/test/lib/rubycritic/source_control_systems/double_test.rb +11 -0
  90. data/test/lib/rubycritic/source_control_systems/git_test.rb +13 -0
  91. data/test/lib/rubycritic/source_control_systems/interfaces/basic.rb +7 -0
  92. data/test/lib/rubycritic/source_control_systems/interfaces/time_travel.rb +7 -0
  93. data/test/lib/rubycritic/source_control_systems/mercurial_test.rb +11 -0
  94. data/test/lib/rubycritic/source_locator_test.rb +42 -18
  95. data/test/lib/rubycritic/version_test.rb +1 -0
  96. data/test/samples/empty.rb +0 -0
  97. data/test/samples/flay/smelly.rb +8 -0
  98. data/test/samples/flay/smelly2.rb +8 -0
  99. data/test/samples/flog/complex.rb +11 -0
  100. data/test/samples/flog/smelly.rb +7 -2
  101. data/test/samples/location/file0_symlink.rb +0 -0
  102. data/test/samples/methods_count.rb +7 -0
  103. data/test/samples/module_names.rb +18 -0
  104. data/test/samples/reek/not_smelly.rb +31 -3
  105. data/test/samples/unparsable.rb +1 -0
  106. data/test/test_helper.rb +39 -0
  107. metadata +178 -53
  108. data/SPEC.md +0 -58
  109. data/lib/rubycritic/analysers/flog.rb +0 -20
  110. data/lib/rubycritic/analysers/reek.rb +0 -15
  111. data/lib/rubycritic/cli.rb +0 -25
  112. data/lib/rubycritic/report_generators/assets/javascripts/application.js +0 -25
  113. data/lib/rubycritic/report_generators/assets/stylesheets/application.css +0 -26
  114. data/lib/rubycritic/report_generators/base_generator.rb +0 -42
  115. data/lib/rubycritic/report_generators/file_generator.rb +0 -42
  116. data/lib/rubycritic/report_generators/index_generator.rb +0 -28
  117. data/lib/rubycritic/report_generators/line_generator.rb +0 -27
  118. data/lib/rubycritic/report_generators/reporter.rb +0 -45
  119. data/lib/rubycritic/report_generators/templates/file.html.erb +0 -3
  120. data/lib/rubycritic/report_generators/templates/index.html.erb +0 -14
  121. data/lib/rubycritic/report_generators/templates/layouts/application.html.erb +0 -19
  122. data/lib/rubycritic/report_generators/view_helpers.rb +0 -26
  123. data/lib/rubycritic/smell_adapters/flog.rb +0 -41
  124. data/lib/rubycritic/smell_adapters/reek.rb +0 -35
  125. data/lib/rubycritic/smells_aggregator.rb +0 -29
  126. data/lib/rubycritic/smelly_pathnames_serializer.rb +0 -34
  127. data/lib/rubycritic/source_control_systems/source_control_system.rb +0 -42
  128. data/test/lib/rubycritic/metric_adapters/flog_adapter_test.rb +0 -25
  129. data/test/lib/rubycritic/metric_adapters/reek_adapter_test.rb +0 -34
  130. data/test/lib/rubycritic/smell_test.rb +0 -71
  131. data/test/lib/rubycritic/smells_aggregator_test.rb +0 -47
  132. data/test/lib/rubycritic/source_control_systems/source_control_system_test.rb +0 -26
  133. /data/lib/rubycritic/{report_generators → generators/html}/assets/javascripts/jquery-2.1.0.js +0 -0
  134. /data/lib/rubycritic/{report_generators/assets/javascripts/prettify.js → generators/html/assets/javascripts/prettify-4-Mar-2013.js} +0 -0
  135. /data/lib/rubycritic/{report_generators → generators/html}/templates/line.html.erb +0 -0
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: 0.0.5
4
+ version: 1.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Guilherme Simoes
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-04-14 00:00:00.000000000 Z
11
+ date: 2015-03-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: virtus
@@ -24,34 +24,68 @@ dependencies:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '1.0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: flay
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - '='
32
+ - !ruby/object:Gem::Version
33
+ version: 2.4.0
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - '='
39
+ - !ruby/object:Gem::Version
40
+ version: 2.4.0
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: flog
29
43
  requirement: !ruby/object:Gem::Requirement
30
44
  requirements:
31
45
  - - '='
32
46
  - !ruby/object:Gem::Version
33
- version: 4.2.0
47
+ version: 4.2.1
34
48
  type: :runtime
35
49
  prerelease: false
36
50
  version_requirements: !ruby/object:Gem::Requirement
37
51
  requirements:
38
52
  - - '='
39
53
  - !ruby/object:Gem::Version
40
- version: 4.2.0
54
+ version: 4.2.1
41
55
  - !ruby/object:Gem::Dependency
42
56
  name: reek
43
57
  requirement: !ruby/object:Gem::Requirement
44
58
  requirements:
45
59
  - - '='
46
60
  - !ruby/object:Gem::Version
47
- version: 1.3.6
61
+ version: 1.6.5
48
62
  type: :runtime
49
63
  prerelease: false
50
64
  version_requirements: !ruby/object:Gem::Requirement
51
65
  requirements:
52
66
  - - '='
53
67
  - !ruby/object:Gem::Version
54
- version: 1.3.6
68
+ version: 1.6.5
69
+ - !ruby/object:Gem::Dependency
70
+ name: parser
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: 2.2.0
76
+ - - "<"
77
+ - !ruby/object:Gem::Version
78
+ version: '3.0'
79
+ type: :runtime
80
+ prerelease: false
81
+ version_requirements: !ruby/object:Gem::Requirement
82
+ requirements:
83
+ - - ">="
84
+ - !ruby/object:Gem::Version
85
+ version: 2.2.0
86
+ - - "<"
87
+ - !ruby/object:Gem::Version
88
+ version: '3.0'
55
89
  - !ruby/object:Gem::Dependency
56
90
  name: bundler
57
91
  requirement: !ruby/object:Gem::Requirement
@@ -108,8 +142,22 @@ dependencies:
108
142
  - - "~>"
109
143
  - !ruby/object:Gem::Version
110
144
  version: '1.0'
111
- description: |2
112
- Ruby Critic is a tool that detects and reports smells in Ruby classes, modules and methods.
145
+ - !ruby/object:Gem::Dependency
146
+ name: rubocop
147
+ requirement: !ruby/object:Gem::Requirement
148
+ requirements:
149
+ - - '='
150
+ - !ruby/object:Gem::Version
151
+ version: 0.28.0
152
+ type: :development
153
+ prerelease: false
154
+ version_requirements: !ruby/object:Gem::Requirement
155
+ requirements:
156
+ - - '='
157
+ - !ruby/object:Gem::Version
158
+ version: 0.28.0
159
+ description: RubyCritic is a tool that wraps around various static analysis gems to
160
+ provide a quality report of your Ruby code.
113
161
  email:
114
162
  - guilherme.rdems@gmail.com
115
163
  executables:
@@ -118,65 +166,120 @@ extensions: []
118
166
  extra_rdoc_files: []
119
167
  files:
120
168
  - ".gitignore"
169
+ - ".rubocop.yml"
170
+ - ".travis.yml"
171
+ - CHANGELOG.md
121
172
  - CONTRIBUTING.md
122
173
  - Gemfile
123
174
  - LICENSE.txt
124
175
  - README.md
125
176
  - Rakefile
126
- - SPEC.md
127
177
  - bin/rubycritic
128
178
  - lib/rubycritic.rb
129
- - lib/rubycritic/analysers/config.reek
130
- - lib/rubycritic/analysers/flog.rb
131
- - lib/rubycritic/analysers/reek.rb
179
+ - lib/rubycritic/analysers/attributes.rb
180
+ - lib/rubycritic/analysers/churn.rb
181
+ - lib/rubycritic/analysers/complexity.rb
182
+ - lib/rubycritic/analysers/helpers/ast_node.rb
183
+ - lib/rubycritic/analysers/helpers/config.reek
184
+ - lib/rubycritic/analysers/helpers/flay.rb
185
+ - lib/rubycritic/analysers/helpers/flog.rb
186
+ - lib/rubycritic/analysers/helpers/methods_counter.rb
187
+ - lib/rubycritic/analysers/helpers/modules_locator.rb
188
+ - lib/rubycritic/analysers/helpers/parser.rb
189
+ - lib/rubycritic/analysers/helpers/reek.rb
190
+ - lib/rubycritic/analysers/smells/flay.rb
191
+ - lib/rubycritic/analysers/smells/flog.rb
192
+ - lib/rubycritic/analysers/smells/reek.rb
132
193
  - lib/rubycritic/analysers_runner.rb
133
- - lib/rubycritic/cli.rb
134
- - lib/rubycritic/location.rb
135
- - lib/rubycritic/report_generators/assets/javascripts/application.js
136
- - lib/rubycritic/report_generators/assets/javascripts/jquery-2.1.0.js
137
- - lib/rubycritic/report_generators/assets/javascripts/prettify.js
138
- - lib/rubycritic/report_generators/assets/stylesheets/application.css
139
- - lib/rubycritic/report_generators/assets/stylesheets/prettify.custom_theme.css
140
- - lib/rubycritic/report_generators/base_generator.rb
141
- - lib/rubycritic/report_generators/file_generator.rb
142
- - lib/rubycritic/report_generators/index_generator.rb
143
- - lib/rubycritic/report_generators/line_generator.rb
144
- - lib/rubycritic/report_generators/reporter.rb
145
- - lib/rubycritic/report_generators/templates/file.html.erb
146
- - lib/rubycritic/report_generators/templates/index.html.erb
147
- - lib/rubycritic/report_generators/templates/layouts/application.html.erb
148
- - lib/rubycritic/report_generators/templates/line.html.erb
149
- - lib/rubycritic/report_generators/templates/smelly_line.html.erb
150
- - lib/rubycritic/report_generators/view_helpers.rb
194
+ - lib/rubycritic/cli/application.rb
195
+ - lib/rubycritic/cli/options.rb
196
+ - lib/rubycritic/commands/ci.rb
197
+ - lib/rubycritic/commands/default.rb
198
+ - lib/rubycritic/commands/help.rb
199
+ - lib/rubycritic/commands/version.rb
200
+ - lib/rubycritic/configuration.rb
201
+ - lib/rubycritic/core/analysed_module.rb
202
+ - lib/rubycritic/core/location.rb
203
+ - lib/rubycritic/core/rating.rb
204
+ - lib/rubycritic/core/smell.rb
205
+ - lib/rubycritic/generators/html/assets/javascripts/application.js
206
+ - lib/rubycritic/generators/html/assets/javascripts/highcharts.src-4.0.1.js
207
+ - lib/rubycritic/generators/html/assets/javascripts/jquery-2.1.0.js
208
+ - lib/rubycritic/generators/html/assets/javascripts/jquery.floatThead-v1.2.7.js
209
+ - lib/rubycritic/generators/html/assets/javascripts/jquery.scrollTo-1.4.11.js
210
+ - lib/rubycritic/generators/html/assets/javascripts/jquery.tablesorter.js
211
+ - lib/rubycritic/generators/html/assets/javascripts/jquery.timeago-v1.4.1.js
212
+ - lib/rubycritic/generators/html/assets/javascripts/prettify-4-Mar-2013.js
213
+ - lib/rubycritic/generators/html/assets/stylesheets/application.css
214
+ - lib/rubycritic/generators/html/assets/stylesheets/prettify.custom_theme.css
215
+ - lib/rubycritic/generators/html/base.rb
216
+ - lib/rubycritic/generators/html/code_file.rb
217
+ - lib/rubycritic/generators/html/code_index.rb
218
+ - lib/rubycritic/generators/html/line.rb
219
+ - lib/rubycritic/generators/html/overview.rb
220
+ - lib/rubycritic/generators/html/smells_index.rb
221
+ - lib/rubycritic/generators/html/templates/code_file.html.erb
222
+ - lib/rubycritic/generators/html/templates/code_index.html.erb
223
+ - lib/rubycritic/generators/html/templates/layouts/application.html.erb
224
+ - lib/rubycritic/generators/html/templates/line.html.erb
225
+ - lib/rubycritic/generators/html/templates/overview.html.erb
226
+ - lib/rubycritic/generators/html/templates/smells_index.html.erb
227
+ - lib/rubycritic/generators/html/templates/smelly_line.html.erb
228
+ - lib/rubycritic/generators/html/turbulence.rb
229
+ - lib/rubycritic/generators/html/view_helpers.rb
230
+ - lib/rubycritic/generators/html_report.rb
231
+ - lib/rubycritic/generators/json/simple.rb
232
+ - lib/rubycritic/generators/json_report.rb
233
+ - lib/rubycritic/reporter.rb
151
234
  - lib/rubycritic/revision_comparator.rb
152
- - lib/rubycritic/smell.rb
153
- - lib/rubycritic/smell_adapters/flog.rb
154
- - lib/rubycritic/smell_adapters/reek.rb
155
- - lib/rubycritic/smells_aggregator.rb
235
+ - lib/rubycritic/serializer.rb
156
236
  - lib/rubycritic/smells_status_setter.rb
157
- - lib/rubycritic/smelly_pathnames_serializer.rb
237
+ - lib/rubycritic/source_control_systems/base.rb
238
+ - lib/rubycritic/source_control_systems/double.rb
158
239
  - lib/rubycritic/source_control_systems/git.rb
159
- - lib/rubycritic/source_control_systems/source_control_system.rb
240
+ - lib/rubycritic/source_control_systems/mercurial.rb
160
241
  - lib/rubycritic/source_locator.rb
161
242
  - lib/rubycritic/version.rb
162
243
  - rubycritic.gemspec
163
- - test/lib/rubycritic/location_test.rb
164
- - test/lib/rubycritic/metric_adapters/flog_adapter_test.rb
165
- - test/lib/rubycritic/metric_adapters/reek_adapter_test.rb
166
- - test/lib/rubycritic/smell_test.rb
167
- - test/lib/rubycritic/smells_aggregator_test.rb
168
- - test/lib/rubycritic/smells_array_test.rb
244
+ - test/analysers_test_helper.rb
245
+ - test/lib/rubycritic/analysers/churn_test.rb
246
+ - test/lib/rubycritic/analysers/complexity_test.rb
247
+ - test/lib/rubycritic/analysers/helpers/methods_counter_test.rb
248
+ - test/lib/rubycritic/analysers/helpers/modules_locator_test.rb
249
+ - test/lib/rubycritic/analysers/smells/flay_test.rb
250
+ - test/lib/rubycritic/analysers/smells/flog_test.rb
251
+ - test/lib/rubycritic/analysers/smells/reek_test.rb
252
+ - test/lib/rubycritic/configuration_test.rb
253
+ - test/lib/rubycritic/core/analysed_module_test.rb
254
+ - test/lib/rubycritic/core/location_test.rb
255
+ - test/lib/rubycritic/core/smell_test.rb
256
+ - test/lib/rubycritic/core/smells_array_test.rb
257
+ - test/lib/rubycritic/report_generators/turbulence_test.rb
258
+ - test/lib/rubycritic/report_generators/view_helpers_test.rb
169
259
  - test/lib/rubycritic/smells_status_setter_test.rb
170
- - test/lib/rubycritic/source_control_systems/source_control_system_test.rb
260
+ - test/lib/rubycritic/source_control_systems/base_test.rb
261
+ - test/lib/rubycritic/source_control_systems/double_test.rb
262
+ - test/lib/rubycritic/source_control_systems/git_test.rb
263
+ - test/lib/rubycritic/source_control_systems/interfaces/basic.rb
264
+ - test/lib/rubycritic/source_control_systems/interfaces/time_travel.rb
265
+ - test/lib/rubycritic/source_control_systems/mercurial_test.rb
171
266
  - test/lib/rubycritic/source_locator_test.rb
172
267
  - test/lib/rubycritic/version_test.rb
268
+ - test/samples/empty.rb
269
+ - test/samples/flay/smelly.rb
270
+ - test/samples/flay/smelly2.rb
271
+ - test/samples/flog/complex.rb
173
272
  - test/samples/flog/smelly.rb
174
273
  - test/samples/location/dir1/file1.rb
175
274
  - test/samples/location/file0.rb
275
+ - test/samples/location/file0_symlink.rb
176
276
  - test/samples/location/file_with_different_extension.py
177
277
  - test/samples/location/file_with_no_extension
278
+ - test/samples/methods_count.rb
279
+ - test/samples/module_names.rb
178
280
  - test/samples/reek/not_smelly.rb
179
281
  - test/samples/reek/smelly.rb
282
+ - test/samples/unparsable.rb
180
283
  - test/test_helper.rb
181
284
  homepage: https://github.com/whitesmith/rubycritic
182
285
  licenses:
@@ -190,7 +293,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
190
293
  requirements:
191
294
  - - ">="
192
295
  - !ruby/object:Gem::Version
193
- version: '0'
296
+ version: 1.9.3
194
297
  required_rubygems_version: !ruby/object:Gem::Requirement
195
298
  requirements:
196
299
  - - ">="
@@ -198,26 +301,48 @@ required_rubygems_version: !ruby/object:Gem::Requirement
198
301
  version: '0'
199
302
  requirements: []
200
303
  rubyforge_project:
201
- rubygems_version: 2.1.11
304
+ rubygems_version: 2.4.1
202
305
  signing_key:
203
306
  specification_version: 4
204
- summary: Ruby code smell detector
307
+ summary: RubyCritic is a Ruby code quality reporter
205
308
  test_files:
206
- - test/lib/rubycritic/location_test.rb
207
- - test/lib/rubycritic/metric_adapters/flog_adapter_test.rb
208
- - test/lib/rubycritic/metric_adapters/reek_adapter_test.rb
209
- - test/lib/rubycritic/smell_test.rb
210
- - test/lib/rubycritic/smells_aggregator_test.rb
211
- - test/lib/rubycritic/smells_array_test.rb
309
+ - test/analysers_test_helper.rb
310
+ - test/lib/rubycritic/analysers/churn_test.rb
311
+ - test/lib/rubycritic/analysers/complexity_test.rb
312
+ - test/lib/rubycritic/analysers/helpers/methods_counter_test.rb
313
+ - test/lib/rubycritic/analysers/helpers/modules_locator_test.rb
314
+ - test/lib/rubycritic/analysers/smells/flay_test.rb
315
+ - test/lib/rubycritic/analysers/smells/flog_test.rb
316
+ - test/lib/rubycritic/analysers/smells/reek_test.rb
317
+ - test/lib/rubycritic/configuration_test.rb
318
+ - test/lib/rubycritic/core/analysed_module_test.rb
319
+ - test/lib/rubycritic/core/location_test.rb
320
+ - test/lib/rubycritic/core/smell_test.rb
321
+ - test/lib/rubycritic/core/smells_array_test.rb
322
+ - test/lib/rubycritic/report_generators/turbulence_test.rb
323
+ - test/lib/rubycritic/report_generators/view_helpers_test.rb
212
324
  - test/lib/rubycritic/smells_status_setter_test.rb
213
- - test/lib/rubycritic/source_control_systems/source_control_system_test.rb
325
+ - test/lib/rubycritic/source_control_systems/base_test.rb
326
+ - test/lib/rubycritic/source_control_systems/double_test.rb
327
+ - test/lib/rubycritic/source_control_systems/git_test.rb
328
+ - test/lib/rubycritic/source_control_systems/interfaces/basic.rb
329
+ - test/lib/rubycritic/source_control_systems/interfaces/time_travel.rb
330
+ - test/lib/rubycritic/source_control_systems/mercurial_test.rb
214
331
  - test/lib/rubycritic/source_locator_test.rb
215
332
  - test/lib/rubycritic/version_test.rb
333
+ - test/samples/empty.rb
334
+ - test/samples/flay/smelly.rb
335
+ - test/samples/flay/smelly2.rb
336
+ - test/samples/flog/complex.rb
216
337
  - test/samples/flog/smelly.rb
217
338
  - test/samples/location/dir1/file1.rb
218
339
  - test/samples/location/file0.rb
340
+ - test/samples/location/file0_symlink.rb
219
341
  - test/samples/location/file_with_different_extension.py
220
342
  - test/samples/location/file_with_no_extension
343
+ - test/samples/methods_count.rb
344
+ - test/samples/module_names.rb
221
345
  - test/samples/reek/not_smelly.rb
222
346
  - test/samples/reek/smelly.rb
347
+ - test/samples/unparsable.rb
223
348
  - test/test_helper.rb
data/SPEC.md DELETED
@@ -1,58 +0,0 @@
1
- Ruby Critic
2
- ===========
3
-
4
- Ruby Critic is a tool that detects and reports smells in Ruby code.
5
-
6
- Inspired by [RuboCop][1], [Rails Best Practices][2] and [Code Climate][3], Ruby Critic aims to better help you refactor your code. By making use of Ruby's rich ecosystem of code metrics tools, Ruby Critic generates high-quality visualizations and insightful code quality reports.
7
-
8
- [1]: https://github.com/bbatsov/rubocop/
9
- [2]: https://github.com/railsbp/rails_best_practices
10
- [3]: https://codeclimate.com/
11
-
12
- Installation
13
- ------------
14
-
15
- Add this line to your application's Gemfile:
16
-
17
- ```ruby
18
- gem "rubycritic"
19
- ```
20
-
21
- And then execute:
22
-
23
- ```bash
24
- $ bundle
25
- ```
26
-
27
- Or just install it yourself:
28
-
29
- ```bash
30
- $ gem install rubycritic
31
- ```
32
-
33
- Usage
34
- -----
35
-
36
- Running `rubycritic` with no arguments will check all Ruby source files in the
37
- current directory:
38
-
39
- ```bash
40
- $ rubycritic
41
- ```
42
-
43
- Alternatively you can pass `rubycritic` a list of files and directories to check:
44
-
45
- ```bash
46
- $ rubycritic app lib/foo.rb
47
- ```
48
-
49
- Options
50
- -------
51
-
52
- To specify an output file for the results:
53
-
54
- ```bash
55
- $ rubycritic -o output_file
56
- ```
57
-
58
- The output format is determined by the file extension or by using the `-f` option. Current options are: `text`, `html`, `yaml` and `json`.
@@ -1,20 +0,0 @@
1
- require "flog"
2
-
3
- module Rubycritic
4
- module Analyser
5
-
6
- class Flog < ::Flog
7
- DEFAULT_OPTIONS = {
8
- :all => true,
9
- :continue => true,
10
- :methods => true
11
- }
12
-
13
- def initialize(paths)
14
- super(DEFAULT_OPTIONS)
15
- flog(*paths)
16
- end
17
- end
18
-
19
- end
20
- end
@@ -1,15 +0,0 @@
1
- require "reek"
2
-
3
- module Rubycritic
4
- module Analyser
5
-
6
- class Reek < ::Reek::Examiner
7
- DEFAULT_CONFIG_FILES = [File.expand_path("../config.reek", __FILE__)]
8
-
9
- def initialize(paths)
10
- super(Array(paths), DEFAULT_CONFIG_FILES)
11
- end
12
- end
13
-
14
- end
15
- end
@@ -1,25 +0,0 @@
1
- require "optparse"
2
- require "rubycritic"
3
-
4
- module Rubycritic
5
-
6
- OptionParser.new do |opts|
7
- opts.banner = "Usage: rubycritic [options] [paths]"
8
-
9
- opts.on_tail("-v", "--version", "Show this version") do
10
- require "rubycritic/version"
11
- puts VERSION
12
- exit 0
13
- end
14
-
15
- opts.on_tail("-h", "--help", "Show this message") do
16
- puts opts
17
- exit 0
18
- end
19
- end.parse!
20
-
21
- ARGV << "." if ARGV.empty?
22
- puts "New critique at #{Rubycritic.new.critique(ARGV)}"
23
- exit 0
24
-
25
- end
@@ -1,25 +0,0 @@
1
- prettyPrint();
2
-
3
- highlightLineFromFragment();
4
-
5
- function highlightLineFromFragment() {
6
- highlightLine(window.location.hash)
7
- }
8
-
9
- $(".js-file-code").on("click", ".js-smell-location", highlightSmellyLine);
10
-
11
- function highlightSmellyLine() {
12
- var lineId = "#" + this.href.split("#")[1];
13
- $(".js-file-code li").removeClass("highlight");
14
- highlightLine(lineId);
15
- }
16
-
17
- function highlightLine(lineReference) {
18
- $(lineReference).addClass("highlight");
19
- }
20
-
21
- $("#js-toggle-smells").on("click", toggleSmells);
22
-
23
- function toggleSmells() {
24
- $(".js-smells").toggle();
25
- }
@@ -1,26 +0,0 @@
1
- .smells {
2
- margin: 2px 0 22px 0;
3
- padding-left: 0;
4
- border: 1px solid #000;
5
- background-color: #DDD;
6
- white-space: normal;
7
- list-style-type: disc;
8
- }
9
-
10
- .smell {
11
- margin: 5px 5px 5px 30px;
12
- font-size: 24px;
13
- }
14
-
15
- .smell.new {
16
- color: #F00;
17
- }
18
-
19
- .smell.old {
20
- color: #FA0;
21
- }
22
-
23
- .smell .description {
24
- color: #000;
25
- font-size: initial;
26
- }
@@ -1,42 +0,0 @@
1
- require "rubycritic/report_generators/view_helpers"
2
-
3
- module Rubycritic
4
-
5
- class BaseGenerator
6
- REPORT_DIR = File.expand_path("tmp/rubycritic", Dir.getwd)
7
- TEMPLATES_DIR = File.expand_path("../templates", __FILE__)
8
-
9
- include ViewHelpers
10
-
11
- def file_href
12
- "file://#{file_pathname}"
13
- end
14
-
15
- def file_pathname
16
- File.join(file_directory, file_name)
17
- end
18
-
19
- def file_directory
20
- raise NotImplementedError.new("You must implement the file_directory method.")
21
- end
22
-
23
- def file_name
24
- raise NotImplementedError.new("You must implement the file_name method.")
25
- end
26
-
27
- def render
28
- raise NotImplementedError.new("You must implement the render method.")
29
- end
30
-
31
- def get_binding
32
- binding
33
- end
34
-
35
- private
36
-
37
- def root_directory
38
- REPORT_DIR
39
- end
40
- end
41
-
42
- end
@@ -1,42 +0,0 @@
1
- require "erb"
2
- require "rubycritic/report_generators/base_generator"
3
- require "rubycritic/report_generators/line_generator"
4
-
5
- module Rubycritic
6
-
7
- class FileGenerator < BaseGenerator
8
- LINE_NUMBER_OFFSET = 1
9
- FILE_TEMPLATE = ERB.new(File.read(File.join(TEMPLATES_DIR, "file.html.erb")))
10
- LAYOUT_TEMPLATE = ERB.new(File.read(File.join(TEMPLATES_DIR, "layouts", "application.html.erb")))
11
-
12
- def initialize(pathname, smells)
13
- @pathname = pathname
14
- @smells = smells
15
- end
16
-
17
- def file_directory
18
- File.join(REPORT_DIR, File.dirname(@pathname))
19
- end
20
-
21
- def file_name
22
- "#{analysed_file_name}.html"
23
- end
24
-
25
- def analysed_file_name
26
- @pathname.basename.sub_ext("")
27
- end
28
-
29
- def render
30
- file_code = ""
31
- File.readlines(@pathname).each.with_index(LINE_NUMBER_OFFSET) do |line_text, line_number|
32
- location = Location.new(@pathname, line_number)
33
- line_smells = @smells.select { |smell| smell.located_in?(location) }
34
- file_code << LineGenerator.new(line_text, line_smells).render
35
- end
36
-
37
- file_body = FILE_TEMPLATE.result(get_binding { file_code })
38
- LAYOUT_TEMPLATE.result(get_binding { file_body })
39
- end
40
- end
41
-
42
- end
@@ -1,28 +0,0 @@
1
- require "erb"
2
- require "rubycritic/report_generators/base_generator"
3
-
4
- module Rubycritic
5
-
6
- class IndexGenerator < BaseGenerator
7
- INDEX_TEMPLATE = ERB.new(File.read(File.join(TEMPLATES_DIR, "index.html.erb")))
8
- LAYOUT_TEMPLATE = ERB.new(File.read(File.join(TEMPLATES_DIR, "layouts", "application.html.erb")))
9
-
10
- def initialize(file_generators)
11
- @file_generators = file_generators.sort { |a, b| a.analysed_file_name <=> b.analysed_file_name }
12
- end
13
-
14
- def file_directory
15
- REPORT_DIR
16
- end
17
-
18
- def file_name
19
- "index.html"
20
- end
21
-
22
- def render
23
- index_body = INDEX_TEMPLATE.result(get_binding)
24
- LAYOUT_TEMPLATE.result(get_binding { index_body })
25
- end
26
- end
27
-
28
- end
@@ -1,27 +0,0 @@
1
- require "erb"
2
- require "rubycritic/report_generators/base_generator"
3
- require "cgi"
4
-
5
- module Rubycritic
6
-
7
- class LineGenerator < BaseGenerator
8
- NORMAL_TEMPLATE = ERB.new(File.read(File.join(TEMPLATES_DIR, "line.html.erb")))
9
- SMELLY_TEMPLATE = ERB.new(File.read(File.join(TEMPLATES_DIR, "smelly_line.html.erb")))
10
-
11
- def initialize(text, smells)
12
- @text = CGI::escapeHTML(text.chomp)
13
- @smells = smells
14
- @template =
15
- if @smells.empty?
16
- NORMAL_TEMPLATE
17
- else
18
- SMELLY_TEMPLATE
19
- end
20
- end
21
-
22
- def render
23
- @template.result(binding).delete("\n") + "\n"
24
- end
25
- end
26
-
27
- end