kevinrutherford-reek 1.0.0 → 1.0.1
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/lib/reek/report.rb +34 -2
- data/lib/reek/source.rb +1 -4
- data/lib/reek.rb +1 -1
- data/reek.gemspec +3 -3
- data/spec/reek/source_spec.rb +40 -0
- metadata +3 -2
data/lib/reek/report.rb
CHANGED
@@ -9,6 +9,9 @@ module Reek
|
|
9
9
|
@report = SortedSet.new
|
10
10
|
end
|
11
11
|
|
12
|
+
#
|
13
|
+
# Yields, in turn, each SmellWarning in this report.
|
14
|
+
#
|
12
15
|
def each
|
13
16
|
@report.each { |smell| yield smell }
|
14
17
|
end
|
@@ -18,11 +21,11 @@ module Reek
|
|
18
21
|
true
|
19
22
|
end
|
20
23
|
|
21
|
-
def empty?
|
24
|
+
def empty?
|
22
25
|
@report.empty?
|
23
26
|
end
|
24
27
|
|
25
|
-
def length
|
28
|
+
def length
|
26
29
|
@report.length
|
27
30
|
end
|
28
31
|
|
@@ -39,4 +42,33 @@ module Reek
|
|
39
42
|
end
|
40
43
|
end
|
41
44
|
|
45
|
+
class ReportList
|
46
|
+
include Enumerable
|
47
|
+
|
48
|
+
def initialize(sources)
|
49
|
+
@sources = sources
|
50
|
+
end
|
51
|
+
|
52
|
+
#
|
53
|
+
# Yields, in turn, each SmellWarning in every report in this report.
|
54
|
+
#
|
55
|
+
def each(&blk)
|
56
|
+
@sources.each {|src| src.report.each(&blk) }
|
57
|
+
end
|
58
|
+
|
59
|
+
def empty?
|
60
|
+
length == 0
|
61
|
+
end
|
62
|
+
|
63
|
+
def length
|
64
|
+
@sources.inject(0) {|sum, src| sum + src.report.length }
|
65
|
+
end
|
66
|
+
|
67
|
+
def to_s
|
68
|
+
@sources.select {|src| src.smelly? }.map do |src|
|
69
|
+
warnings = src.report
|
70
|
+
"\"#{src}\" -- #{warnings.length} warnings:\n#{warnings.to_s}\n"
|
71
|
+
end.join("\n")
|
72
|
+
end
|
73
|
+
end
|
42
74
|
end
|
data/lib/reek/source.rb
CHANGED
@@ -107,10 +107,7 @@ module Reek
|
|
107
107
|
end
|
108
108
|
|
109
109
|
def report
|
110
|
-
@sources
|
111
|
-
warnings = src.report
|
112
|
-
"\"#{src}\" -- #{warnings.length} warnings:\n#{warnings.to_s}\n"
|
113
|
-
end.join("\n")
|
110
|
+
ReportList.new(@sources)
|
114
111
|
end
|
115
112
|
end
|
116
113
|
end
|
data/lib/reek.rb
CHANGED
data/reek.gemspec
CHANGED
@@ -2,17 +2,17 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = %q{reek}
|
5
|
-
s.version = "1.0.
|
5
|
+
s.version = "1.0.1"
|
6
6
|
|
7
7
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
8
8
|
s.authors = ["Kevin Rutherford"]
|
9
|
-
s.date = %q{2009-04-
|
9
|
+
s.date = %q{2009-04-06}
|
10
10
|
s.default_executable = %q{reek}
|
11
11
|
s.description = %q{Code smell detector for Ruby}
|
12
12
|
s.email = ["kevin@rutherford-software.com"]
|
13
13
|
s.executables = ["reek"]
|
14
14
|
s.extra_rdoc_files = ["History.txt", "README.txt"]
|
15
|
-
s.files = ["History.txt", "README.txt", "Rakefile", "bin/reek", "config/defaults.reek", "lib/reek.rb", "lib/reek/block_context.rb", "lib/reek/class_context.rb", "lib/reek/code_context.rb", "lib/reek/code_parser.rb", "lib/reek/exceptions.reek", "lib/reek/if_context.rb", "lib/reek/method_context.rb", "lib/reek/module_context.rb", "lib/reek/name.rb", "lib/reek/object_refs.rb", "lib/reek/options.rb", "lib/reek/rake_task.rb", "lib/reek/report.rb", "lib/reek/sexp_formatter.rb", "lib/reek/singleton_method_context.rb", "lib/reek/smell_warning.rb", "lib/reek/smells/control_couple.rb", "lib/reek/smells/duplication.rb", "lib/reek/smells/feature_envy.rb", "lib/reek/smells/large_class.rb", "lib/reek/smells/long_method.rb", "lib/reek/smells/long_parameter_list.rb", "lib/reek/smells/long_yield_list.rb", "lib/reek/smells/nested_iterators.rb", "lib/reek/smells/smell_detector.rb", "lib/reek/smells/smells.rb", "lib/reek/smells/uncommunicative_name.rb", "lib/reek/smells/utility_function.rb", "lib/reek/source.rb", "lib/reek/spec.rb", "lib/reek/stop_context.rb", "lib/reek/yield_call_context.rb", "reek.gemspec", "spec/integration/reek_source_spec.rb", "spec/integration/script_spec.rb", "spec/reek/class_context_spec.rb", "spec/reek/code_context_spec.rb", "spec/reek/code_parser_spec.rb", "spec/reek/config_spec.rb", "spec/reek/if_context_spec.rb", "spec/reek/method_context_spec.rb", "spec/reek/module_context_spec.rb", "spec/reek/object_refs_spec.rb", "spec/reek/options_spec.rb", "spec/reek/report_spec.rb", "spec/reek/sexp_formatter_spec.rb", "spec/reek/singleton_method_context_spec.rb", "spec/reek/smells/control_couple_spec.rb", "spec/reek/smells/duplication_spec.rb", "spec/reek/smells/feature_envy_spec.rb", "spec/reek/smells/large_class_spec.rb", "spec/reek/smells/long_method_spec.rb", "spec/reek/smells/long_parameter_list_spec.rb", "spec/reek/smells/nested_iterators_spec.rb", "spec/reek/smells/smell_spec.rb", "spec/reek/smells/uncommunicative_name_spec.rb", "spec/reek/smells/utility_function_spec.rb", "spec/samples/inline.rb", "spec/samples/inline_spec.rb", "spec/samples/optparse.rb", "spec/samples/optparse_spec.rb", "spec/samples/redcloth.rb", "spec/samples/redcloth_spec.rb", "spec/spec.opts", "spec/spec_helper.rb", "tasks/reek.rake", "tasks/rspec.rake"]
|
15
|
+
s.files = ["History.txt", "README.txt", "Rakefile", "bin/reek", "config/defaults.reek", "lib/reek.rb", "lib/reek/block_context.rb", "lib/reek/class_context.rb", "lib/reek/code_context.rb", "lib/reek/code_parser.rb", "lib/reek/exceptions.reek", "lib/reek/if_context.rb", "lib/reek/method_context.rb", "lib/reek/module_context.rb", "lib/reek/name.rb", "lib/reek/object_refs.rb", "lib/reek/options.rb", "lib/reek/rake_task.rb", "lib/reek/report.rb", "lib/reek/sexp_formatter.rb", "lib/reek/singleton_method_context.rb", "lib/reek/smell_warning.rb", "lib/reek/smells/control_couple.rb", "lib/reek/smells/duplication.rb", "lib/reek/smells/feature_envy.rb", "lib/reek/smells/large_class.rb", "lib/reek/smells/long_method.rb", "lib/reek/smells/long_parameter_list.rb", "lib/reek/smells/long_yield_list.rb", "lib/reek/smells/nested_iterators.rb", "lib/reek/smells/smell_detector.rb", "lib/reek/smells/smells.rb", "lib/reek/smells/uncommunicative_name.rb", "lib/reek/smells/utility_function.rb", "lib/reek/source.rb", "lib/reek/spec.rb", "lib/reek/stop_context.rb", "lib/reek/yield_call_context.rb", "reek.gemspec", "spec/integration/reek_source_spec.rb", "spec/integration/script_spec.rb", "spec/reek/class_context_spec.rb", "spec/reek/code_context_spec.rb", "spec/reek/code_parser_spec.rb", "spec/reek/config_spec.rb", "spec/reek/if_context_spec.rb", "spec/reek/method_context_spec.rb", "spec/reek/module_context_spec.rb", "spec/reek/object_refs_spec.rb", "spec/reek/options_spec.rb", "spec/reek/report_spec.rb", "spec/reek/sexp_formatter_spec.rb", "spec/reek/singleton_method_context_spec.rb", "spec/reek/smells/control_couple_spec.rb", "spec/reek/smells/duplication_spec.rb", "spec/reek/smells/feature_envy_spec.rb", "spec/reek/smells/large_class_spec.rb", "spec/reek/smells/long_method_spec.rb", "spec/reek/smells/long_parameter_list_spec.rb", "spec/reek/smells/nested_iterators_spec.rb", "spec/reek/smells/smell_spec.rb", "spec/reek/smells/uncommunicative_name_spec.rb", "spec/reek/smells/utility_function_spec.rb", "spec/reek/source_spec.rb", "spec/samples/inline.rb", "spec/samples/inline_spec.rb", "spec/samples/optparse.rb", "spec/samples/optparse_spec.rb", "spec/samples/redcloth.rb", "spec/samples/redcloth_spec.rb", "spec/spec.opts", "spec/spec_helper.rb", "tasks/reek.rake", "tasks/rspec.rake"]
|
16
16
|
s.has_rdoc = true
|
17
17
|
s.homepage = %q{http://wiki.github.com/kevinrutherford/reek}
|
18
18
|
s.post_install_message = %q{
|
@@ -0,0 +1,40 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../spec_helper.rb'
|
2
|
+
|
3
|
+
require 'reek/source'
|
4
|
+
|
5
|
+
include Reek
|
6
|
+
|
7
|
+
describe SourceList do
|
8
|
+
|
9
|
+
describe 'with no smells in any source' do
|
10
|
+
before :each do
|
11
|
+
@src = Dir['lib/reek/*.rb'].to_source
|
12
|
+
end
|
13
|
+
|
14
|
+
it 'reports no smells' do
|
15
|
+
@src.report.length.should == 0
|
16
|
+
end
|
17
|
+
|
18
|
+
it 'is empty' do
|
19
|
+
@src.report.should be_empty
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
describe 'with smells in one source' do
|
24
|
+
before :each do
|
25
|
+
@src = Source.from_pathlist(['spec/samples/inline.rb', 'lib/reek.rb'])
|
26
|
+
end
|
27
|
+
|
28
|
+
it 'reports some smells in the samples' do
|
29
|
+
@src.report.length.should == 32
|
30
|
+
end
|
31
|
+
|
32
|
+
it 'is smelly' do
|
33
|
+
@src.should be_smelly
|
34
|
+
end
|
35
|
+
|
36
|
+
it 'reports an UncommunicativeName' do
|
37
|
+
@src.report.any? {|warning| warning.report =~ /Uncommunicative Name/}.should be_true
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: kevinrutherford-reek
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kevin Rutherford
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-04-
|
12
|
+
date: 2009-04-06 00:00:00 -07:00
|
13
13
|
default_executable: reek
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -106,6 +106,7 @@ files:
|
|
106
106
|
- spec/reek/smells/smell_spec.rb
|
107
107
|
- spec/reek/smells/uncommunicative_name_spec.rb
|
108
108
|
- spec/reek/smells/utility_function_spec.rb
|
109
|
+
- spec/reek/source_spec.rb
|
109
110
|
- spec/samples/inline.rb
|
110
111
|
- spec/samples/inline_spec.rb
|
111
112
|
- spec/samples/optparse.rb
|