leftovers 0.2.0 → 0.2.1

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
  SHA256:
3
- metadata.gz: b87286f8934cc673a0c9ccea260ac5bee0117230cf21917d244eb6988b70aede
4
- data.tar.gz: c2daf36aaec3ffe393e4adab37bc80ba8bb5a5ffed2f1c94977a3138bbecde05
3
+ metadata.gz: b371d523daccdf78bc7c31a0b17256299029e95aa6d9d14a3578ac42929ee08d
4
+ data.tar.gz: 6798582ea10ea250ea68fc0325564e116fa2d317416d0df0b02a7d2e8235849a
5
5
  SHA512:
6
- metadata.gz: aca4a439cdbf92fbf6589bf2b9459d209e8ea3affd75bf432648110b58845870f06f80b9815bd1a5404e995a1f4a576885291cffbd1390d45c38f3ff658b9185
7
- data.tar.gz: 464a65edd31f10324be77be82b5d28c3632b7b0f691e6268903d9b00190bed3e7c553f6301760c9222dceda12d62e4dba7e927d7dd717300b6effac3e57c790c
6
+ metadata.gz: b38f49be63e8d7ba2e63a3c5a7bbddd8d61692dc603da0d2f0b936fdb02f421b357a8b2a089100e8dd3e21b50b6acc21668dd7aa1f472b721d25fe6d4655b4fe
7
+ data.tar.gz: f015305d13562b66a33b4f4effc680784bf8a8d24b3d7e143a2a6d2c20285ae47377867ea22cad995e9dd467b5d86064afbc78becd6d55424b0ee96c4a54737b
data/CHANGELOG.md CHANGED
@@ -1,3 +1,12 @@
1
+ # v0.2.1
2
+
3
+ - Fix route arguments with '/' handling (e.g get `'/admin', to: 'admin/dashboard#index'`)
4
+ - Fix route arguments for `root to: "whatever#index"`
5
+ - Add some more rails exceptions (`APP_ROOT`, `APP_PATH`, Mailer Previews)
6
+ - add more ruby object methods that are called by various bits of ruby
7
+ - correct output of unused definitions using `linked_transforms:`
8
+ - add `audited` gem
9
+
1
10
  # v0.2.0
2
11
 
3
12
  Play nice with rubocop
@@ -0,0 +1,4 @@
1
+ rules:
2
+ name: current_user_method=
3
+ calls:
4
+ argument: 1
data/lib/config/rails.yml CHANGED
@@ -18,10 +18,16 @@ rules:
18
18
  - validate_each # ActiveModel::EachValidator
19
19
  - format_message # ActiveSupport::Logger
20
20
  - ssl_configured? # ApplicationController
21
+ - APP_PATH
22
+ - APP_ROOT
21
23
  - skip: true
22
24
  names:
23
25
  has_suffix: Helper
24
26
  path: /app/helpers
27
+ - skip: true
28
+ names:
29
+ has_suffix: Preview
30
+ path: '**/mailers/previews/**/*_preview.rb'
25
31
  - names:
26
32
  - after_initialize
27
33
  - after_find
@@ -227,6 +233,7 @@ rules:
227
233
  - patch
228
234
  - post
229
235
  - put
236
+ - root
230
237
  calls:
231
238
  - arguments: [1, action]
232
239
  - argument: '**'
data/lib/config/ruby.yml CHANGED
@@ -17,12 +17,18 @@ rules:
17
17
  - skip: true
18
18
  name:
19
19
  - initialize # called by new
20
- - inspect # called by repl
20
+ - inspect # called by repl, to_s
21
21
  - respond_to_missing? # called by respond_to?
22
22
  - method_missing # called by method dispatch
23
- - to_s # called by #{}
24
- - to_ary
25
- - to_str
23
+ - coerce # called by Numeric
24
+ - to_s # called by "#{}"
25
+ - to_ary # called by Array(), []+
26
+ - to_a # called by Array(), *splat
27
+ - to_str # called by String(), ""+
28
+ - to_hash # called by Hash(), **splat, {}.merge
29
+ - to_int # called by Integer()
30
+ - to_i # called by Integer()
31
+ - to_f # called by Float()
26
32
  - <=> # called by Comparable
27
33
  - each # called by Enumerable
28
34
  - marshal_dump # called by Marshal.dump
@@ -33,6 +39,10 @@ rules:
33
39
  - extended # called by extend Module
34
40
  - included # called by include Module
35
41
  - $VERBOSE # called by whatever is outputting warnings i guess
42
+ - === # called by when
43
+ - == # called by Array value, Hash value equality, ===
44
+ - hash # called by Hash key equality
45
+ - eql? # called by Hash key equality
36
46
  - name:
37
47
  - send
38
48
  - public_send
@@ -176,7 +176,8 @@ module Leftovers
176
176
 
177
177
  SPLIT = /[.:]+/.freeze
178
178
  def symbol_values(symbol_node, method_node) # rubocop:disable Metrics/MethodLength
179
- subnodes = symbol_node.to_s.split(SPLIT).flat_map { |s| transform(s, method_node) }
179
+ subnodes = Array(transform(symbol_node.to_s, method_node))
180
+ .flat_map { |s| s.to_s.split(SPLIT).map(&:to_sym) }
180
181
 
