kevinrutherford-reek 1.1.3.5 → 1.1.3.6

Sign up to get free protection for your applications and to get access to all the features.
data/History.txt CHANGED
@@ -1,6 +1,7 @@
1
1
  == 1.2 (in git)
2
2
 
3
3
  === Major Changes
4
+ * Reek's RDoc is now hosted at http://rdoc.info/projects/kevinrutherford/reek
4
5
  * Reek's output reports are now formatted differently:
5
6
  ** Reek is no longer silent about smell-free source code
6
7
  ** Output now reports on all files examined, even if they have no smells
data/Rakefile CHANGED
@@ -7,7 +7,6 @@ PROJECT_NAME = 'reek'
7
7
 
8
8
  BUILD_DIR = 'build'; directory BUILD_DIR
9
9
  PKG_DIR = "#{BUILD_DIR}/pkg"; directory PKG_DIR
10
- RDOC_DIR = "#{BUILD_DIR}/rdoc"; directory RDOC_DIR
11
10
 
12
11
  GEM_MANIFEST = "Manifest.txt"
13
12
  VERSION_FILE = 'lib/reek.rb'
data/lib/reek.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  $:.unshift File.dirname(__FILE__)
2
2
 
3
3
  module Reek # :doc:
4
- VERSION = '1.1.3.5'
4
+ VERSION = '1.1.3.6'
5
5
  end
data/lib/reek/report.rb CHANGED
@@ -19,6 +19,14 @@ module Reek
19
19
  @report.each { |smell| yield smell }
20
20
  end
21
21
 
22
+ #
23
+ # Checks this report for instances of +smell_class+, and returns +true+
24
+ # only if one of them has a report string matching all of the +patterns+.
25
+ #
26
+ def has_smell?(smell_class, patterns)
27
+ @report.any? { |smell| smell.matches?(smell_class, patterns) }
28
+ end
29
+
22
30
  def <<(smell) # :nodoc:
23
31
  @report << smell
24
32
  true
@@ -90,12 +98,16 @@ module Reek
90
98
  @sources.inject(0) {|sum, src| sum + src.report.length }
91
99
  end
92
100
 
93
- def smelly_sources
94
- @sources.select {|src| src.smelly? }
95
- end
96
-
97
101
  def full_report
98
102
  @sources.map { |src| src.full_report }.join
99
103
  end
104
+
105
+ #
106
+ # Checks this report for instances of +smell_class+, and returns +true+
107
+ # only if one of them has a report string matching all of the +patterns+.
108
+ #
109
+ def has_smell?(smell_class, patterns)
110
+ @sources.any? { |smell| smell.has_smell?(smell_class, patterns) }
111
+ end
100
112
  end
101
- end
113
+ end
data/lib/reek/source.rb CHANGED
@@ -92,7 +92,7 @@ module Reek
92
92
  # only if one of them has a report string matching all of the +patterns+.
93
93
  #
94
94
  def has_smell?(smell_class, patterns)
95
- report.any? { |smell| smell.matches?(smell_class, patterns) }
95
+ report.has_smell?(smell_class, patterns)
96
96
  end
97
97
 
98
98
  # Creates a formatted report of all the +Smells::SmellWarning+ objects recorded in
@@ -114,6 +114,14 @@ module Reek
114
114
  @sources = sources
115
115
  end
116
116
 
117
+ #
118
+ # Checks this source for instances of +smell_class+, and returns +true+
119
+ # only if one of them has a report string matching all of the +patterns+.
120
+ #
121
+ def has_smell?(smell_class, patterns=[])
122
+ report.has_smell?(smell_class, patterns)
123
+ end
124
+
117
125
  def smelly?
118
126
  @sources.any? {|source| source.smelly? }
