Class: MetzScan::Analyzers::PackageDependencyPressure

Inherits:
Object
  • Object
show all
Includes:
ProjectAnalyzerTriage
Defined in:
lib/metz_scan/analyzers/package_dependency_pressure.rb,
lib/metz_scan/analyzers/package_dependency_pressure/finding.rb,
lib/metz_scan/analyzers/package_dependency_pressure/metadata.rb,
lib/metz_scan/analyzers/package_dependency_pressure/package_map.rb,
lib/metz_scan/analyzers/package_dependency_pressure/reference_set.rb,
lib/metz_scan/analyzers/package_dependency_pressure/reference_collector.rb,
lib/metz_scan/analyzers/package_dependency_pressure/shared_dependency_triage.rb

Overview

Reports declarations referenced from several files outside their package.

Defined Under Namespace

Modules: Metadata, SharedDependencyTriage Classes: Finding, Location, ReferenceCollector, ReferenceSet

Constant Summary collapse

RULE_ID =
"MetzProject/PackageDependencyPressure"
PROJECT_ANALYZER_STATUS =
"candidate"
CONFIDENCE =
"medium"
TRIAGE_SEVERITY =
"manual review"
TRIAGE_SUMMARY =
"Candidate package-boundary signal; review cross-package reference pressure in context."
WHY =
"Cross-package reference pressure can reveal boundaries that many parts of the system depend on."
SUGGESTED_NEXT_MOVES =
[
  "Review whether callers need the full declaration or a narrower interface.",
  "Look for package-specific workflows that could own repeated dependency edges."
].freeze
PackageMap =
MetzScan::Analyzers::PackageMap

Instance Method Summary collapse

Constructor Details

#initialize(paths: nil, index: nil, minimum_referring_files: 12, minimum_referring_packages: 5) ⇒ PackageDependencyPressure

Returns a new instance of PackageDependencyPressure.



33
34
35
36
37
38
39
# File 'lib/metz_scan/analyzers/package_dependency_pressure.rb', line 33

def initialize(paths: nil, index: nil, minimum_referring_files: 12, minimum_referring_packages: 5)
  @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

#callObject



41
42
43
44
45
# File 'lib/metz_scan/analyzers/package_dependency_pressure.rb', line 41

def call
  return [] unless index.available?

  declarations.filter_map { |declaration| finding_for(declaration) }
end