ruby-watchr 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,8 +1,8 @@
1
1
  require 'watchr/flog_metric/report'
2
2
  require 'watchr/smell'
3
3
  require 'watchr/smells_collector'
4
-
5
4
  require 'watchr/analysers/flog'
5
+ require 'watchr/rating'
6
6
 
7
7
  module Watchr
8
8
  #
@@ -12,6 +12,7 @@ module Watchr
12
12
  #
13
13
  class FileAnalyse
14
14
  include Analysers::Flog
15
+ include Rating
15
16
 
16
17
  attr_reader :path
17
18
 
@@ -0,0 +1,29 @@
1
+ module Watchr
2
+ module Rating
3
+ include SmellTypes
4
+
5
+ def rating
6
+ total = smells.reduce(0) {|total, smell| total += rate(smell)}
7
+
8
+ [100, 60, 40, 20, 10].each_with_index do |limit, i|
9
+ return %w(F E D C B A)[i] if total > limit
10
+ end
11
+ end
12
+
13
+ private
14
+
15
+ def rate(smell)
16
+ case smell.type
17
+ when COMPLEX_METHOD,
18
+ VERY_COMPLEX_METHOD,
19
+ COMPLEX_OBJECT,
20
+ VERY_COMPLEX_OBJECT
21
+ smell.options.total_score
22
+
23
+ when IDENTICAL_CODE,
24
+ SIMILAR_CODE
25
+ smell.options.mass
26
+ end
27
+ end
28
+ end
29
+ end
@@ -1,3 +1,3 @@
1
1
  module Watchr
2
- VERSION = "0.1.0"
2
+ VERSION = "0.1.1"
3
3
  end
@@ -0,0 +1,32 @@
1
+ require 'spec_helper'
2
+ require 'watchr/rating'
3
+
4
+ describe Watchr::Rating do
5
+
6
+ let(:complexity_smell) {
7
+ stub('smell',
8
+ :type => Watchr::SmellTypes::COMPLEX_METHOD,
9
+ :options => stub(:total_score => 29.3))
10
+ }
11
+
12
+ let(:duplication_smell) {
13
+ stub('smell',
14
+ :type => Watchr::SmellTypes::IDENTICAL_CODE,
15
+ :options => stub(:mass => 72))
16
+ }
17
+
18
+ let(:smells) { [complexity_smell, duplication_smell] }
19
+
20
+ let(:analyse) {
21
+ analyse = stub('analyse', :smells => smells)
22
+ analyse.extend Watchr::Rating
23
+
24
+ analyse
25
+ }
26
+
27
+ describe '#rating' do
28
+ subject { analyse.rating }
29
+
30
+ it { should == 'F' }
31
+ end
32
+ end
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 1
8
- - 0
9
- version: 0.1.0
8
+ - 1
9
+ version: 0.1.1
10
10
  platform: ruby
11
11
  authors:
12
12
  - Petr Janda
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2012-07-06 00:00:00 +02:00
17
+ date: 2012-07-08 00:00:00 +02:00
18
18
  default_executable:
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
@@ -82,6 +82,7 @@ files:
82
82
  - lib/watchr/flog_metric/report.rb
83
83
  - lib/watchr/location.rb
84
84
  - lib/watchr/paths.rb
85
+ - lib/watchr/rating.rb
85
86
  - lib/watchr/smell.rb
86
87
  - lib/watchr/smell_types.rb
87
88
  - lib/watchr/smells_collector.rb
@@ -96,6 +97,7 @@ files:
96
97
  - spec/watchr/flog_metric/flog_matric/flog_report_spec.rb
97
98
  - spec/watchr/location_spec.rb
98
99
  - spec/watchr/paths_spec.rb
100
+ - spec/watchr/rating_spec.rb
99
101
  - spec/watchr/smell_spec.rb
100
102
  - spec/watchr/smells_collector_spec.rb
101
103
  - watchr.gemspec
@@ -142,5 +144,6 @@ test_files:
142
144
  - spec/watchr/flog_metric/flog_matric/flog_report_spec.rb
143
145
  - spec/watchr/location_spec.rb
144
146
  - spec/watchr/paths_spec.rb
147
+ - spec/watchr/rating_spec.rb
145
148
  - spec/watchr/smell_spec.rb
146
149
  - spec/watchr/smells_collector_spec.rb