rubocop 0.58.1 → 0.58.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 06a6484e8b771039540df8585fe73d34a5662d78
4
- data.tar.gz: 7a8d03e1b3bcd23bee23abad73c065de9196154c
3
+ metadata.gz: 3195801b4e3ffa9ab52997ec2600cdc62b5c4e23
4
+ data.tar.gz: 8b1276d6c0101f1556d374e67d1749010b53542a
5
5
  SHA512:
6
- metadata.gz: a08758ab2ba66634215f70f0a723ec845e2ce0bfb7f6bd0ad833aa4feacaac9b1557a0d98133a6184f1b15e43e83b944b1e75b2ed0607c874f8fec73e70706a9
7
- data.tar.gz: '090c04fa7ac19c75ade23b97b55473912f707dc164b39e1254a1c6af8bdc50ad16b343a70b1671027b46578d2e60db2d33efedffce73d1b9964089fab4218778'
6
+ metadata.gz: a5dff57a5eeecb51495820462954f998817b9ad3b9018e603ee0f2f79ea8445e9e4bbe49578f3bdb091fbe47a8f53d179c3713c449fbc6510a7f068f96e7c015
7
+ data.tar.gz: 0a4d5da0871e328ca5bd9de6b048d3eac8e74a6b95f6682f0ddfbd220a6e4b13a4925e4d31473184fc0bfe818245a93d40225b2353011f88cf12da55e026dd32
data/README.md CHANGED
@@ -19,11 +19,12 @@
19
19
  > Role models are important. <br/>
20
20
  > -- Officer Alex J. Murphy / RoboCop
21
21
 
