Module: MetzScan::Analyzers::ServiceSoup::SetupWorkflowTriage

Defined in:
lib/metz_scan/analyzers/service_soup/setup_workflow_triage.rb

Constant Summary collapse

CONFIDENCE =
"low"
TRIAGE_SEVERITY =
"setup orchestration"
TRIAGE_SUMMARY =
"Setup workflow signal; review only when setup orchestration changes often " \
"or hides domain workflow pressure."
WHY =
"Setup orchestration often intentionally runs a list of tasks; review only when it " \
"changes often or hides domain workflow pressure."
SUGGESTED_NEXT_MOVES =
[
  "Leave setup orchestration as a list when it is stable and declarative.",
  "Extract a named workflow only when setup steps change together or need clearer sequencing."
].freeze
TOKEN_PATTERN =
/\A(?:seeds?|seeders?|setup|install(?:er|ation)?|bootstrap)\z/i

Class Method Summary collapse

Class Method Details

.attributes(status) ⇒ Object



25
26
27
28
# File 'lib/metz_scan/analyzers/service_soup/setup_workflow_triage.rb', line 25

def attributes(status)
  { project_analyzer_status: status, confidence: CONFIDENCE,
    triage_severity: TRIAGE_SEVERITY, triage_summary: TRIAGE_SUMMARY }
end

.setup?(workflow) ⇒ Boolean

Returns:

  • (Boolean)


21
22
23
# File 'lib/metz_scan/analyzers/service_soup/setup_workflow_triage.rb', line 21

def setup?(workflow)
  setup_path?(workflow.path) || setup_name?(workflow.name) || setup_method?(workflow.method_name)
end

.setup_method?(method_name) ⇒ Boolean

Returns:

  • (Boolean)


38
39
40
# File 'lib/metz_scan/analyzers/service_soup/setup_workflow_triage.rb', line 38

def setup_method?(method_name)
  setup_token?(method_name.to_s.delete_prefix("#").delete_prefix("."))
end

.setup_name?(name) ⇒ Boolean

Returns:

  • (Boolean)


34
35
36
# File 'lib/metz_scan/analyzers/service_soup/setup_workflow_triage.rb', line 34

def setup_name?(name)
  name.to_s.split("::").any? { |segment| setup_token?(segment.delete_prefix("#").delete_prefix(".")) }
end

.setup_path?(path) ⇒ Boolean

Returns:

  • (Boolean)


30
31
32
# File 'lib/metz_scan/analyzers/service_soup/setup_workflow_triage.rb', line 30

def setup_path?(path)
  path.to_s.split(%r{[/\\]}).any? { |segment| setup_token?(File.basename(segment, ".rb")) }
end

.setup_token?(token) ⇒ Boolean

Returns:

  • (Boolean)


42
43
44
# File 'lib/metz_scan/analyzers/service_soup/setup_workflow_triage.rb', line 42

def setup_token?(token)
  token.to_s.split(/[_\-.]/).any? { |part| part.match?(TOKEN_PATTERN) }
end