Module: MetzScan::Analyzers::SubclassOverridePressure::Triage
- Included in:
- MetzScan::Analyzers::SubclassOverridePressure
- Defined in:
- lib/metz_scan/analyzers/subclass_override_pressure/triage.rb
Instance Method Summary collapse
- #abstract_hook_message_for(family) ⇒ Object
- #broad_root_triage_attributes ⇒ Object
- #cooperative_override_message_for(family) ⇒ Object
- #generic_override_message_for(family) ⇒ Object
- #generic_triage_profile ⇒ Object
- #message_for(family) ⇒ Object
- #message_method_for(family) ⇒ Object
- #project_analyzer_context_attributes(family) ⇒ Object
- #replacement_override_message_for(family) ⇒ Object
- #triage_attributes_for(family) ⇒ Object
- #triage_profile_for(family) ⇒ Object
Instance Method Details
#abstract_hook_message_for(family) ⇒ Object
83 84 85 86 |
# File 'lib/metz_scan/analyzers/subclass_override_pressure/triage.rb', line 83 def (family) "#{family.base.name} descendants implement #{family.method_name} as an abstract hook in " \ "#{family.overrides.size} subclasses; consider naming the hook protocol." end |
#broad_root_triage_attributes ⇒ Object
66 67 68 69 |
# File 'lib/metz_scan/analyzers/subclass_override_pressure/triage.rb', line 66 def broad_root_triage_attributes { project_analyzer_status: PROJECT_ANALYZER_STATUS, confidence: BROAD_ROOT_CONFIDENCE, triage_severity: BROAD_ROOT_TRIAGE_SEVERITY, triage_summary: BROAD_ROOT_TRIAGE_SUMMARY } end |
#cooperative_override_message_for(family) ⇒ Object
88 89 90 91 92 |
# File 'lib/metz_scan/analyzers/subclass_override_pressure/triage.rb', line 88 def (family) "#{family.base.name} descendants extend #{family.method_name} with super in " \ "#{family.overrides_calling_super_count} of #{family.overrides.size} overrides; " \ "consider making the extension contract explicit." end |
#generic_override_message_for(family) ⇒ Object
99 100 101 102 |
# File 'lib/metz_scan/analyzers/subclass_override_pressure/triage.rb', line 99 def (family) "#{family.base.name} descendants override #{family.method_name} in #{family.overrides.size} subclasses; " \ "consider whether the hook protocol should be explicit." end |
#generic_triage_profile ⇒ Object
75 76 77 |
# File 'lib/metz_scan/analyzers/subclass_override_pressure/triage.rb', line 75 def generic_triage_profile { triage_summary: TRIAGE_SUMMARY, why: WHY, suggested_next_moves: SUGGESTED_NEXT_MOVES } end |
#message_for(family) ⇒ Object
62 63 64 |
# File 'lib/metz_scan/analyzers/subclass_override_pressure/triage.rb', line 62 def (family) public_send((family), family) end |
#message_method_for(family) ⇒ Object
79 80 81 |
# File 'lib/metz_scan/analyzers/subclass_override_pressure/triage.rb', line 79 def (family) MESSAGE_METHODS.fetch(subclass_override_category(family), :generic_override_message_for) end |
#project_analyzer_context_attributes(family) ⇒ Object
54 55 56 57 58 59 60 |
# File 'lib/metz_scan/analyzers/subclass_override_pressure/triage.rb', line 54 def project_analyzer_context_attributes(family) profile = triage_profile_for(family) { project_analyzer_metadata: (family), why_it_matters: profile.fetch(:why), suggested_next_moves: profile.fetch(:suggested_next_moves) } end |
#replacement_override_message_for(family) ⇒ Object
94 95 96 97 |
# File 'lib/metz_scan/analyzers/subclass_override_pressure/triage.rb', line 94 def (family) "#{family.base.name} descendants replace concrete #{family.method_name} behavior in " \ "#{family.overrides.size} subclasses; consider whether composition would make the variation explicit." end |
#triage_attributes_for(family) ⇒ Object
46 47 48 49 50 51 52 |
# File 'lib/metz_scan/analyzers/subclass_override_pressure/triage.rb', line 46 def triage_attributes_for(family) return broad_root_triage_attributes if family.root_kind project_analyzer_triage_attributes.merge( triage_summary: triage_profile_for(family).fetch(:triage_summary) ) end |
#triage_profile_for(family) ⇒ Object
71 72 73 |
# File 'lib/metz_scan/analyzers/subclass_override_pressure/triage.rb', line 71 def triage_profile_for(family) CATEGORY_TRIAGE.fetch(subclass_override_category(family)) { generic_triage_profile } end |