reek 1.2.1 → 1.2.3
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/History.txt +10 -0
- data/Rakefile +0 -1
- data/config/defaults.reek +8 -6
- data/features/masking_smells.feature +9 -9
- data/features/options.feature +2 -2
- data/features/profile.feature +34 -0
- data/features/rake_task.feature +74 -0
- data/features/reports.feature +1 -1
- data/features/samples.feature +4 -4
- data/features/stdin.feature +1 -1
- data/features/step_definitions/reek_steps.rb +11 -7
- data/features/support/env.rb +26 -18
- data/lib/reek/adapters/application.rb +9 -2
- data/lib/reek/adapters/command_line.rb +2 -2
- data/lib/reek/adapters/core_extras.rb +0 -8
- data/lib/reek/adapters/source.rb +4 -1
- data/lib/reek/adapters/spec.rb +1 -4
- data/lib/reek/block_context.rb +14 -8
- data/lib/reek/class_context.rb +6 -55
- data/lib/reek/code_context.rb +10 -0
- data/lib/reek/code_parser.rb +26 -53
- data/lib/reek/configuration.rb +12 -6
- data/lib/reek/if_context.rb +2 -3
- data/lib/reek/method_context.rb +8 -12
- data/lib/reek/module_context.rb +35 -16
- data/lib/reek/name.rb +2 -0
- data/lib/reek/object_refs.rb +0 -3
- data/lib/reek/sexp_formatter.rb +0 -2
- data/lib/reek/smells/attribute.rb +48 -0
- data/lib/reek/smells/class_variable.rb +17 -4
- data/lib/reek/smells/control_couple.rb +3 -10
- data/lib/reek/smells/data_clump.rb +10 -10
- data/lib/reek/smells/feature_envy.rb +1 -8
- data/lib/reek/smells/large_class.rb +3 -3
- data/lib/reek/smells/simulated_polymorphism.rb +17 -3
- data/lib/reek/smells/smell_detector.rb +11 -2
- data/lib/reek/smells/utility_function.rb +1 -1
- data/lib/reek/sniffer.rb +2 -8
- data/lib/reek/stop_context.rb +1 -1
- data/lib/reek/tree_dresser.rb +74 -0
- data/lib/reek.rb +1 -1
- data/reek.gemspec +3 -3
- data/spec/reek/adapters/should_reek_of_spec.rb +7 -1
- data/spec/reek/block_context_spec.rb +6 -6
- data/spec/reek/class_context_spec.rb +2 -23
- data/spec/reek/code_context_spec.rb +149 -67
- data/spec/reek/code_parser_spec.rb +35 -51
- data/spec/reek/method_context_spec.rb +4 -4
- data/spec/reek/singleton_method_context_spec.rb +1 -1
- data/spec/reek/smells/attribute_spec.rb +26 -0
- data/spec/reek/smells/behaves_like_variable_detector.rb +39 -0
- data/spec/reek/smells/class_variable_spec.rb +77 -43
- data/spec/reek/smells/control_couple_spec.rb +1 -1
- data/spec/reek/smells/data_clump_spec.rb +31 -13
- data/spec/reek/smells/feature_envy_spec.rb +1 -1
- data/spec/reek/smells/large_class_spec.rb +32 -69
- data/spec/reek/smells/long_parameter_list_spec.rb +0 -12
- data/spec/reek/smells/simulated_polymorphism_spec.rb +66 -18
- data/spec/reek/smells/utility_function_spec.rb +0 -21
- data/spec/reek/sniffer_spec.rb +1 -0
- data/spec/samples/not_quite_masked/dirty.rb +2 -0
- data/spec/spec_helper.rb +1 -1
- data/tasks/reek.rake +1 -1
- data/tasks/test.rake +3 -4
- metadata +8 -5
- data/lib/reek/adapters/object_source.rb +0 -52
- data/lib/reek/exceptions.reek +0 -20
- data/spec/quality/reek_source_spec.rb +0 -15
data/tasks/test.rake
CHANGED
@@ -6,7 +6,6 @@ require 'spec/rake/spectask'
|
|
6
6
|
|
7
7
|
namespace 'test' do
|
8
8
|
UNIT_TESTS = FileList['spec/reek/**/*_spec.rb']
|
9
|
-
QUALITY_TESTS = FileList['spec/quality/**/*_spec.rb']
|
10
9
|
|
11
10
|
Spec::Rake::SpecTask.new('spec') do |t|
|
12
11
|
t.spec_files = UNIT_TESTS
|
@@ -16,7 +15,7 @@ namespace 'test' do
|
|
16
15
|
end
|
17
16
|
|
18
17
|
Spec::Rake::SpecTask.new('quality') do |t|
|
19
|
-
t.spec_files =
|
18
|
+
t.spec_files = FileList['quality/**/*_spec.rb']
|
20
19
|
t.spec_opts = ['--color']
|
21
20
|
t.ruby_opts = ['-Ilib']
|
22
21
|
t.rcov = false
|
@@ -24,7 +23,7 @@ namespace 'test' do
|
|
24
23
|
|
25
24
|
desc 'Runs all unit tests under RCov'
|
26
25
|
Spec::Rake::SpecTask.new('rcov') do |t|
|
27
|
-
t.spec_files = UNIT_TESTS
|
26
|
+
t.spec_files = UNIT_TESTS
|
28
27
|
t.rcov = true
|
29
28
|
t.rcov_dir = 'build/coverage'
|
30
29
|
end
|
@@ -39,7 +38,7 @@ namespace 'test' do
|
|
39
38
|
end
|
40
39
|
|
41
40
|
desc 'Runs all unit tests, acceptance tests and quality checks'
|
42
|
-
task 'all' => ['test:spec', 'test:features', 'test:
|
41
|
+
task 'all' => ['test:spec', 'test:features', 'test:multiruby']
|
43
42
|
end
|
44
43
|
|
45
44
|
task 'clobber_rcov' => 'test:clobber_rcov'
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: reek
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.2.
|
4
|
+
version: 1.2.3
|
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-
|
12
|
+
date: 2009-11-02 00:00:00 +00:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -62,6 +62,8 @@ files:
|
|
62
62
|
- config/defaults.reek
|
63
63
|
- features/masking_smells.feature
|
64
64
|
- features/options.feature
|
65
|
+
- features/profile.feature
|
66
|
+
- features/rake_task.feature
|
65
67
|
- features/reports.feature
|
66
68
|
- features/samples.feature
|
67
69
|
- features/stdin.feature
|
@@ -72,7 +74,6 @@ files:
|
|
72
74
|
- lib/reek/adapters/command_line.rb
|
73
75
|
- lib/reek/adapters/config_file.rb
|
74
76
|
- lib/reek/adapters/core_extras.rb
|
75
|
-
- lib/reek/adapters/object_source.rb
|
76
77
|
- lib/reek/adapters/rake_task.rb
|
77
78
|
- lib/reek/adapters/report.rb
|
78
79
|
- lib/reek/adapters/source.rb
|
@@ -83,7 +84,6 @@ files:
|
|
83
84
|
- lib/reek/code_parser.rb
|
84
85
|
- lib/reek/configuration.rb
|
85
86
|
- lib/reek/detector_stack.rb
|
86
|
-
- lib/reek/exceptions.reek
|
87
87
|
- lib/reek/if_context.rb
|
88
88
|
- lib/reek/method_context.rb
|
89
89
|
- lib/reek/module_context.rb
|
@@ -92,6 +92,7 @@ files:
|
|
92
92
|
- lib/reek/sexp_formatter.rb
|
93
93
|
- lib/reek/singleton_method_context.rb
|
94
94
|
- lib/reek/smell_warning.rb
|
95
|
+
- lib/reek/smells/attribute.rb
|
95
96
|
- lib/reek/smells/class_variable.rb
|
96
97
|
- lib/reek/smells/control_couple.rb
|
97
98
|
- lib/reek/smells/data_clump.rb
|
@@ -108,9 +109,9 @@ files:
|
|
108
109
|
- lib/reek/smells/utility_function.rb
|
109
110
|
- lib/reek/sniffer.rb
|
110
111
|
- lib/reek/stop_context.rb
|
112
|
+
- lib/reek/tree_dresser.rb
|
111
113
|
- lib/reek/yield_call_context.rb
|
112
114
|
- reek.gemspec
|
113
|
-
- spec/quality/reek_source_spec.rb
|
114
115
|
- spec/reek/adapters/report_spec.rb
|
115
116
|
- spec/reek/adapters/should_reek_of_spec.rb
|
116
117
|
- spec/reek/adapters/should_reek_only_of_spec.rb
|
@@ -129,6 +130,8 @@ files:
|
|
129
130
|
- spec/reek/object_source_spec.rb
|
130
131
|
- spec/reek/singleton_method_context_spec.rb
|
131
132
|
- spec/reek/smell_warning_spec.rb
|
133
|
+
- spec/reek/smells/attribute_spec.rb
|
134
|
+
- spec/reek/smells/behaves_like_variable_detector.rb
|
132
135
|
- spec/reek/smells/class_variable_spec.rb
|
133
136
|
- spec/reek/smells/control_couple_spec.rb
|
134
137
|
- spec/reek/smells/data_clump_spec.rb
|
@@ -1,52 +0,0 @@
|
|
1
|
-
require 'reek/adapters/source'
|
2
|
-
require 'reek/configuration'
|
3
|
-
require 'reek/smells/large_class'
|
4
|
-
|
5
|
-
include Reek::Smells
|
6
|
-
|
7
|
-
module Reek
|
8
|
-
class ObjectSource < Source # :nodoc:
|
9
|
-
|
10
|
-
def self.unify(sexp) # :nodoc:
|
11
|
-
unifier = Unifier.new
|
12
|
-
unifier.processors.each do |proc|
|
13
|
-
proc.unsupported.delete :cfunc # HACK
|
14
|
-
end
|
15
|
-
return unifier.process(sexp[0])
|
16
|
-
end
|
17
|
-
|
18
|
-
def configure(sniffer)
|
19
|
-
super
|
20
|
-
disabled_config = {Reek::SmellConfiguration::ENABLED_KEY => false}
|
21
|
-
sniffer.configure(LargeClass, disabled_config)
|
22
|
-
end
|
23
|
-
|
24
|
-
def self.can_parse_objects?
|
25
|
-
return true if Object.const_defined?(:ParseTree)
|
26
|
-
begin
|
27
|
-
require 'parse_tree'
|
28
|
-
true
|
29
|
-
rescue LoadError
|
30
|
-
false
|
31
|
-
end
|
32
|
-
end
|
33
|
-
|
34
|
-
def syntax_tree
|
35
|
-
if ObjectSource.can_parse_objects?
|
36
|
-
ObjectSource.unify(ParseTree.new.parse_tree(@source))
|
37
|
-
else
|
38
|
-
throw ArgumentError.new('You must install the ParseTree gem to use this feature')
|
39
|
-
end
|
40
|
-
end
|
41
|
-
end
|
42
|
-
end
|
43
|
-
|
44
|
-
class Object
|
45
|
-
#
|
46
|
-
# Constructs a Sniffer which examines this object for code smells.
|
47
|
-
# (This feature is only enabled if you have the ParseTree gem installed.)
|
48
|
-
#
|
49
|
-
def to_reek_source
|
50
|
-
ObjectSource.new(self, self.to_s)
|
51
|
-
end
|
52
|
-
end
|
data/lib/reek/exceptions.reek
DELETED
@@ -1,20 +0,0 @@
|
|
1
|
-
---
|
2
|
-
Duplication:
|
3
|
-
exclude:
|
4
|
-
- Reek::Options#set_options
|
5
|
-
FeatureEnvy:
|
6
|
-
exclude:
|
7
|
-
- examine_context
|
8
|
-
LargeClass:
|
9
|
-
exclude:
|
10
|
-
- CodeParser
|
11
|
-
LongMethod:
|
12
|
-
exclude:
|
13
|
-
- Reek::SexpFormatter#self.format
|
14
|
-
- Reek::Options#set_options
|
15
|
-
UncommunicativeName:
|
16
|
-
accept:
|
17
|
-
- process_op_asgn1
|
18
|
-
UtilityFunction:
|
19
|
-
exclude:
|
20
|
-
- Reek::Spec
|
@@ -1,15 +0,0 @@
|
|
1
|
-
require File.dirname(__FILE__) + '/../spec_helper.rb'
|
2
|
-
|
3
|
-
describe 'Reek source code' do
|
4
|
-
it 'has no smells' do
|
5
|
-
Dir['lib/**/*.rb'].should_not reek
|
6
|
-
end
|
7
|
-
|
8
|
-
nucleus = Dir['lib/reek/**.rb'] - Dir['lib/reek/adapters/**/*.rb']
|
9
|
-
nucleus.each do |src|
|
10
|
-
it "#{src} contains no references from the nucleus out to the adapters" do
|
11
|
-
IO.readlines(src).grep(/adapters/).should == []
|
12
|
-
end
|
13
|
-
end
|
14
|
-
|
15
|
-
end
|