abstract struct Ameba::Rule::Base

Overview

Represents a base of all rules. In other words, all rules inherits from this struct:

struct MyRule < Ameba::Rule::Base
  def test(source)
    if invalid?(source)
      issue_for line, column, "Something wrong."
    end
  end

  private def invalid?(source)
    # ...
  end
end

Enforces rules to implement an abstract #test method which is designed to test the source passed in. If source has issues that are tested by this rule, it should add an issue.

Included Modules

Direct Known Subclasses

Defined in:

ameba/rule/base.cr

Constructors

Class Method Summary

Instance Method Summary

Macro Summary

Constructor Detail

def self.new #

[View source]

Class Method Detail

def self.parsed_doc #

Returns documentation for this rule if any.

module Ameba
  # This is a test rule.
  # Does nothing.
  struct MyRule < Ameba::Rule::Base
    def test(source)
    end
  end
end

MyRule.parsed_doc # => "This is a test rule.\nDoes nothing."

[View source]

Instance Method Detail

def catch(source : Source) #

A convenient addition to #test method that does the same but returns a passed in source as an addition.

source = MyRule.new.catch(source)
source.valid?

[View source]
def excluded?(source) #

Checks whether the source is excluded from this rule. It searches for a path in excluded property which matches the one of the given source.

my_rule.excluded?(source) # => true or false

[View source]
def group #

Returns a group this rule belong to.

struct MyGroup::MyRule < Ameba::Rule::Base
  # ...
end

MyGroup::MyRule.new.group # => "MyGroup"

[View source]
def initialize #

[View source]
def name #

Returns a name of this rule, which is basically a class name.

struct MyRule < Ameba::Rule::Base
  def test(source)
  end
end

MyRule.new.name # => "MyRule"

[View source]
def special? #

Returns true if this rule is special and behaves differently than usual rules.

my_rule.special? # => true or false

[View source]
def test(source : Source, node : Crystal::ASTNode, *opts) #

[View source]
abstract def test(source : Source) #

This method is designed to test the source passed in. If source has issues that are tested by this rule, it should add an issue.


[View source]

Macro Detail

macro issue_for(*args) #

[View source]