119
127
  end
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.1.3.5"
5
+ s.version = "1.1.3.6"
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-06-29}
9
+ s.date = %q{2009-06-30}
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", "features/masking_smells.feature", "features/options.feature", "features/rake_task.feature", "features/reports.feature", "features/samples.feature", "features/stdin.feature", "features/step_definitions/reek_steps.rb", "features/support/env.rb", "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/object_source.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/uncommunicative_name.rb", "lib/reek/smells/utility_function.rb", "lib/reek/sniffer.rb", "lib/reek/source.rb", "lib/reek/spec.rb", "lib/reek/stop_context.rb", "lib/reek/yield_call_context.rb", "reek.gemspec", "spec/reek/block_context_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/name_spec.rb", "spec/reek/object_refs_spec.rb", "spec/reek/options_spec.rb", "spec/reek/report_spec.rb", "spec/reek/singleton_method_context_spec.rb", "spec/reek/smell_warning_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_detector_spec.rb", "spec/reek/smells/uncommunicative_name_spec.rb", "spec/reek/smells/utility_function_spec.rb", "spec/samples/corrupt_config_file/corrupt.reek", "spec/samples/corrupt_config_file/dirty.rb", "spec/samples/empty_config_file/dirty.rb", "spec/samples/empty_config_file/empty.reek", "spec/samples/inline.rb", "spec/samples/masked/dirty.rb", "spec/samples/masked/masked.reek", "spec/samples/optparse.rb", "spec/samples/redcloth.rb", "spec/samples/two_smelly_files/dirty_one.rb", "spec/samples/two_smelly_files/dirty_two.rb", "spec/slow/inline_spec.rb", "spec/slow/optparse_spec.rb", "spec/slow/redcloth_spec.rb", "spec/slow/reek_source_spec.rb", "spec/slow/source_list_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", "features/masking_smells.feature", "features/options.feature", "features/rake_task.feature", "features/reports.feature", "features/samples.feature", "features/stdin.feature", "features/step_definitions/reek_steps.rb", "features/support/env.rb", "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/object_source.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/uncommunicative_name.rb", "lib/reek/smells/utility_function.rb", "lib/reek/sniffer.rb", "lib/reek/source.rb", "lib/reek/spec.rb", "lib/reek/stop_context.rb", "lib/reek/yield_call_context.rb", "reek.gemspec", "spec/reek/block_context_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/name_spec.rb", "spec/reek/object_refs_spec.rb", "spec/reek/object_source_spec.rb", "spec/reek/options_spec.rb", "spec/reek/report_spec.rb", "spec/reek/singleton_method_context_spec.rb", "spec/reek/smell_warning_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_detector_spec.rb", "spec/reek/smells/uncommunicative_name_spec.rb", "spec/reek/smells/utility_function_spec.rb", "spec/samples/corrupt_config_file/corrupt.reek", "spec/samples/corrupt_config_file/dirty.rb", "spec/samples/empty_config_file/dirty.rb", "spec/samples/empty_config_file/empty.reek", "spec/samples/inline.rb", "spec/samples/masked/dirty.rb", "spec/samples/masked/masked.reek", "spec/samples/optparse.rb", "spec/samples/redcloth.rb", "spec/samples/two_smelly_files/dirty_one.rb", "spec/samples/two_smelly_files/dirty_two.rb", "spec/slow/inline_spec.rb", "spec/slow/optparse_spec.rb", "spec/slow/redcloth_spec.rb", "spec/slow/reek_source_spec.rb", "spec/slow/source_list_spec.rb", "spec/spec.opts", "spec/spec_helper.rb", "tasks/reek.rake", "tasks/test.rake"]
16
16
  s.homepage = %q{http://wiki.github.com/kevinrutherford/reek}
17
17
  s.post_install_message = %q{
18
18
  For more information on reek, see http://wiki.github.com/kevinrutherford/reek
@@ -0,0 +1,14 @@
1
+ require File.dirname(__FILE__) + '/../spec_helper.rb'
2
+
3
+ include Reek
4
+
5
+ describe Dir do
6
+ it 'reports correct smells via the Dir matcher' do
7
+ Dir['spec/samples/two_smelly_files/*.rb'].should reek_of(:UncommunicativeName)
8
+ end
9
+
10
+ it 'reports correct smells via SourceList' do
11
+ src = Dir['spec/samples/two_smelly_files/*.rb'].to_source
12
+ src.has_smell?(:UncommunicativeName).should be_true
13
+ end
14
+ end
data/tasks/test.rake ADDED
@@ -0,0 +1,42 @@
1
+ require 'rubygems'
2
+ require 'cucumber'
3
+ require 'cucumber/rake/task'
4
+ require 'spec'
5
+ require 'spec/rake/spectask'
6
+
7
+ namespace 'test' do
8
+ FAST = FileList['spec/reek/**/*_spec.rb']
9
+ SLOW = FileList['spec/slow/**/*_spec.rb']
10
+
11
+ Spec::Rake::SpecTask.new('spec') do |t|
12
+ t.spec_files = FAST
13
+ t.ruby_opts = ['-Ilib']
14
+ t.rcov = false
15
+ end
16
+
17
+ Spec::Rake::SpecTask.new('slow') do |t|
18
+ t.spec_files = SLOW
19
+ t.ruby_opts = ['-Ilib']
20
+ t.rcov = false
21
+ end
22
+
23
+ desc 'Runs all unit tests under RCov'
24
+ Spec::Rake::SpecTask.new('rcov') do |t|
25
+ t.spec_files = FAST + SLOW
26
+ t.rcov = true
27
+ t.rcov_dir = 'build/coverage'
28
+ end
29
+
30
+ Cucumber::Rake::Task.new(:features) do |t|
31
+ t.cucumber_opts = "features --format progress --no-color"
32
+ end
33
+
34
+ desc 'Runs all unit tests and acceptance tests'
35
+ task 'all' => ['test:spec', 'test:slow', 'test:features']
36
+ end
37
+
38
+ desc 'synonym for test:spec'
39
+ task 'spec' => 'test:spec'
40
+
41
+ desc 'synonym for test:all'
42
+ task 'test' => 'test:all'
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.1.3.5
4
+ version: 1.1.3.6
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-06-29 00:00:00 -07:00
12
+ date: 2009-06-30 00:00:00 -07:00
13
13
  default_executable: reek
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -111,6 +111,7 @@ files:
111
111
  - spec/reek/module_context_spec.rb
112
112
  - spec/reek/name_spec.rb
113
113
  - spec/reek/object_refs_spec.rb
114
+ - spec/reek/object_source_spec.rb
114
115
  - spec/reek/options_spec.rb
115
116
  - spec/reek/report_spec.rb
116
117
  - spec/reek/singleton_method_context_spec.rb
@@ -144,7 +145,7 @@ files:
144
145
  - spec/spec.opts
145
146
  - spec/spec_helper.rb
146
147
  - tasks/reek.rake
147
- - tasks/rspec.rake
148
+ - tasks/test.rake
148
149
  has_rdoc: false
149
150
  homepage: http://wiki.github.com/kevinrutherford/reek
150
151
  post_install_message: |
data/tasks/rspec.rake DELETED
@@ -1,22 +0,0 @@
1
- require 'spec'
2
- require 'spec/rake/spectask'
3
-
4
- namespace 'rspec' do
5
- FAST = FileList['spec/reek/**/*_spec.rb']
6
- SLOW = FileList['spec/slow/**/*_spec.rb']
7
-
8
- Spec::Rake::SpecTask.new('fast') do |t|
9
- t.spec_files = FAST
10
- t.ruby_opts = ['-Ilib']
11
- t.rcov = false
12
- end
13
-
14
- Spec::Rake::SpecTask.new('all') do |t|
15
- t.spec_files = FAST + SLOW
16
- t.rcov = true
17
- t.rcov_dir = 'build/coverage'
18
- end
19
- end
20
-
21
- desc 'runs the unit tests'
22
- task 'spec' => 'rspec:fast'