rubocop 0.26.1 → 0.27.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of rubocop might be problematic. Click here for more details.

Files changed (155) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +5 -0
  3. data/.rubocop_todo.yml +10 -6
  4. data/.travis.yml +2 -0
  5. data/CHANGELOG.md +30 -0
  6. data/README.md +9 -2
  7. data/assets/logo.png +0 -0
  8. data/assets/output.html.erb +68 -65
  9. data/config/default.yml +42 -7
  10. data/config/disabled.yml +5 -0
  11. data/config/enabled.yml +32 -7
  12. data/lib/rubocop.rb +10 -2
  13. data/lib/rubocop/comment_config.rb +11 -17
  14. data/lib/rubocop/config.rb +20 -16
  15. data/lib/rubocop/config_loader.rb +8 -12
  16. data/lib/rubocop/cop/cop.rb +13 -12
  17. data/lib/rubocop/cop/lint/block_alignment.rb +4 -6
  18. data/lib/rubocop/cop/lint/def_end_alignment.rb +2 -2
  19. data/lib/rubocop/cop/lint/require_parentheses.rb +1 -1
  20. data/lib/rubocop/cop/lint/useless_access_modifier.rb +2 -3
  21. data/lib/rubocop/cop/lint/useless_setter_call.rb +2 -2
  22. data/lib/rubocop/cop/metrics/abc_size.rb +27 -0
  23. data/lib/rubocop/cop/metrics/block_nesting.rb +2 -4
  24. data/lib/rubocop/cop/metrics/class_length.rb +1 -1
  25. data/lib/rubocop/cop/metrics/line_length.rb +2 -5
  26. data/lib/rubocop/cop/metrics/method_length.rb +2 -2
  27. data/lib/rubocop/cop/mixin/autocorrect_alignment.rb +24 -15
  28. data/lib/rubocop/cop/mixin/autocorrect_unless_changing_ast.rb +15 -2
  29. data/lib/rubocop/cop/mixin/empty_lines_around_body.rb +63 -0
  30. data/lib/rubocop/cop/mixin/end_keyword_alignment.rb +1 -1
  31. data/lib/rubocop/cop/mixin/if_node.rb +3 -1
  32. data/lib/rubocop/cop/mixin/method_complexity.rb +3 -3
  33. data/lib/rubocop/cop/mixin/{on_method.rb → on_method_def.rb} +3 -3
  34. data/lib/rubocop/cop/mixin/space_after_punctuation.rb +2 -2
  35. data/lib/rubocop/cop/mixin/space_before_punctuation.rb +1 -1
  36. data/lib/rubocop/cop/mixin/statement_modifier.rb +2 -2
  37. data/lib/rubocop/cop/mixin/string_literals_help.rb +28 -0
  38. data/lib/rubocop/cop/rails/delegate.rb +2 -2
  39. data/lib/rubocop/cop/style/access_modifier_indentation.rb +2 -2
  40. data/lib/rubocop/cop/style/accessor_method_name.rb +2 -2
  41. data/lib/rubocop/cop/style/align_hash.rb +16 -12
  42. data/lib/rubocop/cop/style/align_parameters.rb +1 -1
  43. data/lib/rubocop/cop/style/and_or.rb +14 -6
  44. data/lib/rubocop/cop/style/array_join.rb +1 -1
  45. data/lib/rubocop/cop/style/block_comments.rb +16 -8
  46. data/lib/rubocop/cop/style/braces_around_hash_parameters.rb +6 -30
  47. data/lib/rubocop/cop/style/case_indentation.rb +20 -12
  48. data/lib/rubocop/cop/style/collection_methods.rb +4 -4
  49. data/lib/rubocop/cop/style/colon_method_call.rb +9 -0
  50. data/lib/rubocop/cop/style/comment_annotation.rb +1 -1
  51. data/lib/rubocop/cop/style/comment_indentation.rb +22 -22
  52. data/lib/rubocop/cop/style/def_with_parentheses.rb +2 -2
  53. data/lib/rubocop/cop/style/deprecated_hash_methods.rb +1 -1
  54. data/lib/rubocop/cop/style/double_negation.rb +6 -1
  55. data/lib/rubocop/cop/style/else_alignment.rb +93 -0
  56. data/lib/rubocop/cop/style/empty_line_between_defs.rb +1 -1
  57. data/lib/rubocop/cop/style/empty_lines.rb +1 -1
  58. data/lib/rubocop/cop/style/empty_lines_around_class_body.rb +34 -0
  59. data/lib/rubocop/cop/style/empty_lines_around_method_body.rb +37 -0
  60. data/lib/rubocop/cop/style/empty_lines_around_module_body.rb +30 -0
  61. data/lib/rubocop/cop/style/encoding.rb +1 -1
  62. data/lib/rubocop/cop/style/format_string.rb +4 -4
  63. data/lib/rubocop/cop/style/indent_array.rb +2 -2
  64. data/lib/rubocop/cop/style/indent_hash.rb +17 -12
  65. data/lib/rubocop/cop/style/indentation_width.rb +27 -19
  66. data/lib/rubocop/cop/style/method_call_parentheses.rb +3 -3
  67. data/lib/rubocop/cop/style/method_called_on_do_end_block.rb +1 -1
  68. data/lib/rubocop/cop/style/method_def_parentheses.rb +17 -11
  69. data/lib/rubocop/cop/style/method_name.rb +1 -1
  70. data/lib/rubocop/cop/style/multiline_operation_indentation.rb +174 -0
  71. data/lib/rubocop/cop/style/non_nil_check.rb +12 -15
  72. data/lib/rubocop/cop/style/not.rb +1 -1
  73. data/lib/rubocop/cop/style/percent_literal_delimiters.rb +12 -17
  74. data/lib/rubocop/cop/style/percent_q_literals.rb +1 -1
  75. data/lib/rubocop/cop/style/predicate_name.rb +2 -2
  76. data/lib/rubocop/cop/style/redundant_begin.rb +2 -2
  77. data/lib/rubocop/cop/style/redundant_return.rb +3 -3
  78. data/lib/rubocop/cop/style/redundant_self.rb +3 -3
  79. data/lib/rubocop/cop/style/regexp_literal.rb +17 -13
  80. data/lib/rubocop/cop/style/rescue_modifier.rb +2 -2
  81. data/lib/rubocop/cop/style/single_line_methods.rb +7 -4
  82. data/lib/rubocop/cop/style/space_after_method_name.rb +2 -2
  83. data/lib/rubocop/cop/style/space_around_equals_in_parameter_default.rb +17 -11
  84. data/lib/rubocop/cop/style/space_before_block_braces.rb +1 -1
  85. data/lib/rubocop/cop/style/space_inside_block_braces.rb +17 -14
  86. data/lib/rubocop/cop/style/space_inside_hash_literal_braces.rb +10 -6
  87. data/lib/rubocop/cop/style/string_literals.rb +13 -16
  88. data/lib/rubocop/cop/style/string_literals_in_interpolation.rb +41 -0
  89. data/lib/rubocop/cop/style/trailing_comma.rb +1 -3
  90. data/lib/rubocop/cop/style/trivial_accessors.rb +3 -3
  91. data/lib/rubocop/cop/style/unneeded_capital_w.rb +1 -1
  92. data/lib/rubocop/cop/style/unneeded_percent_q.rb +2 -2
  93. data/lib/rubocop/cop/style/word_array.rb +23 -19
  94. data/lib/rubocop/cop/team.rb +13 -26
  95. data/lib/rubocop/cop/util.rb +5 -0
  96. data/lib/rubocop/cop/variable_force/locatable.rb +7 -13
  97. data/lib/rubocop/formatter/disabled_config_formatter.rb +1 -1
  98. data/lib/rubocop/formatter/formatter_set.rb +9 -1
  99. data/lib/rubocop/formatter/html_formatter.rb +83 -55
  100. data/lib/rubocop/formatter/simple_text_formatter.rb +2 -2
  101. data/lib/rubocop/formatter/text_util.rb +25 -0
  102. data/lib/rubocop/options.rb +14 -7
  103. data/lib/rubocop/path_util.rb +11 -7
  104. data/lib/rubocop/runner.rb +7 -2
  105. data/lib/rubocop/version.rb +1 -1
  106. data/relnotes/v0.27.0.md +77 -0
  107. data/rubocop.gemspec +1 -1
  108. data/spec/fixtures/html_formatter/expected.html +495 -0
  109. data/spec/fixtures/html_formatter/project/app/controllers/application_controller.rb +5 -0
  110. data/spec/fixtures/html_formatter/project/app/controllers/books_controller.rb +74 -0
  111. data/spec/fixtures/html_formatter/project/app/models/book.rb +5 -0
  112. data/spec/rubocop/cli_spec.rb +56 -13
  113. data/spec/rubocop/cop/lint/invalid_character_literal_spec.rb +1 -1
  114. data/spec/rubocop/cop/metrics/abc_size_spec.rb +99 -0
  115. data/spec/rubocop/cop/rails/action_filter_spec.rb +1 -0
  116. data/spec/rubocop/cop/style/access_modifier_indentation_spec.rb +23 -1
  117. data/spec/rubocop/cop/style/align_hash_spec.rb +13 -0
  118. data/spec/rubocop/cop/style/align_parameters_spec.rb +44 -33
  119. data/spec/rubocop/cop/style/blocks_spec.rb +8 -0
  120. data/spec/rubocop/cop/style/braces_around_hash_parameters_spec.rb +9 -9
  121. data/spec/rubocop/cop/style/case_indentation_spec.rb +3 -2
  122. data/spec/rubocop/cop/style/colon_method_call_spec.rb +5 -0
  123. data/spec/rubocop/cop/style/comment_indentation_spec.rb +6 -1
  124. data/spec/rubocop/cop/style/else_alignment_spec.rb +437 -0
  125. data/spec/rubocop/cop/style/empty_lines_around_class_body_spec.rb +75 -0
  126. data/spec/rubocop/cop/style/{empty_lines_around_body_spec.rb → empty_lines_around_method_body_spec.rb} +9 -50
  127. data/spec/rubocop/cop/style/empty_lines_around_module_body_spec.rb +79 -0
  128. data/spec/rubocop/cop/style/file_name_spec.rb +1 -1
  129. data/spec/rubocop/cop/style/format_string_spec.rb +12 -0
  130. data/spec/rubocop/cop/style/indent_array_spec.rb +6 -1
  131. data/spec/rubocop/cop/style/indent_hash_spec.rb +2 -1
  132. data/spec/rubocop/cop/style/indentation_width_spec.rb +765 -722
  133. data/spec/rubocop/cop/style/multiline_operation_indentation_spec.rb +414 -0
  134. data/spec/rubocop/cop/style/non_nil_check_spec.rb +86 -55
  135. data/spec/rubocop/cop/style/single_line_methods_spec.rb +5 -1
  136. data/spec/rubocop/cop/style/space_before_block_braces_spec.rb +2 -1
  137. data/spec/rubocop/cop/style/space_inside_block_braces_spec.rb +2 -1
  138. data/spec/rubocop/cop/style/string_literals_in_interpolation_spec.rb +63 -0
  139. data/spec/rubocop/cop/style/string_literals_spec.rb +2 -2
  140. data/spec/rubocop/cop/style/word_array_spec.rb +15 -1
  141. data/spec/rubocop/formatter/base_formatter_spec.rb +1 -1
  142. data/spec/rubocop/formatter/disabled_lines_formatter_spec.rb +0 -1
  143. data/spec/rubocop/formatter/formatter_set_spec.rb +9 -0
  144. data/spec/rubocop/formatter/html_formatter_spec.rb +25 -122
  145. data/spec/rubocop/formatter/offense_count_formatter_spec.rb +0 -1
  146. data/spec/rubocop/runner_spec.rb +1 -1
  147. data/spec/spec_helper.rb +12 -130
  148. data/spec/support/cop_helper.rb +72 -0
  149. data/spec/support/coverage.rb +15 -0
  150. data/spec/support/{offenses_matcher.rb → custom_matchers.rb} +28 -0
  151. data/spec/support/jruby_workaround.rb +15 -0
  152. data/spec/support/{isolated_environment.rb → shared_contexts.rb} +19 -0
  153. metadata +49 -14
  154. data/lib/rubocop/cop/style/empty_lines_around_body.rb +0 -75
  155. data/spec/support/shared_context.rb +0 -20
