debride 1.13.0 → 1.14.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 31ff20d8c8b7d749e113ffd4eac634fa13c52e9c84461e52e92c07bbd98a40f1
4
- data.tar.gz: dbeb5f7cc0129cc46f38f2a0b68d4b30d5b70d9f0dd7e3581a006e82adfcf2de
3
+ metadata.gz: 3a714288d6ecf460fcc966b8affc300f4bfe72da8e7d955e1345d757fbe389e9
4
+ data.tar.gz: '0608d18319513d0193482b503def7a86b7fc1544dfffb1048849d74b0b0d1728'
5
5
  SHA512:
6
- metadata.gz: 293fc6a6d550e86d05a8d4784956fd1a886fea928b9b562a06502a0732e4f34af79aaebbd4f85ebe7aa9bc31fdb7281ec66487a73a2ef2853df467888197eac7
7
- data.tar.gz: 9de34932869d721f0f2b98fd719ad0ef07d632d8588542cd4c1d4c3d5f7a57539dad80d858acfd2fb37b3a94b7d26f36ee8204e92a7cefeefd37e11653b9fe30
6
+ metadata.gz: c7faa53a9d8aaa8e1f6bb5673ac7619a357a34d75636eaaab43fc017814cac33805dcb0904385d19a4e1d32b95ccc6a01877083a379ee74e6c91847b4713e278
7
+ data.tar.gz: ec449e3d4d5bdae20271e58d54da4dce6050866e56493d68f7ce236bb7829e51f342185576c5a772ee6e140e1855557598bd9062c5b9cc6f4d2112ea3fc16ed7
checksums.yaml.gz.sig CHANGED
Binary file
data/History.rdoc CHANGED
@@ -1,3 +1,10 @@
1
+ === 1.14.0 / 2025-12-11
2
+
3
+ * 2 minor enhancements:
4
+
5
+ * Bumped path_expander to 2.0.0.
6
+ * Switched to prism for ruby parsing. Use --legacy for RubyParser.
7
+
1
8
  === 1.13.0 / 2025-06-10
2
9
 
3
10
  * 2 minor enhancements:
data/Rakefile CHANGED
@@ -21,8 +21,8 @@ Hoe.spec "debride" do
21
21
  license "MIT"
22
22
 
23
23
  dependency "sexp_processor", "~> 4.17"
24
- dependency "ruby_parser", "~> 3.20"
25
- dependency "path_expander", "~> 1.0"
24
+ dependency "prism", "~> 1.5"
25
+ dependency "path_expander", "~> 2.0"
26
26
  end
27
27
 
28
28
  def run dir, whitelist
data/lib/debride.rb CHANGED
@@ -4,15 +4,27 @@ require "optparse"
4
4
  require "set"
5
5
  require "stringio"
6
6
 
7
- require "ruby_parser"
8
7
  require "sexp_processor"
9
8
  require "path_expander"
10
9
 
10
+ require "prism"
11
+ require "prism/translation/ruby_parser"
12
+
13
+ unless Prism::Translation::RubyParser.method_defined? :process then
14
+ class Prism::Translation::RubyParser # compatibility layer
15
+ def process(ruby, file, timeout=nil) =
16
+ Timeout.timeout(timeout) { parse ruby, file }
17
+ end
18
+ end
19
+
20
+ class NotRubyParser < Prism::Translation::RubyParser # compatibility layer
21
+ end
22
+
11
23
  ##
12
24
  # A static code analyzer that points out possible dead methods.
13
25
 
14
26
  class Debride < MethodBasedSexpProcessor
15
- VERSION = "1.13.0" # :nodoc:
27
+ VERSION = "1.14.0" # :nodoc:
16
28
  PROJECT = "debride"
17
29
 
18
30
  def self.load_plugins proj = PROJECT
@@ -47,14 +59,12 @@ class Debride < MethodBasedSexpProcessor
47
59
  # Top level runner for bin/debride.
48
60
 
49
61
  def self.run args
50
- opt = parse_options args
51
-
52
- debride = Debride.new opt
62
+ debride = Debride.new parse_options args
53
63
 
54
64
  extensions = self.file_extensions
55
65
  glob = "**/*.{#{extensions.join(",")}}"
56
66
  expander = PathExpander.new(args, glob)
57
- files = expander.process
67
+ files = expander.process.to_a
58
68
  excl = debride.option[:exclude]
59
69
  excl.map! { |fd| File.directory?(fd) ? "#{fd}/**/*" : fd } if excl
60
70
 
@@ -97,7 +107,8 @@ class Debride < MethodBasedSexpProcessor
97
107
  raise "Unhandled type: #{path_or_io.class}:#{path_or_io.inspect}"
98
108
  end
99
109
 
100
- RubyParser.new.process(file, path, option[:timeout])
110
+ parser = option[:parser].new
111
+ parser.process(file, path, option[:timeout])
101
112
  rescue Racc::ParseError, RegexpError => e
102
113
  warn "Parse Error parsing #{path}. Skipping."
