abstract class
Ameba::Rule::Base
- Ameba::Rule::Base
- Reference
- Object
Overview
Represents a base of all rules. In other words, all rules inherit from this class:
class Ameba::Rule::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::Admonition
- Ameba::Rule::Documentation::Documentation
- Ameba::Rule::Layout::LineLength
- Ameba::Rule::Layout::TrailingBlankLines
- Ameba::Rule::Layout::TrailingWhitespace
- Ameba::Rule::Lint::AmbiguousAssignment
- Ameba::Rule::Lint::AssignmentInCallArgument
- Ameba::Rule::Lint::BadDirective
- Ameba::Rule::Lint::ComparisonToBoolean
- Ameba::Rule::Lint::DebugCalls
- Ameba::Rule::Lint::DebuggerStatement
- Ameba::Rule::Lint::DeprecatedRule
- Ameba::Rule::Lint::DuplicateBranch
- Ameba::Rule::Lint::DuplicateEnumValue
- Ameba::Rule::Lint::DuplicateMethodSignature
- Ameba::Rule::Lint::DuplicateRequire
- Ameba::Rule::Lint::DuplicateWhenCondition
- Ameba::Rule::Lint::ElseNil
- Ameba::Rule::Lint::EmptyEnsure
- Ameba::Rule::Lint::EmptyExpression
- Ameba::Rule::Lint::EmptyLoop
- Ameba::Rule::Lint::EnumMemberNameConflict
- 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::NonExistentRule
- 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::RequireParentheses
- Ameba::Rule::Lint::SelfInitializeDefinition
- Ameba::Rule::Lint::ShadowedArgument
- Ameba::Rule::Lint::ShadowedException
- Ameba::Rule::Lint::ShadowingOuterLocalVar
- Ameba::Rule::Lint::SharedVarInFiber
- Ameba::Rule::Lint::SignalTrap
- Ameba::Rule::Lint::SpecEqWithBoolOrNilLiteral
- Ameba::Rule::Lint::SpecFilename
- Ameba::Rule::Lint::SpecFocus
- Ameba::Rule::Lint::Syntax
- Ameba::Rule::Lint::TopLevelOperatorDefinition
- Ameba::Rule::Lint::TrailingRescueException
- Ameba::Rule::Lint::Typos
- Ameba::Rule::Lint::UnneededDisableDirective
- Ameba::Rule::Lint::UnreachableCode
- Ameba::Rule::Lint::UnusedArgument
- Ameba::Rule::Lint::UnusedBlockArgument
- Ameba::Rule::Lint::UnusedExpression
- Ameba::Rule::Lint::UnusedRescueVariable
- Ameba::Rule::Lint::UselessAssign
- Ameba::Rule::Lint::UselessConditionInWhen
- Ameba::Rule::Lint::UselessVisibilityModifier
- Ameba::Rule::Lint::VoidOutsideLib
- Ameba::Rule::Lint::WhitespaceAroundMacroExpression
- 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::ArrayLiteralSyntax
- Ameba::Rule::Style::CallParentheses
- Ameba::Rule::Style::Elsif
- Ameba::Rule::Style::GuardClause
- Ameba::Rule::Style::HashLiteralSyntax
- Ameba::Rule::Style::HeredocEscape
- Ameba::Rule::Style::HeredocIndent
- Ameba::Rule::Style::IsAFilter
- Ameba::Rule::Style::IsANil
- Ameba::Rule::Style::LargeNumbers
- Ameba::Rule::Style::MultilineCurlyBlock
- Ameba::Rule::Style::MultilineStringLiteral
- Ameba::Rule::Style::NegatedConditionsInUnless
- Ameba::Rule::Style::ParenthesesAroundCondition
- Ameba::Rule::Style::PercentLiteralDelimiters
- Ameba::Rule::Style::RedundantBegin
- Ameba::Rule::Style::RedundantNext
- Ameba::Rule::Style::RedundantNilInControlExpression
- Ameba::Rule::Style::RedundantReturn
- Ameba::Rule::Style::RedundantSelf
- Ameba::Rule::Style::UnlessElse
- Ameba::Rule::Style::VerboseBlock
- Ameba::Rule::Style::VerboseNilType
- Ameba::Rule::Style::WhileTrue
- Ameba::Rule::Typing::MacroCallArgumentTypeRestriction
- Ameba::Rule::Typing::MethodParameterTypeRestriction
- Ameba::Rule::Typing::MethodReturnTypeRestriction
- Ameba::Rule::Typing::ProcLiteralReturnTypeRestriction
Defined in:
ameba/rule/base.crConstant Summary
-
GROUP_SEVERITY =
{ Lint: Ameba::Severity::Warning, Metrics: Ameba::Severity::Warning, Performance: Ameba::Severity::Warning, }
Class Method Summary
- .default_severity : Ameba::Severity
-
.group_name
Returns the group name for this rule.
-
.rule_name
Returns the name for this rule.
Macro Summary
-
issue_for(*args, **kwargs, &block)
Adds an issue to the source
Instance Method Summary
-
#==(other : self)
Returns
trueif this reference is the same as other. -
#catch(source : Source)
A convenient addition to
#testmethod that does the same but returns a passed insourceas an addition. -
#excluded?(source, root = Dir.current)
Checks whether the source is excluded from this rule.
-
#group
Returns a group this rule belongs to.
-
#hash(hasher)
See
Object#hash(hasher) -
#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
Returns the group name for this rule.
Ameba::Rule::Lint::Syntax.group_name # => "Lint"
Returns the name for this rule.
Ameba::Rule::Lint::Syntax.rule_name # => "Lint/Syntax"
Macro Detail
Instance Method Detail
Returns true if this reference is the same as other. Invokes same?.
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 belongs to.
module Ameba
class Rule::MyGroup::MyRule < Rule::Base
# ...
end
end
Ameba::Rule::MyGroup::MyRule.new.group # => "MyGroup"
Returns a name of this rule, which is basically a class name.
module Ameba
class Rule::MyRule < Rule::Base
def test(source)
end
end
end
Ameba::Rule::MyRule.new.name # => "MyRule"
Returns true if this rule is special and behaves differently than
usual rules.
my_rule.special? # => true or false