Class: PuppetLint::Metrics::Abc

Inherits:
Object
  • Object
show all
Defined in:
lib/puppet-lint/metrics/abc.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeAbc

Returns a new instance of Abc.



8
9
10
11
12
13
14
15
# File 'lib/puppet-lint/metrics/abc.rb', line 8

def initialize()
  @@abc_visitor ||= Puppet::Pops::Visitor.new(nil, "abc", 0, 0)
  @metrics = {
    assignment: 0,
    branch: 0,
    conditional: 0,
  }
end

Instance Attribute Details

#metricsObject (readonly)

Returns the value of attribute metrics.



6
7
8
# File 'lib/puppet-lint/metrics/abc.rb', line 6

def metrics
  @metrics
end

Instance Method Details

#abc(o) ⇒ Object



22
23
24
# File 'lib/puppet-lint/metrics/abc.rb', line 22

def abc(o)
  @@abc_visitor.visit_this_0(self, o)
end

#abc_AssignmentExpression(o) ⇒ Object



42
43
44
# File 'lib/puppet-lint/metrics/abc.rb', line 42

def abc_AssignmentExpression(o)
  assignment
end

#abc_AttributeOperation(o) ⇒ Object



46
47
48
# File 'lib/puppet-lint/metrics/abc.rb', line 46

def abc_AttributeOperation(o)
  assignment
end

#abc_BlockExpression(o) ⇒ Object



62
63
64
# File 'lib/puppet-lint/metrics/abc.rb', line 62

def abc_BlockExpression(o)
  branch
end

#abc_CallExpression(o) ⇒ Object



58
59
60
# File 'lib/puppet-lint/metrics/abc.rb', line 58

def abc_CallExpression(o)
  branch
end

#abc_CaseExpression(o) ⇒ Object



98
99
100
# File 'lib/puppet-lint/metrics/abc.rb', line 98

def abc_CaseExpression(o)
  conditional
end

#abc_CollectorExpression(o) ⇒ Object



54
55
56
# File 'lib/puppet-lint/metrics/abc.rb', line 54

def abc_CollectorExpression(o)
  branch
end

#abc_ComparisonExpression(o) ⇒ Object



78
79
80
# File 'lib/puppet-lint/metrics/abc.rb', line 78

def abc_ComparisonExpression(o)
  conditional
end

#abc_EqualityExpression(o) ⇒ Object



66
67
68
# File 'lib/puppet-lint/metrics/abc.rb', line 66

def abc_EqualityExpression(o)
  conditional
end

#abc_IfExpression(o) ⇒ Object



90
91
92
# File 'lib/puppet-lint/metrics/abc.rb', line 90

def abc_IfExpression(o)
  conditional
end

#abc_InExpression(o) ⇒ Object



82
83
84
# File 'lib/puppet-lint/metrics/abc.rb', line 82

def abc_InExpression(o)
  conditional
end

#abc_MatchExpression(o) ⇒ Object



70
71
72
# File 'lib/puppet-lint/metrics/abc.rb', line 70

def abc_MatchExpression(o)
  conditional
end

#abc_NotExpression(o) ⇒ Object



86
87
88
# File 'lib/puppet-lint/metrics/abc.rb', line 86

def abc_NotExpression(o)
  conditional
end

#abc_NotMatchExpression(o) ⇒ Object



74
75
76
# File 'lib/puppet-lint/metrics/abc.rb', line 74

def abc_NotMatchExpression(o)
  conditional
end

#abc_Object(o) ⇒ Object



26
27
28
# File 'lib/puppet-lint/metrics/abc.rb', line 26

def abc_Object(o)
  nil
end

#abc_ResourceExpression(o) ⇒ Object



50
51
52
# File 'lib/puppet-lint/metrics/abc.rb', line 50

def abc_ResourceExpression(o)
  branch
end

#abc_SelectorExpression(o) ⇒ Object



102
103
104
# File 'lib/puppet-lint/metrics/abc.rb', line 102

def abc_SelectorExpression(o)
  conditional
end

#abc_UnlessExpression(o) ⇒ Object



94
95
96
# File 'lib/puppet-lint/metrics/abc.rb', line 94

def abc_UnlessExpression(o)
  conditional
end

#assignmentObject



38
39
40
# File 'lib/puppet-lint/metrics/abc.rb', line 38

def assignment
  @metrics[:assignment] += 1
end

#branchObject



34
35
36
# File 'lib/puppet-lint/metrics/abc.rb', line 34

def branch
  @metrics[:branch] += 1
end

#compute(target) ⇒ Object



17
18
19
20
# File 'lib/puppet-lint/metrics/abc.rb', line 17

def compute(target)
  target.eAllContents.each { |m| abc(m) }
  [@metrics, Math.sqrt(@metrics[:assignment]**2 + @metrics[:branch]**2 + @metrics[:conditional]**2).round(2)]
end

#conditionalObject



30
31
32
# File 'lib/puppet-lint/metrics/abc.rb', line 30

def conditional
  @metrics[:conditional] += 1
end