Skip to content

Configuration

Rigor reads a single YAML configuration file from the project root. rigor init writes a starter one.

With no --config flag, Rigor looks for, in order:

  1. .rigor.yml
  2. .rigor.dist.yml

The first file found wins — the two are not merged. The convention is to commit .rigor.dist.yml as the shared project config and let an individual developer drop an (un-tracked) .rigor.yml to override it locally.

To layer configs rather than replace, a config file can name a base with includes: (recursive). --config=PATH bypasses discovery entirely.

All relative paths in a config file resolve against that file’s own directory.

target_ruby: "4.0"
paths:
- lib
plugins: []
cache:
path: .rigor/cache
KeyTypeDefaultMeaning
target_rubyString"4.0"The Ruby version your project runs — "X.Y", "X.Y.Z", or "latest". Independent of the Ruby Rigor itself runs on.
pathsArray["lib"]Directories or files to analyse.
excludeArray[]Glob patterns to skip. vendor/bundle, .bundle, and node_modules are always excluded.
includesArray[]Other config files to layer underneath this one.
fold_platform_specific_pathsBooleanfalseResolve Ruby-version-conditional load paths when discovering sources.
KeyTypeDefaultMeaning
librariesArray[]Standard-library / gem names whose bundled RBS to load.
signature_pathsArraynilExtra directories of .rbs files.
pre_evalArray[]Files (or globs) walked before per-file analysis, to register project monkey-patches.
pluginsArray[]Plugins to activate — see Using plugins.
KeyTypeDefaultMeaning
disableArray[]Rule IDs or families to suppress project-wide.
severity_profileString"balanced"lenient, balanced, or strict — see Diagnostics.
severity_overridesHash{}Per-rule / per-family severity, e.g. { call: warning, flow.always-truthy-condition: off }.
baselineString / falsenilPath to a .rigor-baseline.yml, or false to disable an inherited one. See Baselines.
KeyTypeDefaultMeaning
bundler.auto_detectBooleantrueAuto-detect the Bundler install path and lockfile.
bundler.bundle_pathStringnilExplicit Bundler install root.
bundler.lockfileStringnilExplicit Gemfile.lock path.
rbs_collection.auto_detectBooleantrueAuto-discover rbs_collection.lock.yaml.
rbs_collection.lockfileStringnilExplicit rbs_collection.lock.yaml path.
dependencies.source_inferenceArray[]Per-gem source-inference modes (ADR-10).
dependencies.budget_per_gemInteger5000Per-gem source-walk cap, counted in method definitions (not time): the walker stops harvesting a gem’s catalog once it reaches this many defs, then emits dynamic.dependency-source.budget-exceeded and degrades the rest to Dynamic[top]. Range 1250–20000.
KeyTypeDefaultMeaning
cache.pathString.rigor/cachePersistent cache directory. See Caching.
parallel.workersInteger0Parallel worker processes for per-file analysis (fork-based pool today; ADR-15); 0 is sequential. CLI --workers and RIGOR_RACTOR_WORKERS take precedence.
plugins_io.networkString"disabled"Plugin network policy — disabled or allowlist.
plugins_io.allowed_pathsArray[]Filesystem paths plugins may read.
plugins_io.allowed_url_hostsArray[]URL hosts plugins may fetch from when network: allowlist.
target_ruby: "3.4"
paths:
- lib
- app
exclude:
- "**/*_pb.rb"
plugins:
- rigor-activerecord
- rigor-rspec
severity_profile: balanced
severity_overrides:
flow.dead-assignment: warning
baseline: .rigor-baseline.yml

© 2026 TypedDuck. Licensed under CC BY-SA 4.0.