@@ -1,6 +1,7 @@
1
1
  # encoding: utf-8
2
2
 
3
3
  require 'rubocop/formatter/colorizable'
4
+ require 'rubocop/formatter/text_util'
4
5
 
5
6
  module RuboCop
6
7
  module Formatter
@@ -8,8 +9,7 @@ module RuboCop
8
9
  # Offenses are displayed at compact form - just the
9
10
  # location of the problem and the associated message.
10
11
  class SimpleTextFormatter < BaseFormatter
11
- include Colorizable
12
- include PathUtil
12
+ include Colorizable, PathUtil, TextUtil
13
13
 
14
14
  COLOR_FOR_SEVERITY = {
15
15
  refactor: :yellow,
@@ -0,0 +1,25 @@
1
+ # encoding: utf-8
2
+
3
+ module RuboCop
4
+ module Formatter
5
+ # Common logic for UI texts.
6
+ module TextUtil
7
+ module_function
8
+
9
+ def pluralize(number, thing, options = {})
10
+ text = ''
11
+
12
+ if number == 0 && options[:no_for_zero]
13
+ text = 'no'
14
+ else
15
+ text << number.to_s
16
+ end
17
+
18
+ text << " #{thing}"
19
+ text << 's' unless number == 1
20
+
21
+ text
22
+ end
23
+ end
24
+ end
25
+ end
@@ -63,6 +63,16 @@ module RuboCop
63
63
  ignore_dropped_options(args)
64
64
  convert_deprecated_options(args)
65
65
 
66
+ define_options(args).parse!(args)
67
+
68
+ validate_compatibility
69
+
70
+ [@options, args]
71
+ end
72
+
73
+ private
74
+
75
+ def define_options(args)
66
76
  OptionParser.new do |opts|
67
77
  opts.banner = 'Usage: rubocop [options] [file1, file2, ...]'
68
78
 
@@ -80,16 +90,13 @@ module RuboCop
80
90
  add_severity_option(opts)
81
91
  add_flags_with_optional_args(opts)
82
92
  add_boolean_flags(opts)
83
- end.parse!(args)
84
-
85
- if (incompat = @options.keys & EXITING_OPTIONS).size > 1
86
- fail ArgumentError, "Incompatible cli options: #{incompat.inspect}"
87
93
  end
88
-
89
- [@options, args]
90
94
  end
91
95
 
92
- private
96
+ def validate_compatibility
97
+ return unless (incompat = @options.keys & EXITING_OPTIONS).size > 1
98
+ fail ArgumentError, "Incompatible cli options: #{incompat.inspect}"
99
+ end
93
100
 
94
101
  def add_configuration_options(opts, args)
95
102
  option(opts, '-c', '--config FILE')
@@ -21,18 +21,22 @@ module RuboCop
21
21
  old_match = basename == pattern || File.fnmatch?(pattern, path)
22
22
  new_match = File.fnmatch?(pattern, path, File::FNM_PATHNAME)
23
23
  if old_match && !new_match
24
- instruction = if basename == pattern
25
- ". Change to '**/#{pattern}'."
26
- elsif pattern.end_with?('**')
27
- ". Change to '#{pattern}/*'."
28
- end
29
- warn("Warning: Deprecated pattern style '#{pattern}' in " \
30
- "#{config_path}#{instruction}")
24
+ issue_deprecation_warning(basename, pattern, config_path)
31
25
  end
32
26
  old_match || new_match
33
27
  when Regexp
34
28
  path =~ pattern
35
29
  end
36
30
  end
31
+
32
+ def issue_deprecation_warning(basename, pattern, config_path)
33
+ instruction = if basename == pattern
34
+ ". Change to '**/#{pattern}'."
35
+ elsif pattern.end_with?('**')
36
+ ". Change to '#{pattern}/*'."
37
+ end
38
+ warn("Warning: Deprecated pattern style '#{pattern}' in " \
39
+ "#{config_path}#{instruction}")
40
+ end
37
41
  end
38
42
  end
@@ -55,6 +55,13 @@ module RuboCop
55
55
 
56
56
  formatter_set.file_started(file, file_info(processed_source))
57
57
 
58
+ offenses = do_inspection_loop(file, processed_source)
59
+
60
+ formatter_set.file_finished(file, offenses.compact.sort.freeze)
61
+ offenses
62
+ end
63
+
64
+ def do_inspection_loop(file, processed_source)
58
65
  offenses = []
59
66
 
60
67
  # When running with --auto-correct, we need to inspect the file (which
@@ -76,8 +83,6 @@ module RuboCop
76
83
  processed_source = ProcessedSource.from_file(file)
77
84
  end
78
85
 
79
- formatter_set.file_finished(file, offenses.sort.freeze)
80
-
81
86
  offenses
82
87
  end
83
88
 
@@ -3,7 +3,7 @@
3
3
  module RuboCop
4
4
  # This module holds the RuboCop version information.
5
5
  module Version
6
- STRING = '0.26.1'
6
+ STRING = '0.27.0'
7
7
 
8
8
  MSG = '%s (using Parser %s, running on %s %s %s)'
9
9
 
@@ -0,0 +1,77 @@
1
+ ### New features
2
+
3
+ * [#1348](https://github.com/bbatsov/rubocop/issues/1348): New cop `ElseAlignment` checks alignment of `else` and `elsif` keywords. ([@jonas054][])
4
+ * [#1321](https://github.com/bbatsov/rubocop/issues/1321): New cop `MultilineOperationIndentation` checks indentation/alignment of binary operations if they span more than one line. ([@jonas054][])
5
+ * [#1077](https://github.com/bbatsov/rubocop/issues/1077): New cop `Metrics/AbcSize` checks the ABC metric, based on assignments, branches, and conditions. ([@jonas054][], [@jfelchner][])
6
+ * [#1352](https://github.com/bbatsov/rubocop/issues/1352): `WordArray` is now configurable with the `WordRegex` option. ([@bquorning][])
7
+ * [#1181](https://github.com/bbatsov/rubocop/issues/1181): New cop `Style/StringLiteralsInInterpolation` checks quotes inside interpolated expressions in strings. ([@jonas054][])
8
+ * [#872](https://github.com/bbatsov/rubocop/issues/872): `Style/IndentationWidth` is now configurable with the `Width` option. ([@jonas054][])
9
+ * [#1396](https://github.com/bbatsov/rubocop/issues/1396): Include `.opal` files by default. ([@bbatsov][])
10
+ * [#771](https://github.com/bbatsov/rubocop/issues/771): Three new `Style` cops, `EmptyLinesAroundMethodBody` , `EmptyLinesAroundClassBody` , and `EmptyLinesAroundModuleBody` replace the `EmptyLinesAroundBody` cop. ([@jonas054][])
11
+
12
+ ### Changes
13
+
14
+ * [#1084](https://github.com/bbatsov/rubocop/issues/1084): Disabled `Style/CollectionMethods` by default. ([@bbatsov][])
15
+
16
+ ### Bugs fixed
17
+
18
+ * `AlignHash` no longer skips multiline hashes that contain some elements on the same line. ([@mvz][])
19
+ * [#1349](https://github.com/bbatsov/rubocop/issues/1349): `BracesAroundHashParameters` no longer cleans up whitespace in autocorrect, as these extra corrections are likely to interfere with other cops' corrections. ([@jonas054][])
20
+ * [#1350](https://github.com/bbatsov/rubocop/issues/1350): Guard against `Blocks` cop introducing syntax errors in auto-correct. ([@jonas054][])
21
+ * [#1374](https://github.com/bbatsov/rubocop/issues/1374): To eliminate interference, auto-correction is now done by one cop at a time, with saving and re-parsing inbetween. ([@jonas054][])
22
+ * [#1388](https://github.com/bbatsov/rubocop/issues/1388): Fix a false positive in `FormatString`. ([@bbatsov][])
23
+ * [#1389](https://github.com/bbatsov/rubocop/issues/1389): Make `--out` to create parent directories. ([@yous][])
24
+ * Refine HTML formatter. ([@yujinakayama][])
25
+ * [#1410](https://github.com/bbatsov/rubocop/issues/1410): Handle specially Java primitive type references in `ColonMethodCall`. ([@bbatsov][])
26
+
27
+ [@bbatsov]: https://github.com/bbatsov
28
+ [@jonas054]: https://github.com/jonas054
29
+ [@yujinakayama]: https://github.com/yujinakayama
30
+ [@dblock]: https://github.com/dblock
31
+ [@nevir]: https://github.com/nevir
32
+ [@daviddavis]: https://github.com/daviddavis
33
+ [@sds]: https://github.com/sds
34
+ [@fancyremarker]: https://github.com/fancyremarker
35
+ [@sinisterchipmunk]: https://github.com/sinisterchipmunk
36
+ [@vonTronje]: https://github.com/vonTronje
37
+ [@agrimm]: https://github.com/agrimm
38
+ [@pmenglund]: https://github.com/pmenglund
39
+ [@chulkilee]: https://github.com/chulkilee
40
+ [@codez]: https://github.com/codez
41
+ [@emou]: https://github.com/emou
42
+ [@skanev]: http://github.com/skanev
43
+ [@claco]: http://github.com/claco
44
+ [@rifraf]: http://github.com/rifraf
45
+ [@scottmatthewman]: https://github.com/scottmatthewman
46
+ [@ma2gedev]: http://github.com/ma2gedev
47
+ [@jeremyolliver]: https://github.com/jeremyolliver
48
+ [@hannestyden]: https://github.com/hannestyden
49
+ [@geniou]: https://github.com/geniou
50
+ [@jkogara]: https://github.com/jkogara
51
+ [@tmorris-fiksu]: https://github.com/tmorris-fiksu
52
+ [@mockdeep]: https://github.com/mockdeep
53
+ [@hiroponz]: https://github.com/hiroponz
54
+ [@tamird]: https://github.com/tamird
55
+ [@fshowalter]: https://github.com/fshowalter
56
+ [@cschramm]: https://github.com/cschramm
57
+ [@bquorning]: https://github.com/bquorning
58
+ [@bcobb]: https://github.com/bcobb
59
+ [@irrationalfab]: https://github.com/irrationalfab
60
+ [@tommeier]: https://github.com/tommeier
61
+ [@sfeldon]: https://github.com/sfeldon
62
+ [@biinari]: https://github.com/biinari
63
+ [@barunio]: https://github.com/barunio
64
+ [@molawson]: https://github.com/molawson
65
+ [@wndhydrnt]: https://github.com/wndhydrnt
66
+ [@ggilder]: https://github.com/ggilder
67
+ [@salbertson]: https://github.com/salbertson
68
+ [@camilleldn]: https://github.com/camilleldn
69
+ [@mcls]: https://github.com/mcls
70
+ [@yous]: https://github.com/yous
71
+ [@vrthra]: https://github.com/vrthra
72
+ [@SkuliOskarsson]: https://github.com/SkuliOskarsson
73
+ [@jspanjers]: https://github.com/jspanjers
74
+ [@sch1zo]: https://github.com/sch1zo
75
+ [@smangelsdorf]: https://github.com/smangelsdorf
76
+ [@mvz]: https://github.com/mvz
77
+ [@jfelchner]: https://github.com/jfelchner
@@ -27,7 +27,7 @@ Gem::Specification.new do |s|
27
27
  s.summary = 'Automatic Ruby code style checking tool.'
28
28
 
29
29
  s.add_runtime_dependency('rainbow', '>= 1.99.1', '< 3.0')
30
- s.add_runtime_dependency('parser', '>= 2.2.0.pre.4', '< 3.0')
30
+ s.add_runtime_dependency('parser', '>= 2.2.0.pre.6', '< 3.0')
31
31
  s.add_runtime_dependency('powerpack', '~> 0.0.6')
32
32
  s.add_runtime_dependency('astrolabe', '~> 1.3')
33
33
  s.add_runtime_dependency('ruby-progressbar', '~> 1.4')
@@ -0,0 +1,495 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <meta charset='UTF-8' />
5
+ <title>RuboCop Inspection Report</title>
6
+
7
+ <style>
8
+ * {
9
+ -webkit-box-sizing: border-box;
10
+ -moz-box-sizing: border-box;
11
+ box-sizing: border-box;
12
+ }
13
+
14
+ body, html {
15
+ font-size: 62.5%;
16
+ }
17
+ body {
18
+ background-color: #ecedf0;
19
+ font-family: "Helvetica Neue",Helvetica,Arial,sans-serif;
20
+ margin: 0;
21
+ }
22
+ code {
23
+ font-family: Consolas, "Liberation Mono", Menlo, Courier, monospace;
24
+ font-size: 85%;
25
+ }
26
+ #header {
27
+ background: #f9f9f9;
28
+ color: #333;
29
+ border-bottom: 3px solid #ccc;
30
+ height: 50px;
31
+ padding: 0;
32
+ }
33
+ #header .logo {
34
+ float: left;
35
+ margin: 5px 12px 7px 20px;
36
+ width: 38px;
37
+ height: 38px;
38
+ }
39
+ #header .title {
40
+ display: inline-block;
41
+ float: left;
42
+ height: 50px;
43
+ font-size: 2.4rem;
44
+ letter-spacing: normal;
45
+ line-height: 50px;
46
+ margin: 0;
47
+ }
48
+
49
+ .information, #offenses {
50
+ width: 100%;
51
+ padding: 20px;
52
+ color: #333;
53
+ }
54
+ #offenses {
55
+ padding: 0 20px;
56
+ }
57
+
58
+ .information .infobox {
59
+ border-left: 3px solid;
60
+ border-radius: 4px;
61
+ background-color: #fff;
62
+ -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);
63
+ box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);
64
+ padding: 15px;
65
+ border-color: #0088cc;
66
+ font-size: 1.4rem;
67
+ }
68
+ .information .infobox .info-title {
69
+ font-size: 1.8rem;
70
+ line-height: 2.2rem;
71
+ margin: 0 0 0.5em;
72
+ }
73
+ .information .infobox ul {
74
+ list-style: none;
75
+ margin: 0;
76
+ padding: 0;
77
+ }
78
+ .information .infobox ul li {
79
+ line-height: 1.8rem
80
+ }
81
+
82
+ #offenses .offense-box {
83
+ border-radius: 4px;
84
+ margin-bottom: 20px;
85
+ background-color: #fff;
86
+ -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);
87
+ box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);
88
+ }
89
+ #offenses .offense-box .box-title h3 {
90
+ color: #33353f;
91
+ background-color: #f6f6f6;
92
+ font-size: 2rem;
93
+ line-height: 2rem;
94
+ display: block;
95
+ padding: 15px;
96
+ border-radius: 5px;
97
+ margin: 0;
98
+ }
99
+ #offenses .offense-box .offense-reports {
100
+ padding: 0 15px;
101
+ }
102
+ #offenses .offense-box .offense-reports .report {
103
+ border-bottom: 1px dotted #ddd;
104
+ padding: 15px 0px;
105
+ position: relative;
106
+ font-size: 1.3rem;
107
+ }
108
+ #offenses .offense-box .offense-reports .report:last-child {
109
+ border-bottom: none;
110
+ }
111
+ #offenses .offense-box .offense-reports .report pre code {
112
+ display: block;
113
+ background: #000;
114
+ color: #fff;
115
+ padding: 10px 15px;
116
+ border-radius: 5px;
117
+ line-height: 1.6rem;
118
+ }
119
+ #offenses .offense-box .offense-reports .report .location {
120
+ font-weight: bold;
121
+ }
122
+ #offenses .offense-box .offense-reports .report .message code {
123
+ padding: 0.3em;
124
+ background-color: rgba(0,0,0,0.07);
125
+ border-radius: 3px;
126
+ }
127
+ .severity {
128
+ text-transform: capitalize;
129
+ font-weight: bold;
130
+ }
131
+ .highlight {
132
+ padding: 2px;
133
+ border-radius: 2px;
134
+ font-weight: bold;
135
+ }
136
+
137
+ .severity.refactor {
138
+ color: rgba(237, 156, 40, 1.0);
139
+ }
140
+ .highlight.refactor {
141
+ background-color: rgba(237, 156, 40, 0.6);
142
+ border: 1px solid rgba(237, 156, 40, 0.4);
143
+ }
144
+
145
+ .severity.convention {
146
+ color: rgba(237, 156, 40, 1.0);
147
+ }
148
+ .highlight.convention {
149
+ background-color: rgba(237, 156, 40, 0.6);
150
+ border: 1px solid rgba(237, 156, 40, 0.4);
151
+ }
152
+
153
+ .severity.warning {
154
+ color: rgba(150, 40, 239, 1.0);
155
+ }
156
+ .highlight.warning {
157
+ background-color: rgba(150, 40, 239, 0.6);
158
+ border: 1px solid rgba(150, 40, 239, 0.4);
159
+ }
160
+
161
+ .severity.error {
162
+ color: rgba(210, 50, 45, 1.0);
163
+ }
164
+ .highlight.error {
165
+ background-color: rgba(210, 50, 45, 0.6);
166
+ border: 1px solid rgba(210, 50, 45, 0.4);
167
+ }
168
+
169
+ .severity.fatal {
170
+ color: rgba(210, 50, 45, 1.0);
171
+ }
172
+ .highlight.fatal {
173
+ background-color: rgba(210, 50, 45, 0.6);
174
+ border: 1px solid rgba(210, 50, 45, 0.4);
175
+ }
176
+
177
+ footer {
178
+ margin-bottom: 20px;
179
+ margin-right: 20px;
180
+ font-size: 1.3rem;
181
+ color: #777;
182
+ text-align: right;
183
+ }
184
+ </style>
185
+ </head>
186
+ <body>
187
+ <div id="header">
188
+ <img class="logo" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEwAAABMCAYAAADHl1ErAAAKQWlDQ1BJQ0Mg
189
+ UHJvZmlsZQAASA2dlndUU9kWh8+9N73QEiIgJfQaegkg0jtIFQRRiUmAUAKG
190
+ hCZ2RAVGFBEpVmRUwAFHhyJjRRQLg4Ji1wnyEFDGwVFEReXdjGsJ7601896a
191
+ /cdZ39nnt9fZZ+9917oAUPyCBMJ0WAGANKFYFO7rwVwSE8vE9wIYEAEOWAHA
192
+ 4WZmBEf4RALU/L09mZmoSMaz9u4ugGS72yy/UCZz1v9/kSI3QyQGAApF1TY8
193
+ fiYX5QKUU7PFGTL/BMr0lSkyhjEyFqEJoqwi48SvbPan5iu7yZiXJuShGlnO
194
+ Gbw0noy7UN6aJeGjjAShXJgl4GejfAdlvVRJmgDl9yjT0/icTAAwFJlfzOcm
195
+ oWyJMkUUGe6J8gIACJTEObxyDov5OWieAHimZ+SKBIlJYqYR15hp5ejIZvrx
196
+ s1P5YjErlMNN4Yh4TM/0tAyOMBeAr2+WRQElWW2ZaJHtrRzt7VnW5mj5v9nf
197
+ Hn5T/T3IevtV8Sbsz55BjJ5Z32zsrC+9FgD2JFqbHbO+lVUAtG0GQOXhrE/v
198
+ IADyBQC03pzzHoZsXpLE4gwnC4vs7GxzAZ9rLivoN/ufgm/Kv4Y595nL7vtW
199
+ O6YXP4EjSRUzZUXlpqemS0TMzAwOl89k/fcQ/+PAOWnNycMsnJ/AF/GF6FVR
200
+ 6JQJhIlou4U8gViQLmQKhH/V4X8YNicHGX6daxRodV8AfYU5ULhJB8hvPQBD
201
+ IwMkbj96An3rWxAxCsi+vGitka9zjzJ6/uf6Hwtcim7hTEEiU+b2DI9kciWi
202
+ LBmj34RswQISkAd0oAo0gS4wAixgDRyAM3AD3iAAhIBIEAOWAy5IAmlABLJB
203
+ PtgACkEx2AF2g2pwANSBetAEToI2cAZcBFfADXALDIBHQAqGwUswAd6BaQiC
204
+ 8BAVokGqkBakD5lC1hAbWgh5Q0FQOBQDxUOJkBCSQPnQJqgYKoOqoUNQPfQj
205
+ dBq6CF2D+qAH0CA0Bv0BfYQRmALTYQ3YALaA2bA7HAhHwsvgRHgVnAcXwNvh
206
+ SrgWPg63whfhG/AALIVfwpMIQMgIA9FGWAgb8URCkFgkAREha5EipAKpRZqQ
207
+ DqQbuY1IkXHkAwaHoWGYGBbGGeOHWYzhYlZh1mJKMNWYY5hWTBfmNmYQM4H5
208
+ gqVi1bGmWCesP3YJNhGbjS3EVmCPYFuwl7ED2GHsOxwOx8AZ4hxwfrgYXDJu
209
+ Na4Etw/XjLuA68MN4SbxeLwq3hTvgg/Bc/BifCG+Cn8cfx7fjx/GvyeQCVoE
210
+ a4IPIZYgJGwkVBAaCOcI/YQRwjRRgahPdCKGEHnEXGIpsY7YQbxJHCZOkxRJ
211
+ hiQXUiQpmbSBVElqIl0mPSa9IZPJOmRHchhZQF5PriSfIF8lD5I/UJQoJhRP
212
+ ShxFQtlOOUq5QHlAeUOlUg2obtRYqpi6nVpPvUR9Sn0vR5Mzl/OX48mtk6uR
213
+ a5Xrl3slT5TXl3eXXy6fJ18hf0r+pvy4AlHBQMFTgaOwVqFG4bTCPYVJRZqi
214
+ lWKIYppiiWKD4jXFUSW8koGStxJPqUDpsNIlpSEaQtOledK4tE20Otpl2jAd
215
+ Rzek+9OT6cX0H+i99AllJWVb5SjlHOUa5bPKUgbCMGD4M1IZpYyTjLuMj/M0
216
+ 5rnP48/bNq9pXv+8KZX5Km4qfJUilWaVAZWPqkxVb9UU1Z2qbapP1DBqJmph
217
+ atlq+9Uuq43Pp893ns+dXzT/5PyH6rC6iXq4+mr1w+o96pMamhq+GhkaVRqX
218
+ NMY1GZpumsma5ZrnNMe0aFoLtQRa5VrntV4wlZnuzFRmJbOLOaGtru2nLdE+
219
+ pN2rPa1jqLNYZ6NOs84TXZIuWzdBt1y3U3dCT0svWC9fr1HvoT5Rn62fpL9H
220
+ v1t/ysDQINpgi0GbwaihiqG/YZ5ho+FjI6qRq9Eqo1qjO8Y4Y7ZxivE+41sm
221
+ sImdSZJJjclNU9jU3lRgus+0zwxr5mgmNKs1u8eisNxZWaxG1qA5wzzIfKN5
222
+ m/krCz2LWIudFt0WXyztLFMt6ywfWSlZBVhttOqw+sPaxJprXWN9x4Zq42Oz
223
+ zqbd5rWtqS3fdr/tfTuaXbDdFrtOu8/2DvYi+yb7MQc9h3iHvQ732HR2KLuE
224
+ fdUR6+jhuM7xjOMHJ3snsdNJp9+dWc4pzg3OowsMF/AX1C0YctFx4bgccpEu
225
+ ZC6MX3hwodRV25XjWuv6zE3Xjed2xG3E3dg92f24+ysPSw+RR4vHlKeT5xrP
226
+ C16Il69XkVevt5L3Yu9q76c+Oj6JPo0+E752vqt9L/hh/QL9dvrd89fw5/rX
227
+ +08EOASsCegKpARGBFYHPgsyCRIFdQTDwQHBu4IfL9JfJFzUFgJC/EN2hTwJ
228
+ NQxdFfpzGC4sNKwm7Hm4VXh+eHcELWJFREPEu0iPyNLIR4uNFksWd0bJR8VF
229
+ 1UdNRXtFl0VLl1gsWbPkRoxajCCmPRYfGxV7JHZyqffS3UuH4+ziCuPuLjNc
230
+ lrPs2nK15anLz66QX8FZcSoeGx8d3xD/iRPCqeVMrvRfuXflBNeTu4f7kufG
231
+ K+eN8V34ZfyRBJeEsoTRRJfEXYljSa5JFUnjAk9BteB1sl/ygeSplJCUoykz
232
+ qdGpzWmEtPi000IlYYqwK10zPSe9L8M0ozBDuspp1e5VE6JA0ZFMKHNZZruY
233
+ jv5M9UiMJJslg1kLs2qy3mdHZZ/KUcwR5vTkmuRuyx3J88n7fjVmNXd1Z752
234
+ /ob8wTXuaw6thdauXNu5Tnddwbrh9b7rj20gbUjZ8MtGy41lG99uit7UUaBR
235
+ sL5gaLPv5sZCuUJR4b0tzlsObMVsFWzt3WazrWrblyJe0fViy+KK4k8l3JLr
236
+ 31l9V/ndzPaE7b2l9qX7d+B2CHfc3em681iZYlle2dCu4F2t5czyovK3u1fs
237
+ vlZhW3FgD2mPZI+0MqiyvUqvakfVp+qk6oEaj5rmvep7t+2d2sfb17/fbX/T
238
+ AY0DxQc+HhQcvH/I91BrrUFtxWHc4azDz+ui6rq/Z39ff0TtSPGRz0eFR6XH
239
+ wo911TvU1zeoN5Q2wo2SxrHjccdv/eD1Q3sTq+lQM6O5+AQ4ITnx4sf4H++e
240
+ DDzZeYp9qukn/Z/2ttBailqh1tzWibakNml7THvf6YDTnR3OHS0/m/989Iz2
241
+ mZqzymdLz5HOFZybOZ93fvJCxoXxi4kXhzpXdD66tOTSna6wrt7LgZevXvG5
242
+ cqnbvfv8VZerZ645XTt9nX297Yb9jdYeu56WX+x+aem172296XCz/ZbjrY6+
243
+ BX3n+l37L972un3ljv+dGwOLBvruLr57/17cPel93v3RB6kPXj/Mejj9aP1j
244
+ 7OOiJwpPKp6qP6391fjXZqm99Oyg12DPs4hnj4a4Qy//lfmvT8MFz6nPK0a0
245
+ RupHrUfPjPmM3Xqx9MXwy4yX0+OFvyn+tveV0auffnf7vWdiycTwa9HrmT9K
246
+ 3qi+OfrW9m3nZOjk03dp76anit6rvj/2gf2h+2P0x5Hp7E/4T5WfjT93fAn8
247
+ 8ngmbWbm3/eE8/syOll+AAAACXBIWXMAAAsTAAALEwEAmpwYAAAEJGlUWHRY
248
+ TUw6Y29tLmFkb2JlLnhtcAAAAAAAPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9i
249
+ ZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNS40LjAiPgogICA8cmRm
250
+ OlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjIt
251
+ cmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjph
252
+ Ym91dD0iIgogICAgICAgICAgICB4bWxuczp0aWZmPSJodHRwOi8vbnMuYWRv
253
+ YmUuY29tL3RpZmYvMS4wLyIKICAgICAgICAgICAgeG1sbnM6ZXhpZj0iaHR0
254
+ cDovL25zLmFkb2JlLmNvbS9leGlmLzEuMC8iCiAgICAgICAgICAgIHhtbG5z
255
+ OmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIKICAgICAg
256
+ ICAgICAgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAv
257
+ Ij4KICAgICAgICAgPHRpZmY6UmVzb2x1dGlvblVuaXQ+MTwvdGlmZjpSZXNv
258
+ bHV0aW9uVW5pdD4KICAgICAgICAgPHRpZmY6Q29tcHJlc3Npb24+NTwvdGlm
259
+ ZjpDb21wcmVzc2lvbj4KICAgICAgICAgPHRpZmY6WFJlc29sdXRpb24+NzI8
260
+ L3RpZmY6WFJlc29sdXRpb24+CiAgICAgICAgIDx0aWZmOk9yaWVudGF0aW9u
261
+ PjE8L3RpZmY6T3JpZW50YXRpb24+CiAgICAgICAgIDx0aWZmOllSZXNvbHV0
262
+ aW9uPjcyPC90aWZmOllSZXNvbHV0aW9uPgogICAgICAgICA8ZXhpZjpQaXhl
263
+ bFhEaW1lbnNpb24+NzY8L2V4aWY6UGl4ZWxYRGltZW5zaW9uPgogICAgICAg
264
+ ICA8ZXhpZjpDb2xvclNwYWNlPjE8L2V4aWY6Q29sb3JTcGFjZT4KICAgICAg
265
+ ICAgPGV4aWY6UGl4ZWxZRGltZW5zaW9uPjc2PC9leGlmOlBpeGVsWURpbWVu
266
+ c2lvbj4KICAgICAgICAgPGRjOnN1YmplY3Q+CiAgICAgICAgICAgIDxyZGY6
267
+ U2VxLz4KICAgICAgICAgPC9kYzpzdWJqZWN0PgogICAgICAgICA8eG1wOk1v
268
+ ZGlmeURhdGU+MjAxNDowOToyMyAyMjowOToxNDwveG1wOk1vZGlmeURhdGU+
269
+ CiAgICAgICAgIDx4bXA6Q3JlYXRvclRvb2w+UGl4ZWxtYXRvciAzLjIuMTwv
270
+ eG1wOkNyZWF0b3JUb29sPgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAg
271
+ PC9yZGY6UkRGPgo8L3g6eG1wbWV0YT4KkpvroQAABkNJREFUeAHtm0uIHFUY
272
+ hWveM8ZpHN/RYCIS34mKGGSMMmLA6CKILmQwBOJCEcwqKzELceVWN+IyIgQM
273
+ 4gt84SMqBpNBkBiJGkEFMRFNMmSSzEzm5fmG7qEpbt1bt7q6XuOBQ3Xfuvf/
274
+ z/nr3qrq6u6OIH9cLAlrxGvr20e0vVsE34rviL+Lv9W3J7XNDR05Zb5deR8U
275
+ 7xfXiVeKnaIN89p5XPxB/EL8WPxerCxqcrZd3CdOiwstkhj7RGISuzLol5On
276
+ xSNiq0WKGk9scpCr1LhP6veLUUbTbicXOUuHHil+QZwS0y6KKx45yY2GUuAy
277
+ qXxXdBlr9340oKXQWC11Y2K7ixE3PlrQVEhcI1WHxLhmsuqHJrQVCtx8cpOZ
278
+ VRF886ANjYVAl1TsFX1NZN0fjWjNHTulIGvzSfOhNVfcpuwTYlIDWY9DK5pz
279
+ AdP7EzFr063mQ3MuS/PREharUWy0Zwruog+IDQFl26I9008Cm0tcrMbBxYM3
280
+ XM+gogI+GbWjRO2ZebhKRTklNo5UWbd4wIsXksywEWW4yCtLMTvjYcRXWpKC
281
+ bfJNUuD+3l58C9Yt83cWuAC+0vCCp7aBT/3nxbKet8K68eL1JMO3unzLtFtk
282
+ WwVQwKp4Kebx8KnurbLwjLhBHCimHW9VkxpxUHxVPOw92jJgi/bxjXP4HFCV
283
+ 93jDYypYrSj/iFUpTpQPPK4RrYhzW7FVES61RqnGTjw+4bISp2B3uIJUaL/T
284
+ a5yC9VaoIC4rTq9xCjbrylKh/U6vroLdpGKsr1BBXFbwiudE4NP8j2LUVaWq
285
+ 7XiOfBpjm2HbNPBmcbkBz3g3wnanf1ojBo2j6o1DnZ3B6IpasL6nb/Hng0y5
286
+ IgKT8+Khmelgz9nTwal53lnB13E1Uw9bwaz+r+jqCvZcsjIY7hsIZhdXrSl8
287
+ sdq69Tl7//RkMHriWPD33JxLnLE2vk8rlpLsGBwKhvsHggn30Voak/+LhUXN
288
+ aN81/m8iObZzWGRABg339QfTC9ZJGDk+zx1oRnsi4xKeaBxlmlJi45zNsxox
289
+ cqMZ7UkPdeKCvX3uTNCrkpWpaGhFM9qTFizxOWy3rjZru3uD7RfWgoGOcpRt
290
+ UjPrlYnxAO1JYXN6QEF5WGgFtxQ39vQGXbZI1gjZ7JzTlPpp5vzirUWMjGPq
291
+ 4/QejjOiBmbuciTevcH57TWRu7zlUjS84jnRuV3jFr+z+1Lb5VKwr+qe8W6E
292
+ q5I87jhpHFnNxhOyZX3E4yoYZcnl13o5HQ+n1zgFS34Nzsl1C2mdXuMU7PMW
293
+ BJRtaCpeecTDfUnVT/x4tD7O8jn616nz1xUuGt7w6ITP/Xmfoj0s8n/sFSIz
294
+ Low4Szw8Jov33F+FgfezIn+r+UDkH77/I+0K+MywRm7+0P6hGF7vM2rbIh4V
295
+ i4S1EvOeGP6ZOY+hHxKPi7GR5GkFYxDBsmwGS5RlWzSg6QYxPDlYjt7+vQfU
296
+ q2G6G6bNdF6rD1naPKZXHNk0wEx/yxEITWgLzzCTB0eoBBV2RrR3eEC7Xxcv
297
+ sHeLvXdUPcfFz2KPaLFjllc1foD7hphWsbBOLGISOxMkXZJJxLEMuWAALuEY
298
+ PcebBKBQW0XOT8Qk9ndiIbFKqlgGnBuayS+SbxGj0KUdz4sUaUdUJ492YhCL
299
+ mMSOAppMv/zGA17ajqQFawhj+YSvWI19PltixFmKqRYsyyXZKEZaS4fZnVas
300
+ hjbnNo+ChUVtVMP1omvWUaCfxW/EUuFqqTX9m21W7es8nTyl/oxrPhfaXtOX
301
+ MT5AkykHHvDSdgwpw1+iyRgfjeLiHnU8I5ri2NoYw9i4QJMpHh7w0nZw7zYm
302
+ mkS8GTP7SvX7JSKGKW64jbHEiIO96hQez3s8ZHYf+nKECKb+NtEGzpvviyYT
303
+ Pm3EcJ2D0WJajuTBQ2bYqEz8wMpkcErtu8TLxTC4X3pJNI1L0kYs0z0YudGA
304
+ FlNctOPBG64rU1RARH4kborqoPZj4mGx8cUCuVaJG8Q0cVDB/hQpDKiJ/C/K
305
+ tmQ/1f7NovNXdeqTGu5SJB6RmI5gkdvQjPZc8KyyFrk4Jm1ozhXPKTvPzE3i
306
+ itSGRrQWAo9LxR9ikQrUrAVtaCwUOMm+KB4Vm8Xm+RotaLJdALQ7Xwwq/b3i
307
+ TvFXMeuCkZPcaEBLqvgPBhCuiZo8+sAAAAAASUVORK5CYII=
308
+ " alt="">
309
+ <h1 class="title">RuboCop Inspection Report</h1>
310
+ </div>
311
+ <div class="information">
312
+ <div class="infobox">
313
+ 3 files inspected,
314
+ 13 offenses detected
315
+ </div>
316
+ </div>
317
+ <div id="offenses">
318
+
319
+
320
+ <div class="offense-box">
321
+ <div class="box-title"><h3>app/controllers/application_controller.rb - 1 offense</h3></div>
322
+ <div class="offense-reports">
323
+
324
+ <div class="report">
325
+ <div class="meta">
326
+ <span class="location">Line #1</span> –
327
+ <span class="severity convention">convention:</span>
328
+ <span class="message">Missing top-level class documentation comment.</span>
329
+ </div>
330
+
331
+ <pre><code><span class="highlight convention">class</span> ApplicationController < ActionController::Base</code></pre>
332
+
333
+ </div>
334
+
335
+ </div>
336
+ </div>
337
+
338
+
339
+
340
+ <div class="offense-box">
341
+ <div class="box-title"><h3>app/controllers/books_controller.rb - 8 offenses</h3></div>
342
+ <div class="offense-reports">
343
+
344
+ <div class="report">
345
+ <div class="meta">
346
+ <span class="location">Line #1</span> –
347
+ <span class="severity convention">convention:</span>
348
+ <span class="message">Missing top-level class documentation comment.</span>
349
+ </div>
350
+
351
+ <pre><code><span class="highlight convention">class</span> BooksController < ApplicationController</code></pre>
352
+
353
+ </div>
354
+
355
+ <div class="report">
356
+ <div class="meta">
357
+ <span class="location">Line #31</span> –
358
+ <span class="severity convention">convention:</span>
359
+ <span class="message">Line is too long. [83/80]</span>
360
+ </div>
361
+
362
+ <pre><code> format.html { redirect_to @book, notice: 'Book was successfully created.<span class="highlight convention">' }</span></code></pre>
363
+
364
+ </div>
365
+
366
+ <div class="report">
367
+ <div class="meta">
368
+ <span class="location">Line #45</span> –
369
+ <span class="severity convention">convention:</span>
370
+ <span class="message">Line is too long. [83/80]</span>
371
+ </div>
372
+
373
+ <pre><code> format.html { redirect_to @book, notice: 'Book was successfully updated.<span class="highlight convention">' }</span></code></pre>
374
+
375
+ </div>
376
+
377
+ <div class="report">
378
+ <div class="meta">
379
+ <span class="location">Line #59</span> –
380
+ <span class="severity convention">convention:</span>
381
+ <span class="message">Line is too long. [87/80]</span>
382
+ </div>
383
+
384
+ <pre><code> format.html { redirect_to books_url, notice: 'Book was successfully destro<span class="highlight convention">yed.' }</span></code></pre>
385
+
386
+ </div>
387
+
388
+ <div class="report">
389
+ <div class="meta">
390
+ <span class="location">Line #64</span> –
391
+ <span class="severity convention">convention:</span>
392
+ <span class="message">Keep a blank line before and after <code>private</code>.</span>
393
+ </div>
394
+
395
+ <pre><code> <span class="highlight convention">private</span></code></pre>
396
+
397
+ </div>
398
+
399
+ <div class="report">
400
+ <div class="meta">
401
+ <span class="location">Line #66</span> –
402
+ <span class="severity convention">convention:</span>
403
+ <span class="message">Inconsistent indentation detected.</span>
404
+ </div>
405
+
406
+ <pre><code> <span class="highlight convention">def set_book</span></code></pre>
407
+
408
+ </div>
409
+
410
+ <div class="report">
411
+ <div class="meta">
412
+ <span class="location">Line #70</span> –
413
+ <span class="severity convention">convention:</span>
414
+ <span class="message">Line is too long. [88/80]</span>
415
+ </div>
416
+
417
+ <pre><code> # Never trust parameters from the scary internet, only allow the white list <span class="highlight convention">through.</span></code></pre>
418
+
419
+ </div>
420
+
421
+ <div class="report">
422
+ <div class="meta">
423
+ <span class="location">Line #71</span> –
424
+ <span class="severity convention">convention:</span>
425
+ <span class="message">Inconsistent indentation detected.</span>
426
+ </div>
427
+
428
+ <pre><code> <span class="highlight convention">def book_params</span></code></pre>
429
+
430
+ </div>
431
+
432
+ </div>
433
+ </div>
434
+
435
+
436
+
437
+ <div class="offense-box">
438
+ <div class="box-title"><h3>app/models/book.rb - 4 offenses</h3></div>
439
+ <div class="offense-reports">
440
+
441
+ <div class="report">
442
+ <div class="meta">
443
+ <span class="location">Line #1</span> –
444
+ <span class="severity convention">convention:</span>
445
+ <span class="message">Missing top-level class documentation comment.</span>
446
+ </div>
447
+
448
+ <pre><code><span class="highlight convention">class</span> Book < ActiveRecord::Base</code></pre>
449
+
450
+ </div>
451
+
452
+ <div class="report">
453
+ <div class="meta">
454
+ <span class="location">Line #2</span> –
455
+ <span class="severity convention">convention:</span>
456
+ <span class="message">Use snake_case for method names.</span>
457
+ </div>
458
+
459
+ <pre><code> def <span class="highlight convention">someMethod</span></code></pre>
460
+
461
+ </div>
462
+
463
+ <div class="report">
464
+ <div class="meta">
465
+ <span class="location">Line #3</span> –
466
+ <span class="severity warning">warning:</span>
467
+ <span class="message">Useless assignment to variable - <code>foo</code>.</span>
468
+ </div>
469
+
470
+ <pre><code> <span class="highlight warning">foo</span> = bar = baz</code></pre>
471
+
472
+ </div>
473
+
474
+ <div class="report">
475
+ <div class="meta">
476
+ <span class="location">Line #3</span> –
477
+ <span class="severity warning">warning:</span>
478
+ <span class="message">Useless assignment to variable - <code>bar</code>.</span>
479
+ </div>
480
+
481
+ <pre><code> foo = <span class="highlight warning">bar</span> = baz</code></pre>
482
+
483
+ </div>
484
+
485
+ </div>
486
+ </div>
487
+
488
+
489
+ </div>
490
+ <footer>
491
+ Generated by <a href="https://github.com/bbatsov/rubocop">RuboCop</a>
492
+ <span class="version">0.26.1</span>
493
+ </footer>
494
+ </body>
495
+ </html>