Class: MetzScan::Analyzers::NamespaceLeakPressure
- Inherits:
-
Object
- Object
- MetzScan::Analyzers::NamespaceLeakPressure
- Includes:
- ProjectAnalyzerTriage
- Defined in:
- lib/metz_scan/analyzers/namespace_leak_pressure.rb,
lib/metz_scan/analyzers/namespace_leak_pressure/finding.rb,
lib/metz_scan/analyzers/namespace_leak_pressure/metadata.rb,
lib/metz_scan/analyzers/namespace_leak_pressure/namespace.rb,
lib/metz_scan/analyzers/namespace_leak_pressure/reference_set.rb,
lib/metz_scan/analyzers/namespace_leak_pressure/reference_collector.rb,
lib/metz_scan/analyzers/namespace_leak_pressure/shared_namespace_triage.rb,
lib/metz_scan/analyzers/namespace_leak_pressure/shared_namespace_triage/exception_declaration.rb
Overview
Reports internal namespace constants referenced outside their namespace.
Defined Under Namespace
Modules: Metadata, SharedNamespaceTriage Classes: Finding, Location, Namespace, ReferenceCollector, ReferenceSet
Constant Summary collapse
- RULE_ID =
"MetzProject/NamespaceLeakPressure"- PROJECT_ANALYZER_STATUS =
"candidate"- CONFIDENCE =
"medium"- TRIAGE_SEVERITY =
"manual review"- TRIAGE_SUMMARY =
"Candidate namespace-boundary signal; review internal constants used across layers."- WHY =
"Internal namespace constants can become implicit public APIs when distant callers reference them directly."- SUGGESTED_NEXT_MOVES =
[ "Review whether callers should depend on a narrower public namespace interface.", "Look for behavior that belongs behind the namespace boundary instead of in external callers." ].freeze
Instance Method Summary collapse
- #call ⇒ Object
-
#initialize(paths: nil, index: nil, minimum_referring_files: 3, minimum_referring_packages: 3) ⇒ NamespaceLeakPressure
constructor
A new instance of NamespaceLeakPressure.
Constructor Details
#initialize(paths: nil, index: nil, minimum_referring_files: 3, minimum_referring_packages: 3) ⇒ NamespaceLeakPressure
Returns a new instance of NamespaceLeakPressure.
34 35 36 37 38 39 40 |
# File 'lib/metz_scan/analyzers/namespace_leak_pressure.rb', line 34 def initialize(paths: nil, index: nil, minimum_referring_files: 3, minimum_referring_packages: 3) @paths = Array(paths) @index = index || ProjectIndex.build(@paths) @reference_collector = ReferenceCollector.new(@index) @minimum_referring_files = minimum_referring_files @minimum_referring_packages = minimum_referring_packages end |
Instance Method Details
#call ⇒ Object
42 43 44 45 46 |
# File 'lib/metz_scan/analyzers/namespace_leak_pressure.rb', line 42 def call return [] unless index.available? declarations.filter_map { |declaration| finding_for(declaration) } end |