abstract class
Ameba::Rule::Base
- Ameba::Rule::Base
- Reference
- Object
Overview
Represents a base of all rules. In other words, all rules inherits from this struct:
class 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
- Ameba::Config::RuleConfig
Direct Known Subclasses
- Ameba::Rule::Documentation::Documentation
- Ameba::Rule::Documentation::DocumentationAdmonition
- Ameba::Rule::Layout::LineLength
- Ameba::Rule::Layout::TrailingBlankLines
- Ameba::Rule::Layout::TrailingWhitespace
- Ameba::Rule::Lint::AmbiguousAssignment
- Ameba::Rule::Lint::BadDirective
- Ameba::Rule::Lint::ComparisonToBoolean
- Ameba::Rule::Lint::DebugCalls
- Ameba::Rule::Lint::DebuggerStatement
- Ameba::Rule::Lint::DuplicatedRequire
- Ameba::Rule::Lint::EmptyEnsure
- Ameba::Rule::Lint::EmptyExpression
- Ameba::Rule::Lint::EmptyLoop
- Ameba::Rule::Lint::Formatting
- Ameba::Rule::Lint::HashDuplicatedKey
- Ameba::Rule::Lint::LiteralAssignmentsInExpressions
- Ameba::Rule::Lint::LiteralInCondition
- Ameba::Rule::Lint::LiteralInInterpolation
- Ameba::Rule::Lint::LiteralsComparison
- Ameba::Rule::Lint::MissingBlockArgument
- Ameba::Rule::Lint::NotNil
- Ameba::Rule::Lint::NotNilAfterNoBang
- Ameba::Rule::Lint::PercentArrays
- Ameba::Rule::Lint::RandZero
- Ameba::Rule::Lint::RedundantStringCoercion
- Ameba::Rule::Lint::RedundantWithIndex
- Ameba::Rule::Lint::RedundantWithObject
- Ameba::Rule::Lint::ShadowedArgument
- Ameba::Rule::Lint::ShadowedException
- Ameba::Rule::Lint::ShadowingOuterLocalVar
- Ameba::Rule::Lint::SharedVarInFiber
- Ameba::Rule::Lint::SpecFilename
- Ameba::Rule::Lint::SpecFocus
- Ameba::Rule::Lint::Syntax
- Ameba::Rule::Lint::Typos
- Ameba::Rule::Lint::UnneededDisableDirective
- Ameba::Rule::Lint::UnreachableCode
- Ameba::Rule::Lint::UnusedArgument
- Ameba::Rule::Lint::UnusedBlockArgument
- Ameba::Rule::Lint::UselessAssign
- Ameba::Rule::Lint::UselessConditionInWhen
- Ameba::Rule::Metrics::CyclomaticComplexity
- Ameba::Rule::Naming::AccessorMethodName
- Ameba::Rule::Naming::AsciiIdentifiers
- Ameba::Rule::Naming::BinaryOperatorParameterName
- Ameba::Rule::Naming::BlockParameterName
- Ameba::Rule::Naming::ConstantNames
- Ameba::Rule::Naming::Filename
- Ameba::Rule::Naming::MethodNames
- Ameba::Rule::Naming::PredicateName
- Ameba::Rule::Naming::QueryBoolMethods
- Ameba::Rule::Naming::RescuedExceptionsVariableName
- Ameba::Rule::Naming::TypeNames
- Ameba::Rule::Naming::VariableNames
- Ameba::Rule::Performance::Base
- Ameba::Rule::Style::GuardClause
- Ameba::Rule::Style::IsAFilter
- Ameba::Rule::Style::IsANil
- Ameba::Rule::Style::LargeNumbers
- Ameba::Rule::Style::NegatedConditionsInUnless
- Ameba::Rule::Style::ParenthesesAroundCondition
- Ameba::Rule::Style::RedundantBegin
- Ameba::Rule::Style::RedundantNext
- Ameba::Rule::Style::RedundantReturn
- Ameba::Rule::Style::UnlessElse
- Ameba::Rule::Style::VerboseBlock
- Ameba::Rule::Style::WhileTrue
Defined in:
ameba/rule/base.crConstant Summary
-
GROUP_SEVERITY =
{ Documentation: Ameba::Severity::Warning, Lint: Ameba::Severity::Warning, Metrics: Ameba::Severity::Warning, Performance: Ameba::Severity::Warning, }
Class Method Summary
Macro Summary
-
issue_for(*args, **kwargs, &block)
Adds an issue to the source
Instance Method Summary
-
#==(other)
Returns
false(other can only be aValuehere). -
#catch(source : Source)
A convenient addition to
#testmethod that does the same but returns a passed insourceas an addition. -
#excluded?(source)
Checks whether the source is excluded from this rule.
-
#group
Returns a group this rule belong to.
-
#hash
Generates an
UInt64hash value for this object. -
#name
Returns a name of this rule, which is basically a class name.
-
#special?
Returns
trueif this rule is special and behaves differently than usual rules. -
#test(source : Source, node : Crystal::ASTNode, *opts)
NOTE Can't be abstract
-
#test(source : Source)
This method is designed to test the source passed in.
Macros inherited from module Ameba::Config::RuleConfig
properties(&block)
properties
Class Method Detail
Macro Detail
Instance Method Detail
Returns false (other can only be a Value here).
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?
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
Returns a group this rule belong to.
class MyGroup::MyRule < Ameba::Rule::Base
# ...
end
MyGroup::MyRule.new.group # => "MyGroup"
Generates an UInt64 hash value for this object.
This method must have the property that a == b implies a.hash == b.hash.
The hash value is used along with #== by the Hash class to determine if two objects
reference the same hash key.
Subclasses must not override this method. Instead, they must define hash(hasher),
though usually the macro def_hash can be used to generate this method.
Returns a name of this rule, which is basically a class name.
class MyRule < Ameba::Rule::Base
def test(source)
end
end
MyRule.new.name # => "MyRule"
Returns true if this rule is special and behaves differently than
usual rules.
my_rule.special? # => true or false