class ArchSpec::Rules::MustImplementRule
Backs ArchSpec::DSL::ComponentProxy#must_implement. Flags classes in the component that do not implement the method, counting inherited and mixed-in methods.
Attributes
Public Class Methods
Source
# File lib/archspec/rules/protocol_rules.rb, line 68 def initialize(source, method_name) @source = source.to_sym @method_name = method_name.to_sym end
Public Instance Methods
Source
# File lib/archspec/rules/protocol_rules.rb, line 81 def evaluate(graph) constants_for(graph).filter_map do |constant| methods, unresolved = graph.effective_instance_methods(constant.name) next if methods.include?(method_name) Diagnostic.new( rule: id, message: "#{constant.name} must implement ##{method_name}", location: constant.location, evidence: ProtocolEvidence.for(constant, methods, unresolved), confidence: unresolved.empty? ? :high : :medium ) end end
Source
# File lib/archspec/rules/protocol_rules.rb, line 77 def id 'protocol.must_implement' end
Source
# File lib/archspec/rules/protocol_rules.rb, line 73 def merge_key [self.class, source, method_name] end