2

I have this linter rule, that verifies that for every variable there is a use of !default:

module SCSSLint
  # Reports the use of !default in properties.
  class Linter::DefaultRule < Linter
    include LinterRegistry

    def visit_variable(node)
      return if source_from_range(node.source_range).include?('!default')

      add_lint(node, '!default should be used')
    end
  end
end

And I want it to only check global variables, and not variables inside a function or a mixin.

How can I make it ignore non-globally scoped variables?

Amit
  • 5,924
  • 7
  • 46
  • 94

1 Answers1

0

This is a viable solution:

module SCSSLint
  # Reports the use of !default at the end of variable declarations.
  class Linter::DefaultRule < Linter
    include LinterRegistry

    def visit_function(node)
      return true
    end

    def visit_variable(node)
      return if source_from_range(node.source_range).include?('!default')

      return unless node_ancestor(node, 2).nil?

      add_lint(node, '!default should be used')
    end
  end
end
Amit
  • 5,924
  • 7
  • 46
  • 94