flay 2.0.1 → 2.1.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.
Files changed (6) hide show
  1. data.tar.gz.sig +4 -2
  2. data/History.txt +10 -0
  3. data/bin/flay +0 -1
  4. data/lib/flay.rb +20 -8
  5. metadata +11 -11
  6. metadata.gz.sig +0 -0
data.tar.gz.sig CHANGED
@@ -1,2 +1,4 @@
1
- �� �v��{/ ڃ*G��X��޺���kF�� m�&(EA�
2
- ����%~��su���L0Z\����}yZb��.�eS��Ҿ��
1
+ ;}����/��ѥ�X��~���b2����8.�Mz��6g[Z��>�[KULb|«f�&֞�o&�r�#Ĥ
2
+ Yh>5����Y��3�Q��y� fr
3
+ ��"����{F����qU�0�z�B�M�h��jF��EQ��|�ߤ1�6(��4Q9�?3z��\�J���\)`�i��aGUF����A��ۤ0�C�<�<
4
+ ���c�
data/History.txt CHANGED
@@ -1,3 +1,13 @@
1
+ === 2.1.0 / 2013-02-13
2
+
3
+ * 5 minor enhancements:
4
+
5
+ * Added --timeout option. Defaults to 10 seconds.
6
+ * Added ability for plugins to define options_<pluginname> method to extend options.
7
+ * Flay no longer defaults to '.' if no args given. Allows plugins to do more
8
+ * Moved #analyze down to #report. #process only processes, nothing more.
9
+ * Sort output for more stable reporting. Better for diffing against, my dear.
10
+
1
11
  === 2.0.1 / 2012-12-18
2
12
 
3
13
  * 2 bug fixes:
data/bin/flay CHANGED
@@ -4,7 +4,6 @@ require 'flay'
4
4
 
5
5
  flay = Flay.new Flay.parse_options
6
6
 
7
- ARGV << '.' if ARGV.empty?
8
7
  files = Flay.expand_dirs_to_files(*ARGV)
9
8
 
10
9
  flay.process(*files)
data/lib/flay.rb CHANGED
@@ -15,7 +15,7 @@ class File
15
15
  end
16
16
 
17
17
  class Flay
18
- VERSION = '2.0.1'
18
+ VERSION = '2.1.0'
19
19
 
20
20
  def self.default_options
21
21
  {
@@ -23,10 +23,11 @@ class Flay
23
23
  :mass => 16,
24
24
  :summary => false,
25
25
  :verbose => false,
26
+ :timeout => 10,
26
27
  }
27
28
  end
28
29
 
29
- def self.parse_options
30
+ def self.parse_options args = ARGV
30
31
  options = self.default_options
31
32
 
32
33
  OptionParser.new do |opts|
@@ -46,7 +47,8 @@ class Flay
46
47
  abort "--fuzzy is no longer supported. Sorry. It sucked."
47
48
  end
48
49
 
49
- opts.on('-m', '--mass MASS', Integer, "Sets mass threshold") do |m|
50
+ opts.on('-m', '--mass MASS', Integer,
51
+ "Sets mass threshold (default = #{options[:mass]})") do |m|
50
52
  options[:mass] = m.to_i
51
53
  end
52
54
 
@@ -62,13 +64,23 @@ class Flay
62
64
  options[:summary] = true
63
65
  end
64
66
 
67
+ opts.on('-t', '--timeout TIME', Integer,
68
+ "Set the timeout. (default = #{options[:timeout]})") do |t|
69
+ options[:timeout] = t.to_i
70
+ end
71
+
65
72
  extensions = ['rb'] + Flay.load_plugins
66
73
 
67
74
  opts.separator ""
68
75
  opts.separator "Known extensions: #{extensions.join(', ')}"
69
76
 
77
+ extensions.each do |meth|
78
+ msg = "options_#{meth}"
79
+ send msg, opts, options if self.respond_to?(msg)
80
+ end
81
+
70
82
  begin
71
- opts.parse!
83
+ opts.parse! args
72
84
  rescue => e
73
85
  abort "#{e}\n\n#{opts}"
74
86
  end
@@ -155,8 +167,6 @@ class Flay
155
167
  warn " skipping #{file}: #{e.message}"
156
168
  end
157
169
  end
158
-
159
- analyze
160
170
  end
161
171
 
162
172
  def analyze
@@ -172,7 +182,7 @@ class Flay
172
182
 
173
183
  def process_rb file
174
184
  begin
175
- RubyParser.new.process(File.binread(file), file)
185
+ RubyParser.new.process(File.binread(file), file, option[:timeout])
176
186
  rescue Timeout::Error
177
187
  warn "TIMEOUT parsing #{file}. Skipping."
178
188
  end
@@ -251,6 +261,8 @@ class Flay
251
261
  end
252
262
 
253
263
  def report prune = nil
264
+ analyze
265
+
254
266
  puts "Total score (lower is better) = #{self.total}"
255
267
  puts
256
268
 
@@ -282,7 +294,7 @@ class Flay
282
294
  puts "%d) %s code found in %p (mass%s = %d)" %
283
295
  [count, match, node.first, bonus, mass]
284
296
 
285
- nodes.each_with_index do |x, i|
297
+ nodes.sort_by { |x| [x.file, x.line] }.each_with_index do |x, i|
286
298
  if option[:diff] then
287
299
  c = (?A.ord + i).chr
288
300
  puts " #{c}: #{x.file}:#{x.line}"
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: flay
3
3
  version: !ruby/object:Gem::Version
4
- hash: 13
4
+ hash: 11
5
5
  prerelease:
6
6
  segments:
7
7
  - 2
8
- - 0
9
8
  - 1
10
- version: 2.0.1
9
+ - 0
10
+ version: 2.1.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - Ryan Davis
@@ -36,7 +36,7 @@ cert_chain:
36
36
  FBHgymkyj/AOSqKRIpXPhjC6
37
37
  -----END CERTIFICATE-----
38
38
 
39
- date: 2012-12-19 00:00:00 Z
39
+ date: 2013-02-14 00:00:00 Z
40
40
  dependencies:
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: sexp_processor
@@ -76,11 +76,11 @@ dependencies:
76
76
  requirements:
77
77
  - - ~>
78
78
  - !ruby/object:Gem::Version
79
- hash: 29
79
+ hash: 23
80
80
  segments:
81
81
  - 4
82
- - 3
83
- version: "4.3"
82
+ - 6
83
+ version: "4.6"
84
84
  type: :development
85
85
  version_requirements: *id003
86
86
  - !ruby/object:Gem::Dependency
@@ -106,11 +106,11 @@ dependencies:
106
106
  requirements:
107
107
  - - ~>
108
108
  - !ruby/object:Gem::Version
109
- hash: 15
109
+ hash: 13
110
110
  segments:
111
111
  - 3
112
- - 4
113
- version: "3.4"
112
+ - 5
113
+ version: "3.5"
114
114
  type: :development
115
115
  version_requirements: *id005
116
116
  description: |-
@@ -169,7 +169,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
169
169
  requirements: []
170
170
 
171
171
  rubyforge_project: seattlerb
172
- rubygems_version: 1.8.24
172
+ rubygems_version: 1.8.25
173
173
  signing_key:
174
174
  specification_version: 3
175
175
  summary: Flay analyzes code for structural similarities
metadata.gz.sig CHANGED
Binary file