Class: Roodi::Checks::AbcMetricMethodCheck
- Defined in:
- lib/roodi/checks/abc_metric_method_check.rb
Constant Summary collapse
- ASSIGNMENTS =
TODO: ‘-=’ does not work in the moment!
[:lasgn]
- BRANCHES =
[:vcall, :call]
- CONDITIONS =
[:==, :<=, :>=, :<, :>]
- OPERATORS =
[:*, :/, :%, :+, :<<, :>>, :&, :|, :^]
- DEFAULT_SCORE =
10
Instance Method Summary collapse
- #evaluate(node) ⇒ Object
-
#initialize(options = {}) ⇒ AbcMetricMethodCheck
constructor
A new instance of AbcMetricMethodCheck.
- #interesting_nodes ⇒ Object
Methods inherited from Check
#add_error, #errors, #evaluate_node_at_line, #position
Constructor Details
#initialize(options = {}) ⇒ AbcMetricMethodCheck
Returns a new instance of AbcMetricMethodCheck.
16 17 18 19 |
# File 'lib/roodi/checks/abc_metric_method_check.rb', line 16 def initialize( = {}) super() @score = ['score'] || DEFAULT_SCORE end |
Instance Method Details
#evaluate(node) ⇒ Object
25 26 27 28 29 30 31 32 |
# File 'lib/roodi/checks/abc_metric_method_check.rb', line 25 def evaluate(node) method_name = node[1] a = count_assignments(node) b = count_branches(node) c = count_conditionals(node) score = Math.sqrt(a*a + b*b + c*c) add_error({ :method => method_name, :score => score }) unless score <= @score end |
#interesting_nodes ⇒ Object
21 22 23 |
# File 'lib/roodi/checks/abc_metric_method_check.rb', line 21 def interesting_nodes [:defn] end |