103
114
  warn " #{e.message}"
@@ -161,6 +172,11 @@ class Debride < MethodBasedSexpProcessor
161
172
  options[:minimum] = n
162
173
  end
163
174
 
175
+ opts.on "--legacy" "Use RubyParser for parsing." do
176
+ require "ruby_parser"
177
+ option[:parser] = RubyParser
178
+ end
179
+
164
180
  opts.on("-v", "--verbose", "Verbose. Show progress processing files.") do
165
181
  options[:verbose] = true
166
182
  end
@@ -208,6 +224,9 @@ class Debride < MethodBasedSexpProcessor
208
224
  self.option = { :whitelist => [] }.merge options
209
225
  self.known = Hash.new { |h,k| h[k] = Set.new }
210
226
  self.called = Set.new
227
+
228
+ option[:parser] ||= NotRubyParser
229
+
211
230
  super()
212
231
  end
213
232
 
data/test/test_debride.rb CHANGED
@@ -342,8 +342,11 @@ class TestDebride < Minitest::Test
342
342
  end
343
343
 
344
344
  def test_block_pass_empty
345
- ruby = <<-RUBY.strip
346
- f(&) # block forwarding
345
+ ruby = <<~RUBY
346
+ def g(&)
347
+ f(&) # block forwarding
348
+ end
349
+ g
347
350
  RUBY
348
351
 
349
352
  assert_process [], ruby
data.tar.gz.sig CHANGED
@@ -1,2 +1,4 @@
1
- I��~�$^�u!�O�O���J�ӧ��d&I@tl S�����]G�5�?��3$tJ��?�o �lƶQ��{
2
- Hz(��N䁢�QC��yr�O���?��h f�À�M��ՠ*gT�h ҿ@y���)� $7��zN���nj
1
+ ��Y�=n���vRvN�-4~����n�����Q6����R�;��Tځ̿��\�Q��Lը�E�Ÿ�<*�Ԑ�7JU�Q��kHc��ץ�\����*3��c�/�
2
+ ��ݐm m2}|6 1�����}-MCg��`F��P*���
3
+ I��€Fގ<� QK�E��L��nۗێ��m �ta���L�I:
4
+ -T���o���<��fRL�S�U�q�g��? T>�P~F���QD�Z|����lz�+�?�H�
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: debride
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.13.0
4
+ version: 1.14.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryan Davis
@@ -45,33 +45,33 @@ dependencies:
45
45
  - !ruby/object:Gem::Version
46
46
  version: '4.17'
47
47
  - !ruby/object:Gem::Dependency
48
- name: ruby_parser
48
+ name: prism
49
49
  requirement: !ruby/object:Gem::Requirement
50
50
  requirements:
51
51
  - - "~>"
52
52
  - !ruby/object:Gem::Version
53
- version: '3.20'
53
+ version: '1.5'
54
54
  type: :runtime
55
55
  prerelease: false
56
56
  version_requirements: !ruby/object:Gem::Requirement
57
57
  requirements:
58
58
  - - "~>"
59
59
  - !ruby/object:Gem::Version
60
- version: '3.20'
60
+ version: '1.5'
61
61
  - !ruby/object:Gem::Dependency
62
62
  name: path_expander
63
63
  requirement: !ruby/object:Gem::Requirement
64
64
  requirements:
65
65
  - - "~>"
66
66
  - !ruby/object:Gem::Version
67
- version: '1.0'
67
+ version: '2.0'
68
68
  type: :runtime
69
69
  prerelease: false
70
70
  version_requirements: !ruby/object:Gem::Requirement
71
71
  requirements:
72
72
  - - "~>"
73
73
  - !ruby/object:Gem::Version
74
- version: '1.0'
74
+ version: '2.0'
75
75
  - !ruby/object:Gem::Dependency
76
76
  name: rdoc
77
77
  requirement: !ruby/object:Gem::Requirement
@@ -112,14 +112,14 @@ dependencies:
112
112
  requirements:
113
113
  - - "~>"
114
114
  - !ruby/object:Gem::Version
115
- version: '4.2'
115
+ version: '4.3'
116
116
  type: :development
117
117
  prerelease: false
118
118
  version_requirements: !ruby/object:Gem::Requirement
119
119
  requirements:
120
120
  - - "~>"
121
121
  - !ruby/object:Gem::Version
122
- version: '4.2'
122
+ version: '4.3'
123
123
  description: Analyze code for potentially uncalled / dead methods, now with auto-removal.
124
124
  email:
125
125
  - ryand-ruby@zenspider.com
@@ -164,7 +164,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
164
164
  - !ruby/object:Gem::Version
165
165
  version: '0'
166
166
  requirements: []
167
- rubygems_version: 3.6.9
167
+ rubygems_version: 3.7.2
168
168
  specification_version: 4
169
169
  summary: Analyze code for potentially uncalled / dead methods, now with auto-removal.
170
170
  test_files: []
metadata.gz.sig CHANGED
Binary file