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