Class: CukeLinter::Linter
- Inherits:
-
Object
- Object
- CukeLinter::Linter
- Defined in:
- lib/cuke_linter/linters/linter.rb
Overview
A generic linter that can be used to make arbitrary linting rules
Direct Known Subclasses
BackgroundDoesMoreThanSetupLinter, ElementWithTooManyTagsLinter, ExampleWithoutNameLinter, FeatureFileWithInvalidNameLinter, FeatureWithTooManyDifferentTagsLinter, FeatureWithoutDescriptionLinter, FeatureWithoutNameLinter, FeatureWithoutScenariosLinter, OutlineWithSingleExampleRowLinter, SingleTestBackgroundLinter, StepWithEndPeriodLinter, StepWithTooManyCharactersLinter, TestShouldUseBackgroundLinter, TestWithActionStepAsFinalStepLinter, TestWithBadNameLinter, TestWithNoActionStepLinter, TestWithNoNameLinter, TestWithNoVerificationStepLinter, TestWithSetupStepAfterActionStepLinter, TestWithSetupStepAfterVerificationStepLinter, TestWithSetupStepAsFinalStepLinter, TestWithTooManyStepsLinter
Instance Method Summary collapse
-
#initialize(name: nil, message: nil, rule: nil) ⇒ Linter
constructor
Creates a new linter object.
-
#lint(model) ⇒ Object
Lints the given model and returns linting data about said model.
-
#name ⇒ Object
Returns the name of the linter.
Constructor Details
#initialize(name: nil, message: nil, rule: nil) ⇒ Linter
Creates a new linter object
8 9 10 11 12 |
# File 'lib/cuke_linter/linters/linter.rb', line 8 def initialize(name: nil, message: nil, rule: nil) @name = name || self.class.name.split('::').last @message = || "#{self.name} problem detected" @rule = rule end |
Instance Method Details
#lint(model) ⇒ Object
Lints the given model and returns linting data about said model
20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
# File 'lib/cuke_linter/linters/linter.rb', line 20 def lint(model) raise 'No linting rule provided!' unless @rule || respond_to?(:rule) problem_found = respond_to?(:rule) ? rule(model) : @rule.call(model) if problem_found = respond_to?(:message) ? : @message if model.is_a?(CukeModeler::FeatureFile) { problem: , location: "#{model.path}" } else { problem: , location: "#{model.get_ancestor(:feature_file).path}:#{model.source_line}" } end else nil end end |
#name ⇒ Object
Returns the name of the linter
15 16 17 |
# File 'lib/cuke_linter/linters/linter.rb', line 15 def name @name end |