pub struct RulesConfig {Show 43 fields
pub unused_files: Severity,
pub unused_exports: Severity,
pub unused_types: Severity,
pub private_type_leaks: Severity,
pub unused_dependencies: Severity,
pub unused_dev_dependencies: Severity,
pub unused_optional_dependencies: Severity,
pub unused_enum_members: Severity,
pub unused_class_members: Severity,
pub unused_store_members: Severity,
pub unprovided_injects: Severity,
pub unrendered_components: Severity,
pub unused_component_props: Severity,
pub unused_component_emits: Severity,
pub unused_server_actions: Severity,
pub unused_load_data_keys: Severity,
pub prop_drilling: Severity,
pub thin_wrapper: Severity,
pub duplicate_prop_shape: Severity,
pub unresolved_imports: Severity,
pub unlisted_dependencies: Severity,
pub duplicate_exports: Severity,
pub type_only_dependencies: Severity,
pub test_only_dependencies: Severity,
pub circular_dependencies: Severity,
pub re_export_cycle: Severity,
pub boundary_violation: Severity,
pub coverage_gaps: Severity,
pub feature_flags: Severity,
pub stale_suppressions: Severity,
pub unused_catalog_entries: Severity,
pub empty_catalog_groups: Severity,
pub unresolved_catalog_references: Severity,
pub unused_dependency_overrides: Severity,
pub misconfigured_dependency_overrides: Severity,
pub security_client_server_leak: Severity,
pub security_sink: Severity,
pub policy_violation: Severity,
pub invalid_client_export: Severity,
pub mixed_client_server_barrel: Severity,
pub misplaced_directive: Severity,
pub route_collision: Severity,
pub dynamic_segment_name_conflict: Severity,
}Expand description
Per-issue-type severity configuration.
Controls which issue types cause CI failure, are reported as warnings,
or are suppressed entirely. Most fields default to Severity::Error.
Rule names use kebab-case in config files (e.g., "unused-files": "error").
Fields§
§unused_files: Severity§unused_exports: Severity§unused_types: Severity§private_type_leaks: Severity§unused_dependencies: Severity§unused_dev_dependencies: Severity§unused_optional_dependencies: Severity§unused_enum_members: Severity§unused_class_members: Severity§unused_store_members: SeverityStore members (Pinia state / getters / actions key, or a
setup-store returned key) declared but never accessed by any consumer
project-wide. Defaults to warn, not error like the closed-set
class/enum member rules: a store has an OPEN declaration surface
(plugins, $onAction, dynamic dispatch) so analyzer confidence is
genuinely lower; warn encodes that without failing CI. Promotable to
error once validated on a codebase.
unprovided_injects: SeverityVue inject(KEY) / Svelte getContext(KEY) whose symbol KEY is
provide/setContext’d nowhere in the project (the
injected-never-provided dead-half). Defaults to warn, not error:
a DI key has an open provide surface (plugins, app-level provide) so
analyzer confidence is lower; warn encodes that without failing CI.
unrendered_components: SeverityVue/Svelte single-file component reachable in the module graph but
rendered nowhere in the project (the imported-but-never-rendered
dead-half). Defaults to warn, not error: a component can be rendered
reflectively (dynamic <component :is>), so analyzer confidence is
lower; warn encodes that without failing CI.
unused_component_props: SeverityVue <script setup> defineProps declared prop referenced nowhere
inside its own single-file component (neither <script> nor
<template>). The single-file dead-input direction. Defaults to warn,
not error: a prop can be part of a deliberately-stable public component
API, so analyzer confidence is lower; warn encodes that without failing
CI.
unused_component_emits: SeverityVue <script setup> defineEmits declared event emitted nowhere inside
its own single-file component (no emit('<name>') call). The single-file
dead-input direction. Defaults to warn, not error: an emit can be part
of a deliberately-stable public component API, so analyzer confidence is
lower; warn encodes that without failing CI.
unused_server_actions: SeverityNext.js Server Action (an export of a "use server" file) referenced by
no code in the project: no import-and-call, no action={fn} binding, no
<form action={fn}>. Cross-graph dead-export direction, reclassified out
of unused-export for "use server" files. Defaults to warn, not
error: the rule is new and false-negative-preferring, and reflective
action-dispatch shapes can hide a real consumer; warn encodes that
without failing CI until corpus-validated.
unused_load_data_keys: SeveritySvelteKit +page.{ts,server.ts,js,server.js} load() return-object key
read by no consumer: not off the sibling +page.svelte’s data.<key>,
nor project-wide via page.data.<key> / $page.data.<key>. Cross-file
dead-input direction. Defaults to warn, not error: the rule is new and
false-negative-preferring (a whole-object data pass abstains), and a
load fetch can have side effects so deletion is a human call; warn encodes
that without failing CI until corpus-validated.
prop_drilling: SeverityReact/Preact prop forwarded unchanged through >= N intermediate
pass-through components until a component that substantively consumes it.
A graph-derived health signal. Defaults to off (opt-in), like
private-type-leak / security-*: the located per-chain records and the
small capped health penalty are dormant until the user enables the rule.
thin_wrapper: SeverityA React/Preact component whose entire body is return <Child {...props}/>
(pure structural indirection, a candidate for inlining). A graph-derived
health signal. Defaults to off (opt-in), like prop-drilling: the
located per-wrapper records are dormant until the user enables the rule.
duplicate_prop_shape: SeverityThree or more React/Preact components across two or more files whose
statically-harvested prop NAME set is identical after stripping ubiquitous
DOM / passthrough names (a missing shared Props type / base component).
A graph-derived structural-refactor health signal. Defaults to off
(opt-in), like thin-wrapper: the located per-component records are
dormant until the user enables the rule.
unresolved_imports: Severity§unlisted_dependencies: Severity§duplicate_exports: Severity§type_only_dependencies: Severity§test_only_dependencies: Severity§circular_dependencies: Severity§re_export_cycle: Severity§boundary_violation: Severity§coverage_gaps: Severity§feature_flags: Severity§stale_suppressions: Severity§unused_catalog_entries: Severity§empty_catalog_groups: Severity§unresolved_catalog_references: Severity§unused_dependency_overrides: Severity§misconfigured_dependency_overrides: Severity§security_client_server_leak: SeverityOpt-in (default off): a "use client" file that transitively imports a
module reading a non-public process.env secret. Surfaced only by
fallow security; never under bare fallow or the audit gate.
security_sink: SeverityOpt-in (default off): a syntactic tainted-sink candidate matched against
the data-driven catalogue (security_matchers.toml). ONE knob gates ALL
catalogue categories. Surfaced only by fallow security; never under
bare fallow or the audit gate.
policy_violation: SeverityMaster severity for rule-pack findings (rulePacks config). Defaults
to warn so enabling a brand-new policy pack never hard-fails CI on
its first run; individual pack rules opt up via "severity": "error".
off is a kill switch that disables the whole evaluator (per-rule
severity cannot resurrect it).
invalid_client_export: SeverityA "use client" file that exports a Next.js server-only /
route-segment config name (e.g. metadata, revalidate, GET).
Next.js rejects this at build time; fallow catches it statically.
Defaults to warn.
mixed_client_server_barrel: SeverityA barrel file that re-exports BOTH a "use client" origin module AND a
server-only origin module. Importing one name from such a barrel drags
the other’s directive context across the React Server Components
boundary (the Next.js App Router footgun). Defaults to warn.
misplaced_directive: SeverityA "use client" / "use server" directive written as an expression
statement after a non-directive statement (an import, a const), so the
RSC bundler parses it as an ordinary string and silently ignores it.
The intended client/server boundary never takes effect. Defaults to
warn.
route_collision: SeverityTwo or more Next.js App Router route files that resolve to the same URL
within one app-root. Next.js fails the build (“You cannot have two
parallel pages that resolve to the same path”); fallow catches it
statically and names every colliding file. Defaults to error: the
project already fails next build, so flagging it as an error aligns
fallow’s exit code with the build it mirrors.
dynamic_segment_name_conflict: SeveritySibling Next.js dynamic route segments at one tree position using
different param spellings ([id] vs [slug]). Next.js throws “You
cannot use different slug names for the same dynamic path” at dev and
production runtime when the position is hit; next build does NOT catch
it (the build succeeds), so CI passes while the route crashes on its
first request. fallow catches it statically. Defaults to error: the
route is a deterministic runtime crash on first request, so failing CI
is the honest signal even though next build stays green (this is the
“error-runtime” severity tier, shared with route-collision).
Implementations§
Source§impl RulesConfig
impl RulesConfig
Sourcepub const fn apply_partial(&mut self, partial: &PartialRulesConfig)
pub const fn apply_partial(&mut self, partial: &PartialRulesConfig)
Apply a partial rules config on top. Only Some fields override.
Trait Implementations§
Source§impl Clone for RulesConfig
impl Clone for RulesConfig
Source§fn clone(&self) -> RulesConfig
fn clone(&self) -> RulesConfig
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for RulesConfig
impl Debug for RulesConfig
Source§impl Default for RulesConfig
impl Default for RulesConfig
Source§impl<'de> Deserialize<'de> for RulesConfig
impl<'de> Deserialize<'de> for RulesConfig
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
impl Eq for RulesConfig
Source§impl JsonSchema for RulesConfig
impl JsonSchema for RulesConfig
Source§fn schema_id() -> Cow<'static, str>
fn schema_id() -> Cow<'static, str>
Source§fn json_schema(generator: &mut SchemaGenerator) -> Schema
fn json_schema(generator: &mut SchemaGenerator) -> Schema
Source§fn inline_schema() -> bool
fn inline_schema() -> bool
$ref keyword. Read moreSource§impl PartialEq for RulesConfig
impl PartialEq for RulesConfig
Source§fn eq(&self, other: &RulesConfig) -> bool
fn eq(&self, other: &RulesConfig) -> bool
self and other values to be equal, and is used by ==.Source§impl Serialize for RulesConfig
impl Serialize for RulesConfig
impl StructuralPartialEq for RulesConfig
Auto Trait Implementations§
impl Freeze for RulesConfig
impl RefUnwindSafe for RulesConfig
impl Send for RulesConfig
impl Sync for RulesConfig
impl Unpin for RulesConfig
impl UnsafeUnpin for RulesConfig
impl UnwindSafe for RulesConfig
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<D> OwoColorize for D
impl<D> OwoColorize for D
Source§fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
Source§fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
Source§fn black(&self) -> FgColorDisplay<'_, Black, Self>
fn black(&self) -> FgColorDisplay<'_, Black, Self>
Source§fn on_black(&self) -> BgColorDisplay<'_, Black, Self>
fn on_black(&self) -> BgColorDisplay<'_, Black, Self>
Source§fn red(&self) -> FgColorDisplay<'_, Red, Self>
fn red(&self) -> FgColorDisplay<'_, Red, Self>
Source§fn on_red(&self) -> BgColorDisplay<'_, Red, Self>
fn on_red(&self) -> BgColorDisplay<'_, Red, Self>
Source§fn green(&self) -> FgColorDisplay<'_, Green, Self>
fn green(&self) -> FgColorDisplay<'_, Green, Self>
Source§fn on_green(&self) -> BgColorDisplay<'_, Green, Self>
fn on_green(&self) -> BgColorDisplay<'_, Green, Self>
Source§fn yellow(&self) -> FgColorDisplay<'_, Yellow, Self>
fn yellow(&self) -> FgColorDisplay<'_, Yellow, Self>
Source§fn on_yellow(&self) -> BgColorDisplay<'_, Yellow, Self>
fn on_yellow(&self) -> BgColorDisplay<'_, Yellow, Self>
Source§fn blue(&self) -> FgColorDisplay<'_, Blue, Self>
fn blue(&self) -> FgColorDisplay<'_, Blue, Self>
Source§fn on_blue(&self) -> BgColorDisplay<'_, Blue, Self>
fn on_blue(&self) -> BgColorDisplay<'_, Blue, Self>
Source§fn magenta(&self) -> FgColorDisplay<'_, Magenta, Self>
fn magenta(&self) -> FgColorDisplay<'_, Magenta, Self>
Source§fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>
fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>
Source§fn purple(&self) -> FgColorDisplay<'_, Magenta, Self>
fn purple(&self) -> FgColorDisplay<'_, Magenta, Self>
Source§fn on_purple(&self) -> BgColorDisplay<'_, Magenta, Self>
fn on_purple(&self) -> BgColorDisplay<'_, Magenta, Self>
Source§fn cyan(&self) -> FgColorDisplay<'_, Cyan, Self>
fn cyan(&self) -> FgColorDisplay<'_, Cyan, Self>
Source§fn on_cyan(&self) -> BgColorDisplay<'_, Cyan, Self>
fn on_cyan(&self) -> BgColorDisplay<'_, Cyan, Self>
Source§fn white(&self) -> FgColorDisplay<'_, White, Self>
fn white(&self) -> FgColorDisplay<'_, White, Self>
Source§fn on_white(&self) -> BgColorDisplay<'_, White, Self>
fn on_white(&self) -> BgColorDisplay<'_, White, Self>
Source§fn default_color(&self) -> FgColorDisplay<'_, Default, Self>
fn default_color(&self) -> FgColorDisplay<'_, Default, Self>
Source§fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>
fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>
Source§fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>
fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>
Source§fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>
fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>
Source§fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>
fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>
Source§fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>
fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>
Source§fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>
fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>
Source§fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>
fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>
Source§fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>
fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>
Source§fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>
fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>
Source§fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>
fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>
Source§fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>
fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>
Source§fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
Source§fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
Source§fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
Source§fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
Source§fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>
fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>
Source§fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>
fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>
Source§fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>
fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>
Source§fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>
fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>
Source§fn bold(&self) -> BoldDisplay<'_, Self>
fn bold(&self) -> BoldDisplay<'_, Self>
Source§fn dimmed(&self) -> DimDisplay<'_, Self>
fn dimmed(&self) -> DimDisplay<'_, Self>
Source§fn italic(&self) -> ItalicDisplay<'_, Self>
fn italic(&self) -> ItalicDisplay<'_, Self>
Source§fn underline(&self) -> UnderlineDisplay<'_, Self>
fn underline(&self) -> UnderlineDisplay<'_, Self>
Source§fn blink(&self) -> BlinkDisplay<'_, Self>
fn blink(&self) -> BlinkDisplay<'_, Self>
Source§fn blink_fast(&self) -> BlinkFastDisplay<'_, Self>
fn blink_fast(&self) -> BlinkFastDisplay<'_, Self>
Source§fn reversed(&self) -> ReversedDisplay<'_, Self>
fn reversed(&self) -> ReversedDisplay<'_, Self>
Source§fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>
fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>
Source§fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
OwoColorize::fg or
a color-specific method, such as OwoColorize::green, Read moreSource§fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
OwoColorize::bg or
a color-specific method, such as OwoColorize::on_yellow, Read more