pub struct CssAnalyticsReport {Show 13 fields
pub files: Vec<CssFileAnalytics>,
pub summary: CssAnalyticsSummary,
pub scoped_unused: Vec<ScopedUnusedClasses>,
pub unreferenced_keyframes: Vec<UnreferencedKeyframes>,
pub undefined_keyframes: Vec<UndefinedKeyframes>,
pub duplicate_declaration_blocks: Vec<CssDuplicateBlock>,
pub tailwind_arbitrary_values: Vec<TailwindArbitraryValue>,
pub unused_at_rules: Vec<UnusedAtRule>,
pub unresolved_class_references: Vec<UnresolvedClassReference>,
pub unreferenced_css_classes: Vec<UnreferencedCssClass>,
pub unused_font_faces: Vec<UnusedFontFace>,
pub unused_theme_tokens: Vec<UnusedThemeToken>,
pub font_size_unit_mix: Option<CssNotationConsistency>,
}Expand description
Structural CSS analytics surfaced by fallow health --css.
Fields§
§files: Vec<CssFileAnalytics>Stylesheets with at least one structurally notable rule, in scan order.
summary: CssAnalyticsSummaryProject-wide CSS aggregates across every analyzed stylesheet.
scoped_unused: Vec<ScopedUnusedClasses>Vue SFCs whose <style scoped> defines classes used nowhere else in the
component (cleanup candidates).
unreferenced_keyframes: Vec<UnreferencedKeyframes>@keyframes defined but referenced via no animation / animation-name
in any stylesheet, with the stylesheet that defines them (cleanup
candidates; an animation name can still be applied from JavaScript).
The “defined-but-unused” direction.
undefined_keyframes: Vec<UndefinedKeyframes>Animation references (animation / animation-name) to a @keyframes
name that is defined in NO stylesheet anywhere in the project, with the
first stylesheet that references them. The “used-but-undefined” direction
(the inverse of unreferenced_keyframes): usually a typo or a removed
animation, occasionally a @keyframes defined in CSS-in-JS (which the
CSS parser never sees). Conservative candidates, never gated findings.
duplicate_declaration_blocks: Vec<CssDuplicateBlock>Groups of style rules across the project that share an identical
declaration block (4+ declarations, sorted and !important-aware),
grouped by content: copy-paste consolidation candidates (fallow’s
duplication signal applied to CSS). Sorted by estimated savings
descending.
tailwind_arbitrary_values: Vec<TailwindArbitraryValue>Tailwind arbitrary-value utilities (w-[13px], bg-[#abc]) found in
markup, which hardcode a one-off value instead of a configured scale
token (design-token bypass). Present only when the project uses Tailwind.
Sorted by use count descending. Candidates, not findings: an arbitrary
value is sometimes the right call.
unused_at_rules: Vec<UnusedAtRule>Unused CSS at-rule entities: an @property registered but never read via
var() in any stylesheet, or an @layer declared but never populated by
a block. Cleanup candidates (an @property can be read from JS; a layer
can be populated via @import layer()). Located by first definition.
unresolved_class_references: Vec<UnresolvedClassReference>Static class / className tokens in markup that match no CSS class
defined anywhere in the project AND are one edit away from a class that
IS defined (a likely typo or stale rename, with the suggested class). The
CSS analogue of an unresolved import; the near-miss restriction keeps it
near-zero false-positive (Tailwind utilities and third-party classes are
not one edit from an authored class). Candidates, never gated: the token
could be defined in CSS-in-JS or an external stylesheet the parser never
sees. Sorted by (path, line, class).
unreferenced_css_classes: Vec<UnreferencedCssClass>Global CSS classes (defined in a plain .css/.scss rule) whose literal
name is referenced by NO in-project markup, static or dynamic (the CSS
analogue of an unused export). Heavily gated to stay near-zero-false-
positive: emitted only when the project is plain-CSS-dominant, the
stylesheet is locally consumed (not a published design-system surface),
and the whole project is in scope. Candidates, never gated findings: the
class may be used by an HTML email, server template, CMS, or Markdown the
parser never scans. Sorted by (path, line, class).
unused_font_faces: Vec<UnusedFontFace>@font-face families declared in a stylesheet but referenced by no
font-family anywhere in the project: a dead web-font payload (the font
file is downloaded but never applied). Located at the declaring
stylesheet. Cleanup candidates: the family could be applied from inline
styles or set via JavaScript. Sorted by (path, family).
unused_theme_tokens: Vec<UnusedThemeToken>Tailwind v4 @theme design tokens (--color-brand, --radius-card)
defined in a stylesheet but used by no generated utility, var() read,
@apply, or arbitrary value anywhere in the project: dead design tokens
(the unused-export of the token era). Present only when the project is
Tailwind v4 (a tailwindcss dependency plus at least one @theme block)
and not a plugin / published-library / partial-scope run. Candidates,
never gated findings: the token may be consumed by a Tailwind plugin or a
downstream repo. Sorted by (path, line, token).
font_size_unit_mix: Option<CssNotationConsistency>The project authors font-size values in several units (px, rem,
em, %), with a per-unit distinct-value count: a type-scale
inconsistency smell (mixing px and rem for type works against
user-zoom accessibility). Present only above a conservative floor.
Advisory candidate, never gated: the spread can be intentional (fixed
chrome in px, body type in rem).
Color-notation mixing (hex vs rgb vs hsl) is deliberately NOT surfaced: the CSS parser canonicalizes every legacy sRGB notation to hex before fallow sees the value, so the authored distinction is already gone and cannot be recovered without a separate raw-token pass.
Trait Implementations§
Source§impl Clone for CssAnalyticsReport
impl Clone for CssAnalyticsReport
Source§fn clone(&self) -> CssAnalyticsReport
fn clone(&self) -> CssAnalyticsReport
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 CssAnalyticsReport
impl Debug for CssAnalyticsReport
Auto Trait Implementations§
impl Freeze for CssAnalyticsReport
impl RefUnwindSafe for CssAnalyticsReport
impl Send for CssAnalyticsReport
impl Sync for CssAnalyticsReport
impl Unpin for CssAnalyticsReport
impl UnsafeUnpin for CssAnalyticsReport
impl UnwindSafe for CssAnalyticsReport
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,
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<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§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