class Ameba::Rule::Lint::LiteralInCondition
- Ameba::Rule::Lint::LiteralInCondition
- Ameba::Rule::Base
- Reference
- Object
Overview
A rule that disallows useless conditional statements that contain a literal in place of a variable or predicate function.
This is because a conditional construct with a literal predicate will always result in the same behaviour at run time, meaning it can be replaced with either the body of the construct, or deleted entirely.
This is considered invalid:
if "something"
:ok
end
YAML configuration example:
Lint/LiteralInCondition:
Enabled: true
Included Modules
- Ameba::AST::Util
- YAML::Serializable
- YAML::Serializable::Strict
Defined in:
ameba/rule/lint/literal_in_condition.crConstant Summary
-
MSG =
"Literal value found in conditional"
Constructors
- .new(ctx : YAML::ParseContext, node : YAML::Nodes::Node)
-
.new(config = nil)
A rule that disallows useless conditional statements that contain a literal in place of a variable or predicate function.
Instance Method Summary
- #check_node(source, node)
- #description : String
- #description=(description : String)
- #enabled : Bool
- #enabled=(enabled : Bool)
- #excluded : Array(String) | Nil
- #excluded=(excluded : Array(String) | Nil)
- #severity : Ameba::Severity
- #severity=(severity : Ameba::Severity)
- #test(source, node : Crystal::If)
- #test(source, node : Crystal::Unless)
- #test(source, node : Crystal::Case)
Instance methods inherited from module Ameba::AST::Util
abort?(node)
abort?,
control_exp_code(node : Crystal::ControlExpression, code_lines)
control_exp_code,
exit?(node)
exit?,
flow_command?(node, in_loop)
flow_command?,
flow_expression?(node, in_loop = false)
flow_expression?,
literal?(node)
literal?,
loop?(node)
loop?,
name_end_location(node)
name_end_location,
name_location(node)
name_location,
name_size(node)
name_size,
node_source(node, code_lines)
node_source,
raise?(node)
raise?,
source_between(loc, end_loc, code_lines) : String | Nil
source_between
Instance methods inherited from class Ameba::Rule::Base
==(other)
==,
catch(source : Source)
catch,
excluded?(source)
excluded?,
group
group,
hash
hash,
name
name,
special?
special?,
test(source : Source, node : Crystal::ASTNode, *opts)test(source : Source) test
Class methods inherited from class Ameba::Rule::Base
parsed_doc
parsed_doc
Constructor Detail
A rule that disallows useless conditional statements that contain a literal in place of a variable or predicate function.
This is because a conditional construct with a literal predicate will always result in the same behaviour at run time, meaning it can be replaced with either the body of the construct, or deleted entirely.
This is considered invalid:
if "something"
:ok
end
YAML configuration example:
Lint/LiteralInCondition:
Enabled: true