Module: MetzScan::Commands::Scan::ProjectConfigScope

Defined in:
lib/metz_scan/commands/scan/project_config_scope.rb

Overview

DDR: docs/ddrs/2026-07-08-rubocop-scope-only-config.md explains why default mode bypasses ConfigStore here.

Defined Under Namespace

Classes: ConfigLoader, ConfigStore, TargetRubyVersion

Constant Summary collapse

SCOPE_KEYS =
%w[Include Exclude Includes Excludes].freeze
ALL_COPS_PROJECT_KEYS =
(SCOPE_KEYS + %w[RubyInterpreters TargetRubyVersion]).freeze
DEFAULT_FILE =
RuboCop::ConfigLoader::DEFAULT_FILE

Class Method Summary collapse

Class Method Details

.reset_unresolved_inherit_gems!Object



32
33
34
# File 'lib/metz_scan/commands/scan/project_config_scope.rb', line 32

def reset_unresolved_inherit_gems!
  @unresolved_inherit_gems = []
end

.storeObject



17
18
19
# File 'lib/metz_scan/commands/scan/project_config_scope.rb', line 17

def store
  ConfigStore.new
end

.target_ruby_version(paths) ⇒ Object



21
22
23
# File 'lib/metz_scan/commands/scan/project_config_scope.rb', line 21

def target_ruby_version(paths)
  TargetRubyVersion.new(paths).version
end

.unresolved_inherit_gem_message(path, gem_name) ⇒ Object



45
46
47
48
# File 'lib/metz_scan/commands/scan/project_config_scope.rb', line 45

def unresolved_inherit_gem_message(path, gem_name)
  "metz-scan: note: #{path} inherits from gem `#{gem_name}` which is not installed; " \
    "its file-scope Exclude is not applied — install the gem or use --all-cops"
end

.unresolved_inherit_gemsObject

Accumulates [config_path, gem_name] pairs whenever an inherit_gem reference can't be resolved during scope-only config loading, so Runner can warn once per gem after a scan (see Next Queue item 1).



28
29
30
# File 'lib/metz_scan/commands/scan/project_config_scope.rb', line 28

def unresolved_inherit_gems
  @unresolved_inherit_gems ||= []
end

.warn_unresolved_inherit_gems(stderr) ⇒ Object

Default mode drops file-scope Exclude from an inherit_gem whose gem isn't installed (docs/ddrs/2026-07-08-rubocop-scope-only-config.md); this turns that silent degrade into a one-line stderr note per gem.



39
40
41
42
43
# File 'lib/metz_scan/commands/scan/project_config_scope.rb', line 39

def warn_unresolved_inherit_gems(stderr)
  unresolved_inherit_gems.uniq { |(_path, gem_name)| gem_name }.each do |(path, gem_name)|
    stderr.puts(unresolved_inherit_gem_message(path, gem_name))
  end
end