Class: MetzScan::Analyzers::ImplicitContextPressure
- Inherits:
-
Object
- Object
- MetzScan::Analyzers::ImplicitContextPressure
- Includes:
- Triage, ProjectAnalyzerTriage
- Defined in:
- lib/metz_scan/analyzers/implicit_context_pressure.rb,
lib/metz_scan/analyzers/implicit_context_pressure/triage.rb,
lib/metz_scan/analyzers/implicit_context_pressure/reference_set.rb,
lib/metz_scan/analyzers/implicit_context_pressure/thread_current_collector.rb,
lib/metz_scan/analyzers/implicit_context_pressure/ambient_context_collector.rb,
lib/metz_scan/analyzers/implicit_context_pressure/ambient_context_reference.rb,
lib/metz_scan/analyzers/implicit_context_pressure/current_attribute_collector.rb
Overview
Reports repeated ambient CurrentAttributes-style context access.
Defined Under Namespace
Modules: Triage Classes: AmbientContextCollector, Finding, ReferenceSet
Constant Summary collapse
- RULE_ID =
"MetzProject/ImplicitContextPressure"- PROJECT_ANALYZER_STATUS =
"candidate"- CONFIDENCE =
"medium"- TRIAGE_SEVERITY =
"manual review"- TRIAGE_SUMMARY =
"Candidate ambient context signal; review whether dependencies should be explicit."- WHY =
"Ambient context hides dependencies from method signatures and makes workflows harder to reason about."- SUGGESTED_NEXT_MOVES =
[ "Pass the context value explicitly into collaborators that use it.", "Keep request-scoped globals at application boundaries when possible." ].freeze
- MINIMUM_FILES =
3- MINIMUM_PACKAGES =
2
Instance Method Summary collapse
- #call ⇒ Object
-
#initialize(paths: nil, index: nil, minimum_files: MINIMUM_FILES, minimum_packages: MINIMUM_PACKAGES) ⇒ ImplicitContextPressure
constructor
A new instance of ImplicitContextPressure.
Constructor Details
#initialize(paths: nil, index: nil, minimum_files: MINIMUM_FILES, minimum_packages: MINIMUM_PACKAGES) ⇒ ImplicitContextPressure
Returns a new instance of ImplicitContextPressure.
40 41 42 43 44 45 |
# File 'lib/metz_scan/analyzers/implicit_context_pressure.rb', line 40 def initialize(paths: nil, index: nil, minimum_files: MINIMUM_FILES, minimum_packages: MINIMUM_PACKAGES) @paths = Array(paths) @index = index @minimum_files = minimum_files @minimum_packages = minimum_packages end |
Instance Method Details
#call ⇒ Object
47 48 49 50 51 |
# File 'lib/metz_scan/analyzers/implicit_context_pressure.rb', line 47 def call ambient_references.group_by(&:ambient_context).filter_map do |ambient_context, references| finding_for(ambient_context, references) end end |