22
- **RuboCop** is a Ruby static code analyzer. Out of the box it will
23
- enforce many of the guidelines outlined in the community
24
- [Ruby Style Guide](https://github.com/rubocop-hq/ruby-style-guide).
22
+ **RuboCop** is a Ruby static code analyzer and code formatter. Out of
23
+ the box it will enforce many of the guidelines outlined in the
24
+ community [Ruby Style
25
+ Guide](https://github.com/rubocop-hq/ruby-style-guide).
25
26
 
26
- Most aspects of its behavior can be tweaked via various
27
+ RuboCop is extremely flexible and most aspects of its behavior can be tweaked via various
27
28
  [configuration options](https://github.com/rubocop-hq/rubocop/blob/master/config/default.yml).
28
29
 
29
30
  Apart from reporting problems in your code, RuboCop can also
@@ -53,7 +54,7 @@ haven't reached version 1.0 yet). To prevent an unwanted RuboCop update you
53
54
  might want to use a conservative version locking in your `Gemfile`:
54
55
 
55
56
  ```rb
56
- gem 'rubocop', '~> 0.58.1', require: false
57
+ gem 'rubocop', '~> 0.58.2', require: false
57
58
  ```
58
59
 
59
60
  ## Quickstart
@@ -42,7 +42,6 @@ AllCops:
42
42
  - '**/.irbrc'
43
43
  - '**/.pryrc'
44
44
  - '**/buildfile'
45
- - '**/config.ru'
46
45
  - '**/Appraisals'
47
46
  - '**/Berksfile'
48
47
  - '**/Brewfile'
@@ -798,6 +797,7 @@ Naming/UncommunicativeMethodParamName:
798
797
  - 'on'
799
798
  - in
800
799
  - at
800
+ - ip
801
801
  # Blacklisted names that will register an offense
802
802
  ForbiddenNames: []
803
803
 
@@ -281,7 +281,7 @@ module RuboCop
281
281
  end
282
282
 
283
283
  def start_line_position(node)
284
- buffer.line_range(node.first_line).begin_pos - 1
284
+ buffer.line_range(node.loc.line).begin_pos - 1
285
285
  end
286
286
 
287
287
  def buffer
@@ -325,7 +325,9 @@ module RuboCop
325
325
  end
326
326
 
327
327
  def leftmost_modifier_of(node)
328
- node.each_ancestor(:send).to_a.last
328
+ return node unless node.parent && node.parent.send_type?
329
+
330
+ leftmost_modifier_of(node.parent)
329
331
  end
330
332
  end
331
333
  end
@@ -5,10 +5,13 @@ module RuboCop
5
5
  module Lint
6
6
  # This cop checks for shadowed arguments.
7
7
  #
8
+ # This cop has `IgnoreImplicitReferences` configuration option.
9
+ # It means argument shadowing is used in order to pass parameters
10
+ # to zero arity `super` when `IgnoreImplicitReferences` is `true`.
11
+ #
8
12
  # @example
9
13
  #
10
14
  # # bad
11
- #
12
15
  # do_something do |foo|
13
16
  # foo = 42
14
17
  # puts foo
@@ -19,10 +22,7 @@ module RuboCop
19
22
  # puts foo
20
23
  # end
21
24
  #
22
- # @example
23
- #
24
25
  # # good
25
- #
26
26
  # do_something do |foo|
27
27
  # foo = foo + 42
28
28
  # puts foo
@@ -36,6 +36,33 @@ module RuboCop
36
36
  # def do_something(foo)
37
37
  # puts foo
38
38
  # end
39
+ #
40
+ # @example IgnoreImplicitReferences: false (default)
41
+ #
42
+ # # bad
43
+ # def do_something(foo)
44
+ # foo = 42
45
+ # super
46
+ # end
47
+ #
48
+ # def do_something(foo)
49
+ # foo = super
50
+ # bar
51
+ # end
52
+ #
53
+ # @example IgnoreImplicitReferences: true
54
+ #
55
+ # # good
56
+ # def do_something(foo)
57
+ # foo = 42
58
+ # super
59
+ # end
60
+ #
61
+ # def do_something(foo)
62
+ # foo = super
63
+ # bar
64
+ # end
65
+ #
39
66
  class ShadowedArgument < Cop
40
67
  MSG = 'Argument `%<argument>s` was shadowed by a local variable ' \
41
68
  'before it was used.'.freeze
@@ -22,11 +22,8 @@ module RuboCop
22
22
  # # good
23
23
  # require 'unloaded_feature'
24
24
  class UnneededRequireStatement < Cop
25
- extend TargetRubyVersion
26
25
  include RangeHelp
27
26
 
28
- minimum_target_ruby_version 2.2
29
-
30
27
  MSG = 'Remove unnecessary `require` statement.'.freeze
31
28
 
32
29
  def_node_matcher :unnecessary_require_statement?, <<-PATTERN
@@ -34,7 +34,13 @@ module RuboCop
34
34
  end
35
35
 
36
36
  def leading_comment_lines
37
- processed_source[0..2].compact
37
+ comments = processed_source.comments
38
+
39
+ comments.each_with_object([]) do |comment, leading_comments|
40
+ next if comment.loc.line > 3
41
+
42
+ leading_comments << comment.text
43
+ end
38
44
  end
39
45
  end
40
46
  end
@@ -8,7 +8,7 @@ module RuboCop
8
8
  #
9
9
  # This cop can be configured with the EnforcedStyleForLeadingUnderscores
10
10
  # directive. It can be configured to allow for memoized instance variables
11
- # prefixed with an underscore. Prefixing ivars with an undersscore is a
11
+ # prefixed with an underscore. Prefixing ivars with an underscore is a
12
12
  # convention that is used to implicitly indicate that an ivar should not
13
13
  # be set or referencd outside of the memoization method.
14
14
  #
@@ -21,6 +21,11 @@ module RuboCop
21
21
  # end
22
22
  #
23
23
  # # good
24
+ # def _foo
25
+ # @foo ||= calculate_expensive_thing
26
+ # end
27
+ #
28
+ # # good
24
29
  # def foo
25
30
  # @foo ||= calculate_expensive_thing
26
31
  # end
@@ -54,6 +59,11 @@ module RuboCop
54
59
  # @_foo ||= calculate_expensive_thing
55
60
  # end
56
61
  #
62
+ # # good
63
+ # def _foo
64
+ # @_foo ||= calculate_expensive_thing
65
+ # end
66
+ #
57
67
  # @example EnforcedStyleForLeadingUnderscores :optional
58
68
  # # bad
59
69
  # def foo
@@ -69,6 +79,11 @@ module RuboCop
69
79
  # def foo
70
80
  # @_foo ||= calculate_expensive_thing
71
81
  # end
82
+ #
83
+ # # good
84
+ # def _foo
85
+ # @_foo ||= calculate_expensive_thing
86
+ # end
72
87
  class MemoizedInstanceVariableName < Cop
73
88
  include ConfigurableEnforcedStyle
74
89
 
@@ -118,7 +133,7 @@ module RuboCop
118
133
 
119
134
  return false unless valid_leading_underscore?(variable_name)
120
135
 
121
- variable_name.sub(/\A_/, '') == method_name
136
+ variable_name.sub(/\A_/, '') == method_name.sub(/\A_/, '')
122
137
  end
123
138
 
124
139
  def message(variable)
@@ -3,13 +3,13 @@
3
3
  module RuboCop
4
4
  module Cop
5
5
  module Rails
6
- # This cop checks that methods specified in the filter's `only`
7
- # or `except` options are explicitly defined in the class or module.
6
+ # This cop checks that methods specified in the filter's `only` or
7
+ # `except` options are defined within the same class or module.
8
8
  #
9
- # You can specify methods of superclass or methods added by mixins
10
- # on the filter, but these confuse developers. If you specify methods
11
- # where are defined on another classes or modules, you should define
12
- # the filter in that class or module.
9
+ # You can technically specify methods of superclass or methods added
10
+ # by mixins on the filter, but these confuse developers. If you
11
+ # specify methods that are defined in other classes or modules, you
12
+ # should define the filter in that class or module.
13
13
  #
14
14
  # @example
15
15
  # # bad
@@ -190,7 +190,7 @@ module RuboCop
190
190
  class SimpleComment < MagicComment
191
191
  # Match `encoding` or `coding`
192
192
  def encoding
193
- extract(/\#* \b(?:en)?coding: (#{TOKEN})/i)
193
+ extract(/\A\s*\#.*\b(?:en)?coding: (#{TOKEN})/i)
194
194
  end
195
195
 
196
196
  private
@@ -203,7 +203,7 @@ module RuboCop
203
203
  # Case-insensitive and dashes/underscores are acceptable.
204
204
  # @see https://git.io/vM7Mg
205
205
  def extract_frozen_string_literal
206
- extract(/\A#\s*frozen[_-]string[_-]literal:\s*(#{TOKEN})\s*\z/i)
206
+ extract(/\A\s*#\s*frozen[_-]string[_-]literal:\s*(#{TOKEN})\s*\z/i)
207
207
  end
208
208
  end
209
209
  end
@@ -36,7 +36,7 @@ module RuboCop
36
36
  def match_path?(pattern, path)
37
37
  case pattern
38
38
  when String
39
- File.fnmatch?(pattern, path, File::FNM_PATHNAME)
39
+ File.fnmatch?(pattern, path, File::FNM_PATHNAME | File::FNM_EXTGLOB)
40
40
  when Regexp
41
41
  begin
42
42
  path =~ pattern
@@ -84,7 +84,6 @@ module RuboCop
84
84
  relevant_options_digest(options),
85
85
  file_checksum(file, config_store))
86
86
  @cached_data = CachedData.new(file)
87
- @pwd = Dir.pwd
88
87
  end
89
88
 
90
89
  def valid?
@@ -136,7 +135,7 @@ module RuboCop
136
135
  digester = Digest::MD5.new
137
136
  mode = File.stat(file).mode
138
137
  digester.update(
139
- "#{@pwd}#{file}#{mode}#{config_store.for(file).signature}"
138
+ "#{file}#{mode}#{config_store.for(file).signature}"
140
139
  )
141
140
  digester.file(file)
142
141
  digester.hexdigest
@@ -3,7 +3,7 @@
3
3
  module RuboCop
4
4
  # This module holds the RuboCop version information.
5
5
  module Version
6
- STRING = '0.58.1'.freeze
6
+ STRING = '0.58.2'.freeze
7
7
 
8
8
  MSG = '%<version>s (using Parser %<parser_version>s, running on ' \
9
9
  '%<ruby_engine>s %<ruby_version>s %<ruby_platform>s)'.freeze
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rubocop
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.58.1
4
+ version: 0.58.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bozhidar Batsov
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: exe
12
12
  cert_chain: []
13
- date: 2018-07-10 00:00:00.000000000 Z
13
+ date: 2018-07-23 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: jaro_winkler