181
182
  return subnodes unless @definer
182
183
 
@@ -199,7 +200,7 @@ module Leftovers
199
200
  end
200
201
 
201
202
  def transform(string, method_node)
202
- return string.to_sym unless @transform || @transforms
203
+ return string unless @transform || @transforms
203
204
  return @transform.transform(string, method_node) if @transform
204
205
 
205
206
  @transforms.map do |transform|
@@ -21,6 +21,10 @@ module Leftovers
21
21
  freeze
22
22
  end
23
23
 
24
+ def full_name
25
+ names.join(', ')
26
+ end
27
+
24
28
  def names
25
29
  @definitions.map(&:names)
26
30
  end
@@ -2,14 +2,11 @@
2
2
 
3
3
  require 'fast_ignore'
4
4
  require 'set'
5
- require 'parser'
6
- require 'parser/current'
7
- require_relative 'ast/builder'
8
- require_relative 'ast/node'
5
+ require_relative 'parser'
9
6
  require_relative 'definition'
10
7
 
11
8
  module Leftovers
12
- class FileCollector < Parser::AST::Processor # rubocop:disable Metrics/ClassLength
9
+ class FileCollector < ::Parser::AST::Processor # rubocop:disable Metrics/ClassLength
13
10
  attr_reader :calls
14
11
  attr_reader :definitions
15
12
 
@@ -34,33 +31,8 @@ module Leftovers
34
31
  }
35
32
  end
36
33
 
37
- # mostly copied from https://github.com/whitequark/parser/blob/master/lib/parser/base.rb
38
- # but with our builder
39
- def self.parser # rubocop:disable Metrics/MethodLength
40
- p = ::Parser::CurrentRuby.new(Leftovers::AST::Builder.new)
41
- p.diagnostics.all_errors_are_fatal = true
42
- p.diagnostics.ignore_warnings = true
43
-
44
- p.diagnostics.consumer = lambda do |diagnostic|
45
- warn(diagnostic.render)
46
- end
47
-
48
- p
49
- end
50
- PARSER = parser
51
-
52
- # mostly copied from https://github.com/whitequark/parser/blob/master/lib/parser/base.rb
53
- # but with our parser
54
- def parse_with_comments(string, file = '(string)', line = 1)
55
- PARSER.reset
56
- source_buffer = ::Parser::CurrentRuby.send(
57
- :setup_source_buffer, file, line, string, PARSER.default_encoding
58
- )
59
- PARSER.parse_with_comments(source_buffer)
60
- end
61
-
62
34
  def collect
63
- ast, comments = parse_with_comments(@ruby, @file)
35
+ ast, comments = Leftovers::Parser.parse_with_comments(@ruby, @file)
64
36
  process_comments(comments)
65
37
  process(ast)
66
38
  rescue Parser::SyntaxError => e
@@ -0,0 +1,40 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'parser'
4
+ require 'parser/current'
5
+
6
+ require_relative 'ast/builder'
7
+ require_relative 'ast/node'
8
+
9
+ module Leftovers
10
+ module Parser
11
+ class << self
12
+ # mostly copied from https://github.com/whitequark/parser/blob/master/lib/parser/base.rb
13
+ # but with our parser
14
+ def parse_with_comments(string, file = '(string)', line = 1)
15
+ PARSER.reset
16
+ source_buffer = ::Parser::CurrentRuby.send(
17
+ :setup_source_buffer, file, line, string, PARSER.default_encoding
18
+ )
19
+ PARSER.parse_with_comments(source_buffer)
20
+ end
21
+
22
+ private
23
+
24
+ # mostly copied from https://github.com/whitequark/parser/blob/master/lib/parser/base.rb
25
+ # but with our builder
26
+ def parser # rubocop:disable Metrics/MethodLength
27
+ p = ::Parser::CurrentRuby.new(Leftovers::AST::Builder.new)
28
+ p.diagnostics.all_errors_are_fatal = true
29
+ p.diagnostics.ignore_warnings = true
30
+
31
+ p.diagnostics.consumer = lambda do |diagnostic|
32
+ warn(diagnostic.render)
33
+ end
34
+
35
+ p
36
+ end
37
+ end
38
+ PARSER = parser
39
+ end
40
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Leftovers
4
- VERSION = '0.2.0'
4
+ VERSION = '0.2.1'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: leftovers
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dana Sherson
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-04-19 00:00:00.000000000 Z
11
+ date: 2020-04-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -207,6 +207,7 @@ files:
207
207
  - exe/leftovers
208
208
  - leftovers.gemspec
209
209
  - lib/config/attr_encrypted.yml
210
+ - lib/config/audited.yml
210
211
  - lib/config/builder.yml
211
212
  - lib/config/capistrano.yml
212
213
  - lib/config/datagrid.yml
@@ -247,6 +248,7 @@ files:
247
248
  - lib/leftovers/hash_rule.rb
248
249
  - lib/leftovers/merged_config.rb
249
250
  - lib/leftovers/name_rule.rb
251
+ - lib/leftovers/parser.rb
250
252
  - lib/leftovers/rake_task.rb
251
253
  - lib/leftovers/reporter.rb
252
254
  - lib/leftovers/rule.rb