Class: Packwerk::ReferenceChecking::Checkers::DependencyChecker

Inherits:
Object
  • Object
show all
Includes:
Checker
Defined in:
lib/packwerk/reference_checking/checkers/dependency_checker.rb

Overview

Checks whether a given reference conforms to the configured graph of dependencies.

Constant Summary collapse

VIOLATION_TYPE =

: String

"dependency"

Instance Method Summary collapse

Methods included from Checker

all, find, included

Instance Method Details

#invalid_reference?(reference) ⇒ Boolean

: (Packwerk::Reference reference) -> bool

Returns:

  • (Boolean)


21
22
23
24
25
26
# File 'lib/packwerk/reference_checking/checkers/dependency_checker.rb', line 21

def invalid_reference?(reference)
  return false unless reference.package.enforce_dependencies?
  return false if reference.package.dependency?(reference.constant.package)

  true
end

#message(reference) ⇒ Object

: (Packwerk::Reference reference) -> String



30
31
32
33
34
35
36
37
38
39
40
41
# File 'lib/packwerk/reference_checking/checkers/dependency_checker.rb', line 30

def message(reference)
  const_name = reference.constant.name
  const_package = reference.constant.package
  ref_package = reference.package

  <<~EOS
    Dependency violation: #{const_name} belongs to '#{const_package}', but '#{ref_package}' does not specify a dependency on '#{const_package}'.
    Are the constant and its references in the right packages?

    #{standard_help_message(reference)}
  EOS
end

#strict_mode_violation?(offense) ⇒ Boolean

: (ReferenceOffense offense) -> bool

Returns:

  • (Boolean)


45
46
47
48
# File 'lib/packwerk/reference_checking/checkers/dependency_checker.rb', line 45

def strict_mode_violation?(offense)
  referencing_package = offense.reference.package
  referencing_package.config["enforce_dependencies"] == "strict"
end

#violation_typeObject

: -> String



15
16
17
# File 'lib/packwerk/reference_checking/checkers/dependency_checker.rb', line 15

def violation_type
  VIOLATION_TYPE
end