Repository Analysis

tailwindlabs/tailwindcss

A utility-first CSS framework for rapid UI development.

1.5 Likely human-written View on GitHub
1.5
Adjusted Score
1.5
Raw Score
100%
Time Factor
2026-05-29
Last Push
95,155
Stars
TypeScript
Language
163,532
Lines of Code
467
Files
233
Pattern Hits
2026-05-31
Scan Date

Score History

Severity Breakdown

CRITICAL 0HIGH 1MEDIUM 2LOW 230

Pattern Findings

233 matches across 6 categories. Click a row to expand file-level details.

Over-Commented Block164 hits · 160 pts
SeverityFileLineSnippet
LOWcrates/ignore/src/overrides.rs21/// example, if there are one or more whitelist globs and a file path doesn't
LOWcrates/ignore/src/overrides.rs81 ///
LOWcrates/ignore/src/overrides.rs141 }
LOWcrates/ignore/src/overrides.rs161 /// literal string `[abc` instead of returning an error.
LOWcrates/ignore/src/types.rs101/// that matched.
LOWcrates/ignore/src/types.rs161}
LOWcrates/ignore/src/types.rs241 self.selections.len()
LOWcrates/ignore/src/dir.rs1// This module provides a data structure, `Ignore`, that connects "directory
LOWcrates/ignore/src/dir.rs81 /// Whether to read .gitignore files.
LOWcrates/ignore/src/dir.rs101 /// Note that this is never used during matching, only when adding new
LOWcrates/ignore/src/dir.rs121 /// The directory that gitignores should be interpreted relative to.
LOWcrates/ignore/src/dir.rs581 /// Usually this is the directory containing the gitignore file. But in
LOWcrates/ignore/src/dir.rs741 /// If this is enabled, then .gitignore files in parent directories of each
LOWcrates/ignore/src/dir.rs761 }
LOWcrates/ignore/src/dir.rs821 for name in names {
LOWcrates/ignore/src/lib.rs181 Error::Glob { .. } => false,
LOWcrates/ignore/src/lib.rs421
LOWcrates/ignore/src/gitignore.rs121 /// exists.
LOWcrates/ignore/src/gitignore.rs181
LOWcrates/ignore/src/gitignore.rs201 /// under the root) or any of its parent directories (up to the root)
LOWcrates/ignore/src/gitignore.rs541 // TODO: This should not return a `Result`. Fix this in the next semver
LOWcrates/ignore/src/default_types.rs1/// This list represents the default file types that ripgrep ships with. In
LOWcrates/ignore/src/walk.rs121 DirEntry {
LOWcrates/ignore/src/walk.rs241/// DirEntryRaw is essentially copied from the walkdir crate so that we can
LOWcrates/ignore/src/walk.rs441/// By default, all ignore files found are respected. This includes `.ignore`,
LOWcrates/ignore/src/walk.rs461/// global gitignore file), plain `.ignore` files, which have the same format
LOWcrates/ignore/src/walk.rs681 }
LOWcrates/ignore/src/walk.rs701 /// returned. Note that the error may indicate *partial* failure. For
LOWcrates/ignore/src/walk.rs761 /// Add a file type matcher.
LOWcrates/ignore/src/walk.rs801
LOWcrates/ignore/src/walk.rs821 self
LOWcrates/ignore/src/walk.rs861 /// rules (global rules, .gitignore and local exclude rules).
LOWcrates/ignore/src/walk.rs881
LOWcrates/ignore/src/walk.rs901 self
LOWcrates/ignore/src/walk.rs921 }
LOWcrates/ignore/src/walk.rs941 /// might end up trying to search `results` even though it is also writing
LOWcrates/ignore/src/walk.rs961 /// entry is ignored and if it is a directory, it is not descended into.
LOWcrates/ignore/src/walk.rs1041 /// `.gitignore` files. To configure the iterator, use `WalkBuilder`
LOWcrates/ignore/src/walk.rs1321 where
LOWcrates/ignore/src/walk.rs1581 visitor: Box<dyn ParallelVisitor + 's>,
LOWcrates/ignore/src/walk.rs1601 /// this size it will be skipped.
LOWcrates/ignore/src/walk.rs1701
LOWcrates/oxide/src/glob.rs61 pattern,
LOWcrates/oxide/src/glob.rs81/// This means, that the following command:
LOWcrates/oxide/src/glob.rs141//
LOWcrates/oxide/src/extractor/string_machine.rs1use crate::cursor;
LOWcrates/oxide/src/extractor/candidate_machine.rs41 // Candidates don't start with these characters, so we can skip ahead.
LOWcrates/oxide/src/extractor/modifier_machine.rs1use crate::cursor;
LOWcrates/oxide/src/extractor/modifier_machine.rs41 match cursor.curr().into() {
LOW…ates/oxide/src/extractor/arbitrary_variable_machine.rs21/// Currently parsing the data type of the arbitrary variable
LOW…ates/oxide/src/extractor/arbitrary_variable_machine.rs41/// E.g.:
LOW…ates/oxide/src/extractor/arbitrary_variable_machine.rs241 //
LOW…ates/oxide/src/extractor/arbitrary_property_machine.rs21#[derive(Debug, Default)]
LOW…ates/oxide/src/extractor/arbitrary_property_machine.rs101 Class::Dash => match cursor.next().into() {
LOW…ates/oxide/src/extractor/arbitrary_property_machine.rs201 // 1. All brackets must be balanced
LOW…ates/oxide/src/extractor/arbitrary_property_machine.rs401 //
LOWcrates/oxide/src/extractor/boundary.rs41 // ```
LOWcrates/oxide/src/extractor/boundary.rs61
LOWcrates/oxide/src/extractor/boundary.rs81 #[bytes(b'>')]
LOWcrates/oxide/src/extractor/boundary.rs101 // ```
104 more matches not shown…
Hyper-Verbose Identifiers62 hits · 61 pts
SeverityFileLineSnippet
LOWintegrations/utils.ts492async function overwriteVersionsInPackageJson(content: string): Promise<string> {
LOWpackages/@tailwindcss-cli/src/utils/test-helpers.ts3export function normalizeWindowsSeparators(p: string) {
LOW…es/@tailwindcss-cli/src/commands/canonicalize/index.ts321function createCandidateGroupResult(
LOWpackages/@tailwindcss-node/src/compile.ts66async function ensureSourceDetectionRootExists(compiler: {
LOWpackages/tailwindcss/src/utilities.ts2688 function resolveInterpolationModifier(modifier: CandidateModifier | null) {
LOWpackages/tailwindcss/src/utilities.ts6516function alphaReplacedShadowProperties(
LOWpackages/tailwindcss/src/utilities.ts6562function alphaReplacedDropShadowProperties(
LOWpackages/tailwindcss/src/utilities.ts6716export function isValidFunctionalUtilityName(name: string): boolean {
LOWpackages/tailwindcss/src/candidate.ts1177function recursivelyEscapeUnderscores(ast: ValueParser.ValueAstNode[]) {
LOWpackages/tailwindcss/src/canonicalize-candidates.ts115export function prepareDesignSystemStorage(
LOWpackages/tailwindcss/src/canonicalize-candidates.ts140function createSignatureOptionsCache(): DesignSystem['storage'][typeof SIGNATURE_OPTIONS_KEY] {
LOWpackages/tailwindcss/src/canonicalize-candidates.ts149function createSignatureComparison(designSystem: DesignSystem) {
LOWpackages/tailwindcss/src/canonicalize-candidates.ts181function createInternalOptionsCache(
LOWpackages/tailwindcss/src/canonicalize-candidates.ts191function createCanonicalizeOptions(
LOWpackages/tailwindcss/src/canonicalize-candidates.ts495function createCanonicalizeCandidateCache(): DesignSystem['storage'][typeof CANONICALIZE_CANDIDATE_KEY] {
LOWpackages/tailwindcss/src/canonicalize-candidates.ts571function createCanonicalizeVariantCache(): DesignSystem['storage'][typeof CANONICALIZE_VARIANT_KEY] {
LOWpackages/tailwindcss/src/canonicalize-candidates.ts612function createCanonicalizeUtilityCache(): DesignSystem['storage'][typeof CANONICALIZE_UTILITY_KEY] {
LOWpackages/tailwindcss/src/canonicalize-candidates.ts732function spacingCalcToSpacingFunction(input: string, designSystem: DesignSystem) {
LOWpackages/tailwindcss/src/canonicalize-candidates.ts941function substituteFunctionsInValue(
LOWpackages/tailwindcss/src/canonicalize-candidates.ts1593function arbitraryValueToBareValueUtility(
LOWpackages/tailwindcss/src/canonicalize-candidates.ts1619function arbitraryValueToBareValueVariant(variant: Variant): Variant | Variant[] {
LOWpackages/tailwindcss/src/canonicalize-candidates.ts1766function modernizeArbitraryValuesVariant(
LOWpackages/tailwindcss/src/canonicalize-candidates.ts2186function optimizeArbitraryValueExpressions(
LOWpackages/tailwindcss/src/canonicalize-candidates.ts2386function createUtilitySignatureCache(
LOWpackages/tailwindcss/src/canonicalize-candidates.ts2652function createStaticUtilitiesCache(): DesignSystem['storage'][typeof STATIC_UTILITIES_KEY] {
LOWpackages/tailwindcss/src/canonicalize-candidates.ts2663function createUtilityPropertiesCache(
LOWpackages/tailwindcss/src/canonicalize-candidates.ts2706function createPreComputedUtilitiesCache(
LOWpackages/tailwindcss/src/canonicalize-candidates.ts2767function createVariantSignatureCache(
LOWpackages/tailwindcss/src/canonicalize-candidates.ts2868function createPreComputedVariantsCache(
LOW…kages/tailwindcss/src/canonicalize-calc-expressions.ts7export function canonicalizeCalcExpressions(input: string): string {
LOW…kages/tailwindcss/src/canonicalize-calc-expressions.ts13export function canonicalizeCalcExpressionsAst(
LOWpackages/tailwindcss/src/constant-fold-declaration.ts18export function constantFoldDeclarationAst(
LOWpackages/tailwindcss/src/css-functions.ts185export function substituteFunctionsInValue(
LOWpackages/tailwindcss/src/css-functions.ts226function injectFallbackForInitialFallback(ast: ValueParser.ValueAstNode[], fallback: string): void {
LOWpackages/tailwindcss/src/variants.ts968 function compareBreakpointVariants(
LOWpackages/tailwindcss/src/compat/plugin-api.ts619function replaceNestedClassNameReferences(
LOWpackages/tailwindcss/src/compat/theme-variants.ts4export function registerThemeVariantOverrides(config: ResolvedConfig, designSystem: DesignSystem) {
LOWpackages/tailwindcss/src/compat/container.ts22export function buildCustomContainerUtilityRules(
LOWpackages/tailwindcss/src/compat/apply-compat-hooks.ts217function upgradeToFullPluginSupport({
LOWpackages/tailwindcss/src/utils/math-operators.ts45export function addWhitespaceAroundMathOperators(input: string) {
LOW…ckages/tailwindcss/src/utils/decode-arbitrary-value.ts23function convertUnderscoresToWhitespace(input: string, skipUnderscoreToSpace = false) {
LOW…ckages/tailwindcss/src/utils/decode-arbitrary-value.ts48function recursivelyDecodeArbitraryValues(ast: ValueParser.ValueAstNode[]) {
LOW…es/tailwindcss/src/source-maps/visualize-source-map.ts101function buildAnnotationsFromSourceMapPoints(points: SourceMapPoint[]) {
LOW…es/tailwindcss/src/source-maps/visualize-source-map.ts460function visualizeSourceRangeContinuation(
LOW…es/tailwindcss/src/source-maps/visualize-source-map.ts480function visualizeGeneratedRangeContinuation(
LOW…es/tailwindcss/src/source-maps/visualize-source-map.ts508function visualizeContinuationRange(range: Range, label: string, line: string, lineNumber: number) {
LOWpackages/@tailwindcss-vite/src/index.ts131 function createBackCompatIdResolver(
LOW…lwindcss-upgrade/src/codemods/css/migrate-preflight.ts117function substituteFunctionsInValue(
LOW…pgrade/src/codemods/css/migrate-tailwind-directives.ts5export function migrateTailwindDirectives(options: { newPrefix: string | null }): Plugin {
LOW…windcss-upgrade/src/codemods/config/migrate-postcss.ts148 function isTailwindCSSNestingPlugin(line: string) {
LOW…windcss-upgrade/src/codemods/config/migrate-postcss.ts230 function isTailwindCSSNestingPlugin(plugin: string, options: any) {
LOW…ndcss-upgrade/src/codemods/config/migrate-js-config.ts516function removeUnnecessarySpacingKeys(
LOW…-upgrade/src/codemods/template/migrate-theme-to-var.ts172function substituteFunctionsInValue(
LOW…rc/codemods/template/migrate-canonicalize-candidate.ts16export function migrateCanonicalizeCandidate(
LOW…c/codemods/template/migrate-legacy-arbitrary-values.ts6export function migrateLegacyArbitraryValues(
LOW…upgrade/src/codemods/template/migrate-variant-order.ts86function isEndOfSelectorPseudoElement(designSystem: DesignSystem, variant: Variant) {
LOW…c/codemods/template/migrate-automatic-var-injection.ts8export function migrateAutomaticVarInjection(
LOW…c/codemods/template/migrate-automatic-var-injection.ts161function isAutomaticVarInjectionException(
LOW…mods/template/migrate-handle-empty-arbitrary-values.ts4export function migrateEmptyArbitraryValues(
LOW…odemods/template/migrate-modernize-arbitrary-values.ts7export function migrateModernizeArbitraryValues(
2 more matches not shown…
AI Slop Vocabulary2 hits · 6 pts
SeverityFileLineSnippet
MEDIUMpackages/tailwindcss/src/utilities.test.ts31028 // This originated from a bug. Essentially in the second `--mask-right` we
MEDIUMpackages/tailwindcss/src/canonicalize-candidates.ts2492 // Essentially normalizing the `node.value` to a canonical form.
Cross-Language Confusion (JS/TS)1 hit · 5 pts
SeverityFileLineSnippet
HIGHpackages/@tailwindcss-upgrade/src/utils/renderer.ts105 print()
Verbosity Indicators3 hits · 4 pts
SeverityFileLineSnippet
LOWpackages/tailwindcss/src/canonicalize-candidates.ts1378 // We need to check if the variable is used in the replacement
LOWpackages/@tailwindcss-vite/src/index.ts187 // Step 1: Scan source files for candidates
LOW…kages/@tailwindcss-upgrade/src/codemods/css/analyze.ts41 // Step 1: Record which `@import` rules point to which stylesheets
Example Usage Blocks1 hit · 2 pts
SeverityFileLineSnippet
LOWcrates/classification-macros/src/lib.rs14/// Example usage: