Skip to content
Branch: master
Find file Copy path
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
1041 lines (817 sloc) 40.9 KB

SCSS-Lint Changelog


  • Drop support for Ruby 2.3 or older
  • Add caret-color, ::-ms-backdrop, ::-webkit-details-marker, place-content, font-variant-numeric, scrollbar-width to known properties list
  • Add CSS SVG properties (#977)


  • Relax Sass gem dependency to allow 3.6.x


  • Add text-decoration-skip property to PropertySpelling
  • Drop support for Ruby 2.0
  • Require sass gem 3.5.5 or newer
  • Add grid properties to SMACSS sort order for PropertySortOrder



  • Add ng-deep to the list recognized by the PseudoElement linter
  • Add classic_BEM convention for SelectorFormat
  • Deprecate strict_BEM convention for SelectorFormat. Use classic_BEM instead.
  • Add font-display and justify-items properties to PropertySpelling linter
  • Add fr unit to PropertyUnits linter


  • Add cubic-bezier to NameFormat whitelist
  • Allow triple-slash (///) comments in SpaceAfterComment
  • Add new grid spec properties to PropertySpelling
  • Add workaround for negative source range lengths returned by the Sass parser
  • Fix Indentation linter to work with @import statements which spanned multiple lines


  • Update smacss order
  • Add missing transform-origin property to concentric order
  • Ignore URLs with variables in UrlFormatter


  • Load configuration files found in plugin directories


  • Add contain to list of properties allowed by PropertySpelling
  • Fix DuplicateProperty to report duplicate properties inside media queries
  • Relax gem dependency constraints to allow rake 12.x


  • Add outline, flexbox, background clip, attachment, word-wrap, and work-break properties to concentric PropertySort sort order
  • Add background clip and attachment properties to recess PropertySort sort order
  • Fix SpaceAfterComment handling of consecutive comments
  • Fix SpaceBeforeBrace to check @if / @else statements
  • Fix ZeroUnit to not report zero values with units in calc expressions
  • Fix detection of control comments when scss-lint:enable is used
  • Fix Comment linter message when using loud style comments


  • Fix default style configuration for SpaceAfterComment to one_space and to be disabled by default


  • Fix regression in scss_files option processing where option was ignored


New Features

  • Add SpaceAfterComment which checks for spacing after comment literal


  • Drop support for Ruby 1.9.3
  • Shorthand linter will now forbid the use of shorthand properties if allowed_shorthands option is set to an empty list
  • Change Rake task to respect scss_files option if no explicit files are specified

Bug Fixes

  • Fix scss_files option to accept an array of patterns
  • Fix --exclude-linter flag
  • Fix ColorKeyword linter to allow color keywords to be used as arguments in map-*-related function calls
  • Fix SpaceAfterComma linter to report correct column number
  • Fix PrivateNamingConvention to consider functions/mixins used inside other functions/mixins
  • Fix Shorthand to not report shorthanded values with !important as having a shorthand length not specified in allowed_shorthands
  • Fix UnnecessaryMantissa to ignore decimal values in URL literals
  • Fix PlaceholderInExtend to report comma sequences starting with a placeholder
  • Fix StringQuotes linter to ignore @charset directives since they must always use double quotes


New Features

  • Add background-clip and clip to smacss preset sort order
  • Add LengthVariable linter for reporting when variables should be used instead of literal lengths


  • Increase minimum required sass gem version to 3.4.20+
  • Modify Shorthand linter to report lint if a shorthand of a length not specified in the allowed_shorthands option is used
  • Ignore SCSS functions in NameFormat linter
  • Update default formatter to output column number in addition to line number
  • Wrap @-declaratives in backticks in lint messages

Bug Fixes

  • Fix PropertySortOrder separate_groups option to work for preset sort orders
  • Fix TrailingZero to report correct lint messages for values with multiple trailing zeros


  • Relax rake gem dependency to allow 11.x.x versions
  • Add linear-gradient to NameFormat whitelist
  • Fix DisableLinterReason not reporting inline disable comments on a line following a comment line
  • Add Stats --format option to output list of linter types ordered by the number of occurrences


  • Consider list literals in values checked by DuplicateProperty linter
  • Fix TAP reporter to correctly parse list of files
  • Remove unnecessary nesting from TAP reporter output
  • Add linter name to TAP YAML output


  • Fix PrivateNamingConvention to handle files that begin with comments
  • Fix TAP reporter format
  • Add support for preprocessing source files via the preprocess_command option


  • Add ignore_consecutive option to the DuplicateProperty linter, allowing duplicate consecutive properties. It accepts true, false, or a list of property names to be ignored.
  • Add PrivateNamingConvention linter which enforces that functions, mixins, and variables that follow the private naming convention (default to underscore-prefixed) are defined and used within the same file
  • Add TAP (Test Anything Protocol) formatter


  • Add outline-{color,style,width} properties to recess sort order list
  • Fix TrailingSemicolon to not report false positives for single line list/map literals
  • Improve compatibility with files that use CRLF and CR for newlines.
  • Load plugin_directories relative to the config file itself
  • Fix bug in SingleLinePerProperty that prevented the linter from checking nested selectors
  • Add SpaceAfterVariableColon which checks for the spacing after a variable colon
  • Relax rake dependency version to allow >= 0.9
  • Improve BorderZero by adding the offending border property to the lint description


  • Add --color and --no-color options
  • Add ::content and ::shadow to list of elements recognized by PseudoElement
  • Fix UnnecessaryParentReference to not report selectors with multiple parent references
  • Add background-attachment, transform-{box,origin,style}, and transform-{delay,duration,property,timing-function} properties to SMACSS property sort order list
  • Add support for CSS Logical Properties to PropertySpelling
  • Add initial to list of special values in VariableForProperty
  • Add ::-webkit-full-page-media, ::-webkit-search-decoration, and ::-webkit-search-results-decoration pseudo elements to PseudoElement
  • Add backdrop-filter to list of known properties
  • Fix PropertySortOrder to properly handle duplicated properties
  • Fix NameFormat to report incorrectly-named variables passed as function arguments
  • Add global severity option to allowing you to specify the default severity for all linters


  • Fix passing a file via STDIN
  • Fix ChainedClasses to work with comma sequences split over multiple lines


  • Add placeholder, -moz-*, -ms-*, and -webkit-* to PseudoElement linter
  • Fix SpaceAfterComma to not infinite loop on map literals as arguments spanning multiple lines


New Features

  • Add whitelist parameter to MergeableSelector
  • Add PseudoElement linter which checks for the use of double colons with pseudo elements and single colons with pseudo classes
  • Add disabled_properties option to PropertySpelling allowing properties to be prohibited from use
  • Add support for linting files via STDIN by specifying --stdin-file-path so the appropriate configuration can be applied based on the path
  • Add style option to Comment linter allowing loud comments to be preferred over silent comments
  • Add ChainedClasses linter which checks for the use of chained classes (a.k.a. adjoining classes)
  • Add at_least_one_space option to SpaceAroundOperator linter


  • EmptyLineBetweenBlocks lints on @media and @at-root now
  • Improve performance of Indentation linter
  • Change Indentation linter with allow_non_nested_indentation to allow any node type to be arbitrarily indented as long as it a child of the root document node (previously only rule set declarations were allowed)

Bug Fixes

  • Fix TrailingSemicolon false positive for multiline variable declarations
  • Fix control comments to work when applied on consecutive lines
  • Fix linters to not inspect interpolation in /*...*/ comments due to the large number of bugs with the source ranges returned by the Sass parser
  • Fix line number reporting for SingleLinePerSelector with comma sequences containing multiple sequences on a single line
  • Fix SpaceAfterVariableName to not report lints for colons with spaces inside map literals
  • Fix MergeableSelector to not report selectors with multiple parent references
  • Fix SingleLinePerSelector to report correct line number for sequences spread over multiple lines


  • Fix SpaceAroundOperator to allow newlines
  • Fix HexValidation to ignore mid-word hex strings
  • Fix ColorVariable to ignore color functions in variable declaration


  • Fix TrailingSemicolon for variables with !default and !global.
  • Check !default and !global variable declarations and !optional @extend directives in BangFormat


New Features

  • Enhance Rake task to support command line flags
  • Add no_space and at_least_one_space style options to SpaceAfterComma


  • Improve ColorVariable to flag uses of rgb/rgba/hsl/hsla
  • Return successful status code instead of 81 when all files matched by specified glob patterns are excluded by --exclude flags and exclude configuration settings, as it was confusing.

Bug Fixes

  • Fix SpaceAroundOperator linter to not report false positives for operators in interpolation
  • Improve performance of ElsePlacement linter to better handle large lists of @if/@else if/@else statements
  • Fix TrailingSemicolon to report missing semicolons when trailing comment ended with a semicolon
  • Fix VariableForProperty to not erroneously report property values with !important


New Features

  • Add DisableLinterReason linter which enforces including a comment explaining why a linter was disabled via a control comment
  • Add SpaceAroundOperator linter which enforces whitespace padding around mathematical operators
  • Add CleanFiles reporter which displays all files that were free of lints
  • Add flexbox properties to recess preset sort order
  • Add flexbox properties to smacss ordering
  • Add TransitionAll linter which reports the use of transition: all


  • Improve SingleLinePerSelector to report selectors with descendant selectors on separate lines

Bug Fixes

  • Fix SpaceAfterVariableName linter not being included in linter set
  • Fix handling of consecutive control comments to properly disable linters
  • Fix handling of control comments preceded by normal comments
  • Fix NestingDepth linter not handling rules with no selectors
  • Fix MergeableSelector messages to condense newlines
  • Fix UnnecessaryMantissa to not report decimal values in quoted strings


  • Fix regression where linters were enabled by default even if explicitly disabled in the default configuration


New Features

  • Add support for loading custom linters via the plugin_directories and plugin_gems configuration options (experimental)
  • Add ExtendDirective linter which checks for any usage of the @extend directive.
  • Add TrailingWhitespace linter which reports whitespace characters at the end of a line
  • Add SpaceAfterVariableName linter which checks that there are no spaces between a variable name and a colon


  • Change NameFormat to no longer check placeholder names, as this is handled by the SelectorFormat linter
  • Change NestingDepth to allow parent selectors to be ignored in depth count via the ignore_parent_selectors configuration option

Bug Fixes

  • Fix ColorVariable from crashing when variable interpolation occurs in multiline comments
  • Fix PropertySortOrder's ignore_unspecified: false behavior to not care about the relative order of unspecified properties at the end of a list of properties
  • Fix PropertyUnits for properties that have multiple unit-like values (e.g. shorthand properties) and quoted values
  • Fix control comment processing for FinalNewline, SpaceBetweenParens, and TrailingNewline
  • Fix ElsePlacement to lint nested @if statements


New Features

  • Add BemDepth which checks the number of BEM elements is under a specified maximum


  • Load configuration file from user's home directory if one exists and no other configuration file is specified or in the current working directory
  • Improve issue reporting instructions displayed when scss-lint crashes
  • Remove XML formatter (see the Checkstyle formatter for an XML-based alternative)

Bug Fixes

  • Fix Indentation to not report @import directives spread across multiple lines
  • Fix Indentation linter from crashing on @else statements with allow_non_nested_indentation set to true
  • Update default configuration to work with projects using the syck YAML parser
  • Fix ColorKeyword to not report lints for map keys with color keyword names


  • Change configuration loading behavior so that defining lists in a custom configuration will completely override the old list instead of adding to it
  • Fix DeclarationOrder linter to report lints for items within media queries
  • Add allowed_shorthands option for Shorthand linter
  • Add allowed option to Comment linter specifying regex of allowed multi-line comments, such as copyright notices
  • Fix bug where control comments could filter out lints from other files depending on scan order
  • Ignore currentColor, inherit, and transparent values in VariableForProperty
  • Add min_properties option to PropertySortOrder to allow specifying a threshold number of properties that must be present before linting occurs
  • Fix PropertySortOrder to lint sort order of nested properties
  • Add one_space_or_newline style option to SpaceAfterPropertyColon
  • Fix ColorVariable to ignore literal strings containing color keywords
  • Rename scss-lint gem to scss_lint to follow RubyGems best practices for naming gems. This only affects the name you use in Gemfiles or when you gem install; everything else remains the same.


  • Rename BEM option on SelectorFormat to strict_BEM to emphasize that this is a particular dialect which may not be what developers expect
  • Allow SelectorFormat convention explanations to be customized via the #{type}_convention_explanation and convention_explanation options
  • Add camel_case and snake_case conventions to NameFormat
  • Remove BEM convention from NameFormat, as it didn't make sense in this context since NameFormat does not deal with selectors
  • Add support for function, mixin, or variable-specific conventions to NameFormat
  • Add support for custom convention explanations to NameFormat


  • Fix PropertyUnits to not error on properties with function call values
  • Fix DeclarationOrder false positives on lines of the same type of node
  • Fix PropertyUnits false positives on unicode escape sequences and string values that look like units
  • Add additional units to default configuration for PropertyUnits, including durations, frequencies, angles, and resolutions


  • Fix SpaceAfterPropertyColon to report nested properties
  • Add PropertyUnits allowing customization of which units are allowed for specific properties
  • Allow color literals in map declarations and the rgba helper function in ColorVariable
  • Gracefully handle when a library specified via -r/--require is not found and return a semantic exit code EX_UNAVAILABLE (69)
  • Improve message of DeclarationOrder to specify the line number of the out-of-order item and the line number of where it was expected to be
  • Return helpful error message and unsuccessful exit code when all files matched by specified glob patterns are excluded by --exclude flags and exclude configuration settings
  • Change exit code returned when file globs patterns did not match any files to be different from the exit code returned when a specified file does not exist


  • Fix ColorVariable to not report occurrences of transparent when appearing in function calls or list literals
  • Fix infinite loop in control comment processor when dealing with parse nodes with no children with line numbers
  • Change VendorPrefix config options include and exclude to additional_identifiers and excluded_identifiers, respectively
  • Rename VendorPrefixes to VendorPrefix
  • Add animation* properties to concentric.txt
  • Fix bug where attempting to lint a non-existent file would result in a crash


New Features

  • Add ImportantRule linter which reports uses of !important in properties
  • Add VariableForProperty linter which enforces using variables for specified property values instead of literal values
  • Add convention option to BorderZero allowing none to be preferred over zero
  • Add separate_groups option to PropertySortOrder to specify that groups of properties should be visually separated
  • Add PropertyCount linter which reports rule sets with a large number of properties
  • Add ColorVariable linter which enforces the use of color literals in variable declarations only
  • Add break-after, break-before, break-inside, and text-size-adjust to list of recognized properties
  • Add allow_non_nested_indentation option to Indentation linter
  • Allow files without .scss/.css extension to be linted if they are passed explicitly (i.e. you do not specify a directory, but the file itself)


  • Remove support for per-directory configuration and inherit_from from the configuration system

Bug Fixes

  • Fix bug in StringQuotes where Sass script in non-silent comments would cause a crash
  • Fix control comments placed before @include blocks to apply within them
  • Fix crash in PropertySortOrder when non-existent preset sort order or otherwise invalid sort order are specified in the configuration
  • Fix recognition of control comments in selector comma sequences
  • Fix crash in BangFormat, ImportantRule, and VendorPrefixes when linting properties with list literals containing empty lists


  • Call Kernel.exit with status code returned by CLI in rake task (unless 0)
  • Allow list of files and glob patterns to be passed as task arguments to rake task
  • Allow custom configuration file to be specified in rake task
  • Fix infinite loop in SpaceAfterComma for arguments spanning multiple lines


  • Fix regression in rake task
  • Fix grammar of lints reported by SelectorFormat
  • Add .projections.json configuration file
  • Fix regression in --require switch that caused custom formatters to not be required before they were created
  • Fix bug in BangFormat where lines without a semicolon would cause an infinite loop


New Features

  • Add support for disabling/enabling linters via inline comments
  • Add smacss sort order option for PropertySortOrder
  • Add recess sort order option for PropertySortOrder
  • Add allow_leading_underscore option to NameFormat to allow the leading underscore convention to denote private functions


  • Change IdWithExtraneousSelector to IdSelector and modify behavior to always report a lint when an ID appears as part of a selector.

Bug Fixes

  • Fix regression in default configuration for QualifyingElement so that elements with attributes, classes, or ids are disallowed by default
  • Fix error message for TrailingSemicolon where lines without a semicolon would incorrectly be reported as having a space before the semicolon
  • Fix BangFormat linter to not report lints for exclamation points in strings
  • Update minimum version of sass gem to 3.4.1 to fix a parser bug
  • Fix DuplicateProperty not reporting duplicate properties in nested rule sets
  • Fix TrailingSemicolon handling of comma-separated @imports
  • Fix SelectorFormat to not allow format of pseudo-selectors to be defined, as they are always hyphenated lowercase
  • Fix Indentation to not crash on @at-root directives with comments inside
  • Fix DuplicateProperty to report correct name of duplicated property
  • Fix EmptyLineBetweenBlocks to allow trailing comments after rule sets (e.g. control comments disabling linters)


New Features

  • Add VendorPrefixes linter which ensures only whitelisted vendor-prefixed properties are used
  • Add scss_files configuration option allowing a default set of files to be linted if no files are explicitly specified
  • Add BangFormat linter which enforces spacing around the ! for !important and !default
  • Add new_line option to SpaceBeforeBrace linter enforcing opening curly braces start on a new line
  • Add NestingDepth linter which ensures selectors are nested only up to a specified maximum depth
  • Add support to SelectorFormat for specifying different conventions for different types of selectors via the <type>_convention options
  • Add @import check to TrailingSemicolon
  • Add support for differentiating @includes with actual content versus no-content @includes in DeclarationOrder
  • Add support for checking the ordering of content within @includes
  • Add ImportPath linter which ensures paths for @import directives follow a certain format
  • Add QualifyingElement linter which checks for unnecessarily-qualified element selectors
  • Add --out flag which allows the output of the last formatter specified via the --format flag to be redirected to a file
  • Add --require flag allowing arbitrary Ruby modules to be loaded (facilitating custom reporters)


  • Improve message reported by PropertySortOrder to specify the expected sort order
  • Enforce UTF-8 encoding by default
  • Change BEM convention of SelectorFormat convention option to hyphenated_BEM, and introduce BEM format as specified in
  • Prefix all syntax error messages with "Syntax Error:"

Bug Fixes

  • Fix bug in SpaceAfterPropertyName/TrailingSemicolon linters where lint would be reported for oneline properties following a selector with interpolation
  • Fix bug in SpaceAfterPropertyColon/SpaceAfterPropertyName/TrailingSemicolon linters where lint would be reported for one-line properties following a selector with interpolation
  • Fix PropertySpelling linter to check the names of nested properties


New Features

  • Add TrailingZero linter which checks for unnecessary zeros following a decimal point
  • Add SelectorFormat linter which checks that the names of ids, classes, etc. in selectors match a desired convention
  • Add JSON formatter


  • Update list of known properties (used by PropertySpelling lint)
  • Enhance TrailingSemicolon to check for more than one semicolon at the end of a statement
  • Remove CapitalizationInSelector, which has been superseded by the more powerful SelectorFormat linter

Bug Fixes

  • Fix bug where SassScript selectors referring to the current selector would result in a crash
  • Fix bug in EmptyLineBetweenBlocks linter where lint would incorrectly be reported when comments immediately followed the closing brace of a rule set
  • Fix bug in PropertySortOrder where properties within media queries were not checked for sort order
  • Fix bug in UrlQuotes linter where lint would be reported for data URIs
  • Fix bug in UnnecessaryParentReference where selectors with multiple & references where one & was concatenated would incorrectly report a lint


  • Fix bug in StringQuotes where strings with interpolation were incorrectly being linted
  • Upgrade minimum sass version dependency to 3.4.x series


  • Fix broken ignore_unspecified option in PropertySortOrder
  • Add linting of @include and @if/@else blocks in PropertySortOrder
  • Fix HexValidation bug incorrectly reporting lints for 8 character hex codes in Microsoft filter property
  • Fix UnnecessaryParentReference incorrectly reporting lints for nested selectors with more than one parent reference


  • Fix TrailingSemicolon bug with @include blocks that didn't contain properties
  • Add more properties to concentric preset order


  • Fix TrailingSemicolon incorrectly reporting @includes with block contents
  • Fix UnnecessaryParentReference incorrectly reporting using of & with concatenation
  • Fix SingleLinePerSelector crashing for selectors that contained interpolated function calls
  • Add additional properties to the concentric preset order
  • Fix LeadingZero crashing on multi-line strings with interpolation


New Features

  • Add severity option allowing the severity level of a lint to be configured
  • Include linter name in lint description
  • Add character option to Indentation linter which allows specifying tabs or spaces as the indentation character of choice
  • Add SingleLinePerProperty linter which checks that properties each reside on their own line
  • Add support to PropertySortOrder to specify a preset sort order via the order property
  • Add concentric preset sort order to the PropertySortOrder linter
  • Add ignore_unspecified option to PropertySortOrder to indicate that unspecified properties in custom sort orderings are to be ignored (i.e. they can appear anywhere)
  • Add ignore option to Compass::PropertyWithMixin linter allowing you to not warn for certain properties
  • Add ignored_names option to CapitalizationInSelector, allowing you to whitelist certain names as not needing to follow the convention
  • Add ignored_types option to CapitalizationInSelector, allowing you to selectively ignore capitalization in certain types of selectors
  • Add UnnecessaryParentReference linter which checks nested selectors for extraneous parent references
  • Teach TrailingSemicolon to report lints for uses of @extend, @include, or variable declarations without semicolons


  • Change CLI to return exit code of 1 if only warnings are reported, or 2 if any errors are reported (was previously 65 for either)
  • Update sass dependency to require 3.3.7 or later (fixes a parsing bug)
  • Include test files in gem distribution
  • Rename TrailingSemicolonAfterPropertyValue to TrailingSemicolon

Bug Fixes

  • Fix bug in SpaceBeforeBrace linter where an erroneous lint would be reported for a brace on its own line
  • Fix bug in SpaceAfterComma where trailing spaces followed by a newline after a comma would incorrectly report a lint
  • Fix SingleLinePerSelector to ignore any selectors that contain interpolation


  • Fix bug in Indentation linter where it would crash when a comment preceded a line whose indentation was being checked


  • Fix bug in Indentation linter where @at-root directives with inline selectors would erroneously report incorrect indentation levels
  • Fix bug in Indentation linter where rule nodes with selectors spread over multiple lines and a single inline property would incorrectly report a lint
  • Add ElsePlacement linter which checks the position of @else directives with respect to the previous curly brace
  • Replace allow_extra_spaces option on SpaceAfterPropertyColon linter with style which accepts multiple different property spacing styles
  • Fix bug in PlaceholderInExtend linter which erroneously report lints for selectors with interpolated strings


  • Fix bug in TrailingSemicolonAfterPropertyValue to not crash on a one-line property without a semicolon
  • Fix crash due to DefaultReporter not being loaded on Windows machines
  • Fix bug in MergeableSelector where it would crash checking rules with interpolation


  • Extend DuplicateRoot to MergeableSelector linter to check for nested rule sets that can be merged in addition to root-level ones
  • Add ConfigReporter formatter which returns a valid .scss-lint.yml configuration file where all linters that caused a lint are disabled
  • Fix bug in Indentation linter where @at-root directives were not treated as an increase in indentation level
  • Fix ZeroUnit to only report lints for zero values in lengths
  • Fix crash in SingleLinePerSelector for selectors containing only interpolation
  • Add --show-formatters option to display all available formatters
  • Add HexValidation to validate hex colors
  • Split HexFormat into HexLength (checking length) and HexNotation (checking lowercase / uppercase)


  • Fix bug in SpaceAfterPropertyColon linter for properties with no terminating semicolon
  • Fix bug in DuplicateRoot linter where incorrect lints would be reported in @keyframes directives


  • Fix character escaping in XML attributes output by XMLReporter
  • Fix bug in ZeroUnit where hex color codes or real numbers with a zero decimal unit would report a false positive
  • Fix bug in Shorthand linter where !important priority overrides would prevent lints from being reported
  • Add UnnecessaryMantissa linter which checks for zero value decimals in numbers (i.e. prefers 4 over 4.0)
  • XMLReporter now includes column and length information for lints
  • Fix class of bugs in SpaceBeforeBrace where a false positive could be reported for braces that aren't part of declarations
  • Teach Compass::PropertyWithMixin to prefer inline-block mixin over display: inline-block
  • Add DuplicateRoot linter which checks for identical rules used as root selectors in a document


  • Add allow_single_line_padding option to SpaceBeforeBrace which allows you to visually align multiple single line blocks with extra padding spaces
  • Add FinalNewline linter which checks for existence/lack of final newlines in files
  • Fix bug in ZeroUnit linter where a string with a substring that looked like a zero followed by units would incorrectly report a lint
  • Fix bug in TrailingSemicolonAfterPropertyValue where a lint would be incorrectly reported for properties split up over multiple lines
  • Fix bug in UrlFormat where using a data URL would be incorrectly reported as a URL with protocol
  • Add allow_extra_spaces option to SpaceAfterPropertyColon which allows you to use extra spaces to align values
  • Fix bug in SpaceBeforeBrace linter when using { in single quotes


  • Add support to DuplicateProperty linter to detect duplicate properties in placeholder and mixin declarations
  • Add option ignore_single_line_blocks to the EmptyLineBetweenBlocks linter
  • Add UrlFormat linter which reports uses of url(...) with URLs containing protocols or domains
  • Replace colorize dependency with rainbows


  • Fix bug in NameFormat linter where it would incorrectly report a lint for transform-related Compass mixins


  • Fix bug in SpaceBeforeBrace where it would report a lint for #{...} interpolation erroneously


  • Fix bug in SpaceBeforeBrace where it would not report a lint for one-line rule sets


  • Add convention option to NameFormat allowing custom convention to be specified
  • Fix bug in SpaceBetweenParens linter for majority of cases where a lint would be reported if parens existed inside a comment
  • Add basic rake task


  • Update Sass dependency to 3.3.0. All previous versions are not supported.
  • Fix StringQuotes linter to not report lints for strings containing interpolation
  • Fix configuration loading to gracefully report YAML errors


  • Add order option to SortedProperties linter allowing an explicit ordering of properties to be specified
  • Rename SortedProperties linter to PropertySortOrder


  • Fix bug in XML output where DuplicateProperty linter message would result in invalid XML


  • Merge DeclaredName and UsageName into NameFormat linter


  • Downgrade colorize dependency from 0.6.0 back to 0.5.8


  • Fix bug where SingleLinePerSelector would incorrectly report lint for selectors where interpolation contained commas
  • Gracefully handle files with invalid byte sequences
  • Add FilesReporter which prints out just the files that had lints
  • Add exclude option to individual linter configurations, which disables that linter for files matching any of the specified set of globs
  • Fix bug where scss-lint would crash if a .scss-lint.yml file contained only comments
  • Teach scss-lint to report a lint when double quotes are used when single quotes will suffice (can be configured to prefer double quotes instead)
  • Teach scss-lint to prefer quoted URLs
  • Upgrade colorize dependency from 0.5.8 to 0.6.0
  • Fix bug where SelectorDepth would error when encountering percentages inside of @keyframe declarations.


  • Fix bug where data directory was not included in gemspec


  • Add extra_properties option to PropertySpelling linter so additional CSS properties can be added to the whitelist
  • Teach scss-lint to report a lint when rule sets, functions, or mixins are not separated from each other with an empty line


  • Fix bug where SelectorDepth could incorrectly report a lint for selectors with sequences chained onto a parent selector
  • Teach scss-lint to detect non-existent/misspelled properties
  • Teach IdWithExtraneousSelector linter to not report lints for IDs with just pseudo-selectors
  • Teach scss-lint to detect spaces in parentheses
  • Fix bug where DuplicateProperty linter would incorrectly report lints for properties with vendor-prefix values


  • Fix bug where ColorKeyword would incorrectly report a lint for identifiers containing color keywords as substrings
  • Teach scss-lint to detect selectors with large depths of applicability
  • Add -f/--format flags to allow different output format type
  • Remove --xml flag in favor of -f XML/--format XML


  • Teach scss-lint to load configuration via the --config flag
  • Teach scss-lint to load configuration based on location of file being linted
  • Allow Indentation linter to have configurable indent width
  • Add exclude directive to configuration system, allowing you to specify glob patterns of files to not lint
  • Allow use of wildcards when configuring linters so you can enable/disable entire namespaces
  • Use semantic exit codes for common error conditions


  • Teach scss-lint to prefer Compass mixins over some CSS properties
  • Fix bug where Shorthand linter would crash on a numeric property value with no trailing semicolon


  • Split PropertyFormat linter into SpaceAfterPropertyColon, SpaceAfterPropertyName, and TrailingSemicolonAfterPropertyValue linters
  • Teach scss-lint to prefer spaces after commas in argument lists
  • Display better error message for unexpected linter errors, including the name of the linter, the file that the linter failed on, and a link to the issue tracker


  • Update Sass dependency from 3.2.10 -> 3.3.0.rc.1 for better source mapping
  • Fix bug in ColorKeyword where an incorrect lint would be reported for the "transparent" color keyword


  • Fix bug in Shorthand linter where a property with interpolation that started with a shorthandable property name could report false positives
  • Improve message reported by Shorthand linter to display the shortest possible form
  • Syntax errors are now differentiated from lint warnings in scss-lint's output by using E and W respectively.
  • NoZeroBeforeDecimal linter has been renamed to LeadingZero
  • Fix bug where LeadingZero linter would not report lints for numeric values appearing in Sass script (e.g. function arguments)
  • Teach scss-lint to detect duplicate properties in a rule set
  • Teach scss-lint to detect incorrect indentation


  • Fix bug where HexFormat linter would crash on color keywords
  • Fix bug where ColorKeyword linter would not detect color keywords in shorthand properties and function/mixin calls


  • Teach scss-lint to prefer hexadecimal colors over color names
  • Linters can now define visit_* methods for visiting selectors
  • Linters can now report lints with context-specific descriptions
  • Fix bug where CapitalizationInSelector would report lint for attribute selectors with values containing capital letters
  • DeclaredName and UsageName linters now report context-specific lint descriptions (i.e. they mention whether the offending item is a function, variable, etc.)
  • TypeInIdSelector was renamed to IdWithExtraneousSelector and now reports a lint for the use of an ID with any other selector
  • Upgrade Sass gem dependency to 3.2.10
  • Fix bug where ZeroUnit linter would not report lints for properties with lists of values or Sass script
  • Fix bug where HexFormat linter would report lints for ID selectors with names that could be hexadecimal color values


  • Add --show-linters flag for listing all linters available to scss-lint
  • Change --ignore-linter flag to use CamelCase linter names instead of snake_case
  • Removed -x alias for --xml flag
  • Change -i/--ignore-linter flags to -x/--exclude-linter
  • Add -i/--include-linters flag to specify a subset of linters
  • Fix bug where using transform-related functions were reported as lints
  • Teach scss-lint that .5em is preferred over 0.5em
  • Teach scss-lint to prefer lowercase characters in selectors
  • Linters names no longer have a Linter suffix
  • Teach scss-lint that @extend should use placeholder selectors
  • Fix bug where a lint would be reported for hyphened keyword arguments
  • Teach scss-lint to recognize vendor-prefixed properties when enforcing sort order


  • Handle non-existent files/directories gracefully
  • Teach scss-lint that opening curly braces should be preceded by one space
  • Teach scss-lint that placeholder names should be lowercase and use hyphens


  • Upgrade Sass gem dependency from 3.2.8 -> 3.2.9
  • Fixed crash that occurred for directive nodes (@media, etc.)


  • Teach scss-lint that border: 0; is preferred over border: none;
  • Teach scss-lint that variable names should not contain underscores or capital letters
  • Teach scss-lint that function and mixin names follow same rules as variables
  • Fix shorthand linter to work with Sass script expressions
  • Fix property format linter to work with interpolated expressions
  • Teach scss-lint to check names of functions/mixins/variables in scripts
  • Fix hex color linter to work with Sass script expressions
  • Teach scss-lint that // comments should be preferred over /**/ comments
  • Upgrade Sass gem dependency from 3.2.7 -> 3.2.8


  • Fixed --ignore-linters flag


  • Fixed --version flag to not error due to not autoloading VERSION
  • Trailing newlines are no longer output by default in linter output


  • Major refactor of the Linter class to use Visitor pattern
  • Fix shorthand linter for lists containing function calls


  • Only lint files with css or scss extensions
  • Fix recursive directory scanning
  • Fix specs on Sass gem >= 3.2.6 (ShorthandLinter was failing)
  • Add changelog (the thing you're reading)
  • Add command-line flags (e.g. --version, --help)
  • Add --xml flag for outputting XML
  • Add --exclude flag for excluding SCSS files from being linted
  • Add --ignore-linters flag to skip lints produced by certain linters


  • Version bump to remove erroneously added untracked files from gem


  • Improve clarity of shorthand linter through naming
  • Teach scss-lint property: 10px 10px can be shorter
  • Clarify ShorthandLinter spec structure


  • Add linter for unnecessary types in selectors


  • Teach scss-lint that selectors each get their own line


  • Teach scss-lint about nested property syntax
  • Teach scss-lint to detect too-long shorthand values
  • Make scss-lint detect space before semicolon
  • Add linter for order of declarations


  • Initial public release
You can’t perform that action at this time.