flog 2.5.3 → 3.0.0.b1

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.
data.tar.gz.sig CHANGED
Binary file
data/.autotest CHANGED
@@ -1,11 +1,14 @@
1
1
  # -*- ruby -*-
2
2
 
3
3
  require 'autotest/restart'
4
- require 'autotest/rcov'
4
+ require 'autotest/rcov' if ENV['RCOV']
5
5
 
6
6
  Autotest.add_hook :initialize do |at|
7
7
  at.order = :random
8
8
 
9
+ at.libs << ":../../ruby_parser/dev/lib"
10
+ at.libs << ":../../sexp_processor/dev/lib"
11
+
9
12
  at.add_mapping(/^spec\/.*_spec\.rb$/) do |filename, _|
10
13
  filename
11
14
  end
data/History.txt CHANGED
@@ -1,3 +1,17 @@
1
+ === 3.0.0.b1 / 2012-07-26
2
+
3
+ * 4 minor enhancements:
4
+
5
+ * Added --18 and --19 flags to specify parser. Defaults to hybrid.
6
+ * Explicitly use Ruby18Parser to remove deprecation warnings.
7
+ * Modified processor to deal with cleaner sexps from RP 3.x.
8
+ * Use File.binread (File.read in 1.8) to bypass encoding errors
9
+
10
+ * 2 bug fixes:
11
+
12
+ * Cleaned up some 1.9 warnings.
13
+ * Fixed failing tests against ruby_parser 3
14
+
1
15
  === 2.5.3 / 2011-09-21
2
16
 
3
17
  * 1 minor enhancement:
data/README.txt CHANGED
@@ -27,7 +27,7 @@ report. The higher the score, the more pain the code is in.
27
27
  == REQUIREMENTS:
28
28
 
29
29
  * ruby2ruby (only for -v)
30
- * ParseTree (soon to switch to ruby_parser)
30
+ * ruby_parser
31
31
 
32
32
  == INSTALL:
33
33
 
data/Rakefile CHANGED
@@ -17,8 +17,8 @@ Hoe.spec 'flog' do
17
17
 
18
18
  self.rubyforge_name = 'seattlerb'
19
19
 
20
- extra_deps << ['sexp_processor', '~> 3.0']
21
- extra_deps << ['ruby_parser', '~> 2.0']
20
+ extra_deps << ['sexp_processor', '~> 4.0']
21
+ extra_deps << ['ruby_parser', '~> 3.0.0.a4']
22
22
  end
23
23
 
24
24
  # vim: syntax=ruby
data/lib/flog.rb CHANGED
@@ -3,8 +3,16 @@ require 'sexp_processor'
3
3
  require 'ruby_parser'
4
4
  require 'optparse'
5
5
 
6
+ class File
7
+ RUBY19 = "<3".respond_to? :encoding
8
+
9
+ class << self
10
+ alias :binread :read unless RUBY19
11
+ end
12
+ end
13
+
6
14
  class Flog < SexpProcessor
7
- VERSION = '2.5.3'
15
+ VERSION = '3.0.0.b1'
8
16
 
9
17
  THRESHOLD = 0.60
10
18
  SCORES = Hash.new 1
@@ -125,6 +133,7 @@ class Flog < SexpProcessor
125
133
  option = {
126
134
  :quiet => true,
127
135
  :continue => false,
136
+ :parser => RubyParser,
128
137
  }
129
138
 
130
139
  OptionParser.new do |opts|
@@ -177,6 +186,14 @@ class Flog < SexpProcessor
177
186
  option[:verbose] = true
178
187
  end
179
188
 
189
+ opts.on("--18", "Use a ruby 1.8 parser.") do
190
+ option[:parser] = Ruby18Parser
191
+ end
192
+
193
+ opts.on("--19", "Use a ruby 1.9 parser.") do
194
+ option[:parser] = Ruby19Parser
195
+ end
196
+
180
197
  next if self.plugins.empty?
181
198
  opts.separator "Plugin options:"
182
199
 
@@ -235,7 +252,7 @@ class Flog < SexpProcessor
235
252
  files.each do |file|
236
253
  begin
237
254
  # TODO: replace File.open to deal with "-"
238
- ruby = file == '-' ? $stdin.read : File.read(file)
255
+ ruby = file == '-' ? $stdin.read : File.binread(file)
239
256
  warn "** flogging #{file}" if option[:verbose]
240
257
 
241
258
  ast = @parser.process(ruby, file)
@@ -243,7 +260,7 @@ class Flog < SexpProcessor
243
260
  mass[file] = ast.mass
244
261
  process ast
245
262
  rescue RegexpError, SyntaxError, Racc::ParseError => e
246
- if e.inspect =~ /<%|%>/ or ruby =~ /<%|%>/ then
263
+ if e.inspect =~ /<\%|%\>/ or ruby =~ /<\%|%\>/ then
247
264
  warn "#{e.inspect} at #{e.backtrace.first(5).join(', ')}"
248
265
  warn "\n...stupid lemmings and their bad erb templates... skipping"
249
266
  else
@@ -300,7 +317,7 @@ class Flog < SexpProcessor
300
317
  @method_stack = []
301
318
  @method_locations = {}
302
319
  @mass = {}
303
- @parser = RubyParser.new
320
+ @parser = option[:parser].new
304
321
  self.auto_shift_type = true
305
322
  self.reset
306
323
  end
@@ -506,7 +523,7 @@ class Flog < SexpProcessor
506
523
  add_to_score :assignment
507
524
  process exp.shift # lhs
508
525
  exp.shift # name
509
- process exp.shift # rhs
526
+ process_until_empty exp # rhs
510
527
  s()
511
528
  end
512
529
 
@@ -544,9 +561,11 @@ class Flog < SexpProcessor
544
561
  penalize_by 0.2 do
545
562
  process exp.shift # recv
546
563
  end
564
+
547
565
  name = exp.shift
566
+
548
567
  penalize_by 0.2 do
549
- process exp.shift # args
568
+ process_until_empty exp
550
569
  end
551
570
 
552
571
  add_to_score name, SCORES[name]
data/test/test_flog.rb CHANGED
@@ -3,7 +3,7 @@ require 'flog'
3
3
 
4
4
  class TestFlog < MiniTest::Unit::TestCase
5
5
  def setup
6
- @flog = Flog.new
6
+ @flog = Flog.new :parser => RubyParser
7
7
  end
8
8
 
9
9
  def test_add_to_score
@@ -106,7 +106,7 @@ class TestFlog < MiniTest::Unit::TestCase
106
106
  assert_equal exp, @flog.calls
107
107
 
108
108
  assert_equal 1.6, @flog.total unless @flog.option[:methods]
109
- assert_equal 4, @flog.mass["-"] # HACK: 3 is for an unpublished sexp fmt
109
+ assert_equal 3, @flog.mass["-"]
110
110
  ensure
111
111
  $stdin = old_stdin
112
112
  end
@@ -562,7 +562,7 @@ class TestFlog < MiniTest::Unit::TestCase
562
562
  @flog.option[:all] = true
563
563
 
564
564
  assert_equal 1.6, @flog.total unless @flog.option[:methods]
565
- assert_equal 4, @flog.mass["-"] # HACK: 3 is for an unpublished sexp fmt
565
+ assert_equal 3, @flog.mass["-"]
566
566
 
567
567
  o = StringIO.new
568
568
  @flog.report o
metadata CHANGED
@@ -1,13 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: flog
3
3
  version: !ruby/object:Gem::Version
4
- hash: 29
5
- prerelease:
4
+ hash: 1257799903
5
+ prerelease: 6
6
6
  segments:
7
- - 2
8
- - 5
9
7
  - 3
10
- version: 2.5.3
8
+ - 0
9
+ - 0
10
+ - b
11
+ - 1
12
+ version: 3.0.0.b1
11
13
  platform: ruby
12
14
  authors:
13
15
  - Ryan Davis
@@ -36,7 +38,7 @@ cert_chain:
36
38
  FBHgymkyj/AOSqKRIpXPhjC6
37
39
  -----END CERTIFICATE-----
38
40
 
39
- date: 2011-09-21 00:00:00 Z
41
+ date: 2012-07-27 00:00:00 Z
40
42
  dependencies:
41
43
  - !ruby/object:Gem::Dependency
42
44
  name: sexp_processor
@@ -46,11 +48,11 @@ dependencies:
46
48
  requirements:
47
49
  - - ~>
48
50
  - !ruby/object:Gem::Version
49
- hash: 7
51
+ hash: 27
50
52
  segments:
51
- - 3
53
+ - 4
52
54
  - 0
53
- version: "3.0"
55
+ version: "4.0"
54
56
  type: :runtime
55
57
  version_requirements: *id001
56
58
  - !ruby/object:Gem::Dependency
@@ -61,11 +63,14 @@ dependencies:
61
63
  requirements:
62
64
  - - ~>
63
65
  - !ruby/object:Gem::Version
64
- hash: 3
66
+ hash: 1257782997
65
67
  segments:
66
- - 2
68
+ - 3
69
+ - 0
67
70
  - 0
68
- version: "2.0"
71
+ - a
72
+ - 4
73
+ version: 3.0.0.a4
69
74
  type: :runtime
70
75
  version_requirements: *id002
71
76
  - !ruby/object:Gem::Dependency
@@ -76,28 +81,43 @@ dependencies:
76
81
  requirements:
77
82
  - - ~>
78
83
  - !ruby/object:Gem::Version
79
- hash: 15
84
+ hash: 3
80
85
  segments:
86
+ - 3
81
87
  - 2
82
- - 6
83
- version: "2.6"
88
+ version: "3.2"
84
89
  type: :development
85
90
  version_requirements: *id003
86
91
  - !ruby/object:Gem::Dependency
87
- name: hoe
92
+ name: rdoc
88
93
  prerelease: false
89
94
  requirement: &id004 !ruby/object:Gem::Requirement
90
95
  none: false
91
96
  requirements:
92
97
  - - ~>
93
98
  - !ruby/object:Gem::Version
94
- hash: 27
99
+ hash: 19
95
100
  segments:
96
- - 2
97
- - 12
98
- version: "2.12"
101
+ - 3
102
+ - 10
103
+ version: "3.10"
99
104
  type: :development
100
105
  version_requirements: *id004
106
+ - !ruby/object:Gem::Dependency
107
+ name: hoe
108
+ prerelease: false
109
+ requirement: &id005 !ruby/object:Gem::Requirement
110
+ none: false
111
+ requirements:
112
+ - - ~>
113
+ - !ruby/object:Gem::Version
114
+ hash: 7
115
+ segments:
116
+ - 3
117
+ - 0
118
+ version: "3.0"
119
+ type: :development
120
+ version_requirements: *id005
101
121
  description: |-
102
122
  Flog reports the most tortured code in an easy to read pain
103
123
  report. The higher the score, the more pain the code is in.
@@ -144,16 +164,18 @@ required_ruby_version: !ruby/object:Gem::Requirement
144
164
  required_rubygems_version: !ruby/object:Gem::Requirement
145
165
  none: false
146
166
  requirements:
147
- - - ">="
167
+ - - ">"
148
168
  - !ruby/object:Gem::Version
149
- hash: 3
169
+ hash: 25
150
170
  segments:
151
- - 0
152
- version: "0"
171
+ - 1
172
+ - 3
173
+ - 1
174
+ version: 1.3.1
153
175
  requirements: []
154
176
 
155
177
  rubyforge_project: seattlerb
156
- rubygems_version: 1.8.10
178
+ rubygems_version: 1.8.24
157
179
  signing_key:
158
180
  specification_version: 3
159
181
  summary: Flog reports the most tortured code in an easy to read pain report
metadata.gz.sig CHANGED
Binary file