shuck

Settings Reference

This page is generated from Shuck's Rust configuration metadata and lists the supported shuck.toml and .shuck.toml settings.

Use Configuration for discovery, precedence, and examples of how config files are resolved.

[check]

File-level analysis behavior for shuck check.

embedded

Lint supported embedded shell scripts in non-shell files, including GitHub Actions workflow run blocks and composite action steps.

Default value: true

Type: bool

Example usage:

[check]
embedded = false

[lint]

Rule selection, per-file ignores, fix eligibility, and rule-specific behavior for shuck check.

extend-fixable

Add rules to the set that can receive automatic fixes when shuck check --fix is enabled.

Default value: []

Type: list[selector]

Example usage:

[lint]
extend-fixable = ["S074"]

extend-per-file-ignores

Add more per-file ignores without replacing the existing per-file-ignores table.

Default value: {}

Type: table[str, list[selector]]

Example usage:

[lint]
extend-per-file-ignores = { "vendor/**" = ["ALL"] }

extend-select

Enable additional rules on top of the default or explicitly selected rule set.

Default value: []

Type: list[selector]

Example usage:

[lint]
extend-select = ["S"]

fixable

Replace the set of rules that can receive automatic fixes when fixes are available.

Default value: ["ALL"]

Type: list[selector]

Example usage:

[lint]
fixable = ["C", "S074"]

ignore

Remove rules from the active rule set.

Default value: []

Type: list[selector]

Example usage:

[lint]
ignore = ["S074"]

per-file-ignores

Ignore selected rules for files that match a glob pattern.

Default value: {}

Type: table[str, list[selector]]

Example usage:

[lint]
per-file-ignores = { "scripts/*.sh" = ["S074"] }

select

Replace the default rule set with the selectors listed here.

Default value: all implemented non-style rules

Type: list[selector]

Example usage:

[lint]
select = ["C", "K"]

unfixable

Prevent selected rules from receiving automatic fixes, even when --fix is enabled.

Default value: []

Type: list[selector]

Example usage:

[lint]
unfixable = ["C001"]

[lint.rule-options]

Rule-specific behavior overrides for diagnostics that intentionally support more than one analysis mode.

[lint.rule-options.c001]

Behavior overrides for C001 unused assignment analysis.

treat-indirect-expansion-targets-as-used

Treat scalar indirect-expansion targets such as ${!name} as a use of the referenced target.

Default value: false

Type: bool

Example usage:

[lint.rule-options.c001]
treat-indirect-expansion-targets-as-used = true

[lint.rule-options.c063]

Behavior overrides for C063 overwritten and unreached function analysis.

report-unreached-nested-definitions

Report nested function definitions when no reachable direct call reaches the enclosing function scope before it exits.

Default value: false

Type: bool

Example usage:

[lint.rule-options.c063]
report-unreached-nested-definitions = true