diff --git a/Ameba.html b/Ameba.html index c4f52c1f..05b6f3f6 100644 --- a/Ameba.html +++ b/Ameba.html @@ -623,63 +623,63 @@ config.files = file_paths - + ameba.cr
- + ameba/glob_utils.cr
- + ameba/inline_comments.cr
- + ameba/issue.cr
- + ameba/reportable.cr
- + ameba/runner.cr
- + ameba/severity.cr
- + ameba/source.cr
- + ameba/tokenizer.cr @@ -776,7 +776,7 @@ Can be configured via config parameter.


- [View source] + [View source]
diff --git a/Ameba/AST.html b/Ameba/AST.html index 78bd5c0f..807f1d50 100644 --- a/Ameba/AST.html +++ b/Ameba/AST.html @@ -597,105 +597,105 @@ - + ameba/ast/branch.cr
- + ameba/ast/branchable.cr
- + ameba/ast/flow_expression.cr
- + ameba/ast/scope.cr
- + ameba/ast/variabling/argument.cr
- + ameba/ast/variabling/assignment.cr
- + ameba/ast/variabling/ivariable.cr
- + ameba/ast/variabling/reference.cr
- + ameba/ast/variabling/variable.cr
- + ameba/ast/visitors/base_visitor.cr
- + ameba/ast/visitors/counting_visitor.cr
- + ameba/ast/visitors/flow_expression_visitor.cr
- + ameba/ast/visitors/node_visitor.cr
- + ameba/ast/visitors/redundant_control_expression_visitor.cr
- + ameba/ast/visitors/scope_visitor.cr diff --git a/Ameba/AST/Argument.html b/Ameba/AST/Argument.html index 9d0c0271..2ef66737 100644 --- a/Ameba/AST/Argument.html +++ b/Ameba/AST/Argument.html @@ -609,7 +609,7 @@ Holds the reference to the variable, thus to scope.

- + ameba/ast/variabling/argument.cr @@ -769,7 +769,7 @@ Holds the reference to the variable, thus to scope.


- [View source] + [View source]
@@ -799,7 +799,7 @@ Holds the reference to the variable, thus to scope.


- [View source] + [View source]
@@ -815,7 +815,7 @@ Holds the reference to the variable, thus to scope.


- [View source] + [View source]
@@ -836,7 +836,7 @@ Holds the reference to the variable, thus to scope.


- [View source] + [View source]
@@ -852,7 +852,7 @@ Holds the reference to the variable, thus to scope.


- [View source] + [View source]
@@ -868,7 +868,7 @@ Holds the reference to the variable, thus to scope.


- [View source] + [View source]
@@ -889,7 +889,7 @@ Holds the reference to the variable, thus to scope.


- [View source] + [View source]
@@ -910,7 +910,7 @@ Holds the reference to the variable, thus to scope.


- [View source] + [View source]
@@ -926,7 +926,7 @@ Holds the reference to the variable, thus to scope.


- [View source] + [View source]
@@ -942,7 +942,7 @@ Holds the reference to the variable, thus to scope.


- [View source] + [View source]
@@ -963,7 +963,7 @@ Holds the reference to the variable, thus to scope.


- [View source] + [View source]
diff --git a/Ameba/AST/Assignment.html b/Ameba/AST/Assignment.html index aeaf0815..0bc5b776 100644 --- a/Ameba/AST/Assignment.html +++ b/Ameba/AST/Assignment.html @@ -600,7 +600,7 @@ Holds the assign node and the variable.

- + ameba/ast/variabling/assignment.cr @@ -803,7 +803,7 @@ Holds the assign node and the variable.


- [View source] + [View source]
@@ -838,7 +838,7 @@ Holds the assign node and the variable.


- [View source] + [View source]
@@ -854,7 +854,7 @@ Holds the assign node and the variable.


- [View source] + [View source]
@@ -870,7 +870,7 @@ Holds the assign node and the variable.


- [View source] + [View source]
@@ -894,7 +894,7 @@ For example, this assignment is in a branch:


- [View source] + [View source]
@@ -910,7 +910,7 @@ For example, this assignment is in a branch:


- [View source] + [View source]
@@ -926,7 +926,7 @@ For example, this assignment is in a branch:


- [View source] + [View source]
@@ -947,7 +947,7 @@ For example, this assignment is in a branch:


- [View source] + [View source]
@@ -971,7 +971,7 @@ For example, this is an op assign:


- [View source] + [View source]
@@ -987,7 +987,7 @@ For example, this is an op assign:


- [View source] + [View source]
@@ -1003,7 +1003,7 @@ For example, this is an op assign:


- [View source] + [View source]
@@ -1019,7 +1019,7 @@ For example, this is an op assign:


- [View source] + [View source]
@@ -1040,7 +1040,7 @@ For example, this is an op assign:


- [View source] + [View source]
@@ -1061,7 +1061,7 @@ For example, this is an op assign:


- [View source] + [View source]
@@ -1077,7 +1077,7 @@ For example, this is an op assign:


- [View source] + [View source]
@@ -1093,7 +1093,7 @@ For example, this is an op assign:


- [View source] + [View source]
@@ -1127,7 +1127,7 @@ i.e.


- [View source] + [View source]
@@ -1148,7 +1148,7 @@ i.e.


- [View source] + [View source]
diff --git a/Ameba/AST/BaseVisitor.html b/Ameba/AST/BaseVisitor.html index cf27134c..e5618879 100644 --- a/Ameba/AST/BaseVisitor.html +++ b/Ameba/AST/BaseVisitor.html @@ -617,7 +617,7 @@ - + ameba/ast/visitors/base_visitor.cr @@ -736,7 +736,7 @@
- [View source] + [View source]
@@ -772,7 +772,7 @@ Returns true meaning all child nodes will be traversed.


- [View source] + [View source]
diff --git a/Ameba/AST/Branch.html b/Ameba/AST/Branch.html index efa6023a..eda8be4b 100644 --- a/Ameba/AST/Branch.html +++ b/Ameba/AST/Branch.html @@ -608,7 +608,7 @@ For example, the branchable if statement contains 3 branches:

- + ameba/ast/branch.cr @@ -801,7 +801,7 @@ For example, the branchable if statement contains 3 branches:


- [View source] + [View source]
@@ -836,7 +836,7 @@ For example, the branchable if statement contains 3 branches:


- [View source] + [View source]
@@ -859,7 +859,7 @@ For example, the branchable if statement contains 3 branches:


- [View source] + [View source]
@@ -910,7 +910,7 @@ For example, the branchable if statement contains 3 branches:


- [View source] + [View source]
@@ -926,7 +926,7 @@ For example, the branchable if statement contains 3 branches:


- [View source] + [View source]
@@ -978,7 +978,7 @@ For example, this branch is in a loop:


- [View source] + [View source]
@@ -994,7 +994,7 @@ For example, this branch is in a loop:


- [View source] + [View source]
@@ -1010,7 +1010,7 @@ For example, this branch is in a loop:


- [View source] + [View source]
@@ -1031,7 +1031,7 @@ For example, this branch is in a loop:


- [View source] + [View source]
@@ -1052,7 +1052,7 @@ For example, this branch is in a loop:


- [View source] + [View source]
@@ -1068,7 +1068,7 @@ For example, this branch is in a loop:


- [View source] + [View source]
@@ -1084,7 +1084,7 @@ For example, this branch is in a loop:


- [View source] + [View source]
diff --git a/Ameba/AST/Branchable.html b/Ameba/AST/Branchable.html index 8a021003..f4423dd8 100644 --- a/Ameba/AST/Branchable.html +++ b/Ameba/AST/Branchable.html @@ -621,7 +621,7 @@ are branchables.

- + ameba/ast/branchable.cr @@ -833,7 +833,7 @@ are branchables.


- [View source] + [View source]
@@ -863,7 +863,7 @@ are branchables.


- [View source] + [View source]
@@ -879,7 +879,7 @@ are branchables.


- [View source] + [View source]
@@ -895,7 +895,7 @@ are branchables.


- [View source] + [View source]
@@ -911,7 +911,7 @@ are branchables.


- [View source] + [View source]
@@ -927,7 +927,7 @@ are branchables.


- [View source] + [View source]
@@ -948,7 +948,7 @@ are branchables.


- [View source] + [View source]
@@ -969,7 +969,7 @@ are branchables.


- [View source] + [View source]
@@ -990,7 +990,7 @@ are branchables.


- [View source] + [View source]
@@ -1006,7 +1006,7 @@ are branchables.


- [View source] + [View source]
@@ -1022,7 +1022,7 @@ are branchables.


- [View source] + [View source]
diff --git a/Ameba/AST/CountingVisitor.html b/Ameba/AST/CountingVisitor.html index b459bcad..a5084e91 100644 --- a/Ameba/AST/CountingVisitor.html +++ b/Ameba/AST/CountingVisitor.html @@ -599,7 +599,7 @@ - + ameba/ast/visitors/counting_visitor.cr @@ -745,7 +745,7 @@
- [View source] + [View source]
@@ -780,7 +780,7 @@
- [View source] + [View source]
@@ -796,7 +796,7 @@
- [View source] + [View source]
@@ -812,7 +812,7 @@
- [View source] + [View source]
diff --git a/Ameba/AST/FlowExpression.html b/Ameba/AST/FlowExpression.html index 9f08d8b9..dbb60424 100644 --- a/Ameba/AST/FlowExpression.html +++ b/Ameba/AST/FlowExpression.html @@ -624,7 +624,7 @@ a parent node, which allows easily search through the related statement - + ameba/ast/flow_expression.cr @@ -831,7 +831,7 @@ a parent node, which allows easily search through the related statement
- [View source] + [View source]
@@ -861,7 +861,7 @@ a parent node, which allows easily search through the related statement
- [View source] + [View source]
@@ -877,7 +877,7 @@ a parent node, which allows easily search through the related statement
- [View source] + [View source]
@@ -898,7 +898,7 @@ a parent node, which allows easily search through the related statement
- [View source] + [View source]
@@ -914,7 +914,7 @@ a parent node, which allows easily search through the related statement
- [View source] + [View source]
@@ -930,7 +930,7 @@ a parent node, which allows easily search through the related statement
- [View source] + [View source]
@@ -951,7 +951,7 @@ a parent node, which allows easily search through the related statement
- [View source] + [View source]
@@ -967,7 +967,7 @@ a parent node, which allows easily search through the related statement
- [View source] + [View source]
@@ -983,7 +983,7 @@ a parent node, which allows easily search through the related statement
- [View source] + [View source]
@@ -1012,7 +1012,7 @@ For example:


- [View source] + [View source]
diff --git a/Ameba/AST/FlowExpressionVisitor.html b/Ameba/AST/FlowExpressionVisitor.html index 97df8915..a8986b61 100644 --- a/Ameba/AST/FlowExpressionVisitor.html +++ b/Ameba/AST/FlowExpressionVisitor.html @@ -613,7 +613,7 @@ - + ameba/ast/visitors/flow_expression_visitor.cr @@ -793,7 +793,7 @@
- [View source] + [View source]
diff --git a/Ameba/AST/InstanceVariable.html b/Ameba/AST/InstanceVariable.html index 6169a0f8..8b349d21 100644 --- a/Ameba/AST/InstanceVariable.html +++ b/Ameba/AST/InstanceVariable.html @@ -588,7 +588,7 @@ - + ameba/ast/variabling/ivariable.cr @@ -726,7 +726,7 @@
- [View source] + [View source]
@@ -756,7 +756,7 @@
- [View source] + [View source]
@@ -772,7 +772,7 @@
- [View source] + [View source]
@@ -788,7 +788,7 @@
- [View source] + [View source]
@@ -804,7 +804,7 @@
- [View source] + [View source]
@@ -820,7 +820,7 @@
- [View source] + [View source]
@@ -836,7 +836,7 @@
- [View source] + [View source]
@@ -852,7 +852,7 @@
- [View source] + [View source]
@@ -868,7 +868,7 @@
- [View source] + [View source]
@@ -884,7 +884,7 @@
- [View source] + [View source]
diff --git a/Ameba/AST/NodeVisitor.html b/Ameba/AST/NodeVisitor.html index 715278ed..b89a7c0c 100644 --- a/Ameba/AST/NodeVisitor.html +++ b/Ameba/AST/NodeVisitor.html @@ -602,7 +602,7 @@ to be inspected by rules.

- + ameba/ast/visitors/node_visitor.cr @@ -906,7 +906,7 @@ to be inspected by rules.


- [View source] + [View source]
@@ -942,7 +942,7 @@ Returns true meaning that child nodes will be traversed as well.


- [View source] + [View source]
@@ -964,7 +964,7 @@ Returns true meaning that child nodes will be traversed as well.


- [View source] + [View source]
@@ -986,7 +986,7 @@ Returns true meaning that child nodes will be traversed as well.


- [View source] + [View source]
@@ -1008,7 +1008,7 @@ Returns true meaning that child nodes will be traversed as well.


- [View source] + [View source]
@@ -1030,7 +1030,7 @@ Returns true meaning that child nodes will be traversed as well.


- [View source] + [View source]
@@ -1052,7 +1052,7 @@ Returns true meaning that child nodes will be traversed as well.


- [View source] + [View source]
@@ -1074,7 +1074,7 @@ Returns true meaning that child nodes will be traversed as well.


- [View source] + [View source]
@@ -1096,7 +1096,7 @@ Returns true meaning that child nodes will be traversed as well.


- [View source] + [View source]
@@ -1118,7 +1118,7 @@ Returns true meaning that child nodes will be traversed as well.


- [View source] + [View source]
@@ -1140,7 +1140,7 @@ Returns true meaning that child nodes will be traversed as well.


- [View source] + [View source]
@@ -1162,7 +1162,7 @@ Returns true meaning that child nodes will be traversed as well.


- [View source] + [View source]
@@ -1184,7 +1184,7 @@ Returns true meaning that child nodes will be traversed as well.


- [View source] + [View source]
@@ -1206,7 +1206,7 @@ Returns true meaning that child nodes will be traversed as well.


- [View source] + [View source]
@@ -1228,7 +1228,7 @@ Returns true meaning that child nodes will be traversed as well.


- [View source] + [View source]
@@ -1250,7 +1250,7 @@ Returns true meaning that child nodes will be traversed as well.


- [View source] + [View source]
@@ -1272,7 +1272,7 @@ Returns true meaning that child nodes will be traversed as well.


- [View source] + [View source]
@@ -1294,7 +1294,7 @@ Returns true meaning that child nodes will be traversed as well.


- [View source] + [View source]
@@ -1316,7 +1316,7 @@ Returns true meaning that child nodes will be traversed as well.


- [View source] + [View source]
@@ -1338,7 +1338,7 @@ Returns true meaning that child nodes will be traversed as well.


- [View source] + [View source]
@@ -1360,7 +1360,7 @@ Returns true meaning that child nodes will be traversed as well.


- [View source] + [View source]
@@ -1382,7 +1382,7 @@ Returns true meaning that child nodes will be traversed as well.


- [View source] + [View source]
@@ -1404,7 +1404,7 @@ Returns true meaning that child nodes will be traversed as well.


- [View source] + [View source]
@@ -1426,7 +1426,7 @@ Returns true meaning that child nodes will be traversed as well.


- [View source] + [View source]
@@ -1448,7 +1448,7 @@ Returns true meaning that child nodes will be traversed as well.


- [View source] + [View source]
@@ -1464,7 +1464,7 @@ Returns true meaning that child nodes will be traversed as well.


- [View source] + [View source]
diff --git a/Ameba/AST/RedundantControlExpressionVisitor.html b/Ameba/AST/RedundantControlExpressionVisitor.html index 75f7b761..f26b6a51 100644 --- a/Ameba/AST/RedundantControlExpressionVisitor.html +++ b/Ameba/AST/RedundantControlExpressionVisitor.html @@ -601,7 +601,7 @@ is reached.

- + ameba/ast/visitors/redundant_control_expression_visitor.cr @@ -715,7 +715,7 @@ is reached.


- [View source] + [View source]
@@ -750,7 +750,7 @@ is reached.


- [View source] + [View source]
@@ -771,7 +771,7 @@ is reached.


- [View source] + [View source]
@@ -792,7 +792,7 @@ is reached.


- [View source] + [View source]
diff --git a/Ameba/AST/Reference.html b/Ameba/AST/Reference.html index 74fbc828..87aecb67 100644 --- a/Ameba/AST/Reference.html +++ b/Ameba/AST/Reference.html @@ -601,7 +601,7 @@ the variable from its reference.

- + ameba/ast/variabling/reference.cr @@ -814,7 +814,7 @@ the variable from its reference.


- [View source] + [View source]
@@ -830,7 +830,7 @@ the variable from its reference.


- [View source] + [View source]
diff --git a/Ameba/AST/Scope.html b/Ameba/AST/Scope.html index 8c8cd4e4..9e803867 100644 --- a/Ameba/AST/Scope.html +++ b/Ameba/AST/Scope.html @@ -600,7 +600,7 @@ This is where the local variables belong to.

- + ameba/ast/scope.cr @@ -900,7 +900,7 @@ This is where the local variables belong to.


- [View source] + [View source]
@@ -961,7 +961,7 @@ scope.add_argument(arg_node)
- [View source] + [View source]
@@ -985,7 +985,7 @@ scope.add_ivariable(ivar_node)
- [View source] + [View source]
@@ -1009,7 +1009,7 @@ scope.add_variable(var_node)
- [View source] + [View source]
@@ -1030,7 +1030,7 @@ scope.add_variable(var_node)
- [View source] + [View source]
@@ -1051,7 +1051,7 @@ scope.add_variable(var_node)
- [View source] + [View source]
@@ -1075,7 +1075,7 @@ scope.assign_variable(var_name, assign_node)
- [View source] + [View source]
@@ -1096,7 +1096,7 @@ scope.assign_variable(var_name, assign_node)
- [View source] + [View source]
@@ -1118,7 +1118,7 @@ false if not.


- [View source] + [View source]
@@ -1139,7 +1139,7 @@ false if not.


- [View source] + [View source]
@@ -1155,7 +1155,7 @@ false if not.


- [View source] + [View source]
@@ -1171,7 +1171,7 @@ false if not.


- [View source] + [View source]
@@ -1193,7 +1193,7 @@ the same Crystal node as @node.


- [View source] + [View source]
@@ -1217,7 +1217,7 @@ scope.find_variable("foo")
- [View source] + [View source]
@@ -1261,7 +1261,7 @@ scope.find_variable("foo")
- [View source] + [View source]
@@ -1282,7 +1282,7 @@ scope.find_variable("foo")
- [View source] + [View source]
@@ -1303,7 +1303,7 @@ scope.find_variable("foo")
- [View source] + [View source]
@@ -1319,7 +1319,7 @@ scope.find_variable("foo")
- [View source] + [View source]
@@ -1335,7 +1335,7 @@ scope.find_variable("foo")
- [View source] + [View source]
@@ -1356,7 +1356,7 @@ scope.find_variable("foo")
- [View source] + [View source]
@@ -1377,7 +1377,7 @@ scope.find_variable("foo")
- [View source] + [View source]
@@ -1398,7 +1398,7 @@ scope.find_variable("foo")
- [View source] + [View source]
@@ -1420,7 +1420,7 @@ false if not.


- [View source] + [View source]
@@ -1445,7 +1445,7 @@ false if not.


- [View source] + [View source]
@@ -1461,7 +1461,7 @@ false if not.


- [View source] + [View source]
@@ -1477,7 +1477,7 @@ false if not.


- [View source] + [View source]
@@ -1498,7 +1498,7 @@ false if not.


- [View source] + [View source]
@@ -1520,7 +1520,7 @@ type definition, for example a class.


- [View source] + [View source]
@@ -1541,7 +1541,7 @@ type definition, for example a class.


- [View source] + [View source]
diff --git a/Ameba/AST/ScopeVisitor.html b/Ameba/AST/ScopeVisitor.html index d35bbfbf..3c24b5aa 100644 --- a/Ameba/AST/ScopeVisitor.html +++ b/Ameba/AST/ScopeVisitor.html @@ -599,7 +599,7 @@ - + ameba/ast/visitors/scope_visitor.cr @@ -742,7 +742,7 @@
- [View source] + [View source]
diff --git a/Ameba/AST/Util.html b/Ameba/AST/Util.html index 2ddba9e5..f9c20406 100644 --- a/Ameba/AST/Util.html +++ b/Ameba/AST/Util.html @@ -629,7 +629,7 @@ - + ameba/ast/util.cr @@ -750,7 +750,7 @@
- [View source] + [View source]
@@ -771,7 +771,7 @@
- [View source] + [View source]
@@ -794,7 +794,7 @@ or special call node that interrupts execution (i.e. raise, exit, abort).


- [View source] + [View source]
@@ -835,7 +835,7 @@ a flow command return:


- [View source] + [View source]
@@ -856,7 +856,7 @@ a flow command return:


- [View source] + [View source]
@@ -877,7 +877,7 @@ a flow command return:


- [View source] + [View source]
@@ -900,7 +900,7 @@ to determine and cut a piece of source of the node.


- [View source] + [View source]
@@ -921,7 +921,7 @@ to determine and cut a piece of source of the node.


- [View source] + [View source]
diff --git a/Ameba/AST/Variable.html b/Ameba/AST/Variable.html index b2747e4f..dd864b84 100644 --- a/Ameba/AST/Variable.html +++ b/Ameba/AST/Variable.html @@ -614,7 +614,7 @@ Holds the var node and variable assigments.

- + ameba/ast/variabling/variable.cr @@ -806,7 +806,7 @@ Holds the var node and variable assigments.

  • #used_in_macro?(scope = @scope) -

    Returns true if current variable potentially referenced in a macro literal, false if not.

    +

    Returns true if current variable potentially referenced in a macro, false if not.

  • @@ -868,7 +868,7 @@ Holds the var node and variable assigments.


    - [View source] + [View source]
    @@ -909,7 +909,7 @@ variable.assignment.size # => 2
    - [View source] + [View source]
    @@ -930,7 +930,7 @@ variable.assignment.size # => 2
    - [View source] + [View source]
    @@ -951,7 +951,7 @@ variable.assignment.size # => 2
    - [View source] + [View source]
    @@ -982,7 +982,7 @@ by block:


    - [View source] + [View source]
    @@ -1003,7 +1003,7 @@ by block:


    - [View source] + [View source]
    @@ -1019,7 +1019,7 @@ by block:


    - [View source] + [View source]
    @@ -1035,7 +1035,7 @@ by block:


    - [View source] + [View source]
    @@ -1057,7 +1057,7 @@ the same Crystal node as @node.


    - [View source] + [View source]
    @@ -1078,7 +1078,7 @@ the same Crystal node as @node.


    - [View source] + [View source]
    @@ -1094,7 +1094,7 @@ the same Crystal node as @node.


    - [View source] + [View source]
    @@ -1110,7 +1110,7 @@ the same Crystal node as @node.


    - [View source] + [View source]
    @@ -1126,7 +1126,7 @@ the same Crystal node as @node.


    - [View source] + [View source]
    @@ -1142,7 +1142,7 @@ the same Crystal node as @node.


    - [View source] + [View source]
    @@ -1163,7 +1163,7 @@ the same Crystal node as @node.


    - [View source] + [View source]
    @@ -1187,7 +1187,7 @@ variable.reference(var_node, some_scope)
    - [View source] + [View source]
    @@ -1212,7 +1212,7 @@ variable.reference_assignments!
    - [View source] + [View source]
    @@ -1237,7 +1237,7 @@ variable.referenced? # => true
    - [View source] + [View source]
    @@ -1258,7 +1258,7 @@ variable.referenced? # => true
    - [View source] + [View source]
    @@ -1279,7 +1279,7 @@ variable.referenced? # => true
    - [View source] + [View source]
    @@ -1300,7 +1300,7 @@ variable.referenced? # => true
    - [View source] + [View source]
    @@ -1322,7 +1322,7 @@ false otherwise.


    - [View source] + [View source]
    @@ -1338,7 +1338,7 @@ false otherwise.


    - [View source] + [View source]
    @@ -1354,7 +1354,7 @@ false otherwise.


    - [View source] + [View source]
    @@ -1369,14 +1369,14 @@ false otherwise.

    -

    Returns true if current variable potentially referenced in a macro literal, +

    Returns true if current variable potentially referenced in a macro, false if not.


    - [View source] + [View source]
    diff --git a/Ameba/Config.html b/Ameba/Config.html index c3674dec..4eb9893e 100644 --- a/Ameba/Config.html +++ b/Ameba/Config.html @@ -620,7 +620,7 @@ config.formatter = my_formatter - + ameba/config.cr @@ -858,7 +858,7 @@ config.formatter = my_formatter
    - [View source] + [View source]
    @@ -881,7 +881,7 @@ config.formatter = my_formatter
    - [View source] + [View source]
    @@ -918,7 +918,7 @@ config.excluded = ["spec"
    - [View source] + [View source]
    @@ -943,7 +943,7 @@ config.excluded = ["spec"
    - [View source] + [View source]
    @@ -969,7 +969,7 @@ config.formatter
    - [View source] + [View source]
    @@ -985,7 +985,7 @@ config.formatter
    - [View source] + [View source]
    @@ -1009,7 +1009,7 @@ config.formatter = :progress
    - [View source] + [View source]
    @@ -1036,7 +1036,7 @@ config.globs
    - [View source] + [View source]
    @@ -1063,7 +1063,7 @@ config.globs
    - [View source] + [View source]
    @@ -1079,7 +1079,7 @@ config.globs
    - [View source] + [View source]
    @@ -1095,7 +1095,7 @@ config.globs
    - [View source] + [View source]
    @@ -1111,7 +1111,7 @@ config.globs
    - [View source] + [View source]
    @@ -1138,7 +1138,7 @@ config.sources # => list of sources pointing to files found b
    - [View source] + [View source]
    @@ -1162,7 +1162,7 @@ config.update_rule "MyRuleName", enabled:
    - [View source] + [View source]
    @@ -1190,7 +1190,7 @@ config.update_rules %w(Rule1 Rule2), enabled:
    - [View source] + [View source]
    diff --git a/Ameba/Formatter.html b/Ameba/Formatter.html index 071a4386..7c600c1f 100644 --- a/Ameba/Formatter.html +++ b/Ameba/Formatter.html @@ -597,56 +597,56 @@ - + ameba/formatter/base_formatter.cr
    - + ameba/formatter/disabled_formatter.cr
    - + ameba/formatter/dot_formatter.cr
    - + ameba/formatter/explain_formatter.cr
    - + ameba/formatter/flycheck_formatter.cr
    - + ameba/formatter/json_formatter.cr
    - + ameba/formatter/todo_formatter.cr
    - + ameba/formatter/util.cr diff --git a/Ameba/Formatter/BaseFormatter.html b/Ameba/Formatter/BaseFormatter.html index b3509c3b..7c97392c 100644 --- a/Ameba/Formatter/BaseFormatter.html +++ b/Ameba/Formatter/BaseFormatter.html @@ -621,7 +621,7 @@ callbacks in Ameba:: - + ameba/formatter/base_formatter.cr @@ -754,7 +754,7 @@ callbacks in Ameba::
    @@ -784,7 +784,7 @@ callbacks in Ameba::
    @@ -806,7 +806,7 @@ A list of inspected sources is passed as an argument.


    @@ -827,7 +827,7 @@ A list of inspected sources is passed as an argument.


    @@ -849,7 +849,7 @@ A corresponding source is passed as an argument.


    @@ -871,7 +871,7 @@ A corresponding source is passed as an argument.


    @@ -893,7 +893,7 @@ A list of sources to inspect is passed as an argument.


    diff --git a/Ameba/Formatter/DisabledFormatter.html b/Ameba/Formatter/DisabledFormatter.html index 0bb17c5c..fc310f87 100644 --- a/Ameba/Formatter/DisabledFormatter.html +++ b/Ameba/Formatter/DisabledFormatter.html @@ -599,7 +599,7 @@ - + ameba/formatter/disabled_formatter.cr @@ -749,7 +749,7 @@ A list of inspected sources is passed as an argument.


    diff --git a/Ameba/Formatter/DotFormatter.html b/Ameba/Formatter/DotFormatter.html index fac64704..84f4a409 100644 --- a/Ameba/Formatter/DotFormatter.html +++ b/Ameba/Formatter/DotFormatter.html @@ -628,7 +628,7 @@ It is similar to Crystal's dot formatter for specs.

    - + ameba/formatter/dot_formatter.cr @@ -806,7 +806,7 @@ It is similar to Crystal's dot formatter for specs.


    @@ -827,7 +827,7 @@ It is similar to Crystal's dot formatter for specs.


    @@ -848,7 +848,7 @@ It is similar to Crystal's dot formatter for specs.


    diff --git a/Ameba/Formatter/ExplainFormatter.html b/Ameba/Formatter/ExplainFormatter.html index 7096c1ab..922ae8a7 100644 --- a/Ameba/Formatter/ExplainFormatter.html +++ b/Ameba/Formatter/ExplainFormatter.html @@ -614,7 +614,7 @@ a specific location.

    - + ameba/formatter/explain_formatter.cr @@ -784,7 +784,7 @@ Second argument is location which indicates the location to explain.

    @@ -819,7 +819,7 @@ Second argument is location which indicates the location to explain.

    @@ -835,7 +835,7 @@ Second argument is location which indicates the location to explain.

    @@ -851,7 +851,7 @@ Second argument is location which indicates the location to explain.

    diff --git a/Ameba/Formatter/FlycheckFormatter.html b/Ameba/Formatter/FlycheckFormatter.html index 650fbbc7..e2bfc9bd 100644 --- a/Ameba/Formatter/FlycheckFormatter.html +++ b/Ameba/Formatter/FlycheckFormatter.html @@ -588,7 +588,7 @@ - + ameba/formatter/flycheck_formatter.cr @@ -738,7 +738,7 @@ A corresponding source is passed as an argument.


    diff --git a/Ameba/Formatter/JSONFormatter.html b/Ameba/Formatter/JSONFormatter.html index cf186bb4..a4145e8d 100644 --- a/Ameba/Formatter/JSONFormatter.html +++ b/Ameba/Formatter/JSONFormatter.html @@ -657,7 +657,7 @@ - + ameba/formatter/json_formatter.cr @@ -824,7 +824,7 @@
    @@ -864,7 +864,7 @@ A list of inspected sources is passed as an argument.


    @@ -890,7 +890,7 @@ A corresponding source is passed as an argument.


    @@ -916,7 +916,7 @@ A list of sources to inspect is passed as an argument.


    diff --git a/Ameba/Formatter/TODOFormatter.html b/Ameba/Formatter/TODOFormatter.html index a4f7303e..909b1a8c 100644 --- a/Ameba/Formatter/TODOFormatter.html +++ b/Ameba/Formatter/TODOFormatter.html @@ -601,7 +601,7 @@ or excludes failed sources from these rules.

    - + ameba/formatter/todo_formatter.cr @@ -802,7 +802,7 @@ or excludes failed sources from these rules.


    @@ -841,7 +841,7 @@ or excludes failed sources from these rules.


    diff --git a/Ameba/Formatter/Util.html b/Ameba/Formatter/Util.html index 5b7ebb3b..7ebaa7eb 100644 --- a/Ameba/Formatter/Util.html +++ b/Ameba/Formatter/Util.html @@ -602,7 +602,7 @@ - + ameba/formatter/util.cr @@ -667,7 +667,7 @@
    diff --git a/Ameba/GlobUtils.html b/Ameba/GlobUtils.html index 2297a977..a3261bab 100644 --- a/Ameba/GlobUtils.html +++ b/Ameba/GlobUtils.html @@ -611,7 +611,7 @@ - + ameba/glob_utils.cr @@ -692,7 +692,7 @@
    @@ -716,7 +716,7 @@ Globs can have wildcards or be rejected:


    diff --git a/Ameba/InlineComments.html b/Ameba/InlineComments.html index b630f14e..dffd84d8 100644 --- a/Ameba/InlineComments.html +++ b/Ameba/InlineComments.html @@ -611,7 +611,7 @@ - + ameba/inline_comments.cr @@ -716,7 +716,7 @@
    @@ -759,7 +759,7 @@ false otherwise.


    @@ -791,7 +791,7 @@ parse_inline_directive(line) # => nil

    diff --git a/Ameba/InlineComments/Action.html b/Ameba/InlineComments/Action.html index 1f139a79..555b3389 100644 --- a/Ameba/InlineComments/Action.html +++ b/Ameba/InlineComments/Action.html @@ -597,7 +597,7 @@ - + ameba/inline_comments.cr @@ -731,7 +731,7 @@
    @@ -747,7 +747,7 @@
    diff --git a/Ameba/Issue.html b/Ameba/Issue.html index baec42fe..572296f3 100644 --- a/Ameba/Issue.html +++ b/Ameba/Issue.html @@ -599,7 +599,7 @@ - + ameba/issue.cr @@ -747,7 +747,7 @@
    @@ -777,7 +777,7 @@
    @@ -793,7 +793,7 @@
    @@ -809,7 +809,7 @@
    @@ -895,7 +895,7 @@
    diff --git a/Ameba/Reportable.html b/Ameba/Reportable.html index 2fee0dca..0e3f6375 100644 --- a/Ameba/Reportable.html +++ b/Ameba/Reportable.html @@ -611,7 +611,7 @@ - + ameba/reportable.cr @@ -725,7 +725,7 @@
    @@ -746,7 +746,7 @@
    @@ -767,7 +767,7 @@
    @@ -788,7 +788,7 @@
    @@ -809,7 +809,7 @@
    @@ -830,7 +830,7 @@
    @@ -851,7 +851,7 @@
    diff --git a/Ameba/Rule.html b/Ameba/Rule.html index 59850bc1..041ba9eb 100644 --- a/Ameba/Rule.html +++ b/Ameba/Rule.html @@ -586,7 +586,7 @@ - + ameba/rule/base.cr @@ -682,7 +682,7 @@ behave differently than usual rules.


    diff --git a/Ameba/Rule/Base.html b/Ameba/Rule/Base.html index 0c0889da..580c68ab 100644 --- a/Ameba/Rule/Base.html +++ b/Ameba/Rule/Base.html @@ -730,7 +730,7 @@ that are tested by this rule, it should add an issue.

    - + ameba/rule/base.cr @@ -940,7 +940,7 @@ that are tested by this rule, it should add an issue.


    @@ -984,7 +984,7 @@ that are tested by this rule, it should add an issue.


    @@ -1038,7 +1038,7 @@ p1 == p3 # => false
    - [View source] + [View source]
    @@ -1063,7 +1063,7 @@ source.valid?

    - [View source] + [View source]
    @@ -1088,7 +1088,7 @@ the one of the given source.


    - [View source] + [View source]
    @@ -1115,7 +1115,7 @@ the one of the given source.


    - [View source] + [View source]
    @@ -1148,7 +1148,7 @@ though usually the macro def_hash can be used to generate this meth
    - [View source] + [View source]
    @@ -1176,7 +1176,7 @@ though usually the macro def_hash can be used to generate this meth
    - [View source] + [View source]
    @@ -1200,7 +1200,7 @@ usual rules.


    - [View source] + [View source]
    @@ -1216,7 +1216,7 @@ usual rules.


    - [View source] + [View source]
    @@ -1241,7 +1241,7 @@ Must be overriten for other type of rules.


    - [View source] + [View source]
    @@ -1269,7 +1269,7 @@ Must be overriten for other type of rules.


    - [View source] + [View source]
    diff --git a/Ameba/Rule/Layout.html b/Ameba/Rule/Layout.html index a929e4ee..2cff51b3 100644 --- a/Ameba/Rule/Layout.html +++ b/Ameba/Rule/Layout.html @@ -586,21 +586,21 @@ - + ameba/rule/layout/line_length.cr
    - + ameba/rule/layout/trailing_blank_lines.cr
    - + ameba/rule/layout/trailing_whitespace.cr diff --git a/Ameba/Rule/Layout/LineLength.html b/Ameba/Rule/Layout/LineLength.html index 971f5d8c..9fef052b 100644 --- a/Ameba/Rule/Layout/LineLength.html +++ b/Ameba/Rule/Layout/LineLength.html @@ -621,7 +621,7 @@ - + ameba/rule/layout/line_length.cr @@ -932,7 +932,7 @@
    - [View source] + [View source]
    @@ -1102,7 +1102,7 @@
    - [View source] + [View source]
    diff --git a/Ameba/Rule/Layout/TrailingBlankLines.html b/Ameba/Rule/Layout/TrailingBlankLines.html index 0f78c945..046ef27b 100644 --- a/Ameba/Rule/Layout/TrailingBlankLines.html +++ b/Ameba/Rule/Layout/TrailingBlankLines.html @@ -620,7 +620,7 @@ - + ameba/rule/layout/trailing_blank_lines.cr @@ -925,7 +925,7 @@
    - [View source] + [View source]
    @@ -1067,7 +1067,7 @@
    - [View source] + [View source]
    diff --git a/Ameba/Rule/Layout/TrailingWhitespace.html b/Ameba/Rule/Layout/TrailingWhitespace.html index b68fd82a..53354f54 100644 --- a/Ameba/Rule/Layout/TrailingWhitespace.html +++ b/Ameba/Rule/Layout/TrailingWhitespace.html @@ -620,7 +620,7 @@ - + ameba/rule/layout/trailing_whitespace.cr @@ -920,7 +920,7 @@
    - [View source] + [View source]
    @@ -1062,7 +1062,7 @@
    - [View source] + [View source]
    diff --git a/Ameba/Rule/Lint.html b/Ameba/Rule/Lint.html index c63b747d..62156586 100644 --- a/Ameba/Rule/Lint.html +++ b/Ameba/Rule/Lint.html @@ -586,168 +586,168 @@ - + ameba/rule/lint/bad_directive.cr
    - + ameba/rule/lint/comparison_to_boolean.cr
    - + ameba/rule/lint/debugger_statement.cr
    - + ameba/rule/lint/empty_ensure.cr
    - + ameba/rule/lint/empty_expression.cr
    - + ameba/rule/lint/empty_loop.cr
    - + ameba/rule/lint/hash_duplicated_key.cr
    - + ameba/rule/lint/literal_in_condition.cr
    - + ameba/rule/lint/literal_in_interpolation.cr
    - + ameba/rule/lint/percent_array.cr
    - + ameba/rule/lint/rand_zero.cr
    - + ameba/rule/lint/redundant_string_coercion.cr
    - + ameba/rule/lint/redundant_with_index.cr
    - + ameba/rule/lint/redundant_with_object.cr
    - + ameba/rule/lint/shadowed_argument.cr
    - + ameba/rule/lint/shadowed_exception.cr
    - + ameba/rule/lint/shadowing_local_outer_var.cr
    - + ameba/rule/lint/shared_var_in_fiber.cr
    - + ameba/rule/lint/syntax.cr
    - + ameba/rule/lint/unneeded_disable_directive.cr
    - + ameba/rule/lint/unreachable_code.cr
    - + ameba/rule/lint/unused_argument.cr
    - + ameba/rule/lint/useless_assign.cr
    - + ameba/rule/lint/useless_condition_in_when.cr diff --git a/Ameba/Rule/Lint/BadDirective.html b/Ameba/Rule/Lint/BadDirective.html index 7dcf7dc6..a1f95af1 100644 --- a/Ameba/Rule/Lint/BadDirective.html +++ b/Ameba/Rule/Lint/BadDirective.html @@ -628,7 +628,7 @@ to disable a rule that even doesn't exist:

    - + ameba/rule/lint/bad_directive.cr @@ -946,7 +946,7 @@ to disable a rule that even doesn't exist:


    - [View source] + [View source]
    @@ -1088,7 +1088,7 @@ to disable a rule that even doesn't exist:


    - [View source] + [View source]
    diff --git a/Ameba/Rule/Lint/ComparisonToBoolean.html b/Ameba/Rule/Lint/ComparisonToBoolean.html index 78f0a12a..e99276ce 100644 --- a/Ameba/Rule/Lint/ComparisonToBoolean.html +++ b/Ameba/Rule/Lint/ComparisonToBoolean.html @@ -630,7 +630,7 @@ or negating the variable.

    - + ameba/rule/lint/comparison_to_boolean.cr @@ -940,7 +940,7 @@ or negating the variable.


    - [View source] + [View source]
    @@ -1082,7 +1082,7 @@ or negating the variable.


    - [View source] + [View source]
    diff --git a/Ameba/Rule/Lint/DebuggerStatement.html b/Ameba/Rule/Lint/DebuggerStatement.html index 33080997..d568c993 100644 --- a/Ameba/Rule/Lint/DebuggerStatement.html +++ b/Ameba/Rule/Lint/DebuggerStatement.html @@ -623,7 +623,7 @@ committed into our codebase.

    - + ameba/rule/lint/debugger_statement.cr @@ -926,7 +926,7 @@ committed into our codebase.


    - [View source] + [View source]
    @@ -1068,7 +1068,7 @@ committed into our codebase.


    - [View source] + [View source]
    diff --git a/Ameba/Rule/Lint/EmptyEnsure.html b/Ameba/Rule/Lint/EmptyEnsure.html index b80c56f1..26ced682 100644 --- a/Ameba/Rule/Lint/EmptyEnsure.html +++ b/Ameba/Rule/Lint/EmptyEnsure.html @@ -646,7 +646,7 @@ - + ameba/rule/lint/empty_ensure.cr @@ -972,7 +972,7 @@
    - [View source] + [View source]
    @@ -1114,7 +1114,7 @@
    - [View source] + [View source]
    diff --git a/Ameba/Rule/Lint/EmptyExpression.html b/Ameba/Rule/Lint/EmptyExpression.html index 523edbda..a75fb2e7 100644 --- a/Ameba/Rule/Lint/EmptyExpression.html +++ b/Ameba/Rule/Lint/EmptyExpression.html @@ -638,7 +638,7 @@ - + ameba/rule/lint/empty_expression.cr @@ -1018,7 +1018,7 @@
    - [View source] + [View source]
    @@ -1160,7 +1160,7 @@
    - [View source] + [View source]
    @@ -1176,7 +1176,7 @@
    - [View source] + [View source]
    diff --git a/Ameba/Rule/Lint/EmptyLoop.html b/Ameba/Rule/Lint/EmptyLoop.html index e322ac6c..50060c9f 100644 --- a/Ameba/Rule/Lint/EmptyLoop.html +++ b/Ameba/Rule/Lint/EmptyLoop.html @@ -648,7 +648,7 @@ loop do - + ameba/rule/lint/empty_loop.cr @@ -1038,7 +1038,7 @@ loop do
    - [View source] + [View source]
    @@ -1180,7 +1180,7 @@ loop do
    - [View source] + [View source]
    @@ -1196,7 +1196,7 @@ loop do
    - [View source] + [View source]
    @@ -1212,7 +1212,7 @@ loop do
    - [View source] + [View source]
    diff --git a/Ameba/Rule/Lint/HashDuplicatedKey.html b/Ameba/Rule/Lint/HashDuplicatedKey.html index 31f3c324..ffac2fb8 100644 --- a/Ameba/Rule/Lint/HashDuplicatedKey.html +++ b/Ameba/Rule/Lint/HashDuplicatedKey.html @@ -628,7 +628,7 @@ - + ameba/rule/lint/hash_duplicated_key.cr @@ -936,7 +936,7 @@
    - [View source] + [View source]
    @@ -1078,7 +1078,7 @@
    - [View source] + [View source]
    diff --git a/Ameba/Rule/Lint/LiteralInCondition.html b/Ameba/Rule/Lint/LiteralInCondition.html index f4a15d97..26d1bbe1 100644 --- a/Ameba/Rule/Lint/LiteralInCondition.html +++ b/Ameba/Rule/Lint/LiteralInCondition.html @@ -633,7 +633,7 @@ replaced with either the body of the construct, or deleted entirely.

    - + ameba/rule/lint/literal_in_condition.cr @@ -1013,7 +1013,7 @@ replaced with either the body of the construct, or deleted entirely.


    - [View source] + [View source]
    @@ -1043,7 +1043,7 @@ replaced with either the body of the construct, or deleted entirely.


    - [View source] + [View source]
    @@ -1171,7 +1171,7 @@ replaced with either the body of the construct, or deleted entirely.


    - [View source] + [View source]
    @@ -1187,7 +1187,7 @@ replaced with either the body of the construct, or deleted entirely.


    - [View source] + [View source]
    @@ -1203,7 +1203,7 @@ replaced with either the body of the construct, or deleted entirely.


    - [View source] + [View source]
    diff --git a/Ameba/Rule/Lint/LiteralInInterpolation.html b/Ameba/Rule/Lint/LiteralInInterpolation.html index dcae0fc5..d2a4b487 100644 --- a/Ameba/Rule/Lint/LiteralInInterpolation.html +++ b/Ameba/Rule/Lint/LiteralInInterpolation.html @@ -628,7 +628,7 @@ that contain a literal value instead of a variable or function.

    - + ameba/rule/lint/literal_in_interpolation.cr @@ -988,7 +988,7 @@ that contain a literal value instead of a variable or function.


    - [View source] + [View source]
    @@ -1130,7 +1130,7 @@ that contain a literal value instead of a variable or function.


    - [View source] + [View source]
    diff --git a/Ameba/Rule/Lint/PercentArrays.html b/Ameba/Rule/Lint/PercentArrays.html index 5d9da630..6844bfd1 100644 --- a/Ameba/Rule/Lint/PercentArrays.html +++ b/Ameba/Rule/Lint/PercentArrays.html @@ -632,7 +632,7 @@ - + ameba/rule/lint/percent_array.cr @@ -964,7 +964,7 @@
    - [View source] + [View source]
    @@ -1162,7 +1162,7 @@
    - [View source] + [View source]
    diff --git a/Ameba/Rule/Lint/RandZero.html b/Ameba/Rule/Lint/RandZero.html index c4089bd8..880b5723 100644 --- a/Ameba/Rule/Lint/RandZero.html +++ b/Ameba/Rule/Lint/RandZero.html @@ -631,7 +631,7 @@ rand(2) - + ameba/rule/lint/rand_zero.cr @@ -942,7 +942,7 @@ rand(2)
    - [View source] + [View source]
    @@ -1084,7 +1084,7 @@ rand(2)
    - [View source] + [View source]
    diff --git a/Ameba/Rule/Lint/RedundantStringCoercion.html b/Ameba/Rule/Lint/RedundantStringCoercion.html index ac657c9c..9dd70bfc 100644 --- a/Ameba/Rule/Lint/RedundantStringCoercion.html +++ b/Ameba/Rule/Lint/RedundantStringCoercion.html @@ -631,7 +631,7 @@ which is redundant.

    - + ameba/rule/lint/redundant_string_coercion.cr @@ -994,7 +994,7 @@ which is redundant.


    - [View source] + [View source]
    @@ -1136,7 +1136,7 @@ which is redundant.


    - [View source] + [View source]
    diff --git a/Ameba/Rule/Lint/RedundantWithIndex.html b/Ameba/Rule/Lint/RedundantWithIndex.html index b6648adf..f67d4430 100644 --- a/Ameba/Rule/Lint/RedundantWithIndex.html +++ b/Ameba/Rule/Lint/RedundantWithIndex.html @@ -636,7 +636,7 @@ collection.each_with_index do |e, - + ameba/rule/lint/redundant_with_index.cr @@ -933,7 +933,7 @@ collection.each_with_index do |e,
    - [View source] + [View source]
    @@ -1075,7 +1075,7 @@ collection.each_with_index do |e,
    - [View source] + [View source]
    diff --git a/Ameba/Rule/Lint/RedundantWithObject.html b/Ameba/Rule/Lint/RedundantWithObject.html index 83bae5ec..b008b228 100644 --- a/Ameba/Rule/Lint/RedundantWithObject.html +++ b/Ameba/Rule/Lint/RedundantWithObject.html @@ -636,7 +636,7 @@ collection.each_with_object(0) do - + ameba/rule/lint/redundant_with_object.cr @@ -933,7 +933,7 @@ collection.each_with_object(0) do
    - [View source] + [View source]
    @@ -1075,7 +1075,7 @@ collection.each_with_object(0) do
    - [View source] + [View source]
    diff --git a/Ameba/Rule/Lint/ShadowedArgument.html b/Ameba/Rule/Lint/ShadowedArgument.html index bc5aa680..afac591e 100644 --- a/Ameba/Rule/Lint/ShadowedArgument.html +++ b/Ameba/Rule/Lint/ShadowedArgument.html @@ -644,7 +644,7 @@ - + ameba/rule/lint/shadowed_argument.cr @@ -973,7 +973,7 @@
    - [View source] + [View source]
    @@ -1115,7 +1115,7 @@
    - [View source] + [View source]
    @@ -1131,7 +1131,7 @@
    - [View source] + [View source]
    diff --git a/Ameba/Rule/Lint/ShadowedException.html b/Ameba/Rule/Lint/ShadowedException.html index b5b098c9..0f022bb0 100644 --- a/Ameba/Rule/Lint/ShadowedException.html +++ b/Ameba/Rule/Lint/ShadowedException.html @@ -642,7 +642,7 @@ exception is rescued.

    - + ameba/rule/lint/shadowed_exception.cr @@ -964,7 +964,7 @@ exception is rescued.


    - [View source] + [View source]
    @@ -1106,7 +1106,7 @@ exception is rescued.


    - [View source] + [View source]
    diff --git a/Ameba/Rule/Lint/ShadowingOuterLocalVar.html b/Ameba/Rule/Lint/ShadowingOuterLocalVar.html index 3524ee02..7f90dc0c 100644 --- a/Ameba/Rule/Lint/ShadowingOuterLocalVar.html +++ b/Ameba/Rule/Lint/ShadowingOuterLocalVar.html @@ -639,7 +639,7 @@ for block or proc arguments.

    - + ameba/rule/lint/shadowing_local_outer_var.cr @@ -968,7 +968,7 @@ for block or proc arguments.


    - [View source] + [View source]
    @@ -1110,7 +1110,7 @@ for block or proc arguments.


    - [View source] + [View source]
    @@ -1126,7 +1126,7 @@ for block or proc arguments.


    - [View source] + [View source]
    @@ -1142,7 +1142,7 @@ for block or proc arguments.


    - [View source] + [View source]
    diff --git a/Ameba/Rule/Lint/SharedVarInFiber.html b/Ameba/Rule/Lint/SharedVarInFiber.html index 60ca9ec1..4a3ef2c6 100644 --- a/Ameba/Rule/Lint/SharedVarInFiber.html +++ b/Ameba/Rule/Lint/SharedVarInFiber.html @@ -658,7 +658,7 @@ the second one.

    - + ameba/rule/lint/shared_var_in_fiber.cr @@ -1001,7 +1001,7 @@ the second one.


    - [View source] + [View source]
    @@ -1143,7 +1143,7 @@ the second one.


    - [View source] + [View source]
    @@ -1159,7 +1159,7 @@ the second one.


    - [View source] + [View source]
    diff --git a/Ameba/Rule/Lint/Syntax.html b/Ameba/Rule/Lint/Syntax.html index 9f101eda..00bc84bd 100644 --- a/Ameba/Rule/Lint/Syntax.html +++ b/Ameba/Rule/Lint/Syntax.html @@ -629,7 +629,7 @@ - + ameba/rule/lint/syntax.cr @@ -919,7 +919,7 @@
    - [View source] + [View source]
    @@ -1061,7 +1061,7 @@
    - [View source] + [View source]
    diff --git a/Ameba/Rule/Lint/UnneededDisableDirective.html b/Ameba/Rule/Lint/UnneededDisableDirective.html index f1b695dd..ffefd208 100644 --- a/Ameba/Rule/Lint/UnneededDisableDirective.html +++ b/Ameba/Rule/Lint/UnneededDisableDirective.html @@ -633,7 +633,7 @@ have any effect, the snippet should be written as the following:

    - + ameba/rule/lint/unneeded_disable_directive.cr @@ -946,7 +946,7 @@ have any effect, the snippet should be written as the following:


    - [View source] + [View source]
    @@ -1088,7 +1088,7 @@ have any effect, the snippet should be written as the following:


    - [View source] + [View source]
    diff --git a/Ameba/Rule/Lint/UnreachableCode.html b/Ameba/Rule/Lint/UnreachableCode.html index dc82cafc..980bdac0 100644 --- a/Ameba/Rule/Lint/UnreachableCode.html +++ b/Ameba/Rule/Lint/UnreachableCode.html @@ -648,7 +648,7 @@ loop do - + ameba/rule/lint/unreachable_code.cr @@ -1033,7 +1033,7 @@ loop do
    - [View source] + [View source]
    @@ -1175,7 +1175,7 @@ loop do
    - [View source] + [View source]
    @@ -1191,7 +1191,7 @@ loop do
    - [View source] + [View source]
    diff --git a/Ameba/Rule/Lint/UnusedArgument.html b/Ameba/Rule/Lint/UnusedArgument.html index 3fed3fb2..65561177 100644 --- a/Ameba/Rule/Lint/UnusedArgument.html +++ b/Ameba/Rule/Lint/UnusedArgument.html @@ -634,7 +634,7 @@ For example, this is considered invalid:

    - + ameba/rule/lint/unused_argument.cr @@ -993,7 +993,7 @@ For example, this is considered invalid:


    - [View source] + [View source]
    @@ -1219,7 +1219,7 @@ For example, this is considered invalid:


    - [View source] + [View source]
    @@ -1235,7 +1235,7 @@ For example, this is considered invalid:


    - [View source] + [View source]
    @@ -1251,7 +1251,7 @@ For example, this is considered invalid:


    - [View source] + [View source]
    @@ -1267,7 +1267,7 @@ For example, this is considered invalid:


    - [View source] + [View source]
    diff --git a/Ameba/Rule/Lint/UselessAssign.html b/Ameba/Rule/Lint/UselessAssign.html index 3228374e..64660038 100644 --- a/Ameba/Rule/Lint/UselessAssign.html +++ b/Ameba/Rule/Lint/UselessAssign.html @@ -634,7 +634,7 @@ - + ameba/rule/lint/useless_assign.cr @@ -953,7 +953,7 @@
    - [View source] + [View source]
    @@ -1095,7 +1095,7 @@
    - [View source] + [View source]
    @@ -1111,7 +1111,7 @@
    - [View source] + [View source]
    diff --git a/Ameba/Rule/Lint/UselessConditionInWhen.html b/Ameba/Rule/Lint/UselessConditionInWhen.html index 1d3908d7..77ccc834 100644 --- a/Ameba/Rule/Lint/UselessConditionInWhen.html +++ b/Ameba/Rule/Lint/UselessConditionInWhen.html @@ -639,7 +639,7 @@ where it is guaranteed to always return the same result.

    - + ameba/rule/lint/useless_condition_in_when.cr @@ -958,7 +958,7 @@ where it is guaranteed to always return the same result.


    - [View source] + [View source]
    @@ -1100,7 +1100,7 @@ where it is guaranteed to always return the same result.


    - [View source] + [View source]
    diff --git a/Ameba/Rule/Metrics.html b/Ameba/Rule/Metrics.html index 0e9bd3be..8cce6e40 100644 --- a/Ameba/Rule/Metrics.html +++ b/Ameba/Rule/Metrics.html @@ -586,7 +586,7 @@ - + ameba/rule/metrics/cyclomatic_complexity.cr diff --git a/Ameba/Rule/Metrics/CyclomaticComplexity.html b/Ameba/Rule/Metrics/CyclomaticComplexity.html index a23a1eba..790ed628 100644 --- a/Ameba/Rule/Metrics/CyclomaticComplexity.html +++ b/Ameba/Rule/Metrics/CyclomaticComplexity.html @@ -621,7 +621,7 @@ - + ameba/rule/metrics/cyclomatic_complexity.cr @@ -932,7 +932,7 @@
    - [View source] + [View source]
    @@ -1102,7 +1102,7 @@
    - [View source] + [View source]
    diff --git a/Ameba/Rule/Performance.html b/Ameba/Rule/Performance.html index 3bd4c784..bf184863 100644 --- a/Ameba/Rule/Performance.html +++ b/Ameba/Rule/Performance.html @@ -586,21 +586,21 @@ - + ameba/rule/performance/any_after_filter.cr
    - + ameba/rule/performance/first_last_after_filter.cr
    - + ameba/rule/performance/size_after_filter.cr diff --git a/Ameba/Rule/Performance/AnyAfterFilter.html b/Ameba/Rule/Performance/AnyAfterFilter.html index b6cedcf2..4045a7cf 100644 --- a/Ameba/Rule/Performance/AnyAfterFilter.html +++ b/Ameba/Rule/Performance/AnyAfterFilter.html @@ -633,7 +633,7 @@ - + ameba/rule/performance/any_after_filter.cr @@ -961,7 +961,7 @@
    - [View source] + [View source]
    @@ -1131,7 +1131,7 @@
    - [View source] + [View source]
    diff --git a/Ameba/Rule/Performance/FirstLastAfterFilter.html b/Ameba/Rule/Performance/FirstLastAfterFilter.html index 57e685eb..60467e5e 100644 --- a/Ameba/Rule/Performance/FirstLastAfterFilter.html +++ b/Ameba/Rule/Performance/FirstLastAfterFilter.html @@ -632,7 +632,7 @@ - + ameba/rule/performance/first_last_after_filter.cr @@ -969,7 +969,7 @@
    - [View source] + [View source]
    @@ -1139,7 +1139,7 @@
    - [View source] + [View source]
    @@ -1155,7 +1155,7 @@
    - [View source] + [View source]
    diff --git a/Ameba/Rule/Performance/SizeAfterFilter.html b/Ameba/Rule/Performance/SizeAfterFilter.html index d1b6893a..76edcacb 100644 --- a/Ameba/Rule/Performance/SizeAfterFilter.html +++ b/Ameba/Rule/Performance/SizeAfterFilter.html @@ -639,7 +639,7 @@ - + ameba/rule/performance/size_after_filter.cr @@ -978,7 +978,7 @@
    - [View source] + [View source]
    @@ -1148,7 +1148,7 @@
    - [View source] + [View source]
    @@ -1164,7 +1164,7 @@
    - [View source] + [View source]
    diff --git a/Ameba/Rule/Style.html b/Ameba/Rule/Style.html index 70589b81..c2b399ee 100644 --- a/Ameba/Rule/Style.html +++ b/Ameba/Rule/Style.html @@ -586,91 +586,91 @@ - + ameba/rule/style/constant_names.cr
    - + ameba/rule/style/is_a_nil.cr
    - + ameba/rule/style/large_numbers.cr
    - + ameba/rule/style/method_names.cr
    - + ameba/rule/style/negated_conditions_in_unless.cr
    - + ameba/rule/style/predicate_name.cr
    - + ameba/rule/style/redundant_begin.cr
    - + ameba/rule/style/redundant_next.cr
    - + ameba/rule/style/redundant_return.cr
    - + ameba/rule/style/type_names.cr
    - + ameba/rule/style/unless_else.cr
    - + ameba/rule/style/variable_names.cr
    - + ameba/rule/style/while_true.cr diff --git a/Ameba/Rule/Style/ConstantNames.html b/Ameba/Rule/Style/ConstantNames.html index baada417..fb8a8329 100644 --- a/Ameba/Rule/Style/ConstantNames.html +++ b/Ameba/Rule/Style/ConstantNames.html @@ -630,7 +630,7 @@ - + ameba/rule/style/constant_names.cr @@ -940,7 +940,7 @@
    - [View source] + [View source]
    @@ -1082,7 +1082,7 @@
    - [View source] + [View source]
    diff --git a/Ameba/Rule/Style/IsANil.html b/Ameba/Rule/Style/IsANil.html index 1de91641..c3ddcc3c 100644 --- a/Ameba/Rule/Style/IsANil.html +++ b/Ameba/Rule/Style/IsANil.html @@ -628,7 +628,7 @@ - + ameba/rule/style/is_a_nil.cr @@ -941,7 +941,7 @@
    - [View source] + [View source]
    @@ -1083,7 +1083,7 @@
    - [View source] + [View source]
    diff --git a/Ameba/Rule/Style/LargeNumbers.html b/Ameba/Rule/Style/LargeNumbers.html index 2a438aab..435231a1 100644 --- a/Ameba/Rule/Style/LargeNumbers.html +++ b/Ameba/Rule/Style/LargeNumbers.html @@ -635,7 +635,7 @@ large numbers more easily.

    - + ameba/rule/style/large_numbers.cr @@ -960,7 +960,7 @@ large numbers more easily.


    - [View source] + [View source]
    @@ -1130,7 +1130,7 @@ large numbers more easily.


    - [View source] + [View source]
    diff --git a/Ameba/Rule/Style/MethodNames.html b/Ameba/Rule/Style/MethodNames.html index c86f87d7..c45ce559 100644 --- a/Ameba/Rule/Style/MethodNames.html +++ b/Ameba/Rule/Style/MethodNames.html @@ -646,7 +646,7 @@ - + ameba/rule/style/method_names.cr @@ -972,7 +972,7 @@
    - [View source] + [View source]
    @@ -1114,7 +1114,7 @@
    - [View source] + [View source]
    diff --git a/Ameba/Rule/Style/NegatedConditionsInUnless.html b/Ameba/Rule/Style/NegatedConditionsInUnless.html index 4380d9da..4df7ac1d 100644 --- a/Ameba/Rule/Style/NegatedConditionsInUnless.html +++ b/Ameba/Rule/Style/NegatedConditionsInUnless.html @@ -635,7 +635,7 @@ that is executed if a negated condition is NOT met.

    - + ameba/rule/style/negated_conditions_in_unless.cr @@ -950,7 +950,7 @@ that is executed if a negated condition is NOT met.


    - [View source] + [View source]
    @@ -1092,7 +1092,7 @@ that is executed if a negated condition is NOT met.


    - [View source] + [View source]
    diff --git a/Ameba/Rule/Style/PredicateName.html b/Ameba/Rule/Style/PredicateName.html index cb0c3ec0..3874395a 100644 --- a/Ameba/Rule/Style/PredicateName.html +++ b/Ameba/Rule/Style/PredicateName.html @@ -637,7 +637,7 @@ start with the prefix has_ or the prefix is_. Ignores - + ameba/rule/style/predicate_name.cr @@ -954,7 +954,7 @@ start with the prefix has_ or the prefix is_. Ignores
    - [View source] + [View source]
    @@ -1096,7 +1096,7 @@ start with the prefix has_ or the prefix is_. Ignores
    - [View source] + [View source]
    diff --git a/Ameba/Rule/Style/RedundantBegin.html b/Ameba/Rule/Style/RedundantBegin.html index 7167c759..17e3c1f2 100644 --- a/Ameba/Rule/Style/RedundantBegin.html +++ b/Ameba/Rule/Style/RedundantBegin.html @@ -662,7 +662,7 @@ - + ameba/rule/style/redundant_begin.cr @@ -1056,7 +1056,7 @@
    - [View source] + [View source]
    @@ -1198,7 +1198,7 @@
    - [View source] + [View source]
    diff --git a/Ameba/Rule/Style/RedundantNext.html b/Ameba/Rule/Style/RedundantNext.html index d61c997d..01f9966e 100644 --- a/Ameba/Rule/Style/RedundantNext.html +++ b/Ameba/Rule/Style/RedundantNext.html @@ -701,7 +701,7 @@ without arguments. Sometimes such statements are used to yild the nil - + ameba/rule/style/redundant_next.cr @@ -1107,7 +1107,7 @@ without arguments. Sometimes such statements are used to yild the nil @@ -1305,7 +1305,7 @@ without arguments. Sometimes such statements are used to yild the nil @@ -1321,7 +1321,7 @@ without arguments. Sometimes such statements are used to yild the nil diff --git a/Ameba/Rule/Style/RedundantReturn.html b/Ameba/Rule/Style/RedundantReturn.html index fac84581..ba0eb444 100644 --- a/Ameba/Rule/Style/RedundantReturn.html +++ b/Ameba/Rule/Style/RedundantReturn.html @@ -698,7 +698,7 @@ without arguments. Sometimes such returns are used to return the nil - + ameba/rule/style/redundant_return.cr @@ -1101,7 +1101,7 @@ without arguments. Sometimes such returns are used to return the nil @@ -1299,7 +1299,7 @@ without arguments. Sometimes such returns are used to return the nil @@ -1315,7 +1315,7 @@ without arguments. Sometimes such returns are used to return the nil diff --git a/Ameba/Rule/Style/TypeNames.html b/Ameba/Rule/Style/TypeNames.html index 98d898bd..9d13faf6 100644 --- a/Ameba/Rule/Style/TypeNames.html +++ b/Ameba/Rule/Style/TypeNames.html @@ -660,7 +660,7 @@ - + ameba/rule/style/type_names.cr @@ -1020,7 +1020,7 @@
    @@ -1162,7 +1162,7 @@
    @@ -1178,7 +1178,7 @@
    @@ -1194,7 +1194,7 @@
    @@ -1210,7 +1210,7 @@
    @@ -1226,7 +1226,7 @@
    diff --git a/Ameba/Rule/Style/UnlessElse.html b/Ameba/Rule/Style/UnlessElse.html index 364777bc..565268f3 100644 --- a/Ameba/Rule/Style/UnlessElse.html +++ b/Ameba/Rule/Style/UnlessElse.html @@ -649,7 +649,7 @@ an if, so the previous invalid example would become this:

    - + ameba/rule/style/unless_else.cr @@ -978,7 +978,7 @@ an if, so the previous invalid example would become this:


    @@ -1120,7 +1120,7 @@ an if, so the previous invalid example would become this:


    diff --git a/Ameba/Rule/Style/VariableNames.html b/Ameba/Rule/Style/VariableNames.html index 3c3bfa5d..627b8f2b 100644 --- a/Ameba/Rule/Style/VariableNames.html +++ b/Ameba/Rule/Style/VariableNames.html @@ -631,7 +631,7 @@ wrong_Name = 2
    - + ameba/rule/style/variable_names.cr @@ -952,7 +952,7 @@ wrong_Name = 2

    @@ -1094,7 +1094,7 @@ wrong_Name = 2

    - [View source] + [View source]
    @@ -1110,7 +1110,7 @@ wrong_Name = 2

    - [View source] + [View source]
    @@ -1126,7 +1126,7 @@ wrong_Name = 2
    - [View source] + [View source]
    diff --git a/Ameba/Rule/Style/WhileTrue.html b/Ameba/Rule/Style/WhileTrue.html index 770fc635..2ca458e0 100644 --- a/Ameba/Rule/Style/WhileTrue.html +++ b/Ameba/Rule/Style/WhileTrue.html @@ -634,7 +634,7 @@ - + ameba/rule/style/while_true.cr @@ -948,7 +948,7 @@
    - [View source] + [View source]
    @@ -1090,7 +1090,7 @@
    - [View source] + [View source]
    diff --git a/Ameba/Runner.html b/Ameba/Runner.html index aa534058..c6436ca6 100644 --- a/Ameba/Runner.html +++ b/Ameba/Runner.html @@ -606,7 +606,7 @@ runner.run.success? # => true or false - + ameba/runner.cr @@ -740,7 +740,7 @@ config.formatter = formatter
    - [View source] + [View source]
    @@ -782,7 +782,7 @@ runner.explain({file: file, line: l, column: c})
    - [View source] + [View source]
    @@ -811,7 +811,7 @@ runner.run # => returns runner again
    - [View source] + [View source]
    @@ -832,7 +832,7 @@ runner.run # => returns runner again
    - [View source] + [View source]
    @@ -858,7 +858,7 @@ runner.success? # => true or false
    - [View source] + [View source]
    diff --git a/Ameba/Severity.html b/Ameba/Severity.html index d655df4e..0a8c9ef8 100644 --- a/Ameba/Severity.html +++ b/Ameba/Severity.html @@ -586,7 +586,7 @@ - + ameba/severity.cr @@ -762,7 +762,7 @@
    - [View source] + [View source]
    @@ -790,7 +790,7 @@
    - [View source] + [View source]
    @@ -806,7 +806,7 @@
    - [View source] + [View source]
    @@ -829,7 +829,7 @@
    - [View source] + [View source]
    @@ -845,7 +845,7 @@
    - [View source] + [View source]
    diff --git a/Ameba/SeverityYamlConverter.html b/Ameba/SeverityYamlConverter.html index e0e2d37e..a3b48a0e 100644 --- a/Ameba/SeverityYamlConverter.html +++ b/Ameba/SeverityYamlConverter.html @@ -599,7 +599,7 @@ - + ameba/severity.cr @@ -687,7 +687,7 @@
    - [View source] + [View source]
    @@ -703,7 +703,7 @@
    - [View source] + [View source]
    diff --git a/Ameba/Source.html b/Ameba/Source.html index d5999ddf..ccd3015b 100644 --- a/Ameba/Source.html +++ b/Ameba/Source.html @@ -616,7 +616,7 @@ Has path, lines of code and issues reported by rules.

    - + ameba/source.cr @@ -819,7 +819,7 @@ Has path, lines of code and issues reported by rules.


    - [View source] + [View source]
    @@ -857,7 +857,7 @@ source.ast
    - [View source] + [View source]
    @@ -878,7 +878,7 @@ source.ast
    - [View source] + [View source]
    @@ -894,7 +894,7 @@ source.ast
    - [View source] + [View source]
    @@ -922,7 +922,7 @@ source.lines # => ["a = 1", "b = 2"]
    - [View source] + [View source]
    @@ -943,7 +943,7 @@ source.lines # => ["a = 1", "b = 2"] @@ -964,7 +964,7 @@ source.lines # => ["a = 1", "b = 2"] diff --git a/Ameba/Tokenizer.html b/Ameba/Tokenizer.html index abd1cffb..7831214b 100644 --- a/Ameba/Tokenizer.html +++ b/Ameba/Tokenizer.html @@ -605,7 +605,7 @@ tokenizer.run do |token - + ameba/tokenizer.cr @@ -722,7 +722,7 @@ tokenizer.run do |token @@ -746,7 +746,7 @@ tokenizer.run do |token @@ -785,7 +785,7 @@ tokenizer.run do |token diff --git a/index.json b/index.json index 2dc041b0..48f56515 100644 --- a/index.json +++ b/index.json @@ -1 +1 @@ -{"repository_name":"ameba","body":"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n- [About](#about)\n- [Usage](#usage)\n * [Run in parallel](#run-in-parallel)\n- [Installation](#installation)\n * [As a project dependency:](#as-a-project-dependency)\n * [OS X](#os-x)\n * [Docker](#docker)\n * [From sources](#from-sources)\n- [Configuration](#configuration)\n * [Sources](#sources)\n * [Rules](#rules)\n * [Explain issues](#explain-issues)\n * [Inline disabling](#inline-disabling)\n- [Editors & integrations](#editors--integrations)\n- [Credits & inspirations](#credits--inspirations)\n- [Contributors](#contributors)\n\n## About\n\nAmeba is a static code analysis tool for the Crystal language.\nIt enforces a consistent [Crystal code style](https://crystal-lang.org/docs/conventions/coding_style.html),\nalso catches code smells and wrong code constructions.\n\nSee also [Roadmap](https://github.com/crystal-ameba/ameba/wiki).\n\n## Usage\n\nRun `ameba` binary within your project directory to catch code issues:\n\n```sh\n$ ameba\nInspecting 107 files.\n\n...............F.....................F....................................................................\n\nsrc/ameba/formatter/flycheck_formatter.cr:4:33\n[W] Lint/UnusedArgument: Unused argument `location`\n> source.issues.each do |e, location|\n ^\n\nsrc/ameba/formatter/base_formatter.cr:12:7\n[W] Lint/UselessAssign: Useless assignment to variable `s`\n> return s += issues.size\n ^\n\nFinished in 542.64 milliseconds\n\n129 inspected, 2 failures.\n\n```\n\n### Run in parallel\n\nStarting from 0.31.0 Crystal [supports parallelism](https://crystal-lang.org/2019/09/06/parallelism-in-crystal.html).\nIt allows to run linting in parallel too.\nIn order to take advantage of this feature you need to build ameba with preview_mt support:\n\n```sh\n$ crystal build src/cli.cr -Dpreview_mt -o bin/ameba\n$ make install\n```\n\nSome quick benchmark results measured while running Ameba on Crystal repo:\n\n```sh\n$ CRYSTAL_WORKERS=1 ameba #=> 29.11 seconds\n$ CRYSTAL_WORKERS=2 ameba #=> 19.49 seconds\n$ CRYSTAL_WORKERS=4 ameba #=> 13.48 seconds\n$ CRYSTAL_WORKERS=8 ameba #=> 10.14 seconds\n```\n\n## Installation\n\n### As a project dependency:\n\nAdd this to your application's `shard.yml`:\n\n```yaml\ndevelopment_dependencies:\n ameba:\n github: crystal-ameba/ameba\n version: ~> 0.13.0\n```\n\nBuild `bin/ameba` binary within your project directory while running `shards install`.\n\nYou may also want to use it on [Travis](travis-ci.org):\n\n```yaml\n# .travis.yml\nlanguage: crystal\ninstall:\n - shards install\nscript:\n - crystal spec\n - crystal bin/ameba.cr\n```\n\nUsing this config Ameba will inspect files just after the specs run. Travis will also fail\nthe build if some problems detected.\n\n### OS X\n\n```sh\n$ brew tap veelenga/tap\n$ brew install ameba\n```\n\n### Docker\n\nBuild the image:\n\n```sh\n$ docker build -t crystal-ameba/ameba .\n```\n\nTo use the resulting image on a local source folder, mount the current (or target) directory into `/src`:\n\n```sh\n$ docker run -v $(pwd):/src crystal-ameba/ameba\n```\n\nAlso available on DockerHub: https://hub.docker.com/r/veelenga/ameba\n\n### From sources\n\n```sh\n$ git clone https://github.com/crystal-ameba/ameba && cd ameba\n$ make install\n```\n\n## Configuration\n\nDefault configuration file is `.ameba.yml`.\nIt allows to configure rule properties, disable specific rules and exclude sources from the rules.\n\nGenerate new file by running `ameba --gen-config`.\n\n### Sources\n\n**List of sources to run Ameba on can be configured globally via:**\n\n- `Globs` section - an array of wildcards (or paths) to include to the\n inspection. Defaults to `%w(**/*.cr !lib)`, meaning it includes all project\n files with `*.cr` extension except those which exist in `lib` folder.\n- `Excluded` section - an array of wildcards (or paths) to exclude from the\n source list defined by `Globs`. Defaults to an empty array.\n\nIn this example we define default globs and exclude `src/compiler` folder:\n\n``` yaml\nGlobs:\n - **/*.cr\n - !lib\n\nExcluded:\n - src/compiler\n```\n\n**Specific sources can be excluded at rule level**:\n\n``` yaml\nStyle/RedundantBegin:\n Excluded:\n - src/server/processor.cr\n - src/server/api.cr\n```\n\n### Rules\n\nOne or more rules, or a one or more group of rules can be included or excluded\nvia command line arguments:\n\n```sh\n$ ameba --only Lint/Syntax # runs only Lint/Syntax rule\n$ ameba --only Style,Lint # runs only rules from Style and Lint groups\n$ ameba --except Lint/Syntax # runs all rules except Lint/Syntax\n$ ameba --except Style,Lint # runs all rules except rules in Style and Lint groups\n```\n\nOr through the configuration file:\n\n``` yaml\nStyle/RedundantBegin:\n Enabled: false\n```\n\n### Explain issues\n\nAmeba allows you to dig deeper into an issue, by showing you details about the issue\nand the reasoning by it being reported.\n\nTo be convenient, you can just copy-paste the `PATH:line:column` string from the\nreport and paste behind the `ameba` command to check it out.\n\n```sh\n$ ameba crystal/command/format.cr:26:83 # show explanation for the issue\n$ ameba --explain crystal/command/format.cr:26:83 # same thing\n```\n\n### Inline disabling\n\nOne or more rules or one or more group of rules can be disabled using inline directives:\n\n```crystal\n# ameba:disable Style/LargeNumbers\ntime = Time.epoch(1483859302)\n\ntime = Time.epoch(1483859302) # ameba:disable Style/LargeNumbers, Lint/UselessAssign\n\ntime = Time.epoch(1483859302) # ameba:disable Style, Lint\n```\n\n## Editors & integrations\n\n * Vim: [vim-crystal](https://github.com/rhysd/vim-crystal), [Ale](https://github.com/w0rp/ale)\n * Emacs: [ameba.el](https://github.com/crystal-ameba/ameba.el)\n * Sublime Text: [Sublime Linter Ameba](https://github.com/epergo/SublimeLinter-contrib-ameba)\n * VSCode: [vscode-crystal-ameba](https://github.com/crystal-ameba/vscode-crystal-ameba)\n * Codacy: [codacy-ameba](https://github.com/codacy/codacy-ameba)\n * GitHub Actions: [github-action](https://github.com/crystal-ameba/github-action)\n\n## Credits & inspirations\n\n- [Crystal Language](https://crystal-lang.org)\n- [Rubocop](https://rubocop.readthedocs.io/en/latest/)\n- [Credo](http://credo-ci.org/)\n- [Dogma](https://github.com/lpil/dogma)\n\n## Contributors\n\n- [veelenga](https://github.com/veelenga) Vitalii Elenhaupt - creator, maintainer\n","program":{"html_id":"ameba/toplevel","path":"toplevel.html","kind":"module","full_name":"Top Level Namespace","name":"Top Level Namespace","abstract":false,"superclass":null,"ancestors":[],"locations":[],"repository_name":"ameba","program":true,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":null,"doc":null,"summary":null,"class_methods":[],"constructors":[],"instance_methods":[],"macros":[],"types":[{"html_id":"ameba/Ameba","path":"Ameba.html","kind":"module","full_name":"Ameba","name":"Ameba","abstract":false,"superclass":null,"ancestors":[],"locations":[{"filename":"src/ameba.cr","line_number":24,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba.cr#L24"},{"filename":"src/ameba/glob_utils.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/glob_utils.cr#L1"},{"filename":"src/ameba/inline_comments.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/inline_comments.cr#L1"},{"filename":"src/ameba/issue.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/issue.cr#L1"},{"filename":"src/ameba/reportable.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/reportable.cr#L1"},{"filename":"src/ameba/runner.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/runner.cr#L1"},{"filename":"src/ameba/severity.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/severity.cr#L1"},{"filename":"src/ameba/source.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/source.cr#L1"},{"filename":"src/ameba/tokenizer.cr","line_number":3,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/tokenizer.cr#L3"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"VERSION","name":"VERSION","value":"{{ (`shards version \\\"/home/runner/work/ameba/ameba/src\\\"`).chomp.stringify }}","doc":null,"summary":null}],"included_modules":[],"extended_modules":[{"html_id":"ameba/Ameba","kind":"module","full_name":"Ameba","name":"Ameba"}],"subclasses":[],"including_types":[],"namespace":null,"doc":"Ameba's entry module.\n\nTo run the linter with default parameters:\n\n```\nAmeba.run\n```\n\nTo configure and run it:\n\n```\nconfig = Ameba::Config.load\nconfig.formatter = formatter\nconfig.files = file_paths\n\nAmeba.run config\n```\n","summary":"

    Ameba's entry module.

    ","class_methods":[],"constructors":[],"instance_methods":[{"id":"run(config=Config.load)-instance-method","html_id":"run(config=Config.load)-instance-method","name":"run","doc":"Initializes `Ameba::Runner` and runs it.\nCan be configured via `config` parameter.\n\nExamples:\n\n```\nAmeba.run\nAmeba.run config\n```\n","summary":"

    Initializes Ameba::Runner and runs it.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"Config.load","external_name":"config","restriction":""}],"args_string":"(config = Config.load)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba.cr#L39","def":{"name":"run","args":[{"name":"config","doc":null,"default_value":"Config.load","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"(Runner.new(config)).run"}}],"macros":[],"types":[{"html_id":"ameba/Ameba/AST","path":"Ameba/AST.html","kind":"module","full_name":"Ameba::AST","name":"AST","abstract":false,"superclass":null,"ancestors":[],"locations":[{"filename":"src/ameba/ast/branch.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/branch.cr#L1"},{"filename":"src/ameba/ast/branchable.cr","line_number":3,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/branchable.cr#L3"},{"filename":"src/ameba/ast/flow_expression.cr","line_number":3,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/flow_expression.cr#L3"},{"filename":"src/ameba/ast/scope.cr","line_number":3,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/scope.cr#L3"},{"filename":"src/ameba/ast/variabling/argument.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/variabling/argument.cr#L1"},{"filename":"src/ameba/ast/variabling/assignment.cr","line_number":4,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/variabling/assignment.cr#L4"},{"filename":"src/ameba/ast/variabling/ivariable.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/variabling/ivariable.cr#L1"},{"filename":"src/ameba/ast/variabling/reference.cr","line_number":3,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/variabling/reference.cr#L3"},{"filename":"src/ameba/ast/variabling/variable.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/variabling/variable.cr#L1"},{"filename":"src/ameba/ast/visitors/base_visitor.cr","line_number":4,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/visitors/base_visitor.cr#L4"},{"filename":"src/ameba/ast/visitors/counting_visitor.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/visitors/counting_visitor.cr#L1"},{"filename":"src/ameba/ast/visitors/flow_expression_visitor.cr","line_number":4,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/visitors/flow_expression_visitor.cr#L4"},{"filename":"src/ameba/ast/visitors/node_visitor.cr","line_number":3,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/visitors/node_visitor.cr#L3"},{"filename":"src/ameba/ast/visitors/redundant_control_expression_visitor.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/visitors/redundant_control_expression_visitor.cr#L1"},{"filename":"src/ameba/ast/visitors/scope_visitor.cr","line_number":3,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/visitors/scope_visitor.cr#L3"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"NODES","name":"NODES","value":"[Alias, IsA, Assign, Call, Block, Case, ClassDef, ClassVar, Def, EnumDef, ExceptionHandler, Expressions, HashLiteral, If, InstanceVar, LibDef, ModuleDef, NilLiteral, StringInterpolation, Unless, Var, When, While, Until]","doc":"List of nodes to be visited by Ameba's rules.","summary":"

    List of nodes to be visited by Ameba's rules.

    "}],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba","kind":"module","full_name":"Ameba","name":"Ameba"},"doc":"A module that helps to traverse Crystal AST using `Crystal::Visitor`.","summary":"

    A module that helps to traverse Crystal AST using Crystal::Visitor.

    ","class_methods":[],"constructors":[],"instance_methods":[],"macros":[],"types":[{"html_id":"ameba/Ameba/AST/Argument","path":"Ameba/AST/Argument.html","kind":"class","full_name":"Ameba::AST::Argument","name":"Argument","abstract":false,"superclass":{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},"ancestors":[{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/ast/variabling/argument.cr","line_number":15,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/variabling/argument.cr#L15"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/AST","kind":"module","full_name":"Ameba::AST","name":"AST"},"doc":"Represents the argument of some node.\nHolds the reference to the variable, thus to scope.\n\nFor example, all these vars are arguments:\n\n```\ndef method(a, b, c = 10, &block)\n 3.times do |i|\n end\n\n ->(x : Int32) {}\nend\n```","summary":"

    Represents the argument of some node.

    ","class_methods":[],"constructors":[{"id":"new(node,variable)-class-method","html_id":"new(node,variable)-class-method","name":"new","doc":"Creates a new argument.\n\n```\nArgument.new(node, variable)\n```","summary":"

    Creates a new argument.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""},{"name":"variable","doc":null,"default_value":"","external_name":"variable","restriction":""}],"args_string":"(node, variable)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/variabling/argument.cr#L31","def":{"name":"new","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""},{"name":"variable","doc":null,"default_value":"","external_name":"variable","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"_ = allocate\n_.initialize(node, variable)\nif _.responds_to?(:finalize)\n ::GC.add_finalizer(_)\nend\n_\n"}}],"instance_methods":[{"id":"end_location(*args,**options)-instance-method","html_id":"end_location(*args,**options)-instance-method","name":"end_location","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/variabling/argument.cr#L23","def":{"name":"end_location","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.end_location(*args, **options)"}},{"id":"end_location(*args,**options,&)-instance-method","html_id":"end_location(*args,**options,&)-instance-method","name":"end_location","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options, &)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/variabling/argument.cr#L23","def":{"name":"end_location","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":1,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.end_location(*args, **options) do |*yield_args|\n yield *yield_args\nend"}},{"id":"ignored?-instance-method","html_id":"ignored?-instance-method","name":"ignored?","doc":"Returns true if the name starts with '_', false if not.","summary":"

    Returns true if the name starts with '_', false if not.

    ","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/variabling/argument.cr#L35","def":{"name":"ignored?","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"name.starts_with?('_')"}},{"id":"location(*args,**options)-instance-method","html_id":"location(*args,**options)-instance-method","name":"location","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/variabling/argument.cr#L22","def":{"name":"location","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.location(*args, **options)"}},{"id":"location(*args,**options,&)-instance-method","html_id":"location(*args,**options,&)-instance-method","name":"location","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options, &)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/variabling/argument.cr#L22","def":{"name":"location","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":1,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.location(*args, **options) do |*yield_args|\n yield *yield_args\nend"}},{"id":"name-instance-method","html_id":"name-instance-method","name":"name","doc":"Name of the argument.","summary":"

    Name of the argument.

    ","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/variabling/argument.cr#L40","def":{"name":"name","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"case current_node = node\nwhen Crystal::Var\n current_node.name\nwhen Crystal::Arg\n current_node.name\nelse\n raise(ArgumentError.new(\"invalid node\"))\nend"}},{"id":"node:Crystal::Var|Crystal::Arg-instance-method","html_id":"node:Crystal::Var|Crystal::Arg-instance-method","name":"node","doc":"The actual node.","summary":"

    The actual node.

    ","abstract":false,"args":[],"args_string":" : Crystal::Var | Crystal::Arg","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/variabling/argument.cr#L17","def":{"name":"node","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Crystal::Var | Crystal::Arg","visibility":"Public","body":"@node"}},{"id":"to_s(*args,**options)-instance-method","html_id":"to_s(*args,**options)-instance-method","name":"to_s","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/variabling/argument.cr#L24","def":{"name":"to_s","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.to_s(*args, **options)"}},{"id":"to_s(*args,**options,&)-instance-method","html_id":"to_s(*args,**options,&)-instance-method","name":"to_s","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options, &)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/variabling/argument.cr#L24","def":{"name":"to_s","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":1,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.to_s(*args, **options) do |*yield_args|\n yield *yield_args\nend"}},{"id":"variable:Variable-instance-method","html_id":"variable:Variable-instance-method","name":"variable","doc":"Variable of this argument (may be the same node)","summary":"

    Variable of this argument (may be the same node)

    ","abstract":false,"args":[],"args_string":" : Variable","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/variabling/argument.cr#L20","def":{"name":"variable","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Variable","visibility":"Public","body":"@variable"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/AST/Assignment","path":"Ameba/AST/Assignment.html","kind":"class","full_name":"Ameba::AST::Assignment","name":"Assignment","abstract":false,"superclass":{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},"ancestors":[{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/ast/variabling/assignment.cr","line_number":7,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/variabling/assignment.cr#L7"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/AST","kind":"module","full_name":"Ameba::AST","name":"AST"},"doc":"Represents the assignment to the variable.\nHolds the assign node and the variable.","summary":"

    Represents the assignment to the variable.

    ","class_methods":[],"constructors":[{"id":"new(node,variable,scope)-class-method","html_id":"new(node,variable,scope)-class-method","name":"new","doc":"Creates a new assignment.\n\n```\nAssignment.new(node, variable, scope)\n```\n","summary":"

    Creates a new assignment.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""},{"name":"variable","doc":null,"default_value":"","external_name":"variable","restriction":""},{"name":"scope","doc":null,"default_value":"","external_name":"scope","restriction":""}],"args_string":"(node, variable, scope)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/variabling/assignment.cr#L32","def":{"name":"new","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""},{"name":"variable","doc":null,"default_value":"","external_name":"variable","restriction":""},{"name":"scope","doc":null,"default_value":"","external_name":"scope","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"_ = allocate\n_.initialize(node, variable, scope)\nif _.responds_to?(:finalize)\n ::GC.add_finalizer(_)\nend\n_\n"}}],"instance_methods":[{"id":"branch:Branch?-instance-method","html_id":"branch:Branch?-instance-method","name":"branch","doc":"Branch of this assignment.","summary":"

    Branch of this assignment.

    ","abstract":false,"args":[],"args_string":" : Branch?","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/variabling/assignment.cr#L17","def":{"name":"branch","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Branch | ::Nil","visibility":"Public","body":"@branch"}},{"id":"end_location(*args,**options,&)-instance-method","html_id":"end_location(*args,**options,&)-instance-method","name":"end_location","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options, &)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/variabling/assignment.cr#L24","def":{"name":"end_location","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":1,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.end_location(*args, **options) do |*yield_args|\n yield *yield_args\nend"}},{"id":"end_location(*args,**options)-instance-method","html_id":"end_location(*args,**options)-instance-method","name":"end_location","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/variabling/assignment.cr#L24","def":{"name":"end_location","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.end_location(*args, **options)"}},{"id":"in_branch?-instance-method","html_id":"in_branch?-instance-method","name":"in_branch?","doc":"Returns true if this assignment is in a branch, false if not.\nFor example, this assignment is in a branch:\n\n```\na = 1 if a.nil?\n```","summary":"

    Returns true if this assignment is in a branch, false if not.

    ","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/variabling/assignment.cr#L61","def":{"name":"in_branch?","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"!branch.nil?"}},{"id":"location(*args,**options)-instance-method","html_id":"location(*args,**options)-instance-method","name":"location","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/variabling/assignment.cr#L23","def":{"name":"location","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.location(*args, **options)"}},{"id":"location(*args,**options,&)-instance-method","html_id":"location(*args,**options,&)-instance-method","name":"location","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options, &)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/variabling/assignment.cr#L23","def":{"name":"location","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":1,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.location(*args, **options) do |*yield_args|\n yield *yield_args\nend"}},{"id":"node:Crystal::ASTNode-instance-method","html_id":"node:Crystal::ASTNode-instance-method","name":"node","doc":"The actual assignment node.","summary":"

    The actual assignment node.

    ","abstract":false,"args":[],"args_string":" : Crystal::ASTNode","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/variabling/assignment.cr#L11","def":{"name":"node","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Crystal::ASTNode","visibility":"Public","body":"@node"}},{"id":"op_assign?-instance-method","html_id":"op_assign?-instance-method","name":"op_assign?","doc":"Returns true if this assignment is an op assign, false if not.\nFor example, this is an op assign:\n\n```\na ||= 1\n```","summary":"

    Returns true if this assignment is an op assign, false if not.

    ","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/variabling/assignment.cr#L51","def":{"name":"op_assign?","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"node.is_a?(Crystal::OpAssign)"}},{"id":"referenced=(referenced)-instance-method","html_id":"referenced=(referenced)-instance-method","name":"referenced=","doc":null,"summary":null,"abstract":false,"args":[{"name":"referenced","doc":null,"default_value":"","external_name":"referenced","restriction":""}],"args_string":"(referenced)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/variabling/assignment.cr#L8","def":{"name":"referenced=","args":[{"name":"referenced","doc":null,"default_value":"","external_name":"referenced","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@referenced = referenced"}},{"id":"referenced?:Bool-instance-method","html_id":"referenced?:Bool-instance-method","name":"referenced?","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/variabling/assignment.cr#L8","def":{"name":"referenced?","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@referenced"}},{"id":"referenced_in_loop?-instance-method","html_id":"referenced_in_loop?-instance-method","name":"referenced_in_loop?","doc":null,"summary":null,"abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/variabling/assignment.cr#L41","def":{"name":"referenced_in_loop?","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@variable.referenced? && @branch.try(&.in_loop?)"}},{"id":"scope:Scope-instance-method","html_id":"scope:Scope-instance-method","name":"scope","doc":"A scope assignment belongs to","summary":"

    A scope assignment belongs to

    ","abstract":false,"args":[],"args_string":" : Scope","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/variabling/assignment.cr#L20","def":{"name":"scope","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Scope","visibility":"Public","body":"@scope"}},{"id":"target_node-instance-method","html_id":"target_node-instance-method","name":"target_node","doc":"Returns the target node of the variable in this assignment.","summary":"

    Returns the target node of the variable in this assignment.

    ","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/variabling/assignment.cr#L66","def":{"name":"target_node","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"case assign = node\nwhen Crystal::Assign\n assign.target\nwhen Crystal::OpAssign\n assign.target\nwhen Crystal::UninitializedVar\n assign.var\nwhen Crystal::MultiAssign\n assign.targets.find(node) do |target|\n target.is_a?(Crystal::Var) && (target.name == variable.name)\n end\nelse\n node\nend"}},{"id":"to_s(*args,**options,&)-instance-method","html_id":"to_s(*args,**options,&)-instance-method","name":"to_s","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options, &)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/variabling/assignment.cr#L22","def":{"name":"to_s","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":1,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.to_s(*args, **options) do |*yield_args|\n yield *yield_args\nend"}},{"id":"to_s(*args,**options)-instance-method","html_id":"to_s(*args,**options)-instance-method","name":"to_s","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/variabling/assignment.cr#L22","def":{"name":"to_s","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.to_s(*args, **options)"}},{"id":"transformed?-instance-method","html_id":"transformed?-instance-method","name":"transformed?","doc":"Indicates whether the node is a transformed assignment by the compiler.\ni.e.\n\n```\ncollection.each do |(a, b)|\n puts b\nend\n```\n\nis transformed to:\n\n```\ncollection.each do |__arg0|\n a = __arg0[0]\n b = __arg0[1]\n puts(b)\nend\n```\n","summary":"

    Indicates whether the node is a transformed assignment by the compiler.

    ","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/variabling/assignment.cr#L99","def":{"name":"transformed?","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (assign = node).is_a?(Crystal::Assign)\nelse\n return false\nend\nif (value = assign.value).is_a?(Crystal::Call)\nelse\n return false\nend\nif (obj = value.obj).is_a?(Crystal::Var)\nelse\n return false\nend\nobj.name.starts_with?(\"__arg\")\n"}},{"id":"variable:Variable-instance-method","html_id":"variable:Variable-instance-method","name":"variable","doc":"Variable of this assignment.","summary":"

    Variable of this assignment.

    ","abstract":false,"args":[],"args_string":" : Variable","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/variabling/assignment.cr#L14","def":{"name":"variable","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Variable","visibility":"Public","body":"@variable"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/AST/BaseVisitor","path":"Ameba/AST/BaseVisitor.html","kind":"class","full_name":"Ameba::AST::BaseVisitor","name":"BaseVisitor","abstract":true,"superclass":{"html_id":"ameba/Crystal/Visitor","kind":"class","full_name":"Crystal::Visitor","name":"Visitor"},"ancestors":[{"html_id":"ameba/Crystal/Visitor","kind":"class","full_name":"Crystal::Visitor","name":"Visitor"},{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/ast/visitors/base_visitor.cr","line_number":6,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/visitors/base_visitor.cr#L6"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[{"html_id":"ameba/Ameba/AST/FlowExpressionVisitor","kind":"class","full_name":"Ameba::AST::FlowExpressionVisitor","name":"FlowExpressionVisitor"},{"html_id":"ameba/Ameba/AST/NodeVisitor","kind":"class","full_name":"Ameba::AST::NodeVisitor","name":"NodeVisitor"},{"html_id":"ameba/Ameba/AST/ScopeVisitor","kind":"class","full_name":"Ameba::AST::ScopeVisitor","name":"ScopeVisitor"}],"including_types":[],"namespace":{"html_id":"ameba/Ameba/AST","kind":"module","full_name":"Ameba::AST","name":"AST"},"doc":"An abstract base visitor that utilizes general logic for all visitors.","summary":"

    An abstract base visitor that utilizes general logic for all visitors.

    ","class_methods":[],"constructors":[{"id":"new(rule,source)-class-method","html_id":"new(rule,source)-class-method","name":"new","doc":"Creates instance of this visitor.\n\n```\nvisitor = Ameba::AST::NodeVisitor.new(rule, source)\n```\n","summary":"

    Creates instance of this visitor.

    ","abstract":false,"args":[{"name":"rule","doc":null,"default_value":"","external_name":"rule","restriction":""},{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"args_string":"(rule, source)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/visitors/base_visitor.cr#L19","def":{"name":"new","args":[{"name":"rule","doc":null,"default_value":"","external_name":"rule","restriction":""},{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"_ = allocate\n_.initialize(rule, source)\nif _.responds_to?(:finalize)\n ::GC.add_finalizer(_)\nend\n_\n"}}],"instance_methods":[{"id":"visit(node:Crystal::ASTNode)-instance-method","html_id":"visit(node:Crystal::ASTNode)-instance-method","name":"visit","doc":"A main visit method that accepts `Crystal::ASTNode`.\nReturns true meaning all child nodes will be traversed.","summary":"

    A main visit method that accepts Crystal::ASTNode.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ASTNode"}],"args_string":"(node : Crystal::ASTNode)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/visitors/base_visitor.cr#L25","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ASTNode"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"true"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/AST/Branch","path":"Ameba/AST/Branch.html","kind":"class","full_name":"Ameba::AST::Branch","name":"Branch","abstract":false,"superclass":{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},"ancestors":[{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/ast/branch.cr","line_number":15,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/branch.cr#L15"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/AST","kind":"module","full_name":"Ameba::AST","name":"AST"},"doc":"Represents the branch in Crystal code.\nBranch is a part of a branchable statement.\nFor example, the branchable if statement contains 3 branches:\n\n```\nif a = something # --> Branch A\n a = 1 # --> Branch B\n put a if out # --> Branch C\nelse\n do_something a # --> Branch D\nend\n```\n","summary":"

    Represents the branch in Crystal code.

    ","class_methods":[{"id":"of(node:Crystal::ASTNode,parent_node:Crystal::ASTNode)-class-method","html_id":"of(node:Crystal::ASTNode,parent_node:Crystal::ASTNode)-class-method","name":"of","doc":"Constructs a new branch based on the node some parent scope.\n\n```\nBranch.of(assign_node, def_node)\n```","summary":"

    Constructs a new branch based on the node some parent scope.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ASTNode"},{"name":"parent_node","doc":null,"default_value":"","external_name":"parent_node","restriction":"Crystal::ASTNode"}],"args_string":"(node : Crystal::ASTNode, parent_node : Crystal::ASTNode)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/branch.cr#L66","def":{"name":"of","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ASTNode"},{"name":"parent_node","doc":null,"default_value":"","external_name":"parent_node","restriction":"Crystal::ASTNode"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"(BranchVisitor.new(node)).tap(&.accept(parent_node)).branch"}},{"id":"of(node:Crystal::ASTNode,scope:Scope)-class-method","html_id":"of(node:Crystal::ASTNode,scope:Scope)-class-method","name":"of","doc":"Constructs a new branch based on the node in scope.\n\n```\nBranch.of(assign_node, scope)\n```","summary":"

    Constructs a new branch based on the node in scope.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ASTNode"},{"name":"scope","doc":null,"default_value":"","external_name":"scope","restriction":"Scope"}],"args_string":"(node : Crystal::ASTNode, scope : Scope)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/branch.cr#L57","def":{"name":"of","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ASTNode"},{"name":"scope","doc":null,"default_value":"","external_name":"scope","restriction":"Scope"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"of(node, scope.node)"}}],"constructors":[{"id":"new(node,parent)-class-method","html_id":"new(node,parent)-class-method","name":"new","doc":"Creates a new branch.\n\n```\nBranch.new(if_node)\n```","summary":"

    Creates a new branch.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""},{"name":"parent","doc":null,"default_value":"","external_name":"parent","restriction":""}],"args_string":"(node, parent)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/branch.cr#L33","def":{"name":"new","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""},{"name":"parent","doc":null,"default_value":"","external_name":"parent","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"_ = allocate\n_.initialize(node, parent)\nif _.responds_to?(:finalize)\n ::GC.add_finalizer(_)\nend\n_\n"}}],"instance_methods":[{"id":"==(other:self)-instance-method","html_id":"==(other:self)-instance-method","name":"==","doc":"Returns `true` if this reference is the same as *other*. Invokes `same?`.","summary":"

    Returns true if this reference is the same as other.

    ","abstract":false,"args":[{"name":"other","doc":null,"default_value":"","external_name":"other","restriction":"self"}],"args_string":"(other : self)","source_link":null,"def":{"name":"==","args":[{"name":"other","doc":null,"default_value":"","external_name":"other","restriction":"self"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if node == other.node\nelse\n return false\nend\nif location == other.location\nelse\n return false\nend\ntrue\n"}},{"id":"end_location(*args,**options)-instance-method","html_id":"end_location(*args,**options)-instance-method","name":"end_location","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/branch.cr#L24","def":{"name":"end_location","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.end_location(*args, **options)"}},{"id":"end_location(*args,**options,&)-instance-method","html_id":"end_location(*args,**options,&)-instance-method","name":"end_location","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options, &)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/branch.cr#L24","def":{"name":"end_location","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":1,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.end_location(*args, **options) do |*yield_args|\n yield *yield_args\nend"}},{"id":"hash(hasher)-instance-method","html_id":"hash(hasher)-instance-method","name":"hash","doc":"See `Object#hash(hasher)`","summary":"

    See Object#hash(hasher)

    ","abstract":false,"args":[{"name":"hasher","doc":null,"default_value":"","external_name":"hasher","restriction":""}],"args_string":"(hasher)","source_link":null,"def":{"name":"hash","args":[{"name":"hasher","doc":null,"default_value":"","external_name":"hasher","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"hasher = node.hash(hasher)\nhasher = location.hash(hasher)\nhasher\n"}},{"id":"in_loop?-instance-method","html_id":"in_loop?-instance-method","name":"in_loop?","doc":"Returns true if current branch is in a loop, false - otherwise.\nFor example, this branch is in a loop:\n\n```\nwhile true\n handle_input # this branch is in a loop\n if wrong_input\n show_message # this branch is also in a loop.\n end\nend\n```\n","summary":"

    Returns true if current branch is in a loop, false - otherwise.

    ","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/branch.cr#L48","def":{"name":"in_loop?","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@parent.loop?"}},{"id":"location(*args,**options)-instance-method","html_id":"location(*args,**options)-instance-method","name":"location","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/branch.cr#L23","def":{"name":"location","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.location(*args, **options)"}},{"id":"location(*args,**options,&)-instance-method","html_id":"location(*args,**options,&)-instance-method","name":"location","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options, &)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/branch.cr#L23","def":{"name":"location","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":1,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.location(*args, **options) do |*yield_args|\n yield *yield_args\nend"}},{"id":"node:Crystal::ASTNode-instance-method","html_id":"node:Crystal::ASTNode-instance-method","name":"node","doc":"The actual branch node.","summary":"

    The actual branch node.

    ","abstract":false,"args":[],"args_string":" : Crystal::ASTNode","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/branch.cr#L17","def":{"name":"node","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Crystal::ASTNode","visibility":"Public","body":"@node"}},{"id":"parent:Branchable-instance-method","html_id":"parent:Branchable-instance-method","name":"parent","doc":"The parent branchable.","summary":"

    The parent branchable.

    ","abstract":false,"args":[],"args_string":" : Branchable","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/branch.cr#L20","def":{"name":"parent","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Branchable","visibility":"Public","body":"@parent"}},{"id":"to_s(*args,**options)-instance-method","html_id":"to_s(*args,**options)-instance-method","name":"to_s","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/branch.cr#L22","def":{"name":"to_s","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.to_s(*args, **options)"}},{"id":"to_s(*args,**options,&)-instance-method","html_id":"to_s(*args,**options,&)-instance-method","name":"to_s","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options, &)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/branch.cr#L22","def":{"name":"to_s","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":1,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.to_s(*args, **options) do |*yield_args|\n yield *yield_args\nend"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/AST/Branchable","path":"Ameba/AST/Branchable.html","kind":"class","full_name":"Ameba::AST::Branchable","name":"Branchable","abstract":false,"superclass":{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},"ancestors":[{"html_id":"ameba/Ameba/AST/Util","kind":"module","full_name":"Ameba::AST::Util","name":"Util"},{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/ast/branchable.cr","line_number":15,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/branchable.cr#L15"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[{"html_id":"ameba/Ameba/AST/Util","kind":"module","full_name":"Ameba::AST::Util","name":"Util"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/AST","kind":"module","full_name":"Ameba::AST","name":"AST"},"doc":"A generic entity to represent a branchable Crystal node.\nFor example, `Crystal::If`, `Crystal::Unless`, `Crystal::While`\nare branchables.\n\n```\nwhite a > 100 # Branchable A\n if b > 2 # Branchable B\n a += 1\n end\nend\n```","summary":"

    A generic entity to represent a branchable Crystal node.

    ","class_methods":[],"constructors":[{"id":"new(node,parent=nil)-class-method","html_id":"new(node,parent=nil)-class-method","name":"new","doc":"Creates a new branchable\n\n```\nBranchable.new(node, parent_branchable)\n```","summary":"

    Creates a new branchable

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""},{"name":"parent","doc":null,"default_value":"nil","external_name":"parent","restriction":""}],"args_string":"(node, parent = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/branchable.cr#L35","def":{"name":"new","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""},{"name":"parent","doc":null,"default_value":"nil","external_name":"parent","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"_ = allocate\n_.initialize(node, parent)\nif _.responds_to?(:finalize)\n ::GC.add_finalizer(_)\nend\n_\n"}}],"instance_methods":[{"id":"branches:Array(Crystal::ASTNode)-instance-method","html_id":"branches:Array(Crystal::ASTNode)-instance-method","name":"branches","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(Crystal::ASTNode)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/branchable.cr#L18","def":{"name":"branches","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@branches"}},{"id":"end_location(*args,**options)-instance-method","html_id":"end_location(*args,**options)-instance-method","name":"end_location","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/branchable.cr#L28","def":{"name":"end_location","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.end_location(*args, **options)"}},{"id":"end_location(*args,**options,&)-instance-method","html_id":"end_location(*args,**options,&)-instance-method","name":"end_location","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options, &)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/branchable.cr#L28","def":{"name":"end_location","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":1,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.end_location(*args, **options) do |*yield_args|\n yield *yield_args\nend"}},{"id":"location(*args,**options)-instance-method","html_id":"location(*args,**options)-instance-method","name":"location","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/branchable.cr#L27","def":{"name":"location","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.location(*args, **options)"}},{"id":"location(*args,**options,&)-instance-method","html_id":"location(*args,**options,&)-instance-method","name":"location","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options, &)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/branchable.cr#L27","def":{"name":"location","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":1,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.location(*args, **options) do |*yield_args|\n yield *yield_args\nend"}},{"id":"loop?-instance-method","html_id":"loop?-instance-method","name":"loop?","doc":"Returns true if this node or one of the parent branchables is a loop, false otherwise.","summary":"

    Returns true if this node or one of the parent branchables is a loop, false otherwise.

    ","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/branchable.cr#L39","def":{"name":"loop?","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if loop?(node)\n return true\nend\nparent.try(&.loop?) || false\n"}},{"id":"node:Crystal::ASTNode-instance-method","html_id":"node:Crystal::ASTNode-instance-method","name":"node","doc":"The actual Crystal node.","summary":"

    The actual Crystal node.

    ","abstract":false,"args":[],"args_string":" : Crystal::ASTNode","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/branchable.cr#L21","def":{"name":"node","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Crystal::ASTNode","visibility":"Public","body":"@node"}},{"id":"parent:Branchable?-instance-method","html_id":"parent:Branchable?-instance-method","name":"parent","doc":"Parent branchable (if any)","summary":"

    Parent branchable (if any)

    ","abstract":false,"args":[],"args_string":" : Branchable?","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/branchable.cr#L24","def":{"name":"parent","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Branchable | ::Nil","visibility":"Public","body":"@parent"}},{"id":"to_s(*args,**options)-instance-method","html_id":"to_s(*args,**options)-instance-method","name":"to_s","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/branchable.cr#L26","def":{"name":"to_s","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.to_s(*args, **options)"}},{"id":"to_s(*args,**options,&)-instance-method","html_id":"to_s(*args,**options,&)-instance-method","name":"to_s","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options, &)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/branchable.cr#L26","def":{"name":"to_s","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":1,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.to_s(*args, **options) do |*yield_args|\n yield *yield_args\nend"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/AST/CountingVisitor","path":"Ameba/AST/CountingVisitor.html","kind":"class","full_name":"Ameba::AST::CountingVisitor","name":"CountingVisitor","abstract":false,"superclass":{"html_id":"ameba/Crystal/Visitor","kind":"class","full_name":"Crystal::Visitor","name":"Visitor"},"ancestors":[{"html_id":"ameba/Crystal/Visitor","kind":"class","full_name":"Crystal::Visitor","name":"Visitor"},{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/ast/visitors/counting_visitor.cr","line_number":3,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/visitors/counting_visitor.cr#L3"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"DEFAULT_COMPLEXITY","name":"DEFAULT_COMPLEXITY","value":"1","doc":null,"summary":null}],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/AST","kind":"module","full_name":"Ameba::AST","name":"AST"},"doc":"AST Visitor that counts occurrences of certain keywords","summary":"

    AST Visitor that counts occurrences of certain keywords

    ","class_methods":[],"constructors":[{"id":"new(scope:Crystal::ASTNode)-class-method","html_id":"new(scope:Crystal::ASTNode)-class-method","name":"new","doc":"Creates a new counting visitor","summary":"

    Creates a new counting visitor

    ","abstract":false,"args":[{"name":"scope","doc":null,"default_value":"","external_name":"scope","restriction":"Crystal::ASTNode"}],"args_string":"(scope : Crystal::ASTNode)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/visitors/counting_visitor.cr#L8","def":{"name":"new","args":[{"name":"scope","doc":null,"default_value":"","external_name":"scope","restriction":"Crystal::ASTNode"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"_ = allocate\n_.initialize(scope)\nif _.responds_to?(:finalize)\n ::GC.add_finalizer(_)\nend\n_\n"}}],"instance_methods":[{"id":"count-instance-method","html_id":"count-instance-method","name":"count","doc":"Returns the number of keywords that were found in the node","summary":"

    Returns the number of keywords that were found in the node

    ","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/visitors/counting_visitor.cr#L18","def":{"name":"count","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@scope.accept(self)\n@complexity\n"}},{"id":"macro_condition:Bool-instance-method","html_id":"macro_condition:Bool-instance-method","name":"macro_condition","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/visitors/counting_visitor.cr#L5","def":{"name":"macro_condition","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@macro_condition"}},{"id":"visit(node:Crystal::MacroIf|Crystal::MacroFor)-instance-method","html_id":"visit(node:Crystal::MacroIf|Crystal::MacroFor)-instance-method","name":"visit","doc":null,"summary":null,"abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::MacroIf | Crystal::MacroFor"}],"args_string":"(node : Crystal::MacroIf | Crystal::MacroFor)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/visitors/counting_visitor.cr#L33","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::MacroIf | Crystal::MacroFor"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@macro_condition = true\n@complexity = DEFAULT_COMPLEXITY\nfalse\n"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/AST/FlowExpression","path":"Ameba/AST/FlowExpression.html","kind":"class","full_name":"Ameba::AST::FlowExpression","name":"FlowExpression","abstract":false,"superclass":{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},"ancestors":[{"html_id":"ameba/Ameba/AST/Util","kind":"module","full_name":"Ameba::AST::Util","name":"Util"},{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/ast/flow_expression.cr","line_number":18,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/flow_expression.cr#L18"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[{"html_id":"ameba/Ameba/AST/Util","kind":"module","full_name":"Ameba::AST::Util","name":"Util"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/AST","kind":"module","full_name":"Ameba::AST","name":"AST"},"doc":"Represents a flow expression in Crystal code.\nFor example,\n\n```\ndef foobar\n a = 3\n return 42 # => flow expression\n a + 1\nend\n```\n\nFlow expression contains an actual node of a control expression and\na parent node, which allows easily search through the related statement\n(i.e. find unreachable code)","summary":"

    Represents a flow expression in Crystal code.

    ","class_methods":[],"constructors":[{"id":"new(node,in_loop)-class-method","html_id":"new(node,in_loop)-class-method","name":"new","doc":"Creates a new flow expression.\n\n```\nFlowExpression.new(node, parent_node)\n```","summary":"

    Creates a new flow expression.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""},{"name":"in_loop","doc":null,"default_value":"","external_name":"in_loop","restriction":""}],"args_string":"(node, in_loop)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/flow_expression.cr#L36","def":{"name":"new","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""},{"name":"in_loop","doc":null,"default_value":"","external_name":"in_loop","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"_ = allocate\n_.initialize(node, in_loop)\nif _.responds_to?(:finalize)\n ::GC.add_finalizer(_)\nend\n_\n"}}],"instance_methods":[{"id":"end_location(*args,**options)-instance-method","html_id":"end_location(*args,**options)-instance-method","name":"end_location","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/flow_expression.cr#L29","def":{"name":"end_location","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.end_location(*args, **options)"}},{"id":"end_location(*args,**options,&)-instance-method","html_id":"end_location(*args,**options,&)-instance-method","name":"end_location","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options, &)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/flow_expression.cr#L29","def":{"name":"end_location","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":1,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.end_location(*args, **options) do |*yield_args|\n yield *yield_args\nend"}},{"id":"in_loop?:Bool-instance-method","html_id":"in_loop?:Bool-instance-method","name":"in_loop?","doc":"Is true only if some of the nodes parents is a loop.","summary":"

    Is true only if some of the nodes parents is a loop.

    ","abstract":false,"args":[],"args_string":" : Bool","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/flow_expression.cr#L22","def":{"name":"in_loop?","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Bool","visibility":"Public","body":"@in_loop"}},{"id":"location(*args,**options)-instance-method","html_id":"location(*args,**options)-instance-method","name":"location","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/flow_expression.cr#L28","def":{"name":"location","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.location(*args, **options)"}},{"id":"location(*args,**options,&)-instance-method","html_id":"location(*args,**options,&)-instance-method","name":"location","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options, &)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/flow_expression.cr#L28","def":{"name":"location","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":1,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.location(*args, **options) do |*yield_args|\n yield *yield_args\nend"}},{"id":"node:Crystal::ASTNode-instance-method","html_id":"node:Crystal::ASTNode-instance-method","name":"node","doc":"The actual node of the flow expression.","summary":"

    The actual node of the flow expression.

    ","abstract":false,"args":[],"args_string":" : Crystal::ASTNode","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/flow_expression.cr#L25","def":{"name":"node","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Crystal::ASTNode","visibility":"Public","body":"@node"}},{"id":"to_s(*args,**options)-instance-method","html_id":"to_s(*args,**options)-instance-method","name":"to_s","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/flow_expression.cr#L27","def":{"name":"to_s","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.to_s(*args, **options)"}},{"id":"to_s(*args,**options,&)-instance-method","html_id":"to_s(*args,**options,&)-instance-method","name":"to_s","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options, &)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/flow_expression.cr#L27","def":{"name":"to_s","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":1,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.to_s(*args, **options) do |*yield_args|\n yield *yield_args\nend"}},{"id":"unreachable_nodes-instance-method","html_id":"unreachable_nodes-instance-method","name":"unreachable_nodes","doc":"Returns nodes which can't be reached because of a flow command inside.\nFor example:\n\n```\ndef foobar\n a = 1\n return 42\n\n a + 2 # => unreachable assign node\nend\n```","summary":"

    Returns nodes which can't be reached because of a flow command inside.

    ","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/flow_expression.cr#L50","def":{"name":"unreachable_nodes","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"unreachable_nodes = [] of Crystal::ASTNode\ncase current_node = node\nwhen Crystal::Expressions\n control_flow_found = false\n current_node.expressions.each do |exp|\n if control_flow_found\n unreachable_nodes << exp\n end\n control_flow_found || (control_flow_found = flow_expression?(exp, in_loop?))\n end\nwhen Crystal::BinaryOp\n if flow_expression?(current_node.left, in_loop?)\n unreachable_nodes << current_node.right\n end\nelse\nend\nunreachable_nodes\n"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/AST/FlowExpressionVisitor","path":"Ameba/AST/FlowExpressionVisitor.html","kind":"class","full_name":"Ameba::AST::FlowExpressionVisitor","name":"FlowExpressionVisitor","abstract":false,"superclass":{"html_id":"ameba/Ameba/AST/BaseVisitor","kind":"class","full_name":"Ameba::AST::BaseVisitor","name":"BaseVisitor"},"ancestors":[{"html_id":"ameba/Ameba/AST/Util","kind":"module","full_name":"Ameba::AST::Util","name":"Util"},{"html_id":"ameba/Ameba/AST/BaseVisitor","kind":"class","full_name":"Ameba::AST::BaseVisitor","name":"BaseVisitor"},{"html_id":"ameba/Crystal/Visitor","kind":"class","full_name":"Crystal::Visitor","name":"Visitor"},{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/ast/visitors/flow_expression_visitor.cr","line_number":6,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/visitors/flow_expression_visitor.cr#L6"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[{"html_id":"ameba/Ameba/AST/Util","kind":"module","full_name":"Ameba::AST::Util","name":"Util"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/AST","kind":"module","full_name":"Ameba::AST","name":"AST"},"doc":"AST Visitor that traverses all the flow expressions.","summary":"

    AST Visitor that traverses all the flow expressions.

    ","class_methods":[],"constructors":[{"id":"new(rule,source)-class-method","html_id":"new(rule,source)-class-method","name":"new","doc":"Creates a new flow expression visitor.","summary":"

    Creates a new flow expression visitor.

    ","abstract":false,"args":[{"name":"rule","doc":null,"default_value":"","external_name":"rule","restriction":""},{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"args_string":"(rule, source)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/visitors/flow_expression_visitor.cr#L12","def":{"name":"new","args":[{"name":"rule","doc":null,"default_value":"","external_name":"rule","restriction":""},{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"_ = allocate\n_.initialize(rule, source)\nif _.responds_to?(:finalize)\n ::GC.add_finalizer(_)\nend\n_\n"}}],"instance_methods":[],"macros":[],"types":[]},{"html_id":"ameba/Ameba/AST/InstanceVariable","path":"Ameba/AST/InstanceVariable.html","kind":"class","full_name":"Ameba::AST::InstanceVariable","name":"InstanceVariable","abstract":false,"superclass":{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},"ancestors":[{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/ast/variabling/ivariable.cr","line_number":2,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/variabling/ivariable.cr#L2"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/AST","kind":"module","full_name":"Ameba::AST","name":"AST"},"doc":null,"summary":null,"class_methods":[],"constructors":[{"id":"new(node)-class-method","html_id":"new(node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"args_string":"(node)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/variabling/ivariable.cr#L10","def":{"name":"new","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"_ = allocate\n_.initialize(node)\nif _.responds_to?(:finalize)\n ::GC.add_finalizer(_)\nend\n_\n"}}],"instance_methods":[{"id":"end_location(*args,**options)-instance-method","html_id":"end_location(*args,**options)-instance-method","name":"end_location","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/variabling/ivariable.cr#L6","def":{"name":"end_location","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.end_location(*args, **options)"}},{"id":"end_location(*args,**options,&)-instance-method","html_id":"end_location(*args,**options,&)-instance-method","name":"end_location","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options, &)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/variabling/ivariable.cr#L6","def":{"name":"end_location","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":1,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.end_location(*args, **options) do |*yield_args|\n yield *yield_args\nend"}},{"id":"location(*args,**options)-instance-method","html_id":"location(*args,**options)-instance-method","name":"location","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/variabling/ivariable.cr#L5","def":{"name":"location","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.location(*args, **options)"}},{"id":"location(*args,**options,&)-instance-method","html_id":"location(*args,**options,&)-instance-method","name":"location","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options, &)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/variabling/ivariable.cr#L5","def":{"name":"location","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":1,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.location(*args, **options) do |*yield_args|\n yield *yield_args\nend"}},{"id":"name(*args,**options)-instance-method","html_id":"name(*args,**options)-instance-method","name":"name","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/variabling/ivariable.cr#L7","def":{"name":"name","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.name(*args, **options)"}},{"id":"name(*args,**options,&)-instance-method","html_id":"name(*args,**options,&)-instance-method","name":"name","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options, &)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/variabling/ivariable.cr#L7","def":{"name":"name","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":1,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.name(*args, **options) do |*yield_args|\n yield *yield_args\nend"}},{"id":"node:Crystal::InstanceVar-instance-method","html_id":"node:Crystal::InstanceVar-instance-method","name":"node","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Crystal::InstanceVar","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/variabling/ivariable.cr#L3","def":{"name":"node","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Crystal::InstanceVar","visibility":"Public","body":"@node"}},{"id":"to_s(*args,**options)-instance-method","html_id":"to_s(*args,**options)-instance-method","name":"to_s","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/variabling/ivariable.cr#L8","def":{"name":"to_s","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.to_s(*args, **options)"}},{"id":"to_s(*args,**options,&)-instance-method","html_id":"to_s(*args,**options,&)-instance-method","name":"to_s","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options, &)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/variabling/ivariable.cr#L8","def":{"name":"to_s","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":1,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.to_s(*args, **options) do |*yield_args|\n yield *yield_args\nend"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/AST/NodeVisitor","path":"Ameba/AST/NodeVisitor.html","kind":"class","full_name":"Ameba::AST::NodeVisitor","name":"NodeVisitor","abstract":false,"superclass":{"html_id":"ameba/Ameba/AST/BaseVisitor","kind":"class","full_name":"Ameba::AST::BaseVisitor","name":"BaseVisitor"},"ancestors":[{"html_id":"ameba/Ameba/AST/BaseVisitor","kind":"class","full_name":"Ameba::AST::BaseVisitor","name":"BaseVisitor"},{"html_id":"ameba/Crystal/Visitor","kind":"class","full_name":"Crystal::Visitor","name":"Visitor"},{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/ast/visitors/node_visitor.cr","line_number":39,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/visitors/node_visitor.cr#L39"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/AST","kind":"module","full_name":"Ameba::AST","name":"AST"},"doc":"An AST Visitor that traverses the source and allows all nodes\nto be inspected by rules.\n\n```\nvisitor = Ameba::AST::NodeVisitor.new(rule, source)\n```\n","summary":"

    An AST Visitor that traverses the source and allows all nodes to be inspected by rules.

    ","class_methods":[],"constructors":[{"id":"new(rule,source,skip=nil)-class-method","html_id":"new(rule,source,skip=nil)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"rule","doc":null,"default_value":"","external_name":"rule","restriction":""},{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"skip","doc":null,"default_value":"nil","external_name":"skip","restriction":""}],"args_string":"(rule, source, skip = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/visitors/node_visitor.cr#L42","def":{"name":"new","args":[{"name":"rule","doc":null,"default_value":"","external_name":"rule","restriction":""},{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"skip","doc":null,"default_value":"nil","external_name":"skip","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"_ = allocate\n_.initialize(rule, source, skip)\nif _.responds_to?(:finalize)\n ::GC.add_finalizer(_)\nend\n_\n"}}],"instance_methods":[{"id":"visit(node:Crystal::Alias)-instance-method","html_id":"visit(node:Crystal::Alias)-instance-method","name":"visit","doc":"A visit callback for `Crystal::Alias` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"

    A visit callback for Crystal::Alias node.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Alias"}],"args_string":"(node : Crystal::Alias)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/visitors/node_visitor.cr#L47","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Alias"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::Until)-instance-method","html_id":"visit(node:Crystal::Until)-instance-method","name":"visit","doc":"A visit callback for `Crystal::Until` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"

    A visit callback for Crystal::Until node.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Until"}],"args_string":"(node : Crystal::Until)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/visitors/node_visitor.cr#L47","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Until"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::While)-instance-method","html_id":"visit(node:Crystal::While)-instance-method","name":"visit","doc":"A visit callback for `Crystal::While` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"

    A visit callback for Crystal::While node.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::While"}],"args_string":"(node : Crystal::While)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/visitors/node_visitor.cr#L47","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::While"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::When)-instance-method","html_id":"visit(node:Crystal::When)-instance-method","name":"visit","doc":"A visit callback for `Crystal::When` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"

    A visit callback for Crystal::When node.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::When"}],"args_string":"(node : Crystal::When)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/visitors/node_visitor.cr#L47","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::When"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::Var)-instance-method","html_id":"visit(node:Crystal::Var)-instance-method","name":"visit","doc":"A visit callback for `Crystal::Var` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"

    A visit callback for Crystal::Var node.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Var"}],"args_string":"(node : Crystal::Var)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/visitors/node_visitor.cr#L47","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Var"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::Unless)-instance-method","html_id":"visit(node:Crystal::Unless)-instance-method","name":"visit","doc":"A visit callback for `Crystal::Unless` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"

    A visit callback for Crystal::Unless node.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Unless"}],"args_string":"(node : Crystal::Unless)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/visitors/node_visitor.cr#L47","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Unless"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::StringInterpolation)-instance-method","html_id":"visit(node:Crystal::StringInterpolation)-instance-method","name":"visit","doc":"A visit callback for `Crystal::StringInterpolation` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"

    A visit callback for Crystal::StringInterpolation node.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::StringInterpolation"}],"args_string":"(node : Crystal::StringInterpolation)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/visitors/node_visitor.cr#L47","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::StringInterpolation"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::NilLiteral)-instance-method","html_id":"visit(node:Crystal::NilLiteral)-instance-method","name":"visit","doc":"A visit callback for `Crystal::NilLiteral` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"

    A visit callback for Crystal::NilLiteral node.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::NilLiteral"}],"args_string":"(node : Crystal::NilLiteral)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/visitors/node_visitor.cr#L47","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::NilLiteral"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::ModuleDef)-instance-method","html_id":"visit(node:Crystal::ModuleDef)-instance-method","name":"visit","doc":"A visit callback for `Crystal::ModuleDef` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"

    A visit callback for Crystal::ModuleDef node.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ModuleDef"}],"args_string":"(node : Crystal::ModuleDef)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/visitors/node_visitor.cr#L47","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ModuleDef"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::LibDef)-instance-method","html_id":"visit(node:Crystal::LibDef)-instance-method","name":"visit","doc":"A visit callback for `Crystal::LibDef` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"

    A visit callback for Crystal::LibDef node.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::LibDef"}],"args_string":"(node : Crystal::LibDef)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/visitors/node_visitor.cr#L47","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::LibDef"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::InstanceVar)-instance-method","html_id":"visit(node:Crystal::InstanceVar)-instance-method","name":"visit","doc":"A visit callback for `Crystal::InstanceVar` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"

    A visit callback for Crystal::InstanceVar node.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::InstanceVar"}],"args_string":"(node : Crystal::InstanceVar)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/visitors/node_visitor.cr#L47","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::InstanceVar"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::If)-instance-method","html_id":"visit(node:Crystal::If)-instance-method","name":"visit","doc":"A visit callback for `Crystal::If` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"

    A visit callback for Crystal::If node.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::If"}],"args_string":"(node : Crystal::If)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/visitors/node_visitor.cr#L47","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::If"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::HashLiteral)-instance-method","html_id":"visit(node:Crystal::HashLiteral)-instance-method","name":"visit","doc":"A visit callback for `Crystal::HashLiteral` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"

    A visit callback for Crystal::HashLiteral node.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::HashLiteral"}],"args_string":"(node : Crystal::HashLiteral)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/visitors/node_visitor.cr#L47","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::HashLiteral"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::Expressions)-instance-method","html_id":"visit(node:Crystal::Expressions)-instance-method","name":"visit","doc":"A visit callback for `Crystal::Expressions` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"

    A visit callback for Crystal::Expressions node.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Expressions"}],"args_string":"(node : Crystal::Expressions)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/visitors/node_visitor.cr#L47","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Expressions"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::ExceptionHandler)-instance-method","html_id":"visit(node:Crystal::ExceptionHandler)-instance-method","name":"visit","doc":"A visit callback for `Crystal::ExceptionHandler` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"

    A visit callback for Crystal::ExceptionHandler node.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ExceptionHandler"}],"args_string":"(node : Crystal::ExceptionHandler)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/visitors/node_visitor.cr#L47","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ExceptionHandler"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::EnumDef)-instance-method","html_id":"visit(node:Crystal::EnumDef)-instance-method","name":"visit","doc":"A visit callback for `Crystal::EnumDef` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"

    A visit callback for Crystal::EnumDef node.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::EnumDef"}],"args_string":"(node : Crystal::EnumDef)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/visitors/node_visitor.cr#L47","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::EnumDef"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::Def)-instance-method","html_id":"visit(node:Crystal::Def)-instance-method","name":"visit","doc":"A visit callback for `Crystal::Def` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"

    A visit callback for Crystal::Def node.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Def"}],"args_string":"(node : Crystal::Def)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/visitors/node_visitor.cr#L47","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Def"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::ClassVar)-instance-method","html_id":"visit(node:Crystal::ClassVar)-instance-method","name":"visit","doc":"A visit callback for `Crystal::ClassVar` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"

    A visit callback for Crystal::ClassVar node.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ClassVar"}],"args_string":"(node : Crystal::ClassVar)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/visitors/node_visitor.cr#L47","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ClassVar"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::ClassDef)-instance-method","html_id":"visit(node:Crystal::ClassDef)-instance-method","name":"visit","doc":"A visit callback for `Crystal::ClassDef` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"

    A visit callback for Crystal::ClassDef node.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ClassDef"}],"args_string":"(node : Crystal::ClassDef)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/visitors/node_visitor.cr#L47","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ClassDef"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::Case)-instance-method","html_id":"visit(node:Crystal::Case)-instance-method","name":"visit","doc":"A visit callback for `Crystal::Case` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"

    A visit callback for Crystal::Case node.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Case"}],"args_string":"(node : Crystal::Case)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/visitors/node_visitor.cr#L47","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Case"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::Block)-instance-method","html_id":"visit(node:Crystal::Block)-instance-method","name":"visit","doc":"A visit callback for `Crystal::Block` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"

    A visit callback for Crystal::Block node.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Block"}],"args_string":"(node : Crystal::Block)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/visitors/node_visitor.cr#L47","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Block"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::Call)-instance-method","html_id":"visit(node:Crystal::Call)-instance-method","name":"visit","doc":"A visit callback for `Crystal::Call` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"

    A visit callback for Crystal::Call node.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Call"}],"args_string":"(node : Crystal::Call)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/visitors/node_visitor.cr#L47","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Call"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::Assign)-instance-method","html_id":"visit(node:Crystal::Assign)-instance-method","name":"visit","doc":"A visit callback for `Crystal::Assign` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"

    A visit callback for Crystal::Assign node.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Assign"}],"args_string":"(node : Crystal::Assign)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/visitors/node_visitor.cr#L47","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Assign"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::IsA)-instance-method","html_id":"visit(node:Crystal::IsA)-instance-method","name":"visit","doc":"A visit callback for `Crystal::IsA` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"

    A visit callback for Crystal::IsA node.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::IsA"}],"args_string":"(node : Crystal::IsA)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/visitors/node_visitor.cr#L47","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::IsA"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node)-instance-method","html_id":"visit(node)-instance-method","name":"visit","doc":null,"summary":null,"abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"args_string":"(node)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/visitors/node_visitor.cr#L56","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (skip = @skip)\nelse\n return true\nend\n!(skip.includes?(node.class))\n"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/AST/RedundantControlExpressionVisitor","path":"Ameba/AST/RedundantControlExpressionVisitor.html","kind":"class","full_name":"Ameba::AST::RedundantControlExpressionVisitor","name":"RedundantControlExpressionVisitor","abstract":false,"superclass":{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},"ancestors":[{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/ast/visitors/redundant_control_expression_visitor.cr","line_number":5,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/visitors/redundant_control_expression_visitor.cr#L5"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/AST","kind":"module","full_name":"Ameba::AST","name":"AST"},"doc":"A class that utilizes a logic to traverse AST nodes and\nfire a source test callback if a redundant `Crystal::ControlExpression`\nis reached.","summary":"

    A class that utilizes a logic to traverse AST nodes and fire a source test callback if a redundant Crystal::ControlExpression is reached.

    ","class_methods":[],"constructors":[{"id":"new(rule,source,node)-class-method","html_id":"new(rule,source,node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"rule","doc":null,"default_value":"","external_name":"rule","restriction":""},{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"args_string":"(rule, source, node)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/visitors/redundant_control_expression_visitor.cr#L15","def":{"name":"new","args":[{"name":"rule","doc":null,"default_value":"","external_name":"rule","restriction":""},{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"_ = allocate\n_.initialize(rule, source, node)\nif _.responds_to?(:finalize)\n ::GC.add_finalizer(_)\nend\n_\n"}}],"instance_methods":[{"id":"node:Crystal::ASTNode-instance-method","html_id":"node:Crystal::ASTNode-instance-method","name":"node","doc":"A node to run traversal on.","summary":"

    A node to run traversal on.

    ","abstract":false,"args":[],"args_string":" : Crystal::ASTNode","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/visitors/redundant_control_expression_visitor.cr#L13","def":{"name":"node","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Crystal::ASTNode","visibility":"Public","body":"@node"}},{"id":"rule:Rule::Base-instance-method","html_id":"rule:Rule::Base-instance-method","name":"rule","doc":"A corresponding rule that uses this visitor.","summary":"

    A corresponding rule that uses this visitor.

    ","abstract":false,"args":[],"args_string":" : Rule::Base","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/visitors/redundant_control_expression_visitor.cr#L7","def":{"name":"rule","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Rule::Base","visibility":"Public","body":"@rule"}},{"id":"source:Source-instance-method","html_id":"source:Source-instance-method","name":"source","doc":"A source that needs to be traversed.","summary":"

    A source that needs to be traversed.

    ","abstract":false,"args":[],"args_string":" : Source","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/visitors/redundant_control_expression_visitor.cr#L10","def":{"name":"source","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Source","visibility":"Public","body":"@source"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/AST/Reference","path":"Ameba/AST/Reference.html","kind":"class","full_name":"Ameba::AST::Reference","name":"Reference","abstract":false,"superclass":{"html_id":"ameba/Ameba/AST/Variable","kind":"class","full_name":"Ameba::AST::Variable","name":"Variable"},"ancestors":[{"html_id":"ameba/Ameba/AST/Variable","kind":"class","full_name":"Ameba::AST::Variable","name":"Variable"},{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/ast/variabling/reference.cr","line_number":7,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/variabling/reference.cr#L7"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/AST","kind":"module","full_name":"Ameba::AST","name":"AST"},"doc":"Represents a reference to the variable.\nIt behaves like a variable is used to distinguish a\nthe variable from its reference.","summary":"

    Represents a reference to the variable.

    ","class_methods":[],"constructors":[],"instance_methods":[{"id":"explicit=(explicit)-instance-method","html_id":"explicit=(explicit)-instance-method","name":"explicit=","doc":null,"summary":null,"abstract":false,"args":[{"name":"explicit","doc":null,"default_value":"","external_name":"explicit","restriction":""}],"args_string":"(explicit)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/variabling/reference.cr#L8","def":{"name":"explicit=","args":[{"name":"explicit","doc":null,"default_value":"","external_name":"explicit","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@explicit = explicit"}},{"id":"explicit?:Bool-instance-method","html_id":"explicit?:Bool-instance-method","name":"explicit?","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/variabling/reference.cr#L8","def":{"name":"explicit?","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@explicit"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/AST/Scope","path":"Ameba/AST/Scope.html","kind":"class","full_name":"Ameba::AST::Scope","name":"Scope","abstract":false,"superclass":{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},"ancestors":[{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/ast/scope.cr","line_number":6,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/scope.cr#L6"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/AST","kind":"module","full_name":"Ameba::AST","name":"AST"},"doc":"Represents a context of the local variable visibility.\nThis is where the local variables belong to.","summary":"

    Represents a context of the local variable visibility.

    ","class_methods":[],"constructors":[{"id":"new(node,outer_scope=nil)-class-method","html_id":"new(node,outer_scope=nil)-class-method","name":"new","doc":"Creates a new scope. Accepts the AST node and the outer scope.\n\n```\nscope = Scope.new(class_node, nil)\n```","summary":"

    Creates a new scope.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""},{"name":"outer_scope","doc":null,"default_value":"nil","external_name":"outer_scope","restriction":""}],"args_string":"(node, outer_scope = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/scope.cr#L39","def":{"name":"new","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""},{"name":"outer_scope","doc":null,"default_value":"nil","external_name":"outer_scope","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"_ = allocate\n_.initialize(node, outer_scope)\nif _.responds_to?(:finalize)\n ::GC.add_finalizer(_)\nend\n_\n"}}],"instance_methods":[{"id":"==(other:self)-instance-method","html_id":"==(other:self)-instance-method","name":"==","doc":"Returns `true` if this reference is the same as *other*. Invokes `same?`.","summary":"

    Returns true if this reference is the same as other.

    ","abstract":false,"args":[{"name":"other","doc":null,"default_value":"","external_name":"other","restriction":"self"}],"args_string":"(other : self)","source_link":null,"def":{"name":"==","args":[{"name":"other","doc":null,"default_value":"","external_name":"other","restriction":"self"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if node == other.node\nelse\n return false\nend\nif location == other.location\nelse\n return false\nend\ntrue\n"}},{"id":"add_argument(node)-instance-method","html_id":"add_argument(node)-instance-method","name":"add_argument","doc":"Creates a new argument in the current scope.\n\n```\nscope = Scope.new(class_node, nil)\nscope.add_argument(arg_node)\n```","summary":"

    Creates a new argument in the current scope.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"args_string":"(node)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/scope.cr#L59","def":{"name":"add_argument","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"add_variable((Crystal::Var.new(node.name)).at(node))\narguments << (Argument.new(node, variables.last))\n"}},{"id":"add_ivariable(node)-instance-method","html_id":"add_ivariable(node)-instance-method","name":"add_ivariable","doc":"Adds a new instance variable to the current scope.\n\n```\nscope = Scope.new(class_node, nil)\nscope.add_ivariable(ivar_node)\n```","summary":"

    Adds a new instance variable to the current scope.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"args_string":"(node)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/scope.cr#L70","def":{"name":"add_ivariable","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"ivariables << (InstanceVariable.new(node))"}},{"id":"add_variable(node)-instance-method","html_id":"add_variable(node)-instance-method","name":"add_variable","doc":"Creates a new variable in the current scope.\n\n```\nscope = Scope.new(class_node, nil)\nscope.add_variable(var_node)\n```","summary":"

    Creates a new variable in the current scope.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"args_string":"(node)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/scope.cr#L49","def":{"name":"add_variable","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"variables << (Variable.new(node, self))"}},{"id":"arg?(var)-instance-method","html_id":"arg?(var)-instance-method","name":"arg?","doc":"Returns true if var is an argument in current scope, false if not.","summary":"

    Returns true if var is an argument in current scope, false if not.

    ","abstract":false,"args":[{"name":"var","doc":null,"default_value":"","external_name":"var","restriction":""}],"args_string":"(var)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/scope.cr#L155","def":{"name":"arg?","args":[{"name":"var","doc":null,"default_value":"","external_name":"var","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"case current_node = node\nwhen Crystal::Def\n var.is_a?(Crystal::Arg) && (any_arg?(current_node.args, var))\nwhen Crystal::Block\n var.is_a?(Crystal::Var) && (any_arg?(current_node.args, var))\nwhen Crystal::ProcLiteral\n var.is_a?(Crystal::Var) && (any_arg?(current_node.def.args, var))\nelse\n false\nend"}},{"id":"arguments:Array(Ameba::AST::Argument)-instance-method","html_id":"arguments:Array(Ameba::AST::Argument)-instance-method","name":"arguments","doc":"Link to the arguments in current scope","summary":"

    Link to the arguments in current scope

    ","abstract":false,"args":[],"args_string":" : Array(Ameba::AST::Argument)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/scope.cr#L14","def":{"name":"arguments","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@arguments"}},{"id":"assign_variable(name,node)-instance-method","html_id":"assign_variable(name,node)-instance-method","name":"assign_variable","doc":"Creates a new assignment for the variable.\n\n```\nscope = Scope.new(class_node, nil)\nscope.assign_variable(var_name, assign_node)\n```","summary":"

    Creates a new assignment for the variable.

    ","abstract":false,"args":[{"name":"name","doc":null,"default_value":"","external_name":"name","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"args_string":"(name, node)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/scope.cr#L90","def":{"name":"assign_variable","args":[{"name":"name","doc":null,"default_value":"","external_name":"name","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"(find_variable(name)).try(&.assign(node, self))"}},{"id":"assigns_ivar?(name)-instance-method","html_id":"assigns_ivar?(name)-instance-method","name":"assigns_ivar?","doc":"Returns true instance variable assinged in this scope.","summary":"

    Returns true instance variable assinged in this scope.

    ","abstract":false,"args":[{"name":"name","doc":null,"default_value":"","external_name":"name","restriction":""}],"args_string":"(name)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/scope.cr#L119","def":{"name":"assigns_ivar?","args":[{"name":"name","doc":null,"default_value":"","external_name":"name","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"arguments.find do |arg|\n arg.name == name\nend && ivariables.find do |var|\n var.name == \"@#{name}\"\nend"}},{"id":"block?-instance-method","html_id":"block?-instance-method","name":"block?","doc":"Returns true if current scope represents a block (or proc),\nfalse if not.","summary":"

    Returns true if current scope represents a block (or proc), false if not.

    ","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/scope.cr#L96","def":{"name":"block?","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"node.is_a?(Crystal::Block) || node.is_a?(Crystal::ProcLiteral)"}},{"id":"def?-instance-method","html_id":"def?-instance-method","name":"def?","doc":"Returns true if current scope is a def, false if not.","summary":"

    Returns true if current scope is a def, false if not.

    ","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/scope.cr#L145","def":{"name":"def?","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"node.is_a?(Crystal::Def)"}},{"id":"end_location(*args,**options)-instance-method","html_id":"end_location(*args,**options)-instance-method","name":"end_location","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/scope.cr#L30","def":{"name":"end_location","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"node.end_location(*args, **options)"}},{"id":"end_location(*args,**options,&)-instance-method","html_id":"end_location(*args,**options,&)-instance-method","name":"end_location","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options, &)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/scope.cr#L30","def":{"name":"end_location","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":1,"block_arg":null,"return_type":"","visibility":"Public","body":"node.end_location(*args, **options) do |*yield_args|\n yield *yield_args\nend"}},{"id":"eql?(node)-instance-method","html_id":"eql?(node)-instance-method","name":"eql?","doc":"Returns true if the `node` represents exactly\nthe same Crystal node as `@node`.","summary":"

    Returns true if the #node represents exactly the same Crystal node as @node.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"args_string":"(node)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/scope.cr#L174","def":{"name":"eql?","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"((node == @node) && (!node.location.nil?)) && (node.location == @node.location)"}},{"id":"find_variable(name:String)-instance-method","html_id":"find_variable(name:String)-instance-method","name":"find_variable","doc":"Returns variable by its name or nil if it does not exist.\n\n```\nscope = Scope.new(class_node, nil)\nscope.find_variable(\"foo\")\n```","summary":"

    Returns variable by its name or nil if it does not exist.

    ","abstract":false,"args":[{"name":"name","doc":null,"default_value":"","external_name":"name","restriction":"String"}],"args_string":"(name : String)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/scope.cr#L80","def":{"name":"find_variable","args":[{"name":"name","doc":null,"default_value":"","external_name":"name","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"variables.find do |v|\n v.name == name\nend || outer_scope.try(&.find_variable(name))"}},{"id":"hash(hasher)-instance-method","html_id":"hash(hasher)-instance-method","name":"hash","doc":"See `Object#hash(hasher)`","summary":"

    See Object#hash(hasher)

    ","abstract":false,"args":[{"name":"hasher","doc":null,"default_value":"","external_name":"hasher","restriction":""}],"args_string":"(hasher)","source_link":null,"def":{"name":"hash","args":[{"name":"hasher","doc":null,"default_value":"","external_name":"hasher","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"hasher = node.hash(hasher)\nhasher = location.hash(hasher)\nhasher\n"}},{"id":"in_macro?-instance-method","html_id":"in_macro?-instance-method","name":"in_macro?","doc":"Returns true if current scope sits inside a macro.","summary":"

    Returns true if current scope sits inside a macro.

    ","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/scope.cr#L114","def":{"name":"in_macro?","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"node.is_a?(Crystal::Macro) || (!(!outer_scope.try(&.in_macro?)))"}},{"id":"inner_scopes:Array(Ameba::AST::Scope)-instance-method","html_id":"inner_scopes:Array(Ameba::AST::Scope)-instance-method","name":"inner_scopes","doc":"List of inner scopes","summary":"

    List of inner scopes

    ","abstract":false,"args":[],"args_string":" : Array(Ameba::AST::Scope)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/scope.cr#L23","def":{"name":"inner_scopes","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@inner_scopes"}},{"id":"ivariables:Array(Ameba::AST::InstanceVariable)-instance-method","html_id":"ivariables:Array(Ameba::AST::InstanceVariable)-instance-method","name":"ivariables","doc":"Link to the instance variables used in current scope","summary":"

    Link to the instance variables used in current scope

    ","abstract":false,"args":[],"args_string":" : Array(Ameba::AST::InstanceVariable)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/scope.cr#L17","def":{"name":"ivariables","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@ivariables"}},{"id":"location(*args,**options,&)-instance-method","html_id":"location(*args,**options,&)-instance-method","name":"location","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options, &)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/scope.cr#L29","def":{"name":"location","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":1,"block_arg":null,"return_type":"","visibility":"Public","body":"node.location(*args, **options) do |*yield_args|\n yield *yield_args\nend"}},{"id":"location(*args,**options)-instance-method","html_id":"location(*args,**options)-instance-method","name":"location","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/scope.cr#L29","def":{"name":"location","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"node.location(*args, **options)"}},{"id":"node:Crystal::ASTNode-instance-method","html_id":"node:Crystal::ASTNode-instance-method","name":"node","doc":"The actual AST node that represents a current scope.","summary":"

    The actual AST node that represents a current scope.

    ","abstract":false,"args":[],"args_string":" : Crystal::ASTNode","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/scope.cr#L26","def":{"name":"node","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Crystal::ASTNode","visibility":"Public","body":"@node"}},{"id":"outer_scope:Scope?-instance-method","html_id":"outer_scope:Scope?-instance-method","name":"outer_scope","doc":"Link to the outer scope","summary":"

    Link to the outer scope

    ","abstract":false,"args":[],"args_string":" : Scope?","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/scope.cr#L20","def":{"name":"outer_scope","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Scope | ::Nil","visibility":"Public","body":"@outer_scope"}},{"id":"references:Array(Ameba::AST::Reference)-instance-method","html_id":"references:Array(Ameba::AST::Reference)-instance-method","name":"references","doc":"Link to all variable references in currency scope","summary":"

    Link to all variable references in currency scope

    ","abstract":false,"args":[],"args_string":" : Array(Ameba::AST::Reference)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/scope.cr#L11","def":{"name":"references","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@references"}},{"id":"references?(variable:Variable)-instance-method","html_id":"references?(variable:Variable)-instance-method","name":"references?","doc":"Returns true if current scope (or any of inner scopes) references variable,\nfalse if not.","summary":"

    Returns true if current scope (or any of inner scopes) references variable, false if not.

    ","abstract":false,"args":[{"name":"variable","doc":null,"default_value":"","external_name":"variable","restriction":"Variable"}],"args_string":"(variable : Variable)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/scope.cr#L137","def":{"name":"references?","args":[{"name":"variable","doc":null,"default_value":"","external_name":"variable","restriction":"Variable"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"variable.references.any? do |reference|\n (reference.scope == self) || inner_scopes.any?(&.references?(variable))\nend || variable.used_in_macro?"}},{"id":"spawn_block?-instance-method","html_id":"spawn_block?-instance-method","name":"spawn_block?","doc":"Returns true if current scope represents a spawn block, e. g.\n\n```\nspawn do\n # ...\nend\n```","summary":"

    Returns true if current scope represents a spawn block, e.

    ","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/scope.cr#L107","def":{"name":"spawn_block?","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if node.is_a?(Crystal::Block)\nelse\n return false\nend\ncall = (node.as(Crystal::Block)).call\ncall.try(&.name) == \"spawn\"\n"}},{"id":"to_s(*args,**options)-instance-method","html_id":"to_s(*args,**options)-instance-method","name":"to_s","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/scope.cr#L28","def":{"name":"to_s","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"node.to_s(*args, **options)"}},{"id":"to_s(*args,**options,&)-instance-method","html_id":"to_s(*args,**options,&)-instance-method","name":"to_s","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options, &)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/scope.cr#L28","def":{"name":"to_s","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":1,"block_arg":null,"return_type":"","visibility":"Public","body":"node.to_s(*args, **options) do |*yield_args|\n yield *yield_args\nend"}},{"id":"top_level?-instance-method","html_id":"top_level?-instance-method","name":"top_level?","doc":"Returns true if this scope is a top level scope, false if not.","summary":"

    Returns true if this scope is a top level scope, false if not.

    ","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/scope.cr#L150","def":{"name":"top_level?","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"outer_scope.nil?"}},{"id":"type_definition?-instance-method","html_id":"type_definition?-instance-method","name":"type_definition?","doc":"Returns true if and only if current scope represents some\ntype definition, for example a class.","summary":"

    Returns true if and only if current scope represents some type definition, for example a class.

    ","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/scope.cr#L126","def":{"name":"type_definition?","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"((((node.is_a?(Crystal::ClassDef) || node.is_a?(Crystal::ModuleDef)) || node.is_a?(Crystal::LibDef)) || node.is_a?(Crystal::FunDef)) || node.is_a?(Crystal::TypeDef)) || node.is_a?(Crystal::CStructOrUnionDef)"}},{"id":"variables:Array(Ameba::AST::Variable)-instance-method","html_id":"variables:Array(Ameba::AST::Variable)-instance-method","name":"variables","doc":"Link to local variables","summary":"

    Link to local variables

    ","abstract":false,"args":[],"args_string":" : Array(Ameba::AST::Variable)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/scope.cr#L8","def":{"name":"variables","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@variables"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/AST/ScopeVisitor","path":"Ameba/AST/ScopeVisitor.html","kind":"class","full_name":"Ameba::AST::ScopeVisitor","name":"ScopeVisitor","abstract":false,"superclass":{"html_id":"ameba/Ameba/AST/BaseVisitor","kind":"class","full_name":"Ameba::AST::BaseVisitor","name":"BaseVisitor"},"ancestors":[{"html_id":"ameba/Ameba/AST/BaseVisitor","kind":"class","full_name":"Ameba::AST::BaseVisitor","name":"BaseVisitor"},{"html_id":"ameba/Crystal/Visitor","kind":"class","full_name":"Crystal::Visitor","name":"Visitor"},{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/ast/visitors/scope_visitor.cr","line_number":5,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/visitors/scope_visitor.cr#L5"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"RECORD_NODE_NAME","name":"RECORD_NODE_NAME","value":"\"record\"","doc":null,"summary":null},{"id":"SUPER_NODE_NAME","name":"SUPER_NODE_NAME","value":"\"super\"","doc":null,"summary":null}],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/AST","kind":"module","full_name":"Ameba::AST","name":"AST"},"doc":"AST Visitor that traverses the source and constructs scopes.","summary":"

    AST Visitor that traverses the source and constructs scopes.

    ","class_methods":[],"constructors":[{"id":"new(rule,source)-class-method","html_id":"new(rule,source)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"rule","doc":null,"default_value":"","external_name":"rule","restriction":""},{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"args_string":"(rule, source)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/visitors/scope_visitor.cr#L13","def":{"name":"new","args":[{"name":"rule","doc":null,"default_value":"","external_name":"rule","restriction":""},{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"_ = allocate\n_.initialize(rule, source)\nif _.responds_to?(:finalize)\n ::GC.add_finalizer(_)\nend\n_\n"}}],"instance_methods":[],"macros":[],"types":[]},{"html_id":"ameba/Ameba/AST/Util","path":"Ameba/AST/Util.html","kind":"module","full_name":"Ameba::AST::Util","name":"Util","abstract":false,"superclass":null,"ancestors":[],"locations":[{"filename":"src/ameba/ast/util.cr","line_number":2,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/util.cr#L2"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[{"html_id":"ameba/Ameba/AST/Branchable","kind":"class","full_name":"Ameba::AST::Branchable","name":"Branchable"},{"html_id":"ameba/Ameba/AST/FlowExpression","kind":"class","full_name":"Ameba::AST::FlowExpression","name":"FlowExpression"},{"html_id":"ameba/Ameba/AST/FlowExpressionVisitor","kind":"class","full_name":"Ameba::AST::FlowExpressionVisitor","name":"FlowExpressionVisitor"},{"html_id":"ameba/Ameba/Rule/Lint/EmptyExpression","kind":"struct","full_name":"Ameba::Rule::Lint::EmptyExpression","name":"EmptyExpression"},{"html_id":"ameba/Ameba/Rule/Lint/EmptyLoop","kind":"struct","full_name":"Ameba::Rule::Lint::EmptyLoop","name":"EmptyLoop"},{"html_id":"ameba/Ameba/Rule/Lint/LiteralInCondition","kind":"struct","full_name":"Ameba::Rule::Lint::LiteralInCondition","name":"LiteralInCondition"},{"html_id":"ameba/Ameba/Rule/Lint/LiteralInInterpolation","kind":"struct","full_name":"Ameba::Rule::Lint::LiteralInInterpolation","name":"LiteralInInterpolation"},{"html_id":"ameba/Ameba/Rule/Lint/RedundantStringCoercion","kind":"struct","full_name":"Ameba::Rule::Lint::RedundantStringCoercion","name":"RedundantStringCoercion"},{"html_id":"ameba/Ameba/Rule/Lint/UnreachableCode","kind":"struct","full_name":"Ameba::Rule::Lint::UnreachableCode","name":"UnreachableCode"},{"html_id":"ameba/Ameba/Rule/Style/RedundantBegin","kind":"struct","full_name":"Ameba::Rule::Style::RedundantBegin","name":"RedundantBegin"}],"namespace":{"html_id":"ameba/Ameba/AST","kind":"module","full_name":"Ameba::AST","name":"AST"},"doc":"Utility module for Ameba's rules.","summary":"

    Utility module for Ameba's rules.

    ","class_methods":[],"constructors":[],"instance_methods":[{"id":"abort?(node)-instance-method","html_id":"abort?(node)-instance-method","name":"abort?","doc":"Returns true if node represents `abort` method call.","summary":"

    Returns true if node represents abort method call.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"args_string":"(node)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/util.cr#L141","def":{"name":"abort?","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"((node.is_a?(Crystal::Call) && (node.name == \"abort\")) && node.args.size <= 2) && node.obj.nil?"}},{"id":"exit?(node)-instance-method","html_id":"exit?(node)-instance-method","name":"exit?","doc":"Returns true if node represents `exit` method call.","summary":"

    Returns true if node represents exit method call.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"args_string":"(node)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/util.cr#L135","def":{"name":"exit?","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"((node.is_a?(Crystal::Call) && (node.name == \"exit\")) && node.args.size <= 1) && node.obj.nil?"}},{"id":"flow_command?(node,in_loop)-instance-method","html_id":"flow_command?(node,in_loop)-instance-method","name":"flow_command?","doc":"Returns true if node is a flow command, false - otherwise.\nNode represents a flow command if it is a control expression,\nor special call node that interrupts execution (i.e. raise, exit, abort).","summary":"

    Returns true if node is a flow command, false - otherwise.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""},{"name":"in_loop","doc":null,"default_value":"","external_name":"in_loop","restriction":""}],"args_string":"(node, in_loop)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/util.cr#L62","def":{"name":"flow_command?","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""},{"name":"in_loop","doc":null,"default_value":"","external_name":"in_loop","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"case node\nwhen Crystal::Return\n true\nwhen Crystal::Break, Crystal::Next\n in_loop\nwhen Crystal::Call\n ((raise?(node)) || (exit?(node))) || (abort?(node))\nelse\n false\nend"}},{"id":"flow_expression?(node,in_loop=false)-instance-method","html_id":"flow_expression?(node,in_loop=false)-instance-method","name":"flow_expression?","doc":"Returns true if node is a flow expression, false if not.\nNode represents a flow expression if it is full-filled by a flow command.\n\nFor example, this node is a flow expression, because each branch contains\na flow command `return`:\n\n```\nif a > 0\n return :positive\nelsif a < 0\n return :negative\nelse\n return :zero\nend\n```\n\nThis node is a not a flow expression:\n\n```\nif a > 0\n return :positive\nend\n```\n\nThat's because not all branches return(i.e. `else` is missing).\n","summary":"

    Returns true if node is a flow expression, false if not.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""},{"name":"in_loop","doc":null,"default_value":"false","external_name":"in_loop","restriction":""}],"args_string":"(node, in_loop = false)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/util.cr#L101","def":{"name":"flow_expression?","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""},{"name":"in_loop","doc":null,"default_value":"false","external_name":"in_loop","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if flow_command?(node, in_loop)\n return true\nend\ncase node\nwhen Crystal::If, Crystal::Unless\n flow_expressions?([node.then, node.else], in_loop)\nwhen Crystal::BinaryOp\n flow_expression?(node.left, in_loop)\nwhen Crystal::Case\n flow_expressions?([node.whens, node.else].flatten, in_loop)\nwhen Crystal::ExceptionHandler\n flow_expressions?([node.else || node.body, node.rescues].flatten, in_loop)\nwhen Crystal::While, Crystal::Until\n flow_expression?(node.body, in_loop)\nwhen Crystal::Rescue, Crystal::When\n flow_expression?(node.body, in_loop)\nwhen Crystal::Expressions\n node.expressions.any? do |exp|\n flow_expression?(exp, in_loop)\n end\nelse\n false\nend\n"}},{"id":"literal?(node)-instance-method","html_id":"literal?(node)-instance-method","name":"literal?","doc":"Returns true if current `node` is a literal, false otherwise.","summary":"

    Returns true if current node is a literal, false otherwise.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"args_string":"(node)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/util.cr#L4","def":{"name":"literal?","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"case node\nwhen Crystal::NilLiteral, Crystal::BoolLiteral, Crystal::NumberLiteral, Crystal::CharLiteral, Crystal::StringLiteral, Crystal::SymbolLiteral, Crystal::RegexLiteral, Crystal::ProcLiteral, Crystal::MacroLiteral\n true\nwhen Crystal::RangeLiteral\n (literal?(node.from)) && (literal?(node.to))\nwhen Crystal::ArrayLiteral, Crystal::TupleLiteral\n node.elements.all? do |el|\n literal?(el)\n end\nwhen Crystal::HashLiteral\n node.entries.all? do |entry|\n (literal?(entry.key)) && (literal?(entry.value))\n end\nwhen Crystal::NamedTupleLiteral\n node.entries.all? do |entry|\n literal?(entry.value)\n end\nelse\n false\nend"}},{"id":"loop?(node)-instance-method","html_id":"loop?(node)-instance-method","name":"loop?","doc":"Returns true if node represents a loop.","summary":"

    Returns true if node represents a loop.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"args_string":"(node)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/util.cr#L147","def":{"name":"loop?","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"case node\nwhen Crystal::While, Crystal::Until\n true\nwhen Crystal::Call\n ((node.name == \"loop\") && (node.args.size == 0)) && node.obj.nil?\nelse\n false\nend"}},{"id":"node_source(node,code_lines)-instance-method","html_id":"node_source(node,code_lines)-instance-method","name":"node_source","doc":"Returns a source code for the current node.\nThis method uses `node.location` and `node.end_location`\nto determine and cut a piece of source of the node.","summary":"

    Returns a source code for the current node.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""},{"name":"code_lines","doc":null,"default_value":"","external_name":"code_lines","restriction":""}],"args_string":"(node, code_lines)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/util.cr#L33","def":{"name":"node_source","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""},{"name":"code_lines","doc":null,"default_value":"","external_name":"code_lines","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"loc, end_loc = node.location, node.end_location\nif loc && end_loc\nelse\n return\nend\nline, column = loc.line_number - 1, loc.column_number - 1\nend_line, end_column = end_loc.line_number - 1, end_loc.column_number - 1\nnode_lines = code_lines[line..end_line]\nfirst_line, last_line = node_lines[0]?, node_lines[-1]?\nif first_line.nil? || last_line.nil?\n return\nend\nif first_line.size < column\n return\nend\nnode_lines[0] = first_line.sub(0...column, \"\")\nif line == end_line\n end_column = end_column - column\n last_line = node_lines[0]\nend\nif last_line.size < (end_column + 1)\n return\nend\nnode_lines[-1] = last_line.sub((end_column + 1)...last_line.size, \"\")\nnode_lines\n"}},{"id":"raise?(node)-instance-method","html_id":"raise?(node)-instance-method","name":"raise?","doc":"Returns true if node represents `raise` method call.","summary":"

    Returns true if node represents raise method call.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"args_string":"(node)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/util.cr#L129","def":{"name":"raise?","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"((node.is_a?(Crystal::Call) && (node.name == \"raise\")) && (node.args.size == 1)) && node.obj.nil?"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/AST/Variable","path":"Ameba/AST/Variable.html","kind":"class","full_name":"Ameba::AST::Variable","name":"Variable","abstract":false,"superclass":{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},"ancestors":[{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/ast/variabling/variable.cr","line_number":4,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/variabling/variable.cr#L4"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[{"html_id":"ameba/Ameba/AST/Reference","kind":"class","full_name":"Ameba::AST::Reference","name":"Reference"}],"including_types":[],"namespace":{"html_id":"ameba/Ameba/AST","kind":"module","full_name":"Ameba::AST","name":"AST"},"doc":"Represents the existence of the local variable.\nHolds the var node and variable assigments.","summary":"

    Represents the existence of the local variable.

    ","class_methods":[],"constructors":[{"id":"new(node,scope)-class-method","html_id":"new(node,scope)-class-method","name":"new","doc":"Creates a new variable(in the scope).\n\n```\nVariable.new(node, scope)\n```\n","summary":"

    Creates a new variable(in the scope).

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""},{"name":"scope","doc":null,"default_value":"","external_name":"scope","restriction":""}],"args_string":"(node, scope)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/variabling/variable.cr#L31","def":{"name":"new","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""},{"name":"scope","doc":null,"default_value":"","external_name":"scope","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"_ = allocate\n_.initialize(node, scope)\nif _.responds_to?(:finalize)\n ::GC.add_finalizer(_)\nend\n_\n"}}],"instance_methods":[{"id":"assign(node,scope)-instance-method","html_id":"assign(node,scope)-instance-method","name":"assign","doc":"Assigns the variable (creates a new assignment).\nVariable may have multiple assignments.\n\n```\nvariable = Variable.new(node, scope)\nvariable.assign(node1)\nvariable.assign(node2)\nvariable.assignment.size # => 2\n```\n","summary":"

    Assigns the variable (creates a new assignment).

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""},{"name":"scope","doc":null,"default_value":"","external_name":"scope","restriction":""}],"args_string":"(node, scope)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/variabling/variable.cr#L49","def":{"name":"assign","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""},{"name":"scope","doc":null,"default_value":"","external_name":"scope","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"assignments << (Assignment.new(node, self, scope))\nupdate_assign_reference!\n"}},{"id":"assign_before_reference:Crystal::ASTNode?-instance-method","html_id":"assign_before_reference:Crystal::ASTNode?-instance-method","name":"assign_before_reference","doc":"Node of the first assignment which can be available before any reference.","summary":"

    Node of the first assignment which can be available before any reference.

    ","abstract":false,"args":[],"args_string":" : Crystal::ASTNode?","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/variabling/variable.cr#L18","def":{"name":"assign_before_reference","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Crystal::ASTNode | ::Nil","visibility":"Public","body":"@assign_before_reference"}},{"id":"assignments:Array(Ameba::AST::Assignment)-instance-method","html_id":"assignments:Array(Ameba::AST::Assignment)-instance-method","name":"assignments","doc":"List of the assigments of this variable.","summary":"

    List of the assigments of this variable.

    ","abstract":false,"args":[],"args_string":" : Array(Ameba::AST::Assignment)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/variabling/variable.cr#L6","def":{"name":"assignments","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@assignments"}},{"id":"captured_by_block?(scope=@scope)-instance-method","html_id":"captured_by_block?(scope=@scope)-instance-method","name":"captured_by_block?","doc":"Returns true if the current var is referenced in\nin the block. For example this variable is captured\nby block:\n\n```\na = 1\n3.times { |i| a = a + i }\n```\n\nAnd this variable is not captured by block.\n\n```\ni = 1\n3.times { |i| i + 1 }\n```","summary":"

    Returns true if the current var is referenced in in the block.

    ","abstract":false,"args":[{"name":"scope","doc":null,"default_value":"@scope","external_name":"scope","restriction":""}],"args_string":"(scope = @scope)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/variabling/variable.cr#L114","def":{"name":"captured_by_block?","args":[{"name":"scope","doc":null,"default_value":"@scope","external_name":"scope","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"scope.inner_scopes.each do |inner_scope|\n if inner_scope.block? && (inner_scope.references?(self))\n return true\n end\n if captured_by_block?(inner_scope)\n return true\n end\nend\nfalse\n"}},{"id":"declared_before?(node)-instance-method","html_id":"declared_before?(node)-instance-method","name":"declared_before?","doc":"Returns true if the variable is delcared before the `node`.","summary":"

    Returns true if the variable is delcared before the #node.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"args_string":"(node)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/variabling/variable.cr#L160","def":{"name":"declared_before?","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"var_location, node_location = location, node.location\nif var_location.nil? || node_location.nil?\n return\nend\n(var_location.line_number < node_location.line_number) || ((var_location.line_number == node_location.line_number) && var_location.column_number < node_location.column_number)\n"}},{"id":"end_location(*args,**options)-instance-method","html_id":"end_location(*args,**options)-instance-method","name":"end_location","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/variabling/variable.cr#L21","def":{"name":"end_location","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.end_location(*args, **options)"}},{"id":"end_location(*args,**options,&)-instance-method","html_id":"end_location(*args,**options,&)-instance-method","name":"end_location","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options, &)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/variabling/variable.cr#L21","def":{"name":"end_location","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":1,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.end_location(*args, **options) do |*yield_args|\n yield *yield_args\nend"}},{"id":"eql?(node)-instance-method","html_id":"eql?(node)-instance-method","name":"eql?","doc":"Returns true if the `node` represents exactly\nthe same Crystal node as `@node`.","summary":"

    Returns true if the #node represents exactly the same Crystal node as @node.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"args_string":"(node)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/variabling/variable.cr#L153","def":{"name":"eql?","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"(node.is_a?(Crystal::Var) && (node.name == @node.name)) && (node.location == @node.location)"}},{"id":"ignored?-instance-method","html_id":"ignored?-instance-method","name":"ignored?","doc":"Returns true if the name starts with '_', false if not.","summary":"

    Returns true if the name starts with '_', false if not.

    ","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/variabling/variable.cr#L147","def":{"name":"ignored?","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"name.starts_with?('_')"}},{"id":"location(*args,**options)-instance-method","html_id":"location(*args,**options)-instance-method","name":"location","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/variabling/variable.cr#L20","def":{"name":"location","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.location(*args, **options)"}},{"id":"location(*args,**options,&)-instance-method","html_id":"location(*args,**options,&)-instance-method","name":"location","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options, &)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/variabling/variable.cr#L20","def":{"name":"location","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":1,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.location(*args, **options) do |*yield_args|\n yield *yield_args\nend"}},{"id":"name(*args,**options)-instance-method","html_id":"name(*args,**options)-instance-method","name":"name","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/variabling/variable.cr#L22","def":{"name":"name","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.name(*args, **options)"}},{"id":"name(*args,**options,&)-instance-method","html_id":"name(*args,**options,&)-instance-method","name":"name","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options, &)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/variabling/variable.cr#L22","def":{"name":"name","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":1,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.name(*args, **options) do |*yield_args|\n yield *yield_args\nend"}},{"id":"node:Crystal::Var-instance-method","html_id":"node:Crystal::Var-instance-method","name":"node","doc":"The actual var node.","summary":"

    The actual var node.

    ","abstract":false,"args":[],"args_string":" : Crystal::Var","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/variabling/variable.cr#L12","def":{"name":"node","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Crystal::Var","visibility":"Public","body":"@node"}},{"id":"reference(node:Crystal::Var,scope:Scope)-instance-method","html_id":"reference(node:Crystal::Var,scope:Scope)-instance-method","name":"reference","doc":"Creates a reference to this variable in some scope.\n\n```\nvariable = Variable.new(node, scope)\nvariable.reference(var_node, some_scope)\n```\n","summary":"

    Creates a reference to this variable in some scope.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Var"},{"name":"scope","doc":null,"default_value":"","external_name":"scope","restriction":"Scope"}],"args_string":"(node : Crystal::Var, scope : Scope)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/variabling/variable.cr#L73","def":{"name":"reference","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Var"},{"name":"scope","doc":null,"default_value":"","external_name":"scope","restriction":"Scope"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"(Reference.new(node, scope)).tap do |reference|\n references << reference\n scope.references << reference\nend"}},{"id":"reference_assignments!-instance-method","html_id":"reference_assignments!-instance-method","name":"reference_assignments!","doc":"Reference variable's assignments.\n\n```\nvariable = Variable.new(node, scope)\nvariable.assign(assign_node)\nvariable.reference_assignments!\n```","summary":"

    Reference variable's assignments.

    ","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/variabling/variable.cr#L87","def":{"name":"reference_assignments!","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"consumed_branches = Set(Branch).new\nassignments.reverse_each do |assignment|\n if consumed_branches.includes?(assignment.branch)\n next\n end\n assignment.referenced = true\n if assignment.branch\n else\n break\n end\n consumed_branches << assignment.branch.not_nil!\nend\n"}},{"id":"referenced?-instance-method","html_id":"referenced?-instance-method","name":"referenced?","doc":"Returns true if variable has any reference.\n\n```\nvariable = Variable.new(node, scope)\nvariable.reference(var_node)\nvariable.referenced? # => true\n```","summary":"

    Returns true if variable has any reference.

    ","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/variabling/variable.cr#L62","def":{"name":"referenced?","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"references.any?"}},{"id":"references:Array(Ameba::AST::Reference)-instance-method","html_id":"references:Array(Ameba::AST::Reference)-instance-method","name":"references","doc":"List of the references of this variable.","summary":"

    List of the references of this variable.

    ","abstract":false,"args":[],"args_string":" : Array(Ameba::AST::Reference)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/variabling/variable.cr#L9","def":{"name":"references","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@references"}},{"id":"scope:Scope-instance-method","html_id":"scope:Scope-instance-method","name":"scope","doc":"Scope of this variable.","summary":"

    Scope of this variable.

    ","abstract":false,"args":[],"args_string":" : Scope","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/variabling/variable.cr#L15","def":{"name":"scope","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Scope","visibility":"Public","body":"@scope"}},{"id":"special?-instance-method","html_id":"special?-instance-method","name":"special?","doc":"Returns true if it is a special variable, i.e `$?`.","summary":"

    Returns true if it is a special variable, i.e $?.

    ","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/variabling/variable.cr#L35","def":{"name":"special?","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.special_var?"}},{"id":"target_of?(assign)-instance-method","html_id":"target_of?(assign)-instance-method","name":"target_of?","doc":"Returns true if the variable is a target (on the left) of the assignment,\nfalse otherwise.","summary":"

    Returns true if the variable is a target (on the left) of the assignment, false otherwise.

    ","abstract":false,"args":[{"name":"assign","doc":null,"default_value":"","external_name":"assign","restriction":""}],"args_string":"(assign)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/variabling/variable.cr#L135","def":{"name":"target_of?","args":[{"name":"assign","doc":null,"default_value":"","external_name":"assign","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"case assign\nwhen Crystal::Assign\n eql?(assign.target)\nwhen Crystal::OpAssign\n eql?(assign.target)\nwhen Crystal::MultiAssign\n assign.targets.any? do |t|\n eql?(t)\n end\nwhen Crystal::UninitializedVar\n eql?(assign.var)\nelse\n false\nend"}},{"id":"to_s(*args,**options)-instance-method","html_id":"to_s(*args,**options)-instance-method","name":"to_s","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/variabling/variable.cr#L23","def":{"name":"to_s","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.to_s(*args, **options)"}},{"id":"to_s(*args,**options,&)-instance-method","html_id":"to_s(*args,**options,&)-instance-method","name":"to_s","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options, &)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/variabling/variable.cr#L23","def":{"name":"to_s","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":1,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.to_s(*args, **options) do |*yield_args|\n yield *yield_args\nend"}},{"id":"used_in_macro?(scope=@scope)-instance-method","html_id":"used_in_macro?(scope=@scope)-instance-method","name":"used_in_macro?","doc":"Returns true if current variable potentially referenced in a macro literal,\nfalse if not.","summary":"

    Returns true if current variable potentially referenced in a macro literal, false if not.

    ","abstract":false,"args":[{"name":"scope","doc":null,"default_value":"@scope","external_name":"scope","restriction":""}],"args_string":"(scope = @scope)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/variabling/variable.cr#L125","def":{"name":"used_in_macro?","args":[{"name":"scope","doc":null,"default_value":"@scope","external_name":"scope","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"scope.inner_scopes.each do |inner_scope|\n if (MacroLiteralFinder.new(inner_scope.node)).references?(node)\n return true\n end\nend\nif (outer_scope = scope.outer_scope) && (used_in_macro?(outer_scope))\n return true\nend\nfalse\n"}}],"macros":[],"types":[]}]},{"html_id":"ameba/Ameba/Config","path":"Ameba/Config.html","kind":"class","full_name":"Ameba::Config","name":"Config","abstract":false,"superclass":{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},"ancestors":[{"html_id":"ameba/Ameba/GlobUtils","kind":"module","full_name":"Ameba::GlobUtils","name":"GlobUtils"},{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/config.cr","line_number":15,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/config.cr#L15"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"AVAILABLE_FORMATTERS","name":"AVAILABLE_FORMATTERS","value":"{progress: Formatter::DotFormatter, todo: Formatter::TODOFormatter, flycheck: Formatter::FlycheckFormatter, silent: Formatter::BaseFormatter, disabled: Formatter::DisabledFormatter, json: Formatter::JSONFormatter}","doc":null,"summary":null},{"id":"DEFAULT_GLOBS","name":"DEFAULT_GLOBS","value":"[\"**/*.cr\", \"!lib\"] of ::String","doc":null,"summary":null},{"id":"PATH","name":"PATH","value":"\".ameba.yml\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/Ameba/GlobUtils","kind":"module","full_name":"Ameba::GlobUtils","name":"GlobUtils"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba","kind":"module","full_name":"Ameba","name":"Ameba"},"doc":"A configuration entry for `Ameba::Runner`.\n\nConfig can be loaded from configuration YAML file and adjusted.\n\n```\nconfig = Config.load\nconfig.formatter = my_formatter\n```\n\nBy default config loads `.ameba.yml` file in a current directory.\n","summary":"

    A configuration entry for Ameba::Runner.

    ","class_methods":[{"id":"formatter_names-class-method","html_id":"formatter_names-class-method","name":"formatter_names","doc":null,"summary":null,"abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/config.cr#L86","def":{"name":"formatter_names","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"AVAILABLE_FORMATTERS.keys.join(\"|\")"}},{"id":"load(path=PATH,colors=true)-class-method","html_id":"load(path=PATH,colors=true)-class-method","name":"load","doc":"Loads YAML configuration file by `path`.\n\n```\nconfig = Ameba::Config.load\n```\n","summary":"

    Loads YAML configuration file by path.

    ","abstract":false,"args":[{"name":"path","doc":null,"default_value":"PATH","external_name":"path","restriction":""},{"name":"colors","doc":null,"default_value":"true","external_name":"colors","restriction":""}],"args_string":"(path = PATH, colors = true)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/config.cr#L78","def":{"name":"load","args":[{"name":"path","doc":null,"default_value":"PATH","external_name":"path","restriction":""},{"name":"colors","doc":null,"default_value":"true","external_name":"colors","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"begin\n Colorize.enabled = colors\n content = File.exists?(path) ? File.read(path) : \"{}\"\n Config.new(YAML.parse(content))\nrescue e\n raise(\"Config file is invalid: #{e.message}\")\nend"}}],"constructors":[],"instance_methods":[{"id":"excluded:Array(String)-instance-method","html_id":"excluded:Array(String)-instance-method","name":"excluded","doc":"Represents a list of paths to exclude from globs.\nCan have wildcards.\n\n```\nconfig = Ameba::Config.load\nconfig.excluded = [\"spec\", \"src/server/*.cr\"]\n```","summary":"

    Represents a list of paths to exclude from globs.

    ","abstract":false,"args":[],"args_string":" : Array(String)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/config.cr#L56","def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String)","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String))-instance-method","html_id":"excluded=(excluded:Array(String))-instance-method","name":"excluded=","doc":"Represents a list of paths to exclude from globs.\nCan have wildcards.\n\n```\nconfig = Ameba::Config.load\nconfig.excluded = [\"spec\", \"src/server/*.cr\"]\n```","summary":"

    Represents a list of paths to exclude from globs.

    ","abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String)"}],"args_string":"(excluded : Array(String))","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/config.cr#L56","def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String)"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"formatter-instance-method","html_id":"formatter-instance-method","name":"formatter","doc":"Returns a formatter to be used while inspecting files.\nIf formatter is not set, it will return default formatter.\n\n```\nconfig = Ameba::Config.load\nconfig.formatter = custom_formatter\nconfig.formatter\n```\n","summary":"

    Returns a formatter to be used while inspecting files.

    ","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/config.cr#L114","def":{"name":"formatter","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@formatter || (@formatter = Formatter::DotFormatter.new)"}},{"id":"formatter=(formatter:Formatter::BaseFormatter?)-instance-method","html_id":"formatter=(formatter:Formatter::BaseFormatter?)-instance-method","name":"formatter=","doc":null,"summary":null,"abstract":false,"args":[{"name":"formatter","doc":null,"default_value":"","external_name":"formatter","restriction":"Formatter::BaseFormatter | ::Nil"}],"args_string":"(formatter : Formatter::BaseFormatter?)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/config.cr#L34","def":{"name":"formatter=","args":[{"name":"formatter","doc":null,"default_value":"","external_name":"formatter","restriction":"Formatter::BaseFormatter | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@formatter = formatter"}},{"id":"formatter=(name:String|Symbol)-instance-method","html_id":"formatter=(name:String|Symbol)-instance-method","name":"formatter=","doc":"Sets formatter by name.\n\n```\nconfig = Ameba::Config.load\nconfig.formatter = :progress\n```\n","summary":"

    Sets formatter by name.

    ","abstract":false,"args":[{"name":"name","doc":null,"default_value":"","external_name":"name","restriction":"String | Symbol"}],"args_string":"(name : String | Symbol)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/config.cr#L125","def":{"name":"formatter=","args":[{"name":"name","doc":null,"default_value":"","external_name":"name","restriction":"String | Symbol"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if f = AVAILABLE_FORMATTERS[name]?\n @formatter = f.new\nelse\n raise(\"Unknown formatter `#{name}`. Use one of #{Config.formatter_names}.\")\nend"}},{"id":"globs:Array(String)-instance-method","html_id":"globs:Array(String)-instance-method","name":"globs","doc":"Returns a list of paths (with wildcards) to files.\nRepresents a list of sources to be inspected.\nIf globs are not set, it will return default list of files.\n\n```\nconfig = Ameba::Config.load\nconfig.globs = [\"**/*.cr\"]\nconfig.globs\n```","summary":"

    Returns a list of paths (with wildcards) to files.

    ","abstract":false,"args":[],"args_string":" : Array(String)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/config.cr#L47","def":{"name":"globs","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String)","visibility":"Public","body":"@globs"}},{"id":"globs=(globs:Array(String))-instance-method","html_id":"globs=(globs:Array(String))-instance-method","name":"globs=","doc":"Returns a list of paths (with wildcards) to files.\nRepresents a list of sources to be inspected.\nIf globs are not set, it will return default list of files.\n\n```\nconfig = Ameba::Config.load\nconfig.globs = [\"**/*.cr\"]\nconfig.globs\n```","summary":"

    Returns a list of paths (with wildcards) to files.

    ","abstract":false,"args":[{"name":"globs","doc":null,"default_value":"","external_name":"globs","restriction":"Array(String)"}],"args_string":"(globs : Array(String))","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/config.cr#L47","def":{"name":"globs=","args":[{"name":"globs","doc":null,"default_value":"","external_name":"globs","restriction":"Array(String)"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@globs = globs"}},{"id":"rules:Array(Rule::Base)-instance-method","html_id":"rules:Array(Rule::Base)-instance-method","name":"rules","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(Rule::Base)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/config.cr#L35","def":{"name":"rules","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(Rule::Base)","visibility":"Public","body":"@rules"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/config.cr#L36","def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/config.cr#L36","def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"sources-instance-method","html_id":"sources-instance-method","name":"sources","doc":"Returns a list of sources matching globs and excluded sections.\n\n```\nconfig = Ameba::Config.load\nconfig.sources # => list of default sources\nconfig.globs = [\"**/*.cr\"]\nconfig.excluded = [\"spec\"]\nconfig.sources # => list of sources pointing to files found by the wildcards\n```\n","summary":"

    Returns a list of sources matching globs and excluded sections.

    ","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/config.cr#L100","def":{"name":"sources","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"((find_files_by_globs(globs)) - (find_files_by_globs(excluded))).map do |path|\n Source.new(File.read(path), path)\nend"}},{"id":"update_rule(name,enabled=true,excluded=nil)-instance-method","html_id":"update_rule(name,enabled=true,excluded=nil)-instance-method","name":"update_rule","doc":"Updates rule properties.\n\n```\nconfig = Ameba::Config.load\nconfig.update_rule \"MyRuleName\", enabled: false\n```\n","summary":"

    Updates rule properties.

    ","abstract":false,"args":[{"name":"name","doc":null,"default_value":"","external_name":"name","restriction":""},{"name":"enabled","doc":null,"default_value":"true","external_name":"enabled","restriction":""},{"name":"excluded","doc":null,"default_value":"nil","external_name":"excluded","restriction":""}],"args_string":"(name, enabled = true, excluded = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/config.cr#L140","def":{"name":"update_rule","args":[{"name":"name","doc":null,"default_value":"","external_name":"name","restriction":""},{"name":"enabled","doc":null,"default_value":"true","external_name":"enabled","restriction":""},{"name":"excluded","doc":null,"default_value":"nil","external_name":"excluded","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"index = @rules.index do |r|\n r.name == name\nend\nif index\nelse\n raise(ArgumentError.new(\"Rule `#{name}` does not exist\"))\nend\nrule = @rules[index]\nrule.enabled = enabled\nrule.excluded = excluded\n@rules[index] = rule\n"}},{"id":"update_rules(names,**args)-instance-method","html_id":"update_rules(names,**args)-instance-method","name":"update_rules","doc":"Updates rules properties.\n\n```\nconfig = Ameba::Config.load\nconfig.update_rules %w(Rule1 Rule2), enabled: true\n```\n\nalso it allows to update groups of rules:\n\n```\nconfig.update_rules %w(Group1 Group2), enabled: true\n```\n","summary":"

    Updates rules properties.

    ","abstract":false,"args":[{"name":"names","doc":null,"default_value":"","external_name":"names","restriction":""}],"args_string":"(names, **args)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/config.cr#L163","def":{"name":"update_rules","args":[{"name":"names","doc":null,"default_value":"","external_name":"names","restriction":""}],"double_splat":{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""},"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"names.try(&.each do |name|\n if group = @rule_groups[name]?\n group.each do |rule|\n update_rule(rule.name, **args)\n end\n else\n update_rule(name, **args)\n end\nend)"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Formatter","path":"Ameba/Formatter.html","kind":"module","full_name":"Ameba::Formatter","name":"Formatter","abstract":false,"superclass":null,"ancestors":[],"locations":[{"filename":"src/ameba/formatter/base_formatter.cr","line_number":4,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/formatter/base_formatter.cr#L4"},{"filename":"src/ameba/formatter/disabled_formatter.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/formatter/disabled_formatter.cr#L1"},{"filename":"src/ameba/formatter/dot_formatter.cr","line_number":3,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/formatter/dot_formatter.cr#L3"},{"filename":"src/ameba/formatter/explain_formatter.cr","line_number":3,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/formatter/explain_formatter.cr#L3"},{"filename":"src/ameba/formatter/flycheck_formatter.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/formatter/flycheck_formatter.cr#L1"},{"filename":"src/ameba/formatter/json_formatter.cr","line_number":3,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/formatter/json_formatter.cr#L3"},{"filename":"src/ameba/formatter/todo_formatter.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/formatter/todo_formatter.cr#L1"},{"filename":"src/ameba/formatter/util.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/formatter/util.cr#L1"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba","kind":"module","full_name":"Ameba","name":"Ameba"},"doc":"A module that utilizes Ameba's formatters.","summary":"

    A module that utilizes Ameba's formatters.

    ","class_methods":[],"constructors":[],"instance_methods":[],"macros":[],"types":[{"html_id":"ameba/Ameba/Formatter/BaseFormatter","path":"Ameba/Formatter/BaseFormatter.html","kind":"class","full_name":"Ameba::Formatter::BaseFormatter","name":"BaseFormatter","abstract":false,"superclass":{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},"ancestors":[{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/formatter/base_formatter.cr","line_number":8,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/formatter/base_formatter.cr#L8"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[{"html_id":"ameba/Ameba/Formatter/DisabledFormatter","kind":"class","full_name":"Ameba::Formatter::DisabledFormatter","name":"DisabledFormatter"},{"html_id":"ameba/Ameba/Formatter/DotFormatter","kind":"class","full_name":"Ameba::Formatter::DotFormatter","name":"DotFormatter"},{"html_id":"ameba/Ameba/Formatter/FlycheckFormatter","kind":"class","full_name":"Ameba::Formatter::FlycheckFormatter","name":"FlycheckFormatter"},{"html_id":"ameba/Ameba/Formatter/JSONFormatter","kind":"class","full_name":"Ameba::Formatter::JSONFormatter","name":"JSONFormatter"}],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Formatter","kind":"module","full_name":"Ameba::Formatter","name":"Formatter"},"doc":"A base formatter for all formatters. It uses `output` IO\nto report results and also implements stub methods for\ncallbacks in `Ameba::Runner#run` method.","summary":"

    A base formatter for all formatters.

    ","class_methods":[],"constructors":[{"id":"new(output=STDOUT)-class-method","html_id":"new(output=STDOUT)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"output","doc":null,"default_value":"STDOUT","external_name":"output","restriction":""}],"args_string":"(output = STDOUT)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/formatter/base_formatter.cr#L13","def":{"name":"new","args":[{"name":"output","doc":null,"default_value":"STDOUT","external_name":"output","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"_ = allocate\n_.initialize(output)\nif _.responds_to?(:finalize)\n ::GC.add_finalizer(_)\nend\n_\n"}}],"instance_methods":[{"id":"config:Hash(Symbol,Bool|String)-instance-method","html_id":"config:Hash(Symbol,Bool|String)-instance-method","name":"config","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Hash(Symbol, Bool | String)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/formatter/base_formatter.cr#L11","def":{"name":"config","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@config"}},{"id":"finished(sources)-instance-method","html_id":"finished(sources)-instance-method","name":"finished","doc":"Callback that indicates when inspection is finished.\nA list of inspected sources is passed as an argument.","summary":"

    Callback that indicates when inspection is finished.

    ","abstract":false,"args":[{"name":"sources","doc":null,"default_value":"","external_name":"sources","restriction":""}],"args_string":"(sources)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/formatter/base_formatter.cr#L30","def":{"name":"finished","args":[{"name":"sources","doc":null,"default_value":"","external_name":"sources","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":""}},{"id":"output:IO::FileDescriptor|IO::Memory-instance-method","html_id":"output:IO::FileDescriptor|IO::Memory-instance-method","name":"output","doc":"TODO: allow other IOs","summary":"

    TODO allow other IOs

    ","abstract":false,"args":[],"args_string":" : IO::FileDescriptor | IO::Memory","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/formatter/base_formatter.cr#L10","def":{"name":"output","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"IO::FileDescriptor | IO::Memory","visibility":"Public","body":"@output"}},{"id":"source_finished(source:Source)-instance-method","html_id":"source_finished(source:Source)-instance-method","name":"source_finished","doc":"Callback that indicates when source inspection is finished.\nA corresponding source is passed as an argument.","summary":"

    Callback that indicates when source inspection is finished.

    ","abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":"Source"}],"args_string":"(source : Source)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/formatter/base_formatter.cr#L22","def":{"name":"source_finished","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":"Source"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":""}},{"id":"source_started(source:Source)-instance-method","html_id":"source_started(source:Source)-instance-method","name":"source_started","doc":"Callback that indicates when source inspection is finished.\nA corresponding source is passed as an argument.","summary":"

    Callback that indicates when source inspection is finished.

    ","abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":"Source"}],"args_string":"(source : Source)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/formatter/base_formatter.cr#L26","def":{"name":"source_started","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":"Source"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":""}},{"id":"started(sources)-instance-method","html_id":"started(sources)-instance-method","name":"started","doc":"Callback that indicates when inspecting is started.\nA list of sources to inspect is passed as an argument.","summary":"

    Callback that indicates when inspecting is started.

    ","abstract":false,"args":[{"name":"sources","doc":null,"default_value":"","external_name":"sources","restriction":""}],"args_string":"(sources)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/formatter/base_formatter.cr#L18","def":{"name":"started","args":[{"name":"sources","doc":null,"default_value":"","external_name":"sources","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":""}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Formatter/DisabledFormatter","path":"Ameba/Formatter/DisabledFormatter.html","kind":"class","full_name":"Ameba::Formatter::DisabledFormatter","name":"DisabledFormatter","abstract":false,"superclass":{"html_id":"ameba/Ameba/Formatter/BaseFormatter","kind":"class","full_name":"Ameba::Formatter::BaseFormatter","name":"BaseFormatter"},"ancestors":[{"html_id":"ameba/Ameba/Formatter/BaseFormatter","kind":"class","full_name":"Ameba::Formatter::BaseFormatter","name":"BaseFormatter"},{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/formatter/disabled_formatter.cr","line_number":3,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/formatter/disabled_formatter.cr#L3"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Formatter","kind":"module","full_name":"Ameba::Formatter","name":"Formatter"},"doc":"A formatter that shows all disabled lines by inline directives.","summary":"

    A formatter that shows all disabled lines by inline directives.

    ","class_methods":[],"constructors":[],"instance_methods":[{"id":"finished(sources)-instance-method","html_id":"finished(sources)-instance-method","name":"finished","doc":"Callback that indicates when inspection is finished.\nA list of inspected sources is passed as an argument.","summary":"

    Callback that indicates when inspection is finished.

    ","abstract":false,"args":[{"name":"sources","doc":null,"default_value":"","external_name":"sources","restriction":""}],"args_string":"(sources)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/formatter/disabled_formatter.cr#L4","def":{"name":"finished","args":[{"name":"sources","doc":null,"default_value":"","external_name":"sources","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"output << \"Disabled rules using inline directives: \\n\\n\"\nsources.each do |source|\n source.issues.select(&.disabled?).each do |e|\n if loc = e.location\n output << (\"#{source.path}:#{loc.line_number}\".colorize(:cyan))\n output << \" #{e.rule.name}\\n\"\n end\n end\nend\n"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Formatter/DotFormatter","path":"Ameba/Formatter/DotFormatter.html","kind":"class","full_name":"Ameba::Formatter::DotFormatter","name":"DotFormatter","abstract":false,"superclass":{"html_id":"ameba/Ameba/Formatter/BaseFormatter","kind":"class","full_name":"Ameba::Formatter::BaseFormatter","name":"BaseFormatter"},"ancestors":[{"html_id":"ameba/Ameba/Formatter/Util","kind":"module","full_name":"Ameba::Formatter::Util","name":"Util"},{"html_id":"ameba/Ameba/Formatter/BaseFormatter","kind":"class","full_name":"Ameba::Formatter::BaseFormatter","name":"BaseFormatter"},{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/formatter/dot_formatter.cr","line_number":6,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/formatter/dot_formatter.cr#L6"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[{"html_id":"ameba/Ameba/Formatter/Util","kind":"module","full_name":"Ameba::Formatter::Util","name":"Util"}],"extended_modules":[],"subclasses":[{"html_id":"ameba/Ameba/Formatter/TODOFormatter","kind":"class","full_name":"Ameba::Formatter::TODOFormatter","name":"TODOFormatter"}],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Formatter","kind":"module","full_name":"Ameba::Formatter","name":"Formatter"},"doc":"A formatter that shows a progress of inspection in a terminal using dots.\nIt is similar to Crystal's dot formatter for specs.","summary":"

    A formatter that shows a progress of inspection in a terminal using dots.

    ","class_methods":[],"constructors":[],"instance_methods":[{"id":"finished(sources)-instance-method","html_id":"finished(sources)-instance-method","name":"finished","doc":"Reports a message when inspection is finished.","summary":"

    Reports a message when inspection is finished.

    ","abstract":false,"args":[{"name":"sources","doc":null,"default_value":"","external_name":"sources","restriction":""}],"args_string":"(sources)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/formatter/dot_formatter.cr#L26","def":{"name":"finished","args":[{"name":"sources","doc":null,"default_value":"","external_name":"sources","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"output.flush\noutput << \"\\n\\n\"\nshow_affected_code = !config[:without_affected_code]?\nfailed_sources = sources.reject(&.valid?)\nfailed_sources.each do |source|\n source.issues.each do |issue|\n if issue.disabled?\n next\n end\n if ( location = issue.location).nil?\n next\n end\n output << (\"#{location}\\n\".colorize(:cyan))\n output << (\"[#{issue.rule.severity.symbol}] #{issue.rule.name}: #{issue.message}\\n\".colorize(:red))\n if show_affected_code && (code = affected_code(source, location))\n output << (code.colorize(:default))\n end\n output << \"\\n\"\n end\nend\noutput << (finished_in_message(@started_at, Time.utc))\noutput << (final_message(sources, failed_sources))\n"}},{"id":"source_finished(source:Source)-instance-method","html_id":"source_finished(source:Source)-instance-method","name":"source_finished","doc":"Reports a result of the inspection of a corresponding source.","summary":"

    Reports a result of the inspection of a corresponding source.

    ","abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":"Source"}],"args_string":"(source : Source)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/formatter/dot_formatter.cr#L20","def":{"name":"source_finished","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":"Source"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"sym = source.valid? ? \".\".colorize(:green) : \"F\".colorize(:red)\n@mutex.synchronize do\n output << sym\nend\n"}},{"id":"started(sources)-instance-method","html_id":"started(sources)-instance-method","name":"started","doc":"Reports a message when inspection is started.","summary":"

    Reports a message when inspection is started.

    ","abstract":false,"args":[{"name":"sources","doc":null,"default_value":"","external_name":"sources","restriction":""}],"args_string":"(sources)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/formatter/dot_formatter.cr#L13","def":{"name":"started","args":[{"name":"sources","doc":null,"default_value":"","external_name":"sources","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@started_at = Time.utc\noutput << (started_message(sources.size))\n"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Formatter/ExplainFormatter","path":"Ameba/Formatter/ExplainFormatter.html","kind":"class","full_name":"Ameba::Formatter::ExplainFormatter","name":"ExplainFormatter","abstract":false,"superclass":{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},"ancestors":[{"html_id":"ameba/Ameba/Formatter/Util","kind":"module","full_name":"Ameba::Formatter::Util","name":"Util"},{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/formatter/explain_formatter.cr","line_number":6,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/formatter/explain_formatter.cr#L6"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"HEADING","name":"HEADING","value":"\"## \"","doc":null,"summary":null},{"id":"LINE_BREAK","name":"LINE_BREAK","value":"\"\\n\"","doc":null,"summary":null},{"id":"PREFIX","name":"PREFIX","value":"\" \"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/Ameba/Formatter/Util","kind":"module","full_name":"Ameba::Formatter::Util","name":"Util"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Formatter","kind":"module","full_name":"Ameba::Formatter","name":"Formatter"},"doc":"A formatter that shows the detailed explanation of the issue at\na specific location.","summary":"

    A formatter that shows the detailed explanation of the issue at a specific location.

    ","class_methods":[],"constructors":[{"id":"new(output,loc)-class-method","html_id":"new(output,loc)-class-method","name":"new","doc":"Creates a new instance of ExplainFormatter.\nAccepts *output* which indicates the io where the explanation will be wrtitten to.\nSecond argument is *location* which indicates the location to explain.\n\n```\nExplainFormatter.new output,\n {file: path, line: line_number, column: column_number}\n```\n","summary":"

    Creates a new instance of ExplainFormatter.

    ","abstract":false,"args":[{"name":"output","doc":null,"default_value":"","external_name":"output","restriction":""},{"name":"loc","doc":null,"default_value":"","external_name":"loc","restriction":""}],"args_string":"(output, loc)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/formatter/explain_formatter.cr#L25","def":{"name":"new","args":[{"name":"output","doc":null,"default_value":"","external_name":"output","restriction":""},{"name":"loc","doc":null,"default_value":"","external_name":"loc","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"_ = allocate\n_.initialize(output, loc)\nif _.responds_to?(:finalize)\n ::GC.add_finalizer(_)\nend\n_\n"}}],"instance_methods":[{"id":"finished(sources)-instance-method","html_id":"finished(sources)-instance-method","name":"finished","doc":"Reports the explainations at the *@location*.","summary":"

    Reports the explainations at the @location.

    ","abstract":false,"args":[{"name":"sources","doc":null,"default_value":"","external_name":"sources","restriction":""}],"args_string":"(sources)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/formatter/explain_formatter.cr#L30","def":{"name":"finished","args":[{"name":"sources","doc":null,"default_value":"","external_name":"sources","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"source = sources.find do |s|\n s.path == @location.filename\nend\nif source\nelse\n return\nend\nsource.issues.each do |issue|\n if ((location = issue.location) && (location.line_number == @location.line_number)) && (location.column_number == @location.column_number)\n explain(source, issue)\n end\nend\n"}},{"id":"location:Crystal::Location-instance-method","html_id":"location:Crystal::Location-instance-method","name":"location","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Crystal::Location","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/formatter/explain_formatter.cr#L14","def":{"name":"location","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Crystal::Location","visibility":"Public","body":"@location"}},{"id":"output:IO::FileDescriptor|IO::Memory-instance-method","html_id":"output:IO::FileDescriptor|IO::Memory-instance-method","name":"output","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : IO::FileDescriptor | IO::Memory","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/formatter/explain_formatter.cr#L13","def":{"name":"output","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"IO::FileDescriptor | IO::Memory","visibility":"Public","body":"@output"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Formatter/FlycheckFormatter","path":"Ameba/Formatter/FlycheckFormatter.html","kind":"class","full_name":"Ameba::Formatter::FlycheckFormatter","name":"FlycheckFormatter","abstract":false,"superclass":{"html_id":"ameba/Ameba/Formatter/BaseFormatter","kind":"class","full_name":"Ameba::Formatter::BaseFormatter","name":"BaseFormatter"},"ancestors":[{"html_id":"ameba/Ameba/Formatter/BaseFormatter","kind":"class","full_name":"Ameba::Formatter::BaseFormatter","name":"BaseFormatter"},{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/formatter/flycheck_formatter.cr","line_number":2,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/formatter/flycheck_formatter.cr#L2"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Formatter","kind":"module","full_name":"Ameba::Formatter","name":"Formatter"},"doc":null,"summary":null,"class_methods":[],"constructors":[],"instance_methods":[{"id":"source_finished(source:Source)-instance-method","html_id":"source_finished(source:Source)-instance-method","name":"source_finished","doc":"Callback that indicates when source inspection is finished.\nA corresponding source is passed as an argument.","summary":"

    Callback that indicates when source inspection is finished.

    ","abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":"Source"}],"args_string":"(source : Source)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/formatter/flycheck_formatter.cr#L5","def":{"name":"source_finished","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":"Source"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"source.issues.each do |e|\n if e.disabled?\n next\n end\n if loc = e.location\n @mutex.synchronize do\n output.printf(\"%s:%d:%d: %s: [%s] %s\\n\", source.path, loc.line_number, loc.column_number, e.rule.severity.symbol, e.rule.name, e.message.gsub(\"\\n\", \" \"))\n end\n end\nend"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Formatter/JSONFormatter","path":"Ameba/Formatter/JSONFormatter.html","kind":"class","full_name":"Ameba::Formatter::JSONFormatter","name":"JSONFormatter","abstract":false,"superclass":{"html_id":"ameba/Ameba/Formatter/BaseFormatter","kind":"class","full_name":"Ameba::Formatter::BaseFormatter","name":"BaseFormatter"},"ancestors":[{"html_id":"ameba/Ameba/Formatter/BaseFormatter","kind":"class","full_name":"Ameba::Formatter::BaseFormatter","name":"BaseFormatter"},{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/formatter/json_formatter.cr","line_number":66,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/formatter/json_formatter.cr#L66"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Formatter","kind":"module","full_name":"Ameba::Formatter","name":"Formatter"},"doc":"A formatter that produces the result in a json format.\n\nExample:\n\n```\n{\n \"metadata\": {\n \"ameba_version\": \"x.x.x\",\n \"crystal_version\": \"x.x.x\",\n },\n \"sources\": [\n {\n \"issues\": [\n {\n \"location\": {\n \"column\": 7,\n \"line\": 17,\n },\n \"end_location\": {\n \"column\": 20,\n \"line\": 17,\n },\n \"message\": \"Useless assignment to variable `a`\",\n \"rule_name\": \"UselessAssign\",\n \"severity\": \"Convention\",\n },\n {\n \"location\": {\n \"column\": 7,\n \"line\": 18,\n },\n \"end_location\": {\n \"column\": 8,\n \"line\": 18,\n },\n \"message\": \"Useless assignment to variable `a`\",\n \"rule_name\": \"UselessAssign\",\n },\n {\n \"location\": {\n \"column\": 7,\n \"line\": 19,\n },\n \"end_location\": {\n \"column\": 9,\n \"line\": 19,\n },\n \"message\": \"Useless assignment to variable `a`\",\n \"rule_name\": \"UselessAssign\",\n \"severity\": \"Convention\",\n },\n ],\n \"path\": \"src/ameba/formatter/json_formatter.cr\",\n },\n ],\n \"summary\": {\n \"issues_count\": 3,\n \"target_sources_count\": 1,\n },\n}\n```\n","summary":"

    A formatter that produces the result in a json format.

    ","class_methods":[],"constructors":[{"id":"new(output=STDOUT)-class-method","html_id":"new(output=STDOUT)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"output","doc":null,"default_value":"STDOUT","external_name":"output","restriction":""}],"args_string":"(output = STDOUT)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/formatter/json_formatter.cr#L67","def":{"name":"new","args":[{"name":"output","doc":null,"default_value":"STDOUT","external_name":"output","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"_ = allocate\n_.initialize(output)\nif _.responds_to?(:finalize)\n ::GC.add_finalizer(_)\nend\n_\n"}}],"instance_methods":[{"id":"finished(sources)-instance-method","html_id":"finished(sources)-instance-method","name":"finished","doc":"Callback that indicates when inspection is finished.\nA list of inspected sources is passed as an argument.","summary":"

    Callback that indicates when inspection is finished.

    ","abstract":false,"args":[{"name":"sources","doc":null,"default_value":"","external_name":"sources","restriction":""}],"args_string":"(sources)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/formatter/json_formatter.cr#L87","def":{"name":"finished","args":[{"name":"sources","doc":null,"default_value":"","external_name":"sources","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@result.to_json(@output)"}},{"id":"source_finished(source:Source)-instance-method","html_id":"source_finished(source:Source)-instance-method","name":"source_finished","doc":"Callback that indicates when source inspection is finished.\nA corresponding source is passed as an argument.","summary":"

    Callback that indicates when source inspection is finished.

    ","abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":"Source"}],"args_string":"(source : Source)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/formatter/json_formatter.cr#L75","def":{"name":"source_finished","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":"Source"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"json_source = AsJSON::Source.new(source.path)\nsource.issues.each do |e|\n if e.disabled?\n next\n end\n json_source.issues << (AsJSON::Issue.new(e.rule.name, e.rule.severity.to_s, e.location, e.end_location, e.message))\n __temp_28 = @result.summary\n __temp_28.issues_count = __temp_28.issues_count + 1\nend\n@result.sources << json_source\n"}},{"id":"started(sources)-instance-method","html_id":"started(sources)-instance-method","name":"started","doc":"Callback that indicates when inspecting is started.\nA list of sources to inspect is passed as an argument.","summary":"

    Callback that indicates when inspecting is started.

    ","abstract":false,"args":[{"name":"sources","doc":null,"default_value":"","external_name":"sources","restriction":""}],"args_string":"(sources)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/formatter/json_formatter.cr#L71","def":{"name":"started","args":[{"name":"sources","doc":null,"default_value":"","external_name":"sources","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@result.summary.target_sources_count = sources.size"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Formatter/TODOFormatter","path":"Ameba/Formatter/TODOFormatter.html","kind":"class","full_name":"Ameba::Formatter::TODOFormatter","name":"TODOFormatter","abstract":false,"superclass":{"html_id":"ameba/Ameba/Formatter/DotFormatter","kind":"class","full_name":"Ameba::Formatter::DotFormatter","name":"DotFormatter"},"ancestors":[{"html_id":"ameba/Ameba/Formatter/DotFormatter","kind":"class","full_name":"Ameba::Formatter::DotFormatter","name":"DotFormatter"},{"html_id":"ameba/Ameba/Formatter/Util","kind":"module","full_name":"Ameba::Formatter::Util","name":"Util"},{"html_id":"ameba/Ameba/Formatter/BaseFormatter","kind":"class","full_name":"Ameba::Formatter::BaseFormatter","name":"BaseFormatter"},{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/formatter/todo_formatter.cr","line_number":5,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/formatter/todo_formatter.cr#L5"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Formatter","kind":"module","full_name":"Ameba::Formatter","name":"Formatter"},"doc":"A formatter that creates a todo config.\nBasically, it takes all issues reported and disables corresponding rules\nor excludes failed sources from these rules.","summary":"

    A formatter that creates a todo config.

    ","class_methods":[],"constructors":[{"id":"new(output=STDOUT)-class-method","html_id":"new(output=STDOUT)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"output","doc":null,"default_value":"STDOUT","external_name":"output","restriction":""}],"args_string":"(output = STDOUT)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/formatter/todo_formatter.cr#L6","def":{"name":"new","args":[{"name":"output","doc":null,"default_value":"STDOUT","external_name":"output","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"_ = allocate\n_.initialize(output)\nif _.responds_to?(:finalize)\n ::GC.add_finalizer(_)\nend\n_\n"}}],"instance_methods":[{"id":"finished(sources)-instance-method","html_id":"finished(sources)-instance-method","name":"finished","doc":"Reports a message when inspection is finished.","summary":"

    Reports a message when inspection is finished.

    ","abstract":false,"args":[{"name":"sources","doc":null,"default_value":"","external_name":"sources","restriction":""}],"args_string":"(sources)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/formatter/todo_formatter.cr#L9","def":{"name":"finished","args":[{"name":"sources","doc":null,"default_value":"","external_name":"sources","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"super(sources)\nissues = sources.map(&.issues).flatten\nif issues.any? do |issue|\n !issue.disabled?\nend\nelse\n @output << \"No issues found. File is not generated.\\n\"\n return\nend\nif issues.any? do |issue|\n issue.syntax?\nend\n @output << \"Unable to generate TODO file. Please fix syntax issues.\\n\"\n return\nend\nfile = generate_todo_config(issues)\n@output << \"Created #{file.path}\\n\"\nfile\n"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Formatter/Util","path":"Ameba/Formatter/Util.html","kind":"module","full_name":"Ameba::Formatter::Util","name":"Util","abstract":false,"superclass":null,"ancestors":[],"locations":[{"filename":"src/ameba/formatter/util.cr","line_number":2,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/formatter/util.cr#L2"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[{"html_id":"ameba/Ameba/Formatter/DotFormatter","kind":"class","full_name":"Ameba::Formatter::DotFormatter","name":"DotFormatter"},{"html_id":"ameba/Ameba/Formatter/ExplainFormatter","kind":"class","full_name":"Ameba::Formatter::ExplainFormatter","name":"ExplainFormatter"}],"namespace":{"html_id":"ameba/Ameba/Formatter","kind":"module","full_name":"Ameba::Formatter","name":"Formatter"},"doc":null,"summary":null,"class_methods":[],"constructors":[],"instance_methods":[{"id":"affected_code(source,location,max_length=100,placeholder="...",prompt=">")-instance-method","html_id":"affected_code(source,location,max_length=100,placeholder="...",prompt=">")-instance-method","name":"affected_code","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"location","doc":null,"default_value":"","external_name":"location","restriction":""},{"name":"max_length","doc":null,"default_value":"100","external_name":"max_length","restriction":""},{"name":"placeholder","doc":null,"default_value":"\" ...\"","external_name":"placeholder","restriction":""},{"name":"prompt","doc":null,"default_value":"\"> \"","external_name":"prompt","restriction":""}],"args_string":"(source, location, max_length = 100, placeholder = " ...", prompt = "> ")","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/formatter/util.cr#L3","def":{"name":"affected_code","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"location","doc":null,"default_value":"","external_name":"location","restriction":""},{"name":"max_length","doc":null,"default_value":"100","external_name":"max_length","restriction":""},{"name":"placeholder","doc":null,"default_value":"\" ...\"","external_name":"placeholder","restriction":""},{"name":"prompt","doc":null,"default_value":"\"> \"","external_name":"prompt","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"line, column = location.line_number, location.column_number\naffected_line = source.lines[line - 1]?\nif affected_line.nil? || affected_line.strip.empty?\n return\nend\nif affected_line.size > max_length && column < max_length\n affected_line = affected_line[0, (max_length - placeholder.size) - 1] + placeholder\nend\nstripped = affected_line.lstrip\nposition = (column - (affected_line.size - stripped.size)) + prompt.size\nString.build do |str|\n ((str << prompt) << stripped) << \"\\n\"\n str << (\" \" * (position - 1))\n str << (\"^\".colorize(:yellow))\nend\n"}}],"macros":[],"types":[]}]},{"html_id":"ameba/Ameba/GlobUtils","path":"Ameba/GlobUtils.html","kind":"module","full_name":"Ameba::GlobUtils","name":"GlobUtils","abstract":false,"superclass":null,"ancestors":[],"locations":[{"filename":"src/ameba/glob_utils.cr","line_number":3,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/glob_utils.cr#L3"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[{"html_id":"ameba/Ameba/Config","kind":"class","full_name":"Ameba::Config","name":"Config"}],"namespace":{"html_id":"ameba/Ameba","kind":"module","full_name":"Ameba","name":"Ameba"},"doc":"Helper module that is utilizes helpers for working with globs.","summary":"

    Helper module that is utilizes helpers for working with globs.

    ","class_methods":[],"constructors":[],"instance_methods":[{"id":"expand(globs)-instance-method","html_id":"expand(globs)-instance-method","name":"expand","doc":"Expands globs. Globs can point to files or even directories.\n\n```\nexpand([\"spec/*.cr\", \"src\"]) # => all files in src folder + first level specs\n```\n","summary":"

    Expands globs.

    ","abstract":false,"args":[{"name":"globs","doc":null,"default_value":"","external_name":"globs","restriction":""}],"args_string":"(globs)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/glob_utils.cr#L24","def":{"name":"expand","args":[{"name":"globs","doc":null,"default_value":"","external_name":"globs","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"globs.map do |glob|\n if File.directory?(glob)\n glob = glob + \"/**/*.cr\"\n end\n Dir[glob]\nend.flatten.uniq!"}},{"id":"find_files_by_globs(globs)-instance-method","html_id":"find_files_by_globs(globs)-instance-method","name":"find_files_by_globs","doc":"Returns all files that match specified globs.\nGlobs can have wildcards or be rejected:\n\n```\nfind_files_by_globs([\"**/*.cr\", \"!lib\"])\n```\n","summary":"

    Returns all files that match specified globs.

    ","abstract":false,"args":[{"name":"globs","doc":null,"default_value":"","external_name":"globs","restriction":""}],"args_string":"(globs)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/glob_utils.cr#L11","def":{"name":"find_files_by_globs","args":[{"name":"globs","doc":null,"default_value":"","external_name":"globs","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"rejected = rejected_globs(globs)\nselected = globs - rejected\n(expand(selected)) - (expand(rejected.map! do |p|\n p[1..-1]\nend))\n"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/InlineComments","path":"Ameba/InlineComments.html","kind":"module","full_name":"Ameba::InlineComments","name":"InlineComments","abstract":false,"superclass":null,"ancestors":[],"locations":[{"filename":"src/ameba/inline_comments.cr","line_number":3,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/inline_comments.cr#L3"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"COMMENT_DIRECTIVE_REGEX","name":"COMMENT_DIRECTIVE_REGEX","value":"/# ameba:(?\\w+) (?\\w+(?:\\/\\w+)?(?:,? \\w+(?:\\/\\w+)?)*)/","doc":null,"summary":null}],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[{"html_id":"ameba/Ameba/Source","kind":"class","full_name":"Ameba::Source","name":"Source"}],"namespace":{"html_id":"ameba/Ameba","kind":"module","full_name":"Ameba","name":"Ameba"},"doc":"A module that utilizes inline comments parsing and processing logic.","summary":"

    A module that utilizes inline comments parsing and processing logic.

    ","class_methods":[],"constructors":[],"instance_methods":[{"id":"comment?(line_number:Int32)-instance-method","html_id":"comment?(line_number:Int32)-instance-method","name":"comment?","doc":"Returns true if the line at the given `line_number` is a comment.","summary":"

    Returns true if the line at the given line_number is a comment.

    ","abstract":false,"args":[{"name":"line_number","doc":null,"default_value":"","external_name":"line_number","restriction":"Int32"}],"args_string":"(line_number : Int32)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/inline_comments.cr#L80","def":{"name":"comment?","args":[{"name":"line_number","doc":null,"default_value":"","external_name":"line_number","restriction":"Int32"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if line = lines[line_number]?\n comment?(line)\nend"}},{"id":"location_disabled?(location,rule)-instance-method","html_id":"location_disabled?(location,rule)-instance-method","name":"location_disabled?","doc":"Returns true if current location is disabled for a particular rule,\nfalse otherwise.\n\nLocation is disabled in two cases:\n 1. The line of the location ends with a comment directive.\n 2. The line above the location is a comment directive.\n\nFor example, here are two examples of disabled location:\n\n```\n# ameba:disable Style/LargeNumbers\nTime.epoch(1483859302)\n\nTime.epoch(1483859302) # ameba:disable Style/LargeNumbers\n```\n\nBut here are examples which are not considered as disabled location:\n\n```\n# ameba:disable Style/LargeNumbers\n#\nTime.epoch(1483859302)\n\nif use_epoch? # ameba:disable Style/LargeNumbers\n Time.epoch(1483859302)\nend\n```\n","summary":"

    Returns true if current location is disabled for a particular rule, false otherwise.

    ","abstract":false,"args":[{"name":"location","doc":null,"default_value":"","external_name":"location","restriction":""},{"name":"rule","doc":null,"default_value":"","external_name":"rule","restriction":""}],"args_string":"(location, rule)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/inline_comments.cr#L40","def":{"name":"location_disabled?","args":[{"name":"location","doc":null,"default_value":"","external_name":"location","restriction":""},{"name":"rule","doc":null,"default_value":"","external_name":"rule","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if Rule::SPECIAL.includes?(rule.name)\n return false\nend\nif line_number = location.try do |__arg0|\n __arg0.line_number.try(&.-(1))\nend\nelse\n return false\nend\nif line = lines[line_number]?\nelse\n return false\nend\n(line_disabled?(line, rule)) || (((line_number > 0 && (prev_line = lines[line_number - 1])) && (comment?(prev_line))) && (line_disabled?(prev_line, rule)))\n"}},{"id":"parse_inline_directive(line)-instance-method","html_id":"parse_inline_directive(line)-instance-method","name":"parse_inline_directive","doc":"Parses inline comment directive. Returns a tuple that consists of\nan action and parsed rules if directive found, nil otherwise.\n\n```\nline = \"# ameba:disable Rule1, Rule2\"\ndirective = parse_inline_directive(line)\ndirective[:action] # => \"disable\"\ndirective[:rules] # => [\"Rule1\", \"Rule2\"]\n```\n\nIt ignores the directive if it is commented out.\n\n```\nline = \"# # ameba:disable Rule1, Rule2\"\nparse_inline_directive(line) # => nil\n```\n","summary":"

    Parses inline comment directive.

    ","abstract":false,"args":[{"name":"line","doc":null,"default_value":"","external_name":"line","restriction":""}],"args_string":"(line)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/inline_comments.cr#L69","def":{"name":"parse_inline_directive","args":[{"name":"line","doc":null,"default_value":"","external_name":"line","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if directive = COMMENT_DIRECTIVE_REGEX.match(line)\n if commented_out?(line.gsub(directive[0], \"\"))\n return\n end\n {action: directive[\"action\"], rules: directive[\"rules\"].split(/[\\s,]/, remove_empty: true)}\nend"}}],"macros":[],"types":[{"html_id":"ameba/Ameba/InlineComments/Action","path":"Ameba/InlineComments/Action.html","kind":"enum","full_name":"Ameba::InlineComments::Action","name":"Action","abstract":false,"superclass":null,"ancestors":[{"html_id":"ameba/Enum","kind":"struct","full_name":"Enum","name":"Enum"},{"html_id":"ameba/Comparable","kind":"module","full_name":"Comparable","name":"Comparable"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/inline_comments.cr","line_number":7,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/inline_comments.cr#L7"}],"repository_name":"ameba","program":false,"enum":true,"alias":false,"aliased":"","const":false,"constants":[{"id":"Disable","name":"Disable","value":"0","doc":null,"summary":null},{"id":"Enable","name":"Enable","value":"1","doc":null,"summary":null}],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/InlineComments","kind":"module","full_name":"Ameba::InlineComments","name":"InlineComments"},"doc":"Available actions in the inline comments","summary":"

    Available actions in the inline comments

    ","class_methods":[],"constructors":[],"instance_methods":[{"id":"disable?-instance-method","html_id":"disable?-instance-method","name":"disable?","doc":null,"summary":null,"abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/inline_comments.cr#L8","def":{"name":"disable?","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"self == Disable"}},{"id":"enable?-instance-method","html_id":"enable?-instance-method","name":"enable?","doc":null,"summary":null,"abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/inline_comments.cr#L9","def":{"name":"enable?","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"self == Enable"}}],"macros":[],"types":[]}]},{"html_id":"ameba/Ameba/Issue","path":"Ameba/Issue.html","kind":"struct","full_name":"Ameba::Issue","name":"Issue","abstract":false,"superclass":{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},"ancestors":[{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/issue.cr","line_number":3,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/issue.cr#L3"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba","kind":"module","full_name":"Ameba","name":"Ameba"},"doc":"Represents an issue reported by Ameba.","summary":"

    Represents an issue reported by Ameba.

    ","class_methods":[],"constructors":[{"id":"new(rule:Rule::Base,location:Crystal::Location?,end_location:Crystal::Location?,message:String,status:Symbol?)-class-method","html_id":"new(rule:Rule::Base,location:Crystal::Location?,end_location:Crystal::Location?,message:String,status:Symbol?)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"rule","doc":null,"default_value":"","external_name":"rule","restriction":"Rule::Base"},{"name":"location","doc":null,"default_value":"","external_name":"location","restriction":"Crystal::Location | ::Nil"},{"name":"end_location","doc":null,"default_value":"","external_name":"end_location","restriction":"Crystal::Location | ::Nil"},{"name":"message","doc":null,"default_value":"","external_name":"message","restriction":"String"},{"name":"status","doc":null,"default_value":"","external_name":"status","restriction":"Symbol | ::Nil"}],"args_string":"(rule : Rule::Base, location : Crystal::Location?, end_location : Crystal::Location?, message : String, status : Symbol?)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/issue.cr#L3","def":{"name":"new","args":[{"name":"rule","doc":null,"default_value":"","external_name":"rule","restriction":"Rule::Base"},{"name":"location","doc":null,"default_value":"","external_name":"location","restriction":"Crystal::Location | ::Nil"},{"name":"end_location","doc":null,"default_value":"","external_name":"end_location","restriction":"Crystal::Location | ::Nil"},{"name":"message","doc":null,"default_value":"","external_name":"message","restriction":"String"},{"name":"status","doc":null,"default_value":"","external_name":"status","restriction":"Symbol | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"_ = allocate\n_.initialize(rule, location, end_location, message, status)\nif _.responds_to?(:finalize)\n ::GC.add_finalizer(_)\nend\n_\n"}}],"instance_methods":[{"id":"clone-instance-method","html_id":"clone-instance-method","name":"clone","doc":null,"summary":null,"abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/issue.cr#L3","def":{"name":"clone","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"self.class.new(@rule.clone, @location.clone, @end_location.clone, @message.clone, @status.clone)"}},{"id":"copy_with(rule_rule=@rule,location_location=@location,end_location_end_location=@end_location,message_message=@message,status_status=@status)-instance-method","html_id":"copy_with(rule_rule=@rule,location_location=@location,end_location_end_location=@end_location,message_message=@message,status_status=@status)-instance-method","name":"copy_with","doc":null,"summary":null,"abstract":false,"args":[{"name":"_rule","doc":null,"default_value":"@rule","external_name":"rule","restriction":""},{"name":"_location","doc":null,"default_value":"@location","external_name":"location","restriction":""},{"name":"_end_location","doc":null,"default_value":"@end_location","external_name":"end_location","restriction":""},{"name":"_message","doc":null,"default_value":"@message","external_name":"message","restriction":""},{"name":"_status","doc":null,"default_value":"@status","external_name":"status","restriction":""}],"args_string":"(rule _rule = @rule, location _location = @location, end_location _end_location = @end_location, message _message = @message, status _status = @status)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/issue.cr#L3","def":{"name":"copy_with","args":[{"name":"_rule","doc":null,"default_value":"@rule","external_name":"rule","restriction":""},{"name":"_location","doc":null,"default_value":"@location","external_name":"location","restriction":""},{"name":"_end_location","doc":null,"default_value":"@end_location","external_name":"end_location","restriction":""},{"name":"_message","doc":null,"default_value":"@message","external_name":"message","restriction":""},{"name":"_status","doc":null,"default_value":"@status","external_name":"status","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"self.class.new(_rule, _location, _end_location, _message, _status)"}},{"id":"disabled?-instance-method","html_id":"disabled?-instance-method","name":"disabled?","doc":null,"summary":null,"abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/issue.cr#L18","def":{"name":"disabled?","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"status == (:disabled)"}},{"id":"end_location:Crystal::Location?-instance-method","html_id":"end_location:Crystal::Location?-instance-method","name":"end_location","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Crystal::Location?","source_link":null,"def":{"name":"end_location","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Crystal::Location | ::Nil","visibility":"Public","body":"@end_location"}},{"id":"location:Crystal::Location?-instance-method","html_id":"location:Crystal::Location?-instance-method","name":"location","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Crystal::Location?","source_link":null,"def":{"name":"location","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Crystal::Location | ::Nil","visibility":"Public","body":"@location"}},{"id":"message:String-instance-method","html_id":"message:String-instance-method","name":"message","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"message","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@message"}},{"id":"rule:Rule::Base-instance-method","html_id":"rule:Rule::Base-instance-method","name":"rule","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Rule::Base","source_link":null,"def":{"name":"rule","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Rule::Base","visibility":"Public","body":"@rule"}},{"id":"status:Symbol?-instance-method","html_id":"status:Symbol?-instance-method","name":"status","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Symbol?","source_link":null,"def":{"name":"status","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Symbol | ::Nil","visibility":"Public","body":"@status"}},{"id":"syntax?-instance-method","html_id":"syntax?-instance-method","name":"syntax?","doc":null,"summary":null,"abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/issue.cr#L22","def":{"name":"syntax?","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"rule.is_a?(Rule::Lint::Syntax)"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Reportable","path":"Ameba/Reportable.html","kind":"module","full_name":"Ameba::Reportable","name":"Reportable","abstract":false,"superclass":null,"ancestors":[],"locations":[{"filename":"src/ameba/reportable.cr","line_number":3,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/reportable.cr#L3"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[{"html_id":"ameba/Ameba/Source","kind":"class","full_name":"Ameba::Source","name":"Source"}],"namespace":{"html_id":"ameba/Ameba","kind":"module","full_name":"Ameba","name":"Ameba"},"doc":"Represents a module used to report issues.","summary":"

    Represents a module used to report issues.

    ","class_methods":[],"constructors":[],"instance_methods":[{"id":"add_issue(rule,location:Crystal::Location?,end_location:Crystal::Location?,message,status=nil)-instance-method","html_id":"add_issue(rule,location:Crystal::Location?,end_location:Crystal::Location?,message,status=nil)-instance-method","name":"add_issue","doc":"Adds a new issue to the list of issues.","summary":"

    Adds a new issue to the list of issues.

    ","abstract":false,"args":[{"name":"rule","doc":null,"default_value":"","external_name":"rule","restriction":""},{"name":"location","doc":null,"default_value":"","external_name":"location","restriction":"Crystal::Location | ::Nil"},{"name":"end_location","doc":null,"default_value":"","external_name":"end_location","restriction":"Crystal::Location | ::Nil"},{"name":"message","doc":null,"default_value":"","external_name":"message","restriction":""},{"name":"status","doc":null,"default_value":"nil","external_name":"status","restriction":""}],"args_string":"(rule, location : Crystal::Location?, end_location : Crystal::Location?, message, status = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/reportable.cr#L8","def":{"name":"add_issue","args":[{"name":"rule","doc":null,"default_value":"","external_name":"rule","restriction":""},{"name":"location","doc":null,"default_value":"","external_name":"location","restriction":"Crystal::Location | ::Nil"},{"name":"end_location","doc":null,"default_value":"","external_name":"end_location","restriction":"Crystal::Location | ::Nil"},{"name":"message","doc":null,"default_value":"","external_name":"message","restriction":""},{"name":"status","doc":null,"default_value":"nil","external_name":"status","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if location_disabled?(location, rule)\n status || (status = :disabled)\nend\nissues << (Issue.new(rule, location, end_location, message, status))\n"}},{"id":"add_issue(rule,location:Tuple(Int32,Int32),end_location:Tuple(Int32,Int32),message,**args)-instance-method","html_id":"add_issue(rule,location:Tuple(Int32,Int32),end_location:Tuple(Int32,Int32),message,**args)-instance-method","name":"add_issue","doc":"Adds a new issue for *location* and *end_location* defined by line and column numbers.","summary":"

    Adds a new issue for location and end_location defined by line and column numbers.

    ","abstract":false,"args":[{"name":"rule","doc":null,"default_value":"","external_name":"rule","restriction":""},{"name":"location","doc":null,"default_value":"","external_name":"location","restriction":"Tuple(Int32, Int32)"},{"name":"end_location","doc":null,"default_value":"","external_name":"end_location","restriction":"Tuple(Int32, Int32)"},{"name":"message","doc":null,"default_value":"","external_name":"message","restriction":""}],"args_string":"(rule, location : Tuple(Int32, Int32), end_location : Tuple(Int32, Int32), message, **args)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/reportable.cr#L30","def":{"name":"add_issue","args":[{"name":"rule","doc":null,"default_value":"","external_name":"rule","restriction":""},{"name":"location","doc":null,"default_value":"","external_name":"location","restriction":"Tuple(Int32, Int32)"},{"name":"end_location","doc":null,"default_value":"","external_name":"end_location","restriction":"Tuple(Int32, Int32)"},{"name":"message","doc":null,"default_value":"","external_name":"message","restriction":""}],"double_splat":{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""},"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"location = Crystal::Location.new(path, *location)\nend_location = Crystal::Location.new(path, *end_location)\nadd_issue(rule, location, end_location, message, **args)\n"}},{"id":"add_issue(rule,location:Tuple(Int32,Int32),message,**args)-instance-method","html_id":"add_issue(rule,location:Tuple(Int32,Int32),message,**args)-instance-method","name":"add_issue","doc":"Adds a new issue for *location* defined by line and column numbers.","summary":"

    Adds a new issue for location defined by line and column numbers.

    ","abstract":false,"args":[{"name":"rule","doc":null,"default_value":"","external_name":"rule","restriction":""},{"name":"location","doc":null,"default_value":"","external_name":"location","restriction":"Tuple(Int32, Int32)"},{"name":"message","doc":null,"default_value":"","external_name":"message","restriction":""}],"args_string":"(rule, location : Tuple(Int32, Int32), message, **args)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/reportable.cr#L24","def":{"name":"add_issue","args":[{"name":"rule","doc":null,"default_value":"","external_name":"rule","restriction":""},{"name":"location","doc":null,"default_value":"","external_name":"location","restriction":"Tuple(Int32, Int32)"},{"name":"message","doc":null,"default_value":"","external_name":"message","restriction":""}],"double_splat":{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""},"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"location = Crystal::Location.new(path, *location)\nadd_issue(rule, location, nil, message, **args)\n"}},{"id":"add_issue(rule,node:Crystal::ASTNode,message,**args)-instance-method","html_id":"add_issue(rule,node:Crystal::ASTNode,message,**args)-instance-method","name":"add_issue","doc":"Adds a new issue for AST *node*.","summary":"

    Adds a new issue for AST node.

    ","abstract":false,"args":[{"name":"rule","doc":null,"default_value":"","external_name":"rule","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ASTNode"},{"name":"message","doc":null,"default_value":"","external_name":"message","restriction":""}],"args_string":"(rule, node : Crystal::ASTNode, message, **args)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/reportable.cr#L14","def":{"name":"add_issue","args":[{"name":"rule","doc":null,"default_value":"","external_name":"rule","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ASTNode"},{"name":"message","doc":null,"default_value":"","external_name":"message","restriction":""}],"double_splat":{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""},"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"add_issue(rule, node.location, node.end_location, message, **args)"}},{"id":"add_issue(rule,token:Crystal::Token,message,**args)-instance-method","html_id":"add_issue(rule,token:Crystal::Token,message,**args)-instance-method","name":"add_issue","doc":"Adds a new issue for Crystal *token*.","summary":"

    Adds a new issue for Crystal token.

    ","abstract":false,"args":[{"name":"rule","doc":null,"default_value":"","external_name":"rule","restriction":""},{"name":"token","doc":null,"default_value":"","external_name":"token","restriction":"Crystal::Token"},{"name":"message","doc":null,"default_value":"","external_name":"message","restriction":""}],"args_string":"(rule, token : Crystal::Token, message, **args)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/reportable.cr#L19","def":{"name":"add_issue","args":[{"name":"rule","doc":null,"default_value":"","external_name":"rule","restriction":""},{"name":"token","doc":null,"default_value":"","external_name":"token","restriction":"Crystal::Token"},{"name":"message","doc":null,"default_value":"","external_name":"message","restriction":""}],"double_splat":{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""},"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"add_issue(rule, token.location, nil, message, **args)"}},{"id":"issues-instance-method","html_id":"issues-instance-method","name":"issues","doc":"List of reported issues.","summary":"

    List of reported issues.

    ","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/reportable.cr#L5","def":{"name":"issues","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@issues"}},{"id":"valid?-instance-method","html_id":"valid?-instance-method","name":"valid?","doc":"Returns true if the list of not disabled issues is empty, false otherwise.","summary":"

    Returns true if the list of not disabled issues is empty, false otherwise.

    ","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/reportable.cr#L37","def":{"name":"valid?","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"issues.reject(&.disabled?).empty?"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule","path":"Ameba/Rule.html","kind":"module","full_name":"Ameba::Rule","name":"Rule","abstract":false,"superclass":null,"ancestors":[],"locations":[{"filename":"src/ameba/rule/base.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/base.cr#L1"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"SPECIAL","name":"SPECIAL","value":"[Lint::Syntax.rule_name, Lint::UnneededDisableDirective.rule_name]","doc":"List of names of the special rules, which\nbehave differently than usual rules.","summary":"

    List of names of the special rules, which behave differently than usual rules.

    "}],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba","kind":"module","full_name":"Ameba","name":"Ameba"},"doc":null,"summary":null,"class_methods":[{"id":"rules-class-method","html_id":"rules-class-method","name":"rules","doc":"Returns a list of all available rules.\n\n```\nAmeba::Rule.rules # => [Rule1, Rule2, ....]\n```\n","summary":"

    Returns a list of all available rules.

    ","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/base.cr#L194","def":{"name":"rules","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"Base.subclasses"}}],"constructors":[],"instance_methods":[],"macros":[],"types":[{"html_id":"ameba/Ameba/Rule/Base","path":"Ameba/Rule/Base.html","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base","abstract":true,"superclass":{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},"ancestors":[{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/base.cr","line_number":30,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/base.cr#L30"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"}],"extended_modules":[],"subclasses":[{"html_id":"ameba/Ameba/Rule/Layout/LineLength","kind":"struct","full_name":"Ameba::Rule::Layout::LineLength","name":"LineLength"},{"html_id":"ameba/Ameba/Rule/Layout/TrailingBlankLines","kind":"struct","full_name":"Ameba::Rule::Layout::TrailingBlankLines","name":"TrailingBlankLines"},{"html_id":"ameba/Ameba/Rule/Layout/TrailingWhitespace","kind":"struct","full_name":"Ameba::Rule::Layout::TrailingWhitespace","name":"TrailingWhitespace"},{"html_id":"ameba/Ameba/Rule/Lint/BadDirective","kind":"struct","full_name":"Ameba::Rule::Lint::BadDirective","name":"BadDirective"},{"html_id":"ameba/Ameba/Rule/Lint/ComparisonToBoolean","kind":"struct","full_name":"Ameba::Rule::Lint::ComparisonToBoolean","name":"ComparisonToBoolean"},{"html_id":"ameba/Ameba/Rule/Lint/DebuggerStatement","kind":"struct","full_name":"Ameba::Rule::Lint::DebuggerStatement","name":"DebuggerStatement"},{"html_id":"ameba/Ameba/Rule/Lint/EmptyEnsure","kind":"struct","full_name":"Ameba::Rule::Lint::EmptyEnsure","name":"EmptyEnsure"},{"html_id":"ameba/Ameba/Rule/Lint/EmptyExpression","kind":"struct","full_name":"Ameba::Rule::Lint::EmptyExpression","name":"EmptyExpression"},{"html_id":"ameba/Ameba/Rule/Lint/EmptyLoop","kind":"struct","full_name":"Ameba::Rule::Lint::EmptyLoop","name":"EmptyLoop"},{"html_id":"ameba/Ameba/Rule/Lint/HashDuplicatedKey","kind":"struct","full_name":"Ameba::Rule::Lint::HashDuplicatedKey","name":"HashDuplicatedKey"},{"html_id":"ameba/Ameba/Rule/Lint/LiteralInCondition","kind":"struct","full_name":"Ameba::Rule::Lint::LiteralInCondition","name":"LiteralInCondition"},{"html_id":"ameba/Ameba/Rule/Lint/LiteralInInterpolation","kind":"struct","full_name":"Ameba::Rule::Lint::LiteralInInterpolation","name":"LiteralInInterpolation"},{"html_id":"ameba/Ameba/Rule/Lint/PercentArrays","kind":"struct","full_name":"Ameba::Rule::Lint::PercentArrays","name":"PercentArrays"},{"html_id":"ameba/Ameba/Rule/Lint/RandZero","kind":"struct","full_name":"Ameba::Rule::Lint::RandZero","name":"RandZero"},{"html_id":"ameba/Ameba/Rule/Lint/RedundantStringCoercion","kind":"struct","full_name":"Ameba::Rule::Lint::RedundantStringCoercion","name":"RedundantStringCoercion"},{"html_id":"ameba/Ameba/Rule/Lint/RedundantWithIndex","kind":"struct","full_name":"Ameba::Rule::Lint::RedundantWithIndex","name":"RedundantWithIndex"},{"html_id":"ameba/Ameba/Rule/Lint/RedundantWithObject","kind":"struct","full_name":"Ameba::Rule::Lint::RedundantWithObject","name":"RedundantWithObject"},{"html_id":"ameba/Ameba/Rule/Lint/ShadowedArgument","kind":"struct","full_name":"Ameba::Rule::Lint::ShadowedArgument","name":"ShadowedArgument"},{"html_id":"ameba/Ameba/Rule/Lint/ShadowedException","kind":"struct","full_name":"Ameba::Rule::Lint::ShadowedException","name":"ShadowedException"},{"html_id":"ameba/Ameba/Rule/Lint/ShadowingOuterLocalVar","kind":"struct","full_name":"Ameba::Rule::Lint::ShadowingOuterLocalVar","name":"ShadowingOuterLocalVar"},{"html_id":"ameba/Ameba/Rule/Lint/SharedVarInFiber","kind":"struct","full_name":"Ameba::Rule::Lint::SharedVarInFiber","name":"SharedVarInFiber"},{"html_id":"ameba/Ameba/Rule/Lint/Syntax","kind":"struct","full_name":"Ameba::Rule::Lint::Syntax","name":"Syntax"},{"html_id":"ameba/Ameba/Rule/Lint/UnneededDisableDirective","kind":"struct","full_name":"Ameba::Rule::Lint::UnneededDisableDirective","name":"UnneededDisableDirective"},{"html_id":"ameba/Ameba/Rule/Lint/UnreachableCode","kind":"struct","full_name":"Ameba::Rule::Lint::UnreachableCode","name":"UnreachableCode"},{"html_id":"ameba/Ameba/Rule/Lint/UnusedArgument","kind":"struct","full_name":"Ameba::Rule::Lint::UnusedArgument","name":"UnusedArgument"},{"html_id":"ameba/Ameba/Rule/Lint/UselessAssign","kind":"struct","full_name":"Ameba::Rule::Lint::UselessAssign","name":"UselessAssign"},{"html_id":"ameba/Ameba/Rule/Lint/UselessConditionInWhen","kind":"struct","full_name":"Ameba::Rule::Lint::UselessConditionInWhen","name":"UselessConditionInWhen"},{"html_id":"ameba/Ameba/Rule/Metrics/CyclomaticComplexity","kind":"struct","full_name":"Ameba::Rule::Metrics::CyclomaticComplexity","name":"CyclomaticComplexity"},{"html_id":"ameba/Ameba/Rule/Performance/AnyAfterFilter","kind":"struct","full_name":"Ameba::Rule::Performance::AnyAfterFilter","name":"AnyAfterFilter"},{"html_id":"ameba/Ameba/Rule/Performance/FirstLastAfterFilter","kind":"struct","full_name":"Ameba::Rule::Performance::FirstLastAfterFilter","name":"FirstLastAfterFilter"},{"html_id":"ameba/Ameba/Rule/Performance/SizeAfterFilter","kind":"struct","full_name":"Ameba::Rule::Performance::SizeAfterFilter","name":"SizeAfterFilter"},{"html_id":"ameba/Ameba/Rule/Style/ConstantNames","kind":"struct","full_name":"Ameba::Rule::Style::ConstantNames","name":"ConstantNames"},{"html_id":"ameba/Ameba/Rule/Style/IsANil","kind":"struct","full_name":"Ameba::Rule::Style::IsANil","name":"IsANil"},{"html_id":"ameba/Ameba/Rule/Style/LargeNumbers","kind":"struct","full_name":"Ameba::Rule::Style::LargeNumbers","name":"LargeNumbers"},{"html_id":"ameba/Ameba/Rule/Style/MethodNames","kind":"struct","full_name":"Ameba::Rule::Style::MethodNames","name":"MethodNames"},{"html_id":"ameba/Ameba/Rule/Style/NegatedConditionsInUnless","kind":"struct","full_name":"Ameba::Rule::Style::NegatedConditionsInUnless","name":"NegatedConditionsInUnless"},{"html_id":"ameba/Ameba/Rule/Style/PredicateName","kind":"struct","full_name":"Ameba::Rule::Style::PredicateName","name":"PredicateName"},{"html_id":"ameba/Ameba/Rule/Style/RedundantBegin","kind":"struct","full_name":"Ameba::Rule::Style::RedundantBegin","name":"RedundantBegin"},{"html_id":"ameba/Ameba/Rule/Style/RedundantNext","kind":"struct","full_name":"Ameba::Rule::Style::RedundantNext","name":"RedundantNext"},{"html_id":"ameba/Ameba/Rule/Style/RedundantReturn","kind":"struct","full_name":"Ameba::Rule::Style::RedundantReturn","name":"RedundantReturn"},{"html_id":"ameba/Ameba/Rule/Style/TypeNames","kind":"struct","full_name":"Ameba::Rule::Style::TypeNames","name":"TypeNames"},{"html_id":"ameba/Ameba/Rule/Style/UnlessElse","kind":"struct","full_name":"Ameba::Rule::Style::UnlessElse","name":"UnlessElse"},{"html_id":"ameba/Ameba/Rule/Style/VariableNames","kind":"struct","full_name":"Ameba::Rule::Style::VariableNames","name":"VariableNames"},{"html_id":"ameba/Ameba/Rule/Style/WhileTrue","kind":"struct","full_name":"Ameba::Rule::Style::WhileTrue","name":"WhileTrue"}],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule","kind":"module","full_name":"Ameba::Rule","name":"Rule"},"doc":"Represents a base of all rules. In other words, all rules\ninherits from this struct:\n\n```\nstruct MyRule < Ameba::Rule::Base\n def test(source)\n if invalid?(source)\n issue_for line, column, \"Something wrong.\"\n end\n end\n\n private def invalid?(source)\n # ...\n end\nend\n```\n\nEnforces rules to implement an abstract `#test` method which\nis designed to test the source passed in. If source has issues\nthat are tested by this rule, it should add an issue.\n","summary":"

    Represents a base of all rules.

    ","class_methods":[{"id":"parsed_doc-class-method","html_id":"parsed_doc-class-method","name":"parsed_doc","doc":"Returns documentation for this rule if any.\n\n```\nmodule Ameba\n # This is a test rule.\n # Does nothing.\n struct MyRule < Ameba::Rule::Base\n def test(source)\n end\n end\nend\n\nMyRule.parsed_doc # => \"This is a test rule.\\nDoes nothing.\"\n```","summary":"

    Returns documentation for this rule if any.

    ","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/base.cr#L157","def":{"name":"parsed_doc","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"source = File.read(path_to_source_file)\nnodes = (Crystal::Parser.new(source)).tap(&.wants_doc = true).parse\ntype_name = (rule_name.split(\"/\")).last?\n(DocFinder.new(nodes, type_name)).doc\n"}}],"constructors":[{"id":"new-class-method","html_id":"new-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/base.cr#L30","def":{"name":"new","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"x = allocate\nif x.responds_to?(:finalize)\n ::GC.add_finalizer(x)\nend\nx\n"}}],"instance_methods":[{"id":"==(other)-instance-method","html_id":"==(other)-instance-method","name":"==","doc":"Returns `true` if this struct is equal to *other*.\n\nBoth structs's instance vars are compared to each other. Thus, two\nstructs are considered equal if each of their instance variables are\nequal. Subclasses should override this method to provide specific\nequality semantics.\n\n```\nstruct Point\n def initialize(@x : Int32, @y : Int32)\n end\nend\n\np1 = Point.new 1, 2\np2 = Point.new 1, 2\np3 = Point.new 3, 4\n\np1 == p2 # => true\np1 == p3 # => false\n```","summary":"

    Returns true if this struct is equal to other.

    ","abstract":false,"args":[{"name":"other","doc":null,"default_value":"","external_name":"other","restriction":""}],"args_string":"(other)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/base.cr#L113","def":{"name":"==","args":[{"name":"other","doc":null,"default_value":"","external_name":"other","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"name == other.try(&.name)"}},{"id":"catch(source:Source)-instance-method","html_id":"catch(source:Source)-instance-method","name":"catch","doc":"A convenient addition to `#test` method that does the same\nbut returns a passed in `source` as an addition.\n\n```\nsource = MyRule.new.catch(source)\nsource.valid?\n```\n","summary":"

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

    ","abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":"Source"}],"args_string":"(source : Source)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/base.cr#L54","def":{"name":"catch","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":"Source"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"source.tap do |s|\n test(s)\nend"}},{"id":"excluded?(source)-instance-method","html_id":"excluded?(source)-instance-method","name":"excluded?","doc":"Checks whether the source is excluded from this rule.\nIt searches for a path in `excluded` property which matches\nthe one of the given source.\n\n```\nmy_rule.excluded?(source) # => true or false\n```\n","summary":"

    Checks whether the source is excluded from this rule.

    ","abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"args_string":"(source)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/base.cr#L95","def":{"name":"excluded?","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"excluded.try(&.any? do |path|\n (source.matches_path?(path)) || (Dir.glob(path)).any? do |glob|\n source.matches_path?(glob)\n end\nend)"}},{"id":"group-instance-method","html_id":"group-instance-method","name":"group","doc":"Returns a group this rule belong to.\n\n```\nstruct MyGroup::MyRule < Ameba::Rule::Base\n # ...\nend\n\nMyGroup::MyRule.new.group # => \"MyGroup\"\n```\n","summary":"

    Returns a group this rule belong to.

    ","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/base.cr#L83","def":{"name":"group","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"({{ @type }}).group_name"}},{"id":"hash-instance-method","html_id":"hash-instance-method","name":"hash","doc":"Generates an `UInt64` hash value for this object.\n\nThis method must have the property that `a == b` implies `a.hash == b.hash`.\n\nThe hash value is used along with `==` by the `Hash` class to determine if two objects\nreference the same hash key.\n\nSubclasses must not override this method. Instead, they must define `hash(hasher)`,\nthough usually the macro `def_hash` can be used to generate this method.","summary":"

    Generates an UInt64 hash value for this object.

    ","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/base.cr#L117","def":{"name":"hash","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"name.hash"}},{"id":"name-instance-method","html_id":"name-instance-method","name":"name","doc":"Returns a name of this rule, which is basically a class name.\n\n```\nstruct MyRule < Ameba::Rule::Base\n def test(source)\n end\nend\n\nMyRule.new.name # => \"MyRule\"\n```\n","summary":"

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

    ","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/base.cr#L69","def":{"name":"name","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"({{ @type }}).rule_name"}},{"id":"special?-instance-method","html_id":"special?-instance-method","name":"special?","doc":"Returns true if this rule is special and behaves differently than\nusual rules.\n\n```\nmy_rule.special? # => true or false\n```\n","summary":"

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

    ","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/base.cr#L109","def":{"name":"special?","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"SPECIAL.includes?(name)"}},{"id":"test(source:Source,node:Crystal::ASTNode,*opts)-instance-method","html_id":"test(source:Source,node:Crystal::ASTNode,*opts)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":"Source"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ASTNode"},{"name":"opts","doc":null,"default_value":"","external_name":"opts","restriction":""}],"args_string":"(source : Source, node : Crystal::ASTNode, *opts)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/base.cr#L42","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":"Source"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ASTNode"},{"name":"opts","doc":null,"default_value":"","external_name":"opts","restriction":""}],"double_splat":null,"splat_index":2,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":""}},{"id":"test(source:Source)-instance-method","html_id":"test(source:Source)-instance-method","name":"test","doc":"This method is designed to test the source passed in. If source has issues\nthat are tested by this rule, it should add an issue.\n\nBe default it uses a node visitor to traverse all the nodes in the source.\nMust be overriten for other type of rules.","summary":"

    This method is designed to test the source passed in.

    ","abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":"Source"}],"args_string":"(source : Source)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/base.cr#L38","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":"Source"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"AST::NodeVisitor.new(self, source)"}}],"macros":[{"id":"issue_for(*args)-macro","html_id":"issue_for(*args)-macro","name":"issue_for","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/base.cr#L121","def":{"name":"issue_for","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":null,"splat_index":0,"block_arg":null,"visibility":"Public","body":" source.add_issue self, \n{{ *args }}\n\n \n"}}],"types":[]},{"html_id":"ameba/Ameba/Rule/Layout","path":"Ameba/Rule/Layout.html","kind":"module","full_name":"Ameba::Rule::Layout","name":"Layout","abstract":false,"superclass":null,"ancestors":[],"locations":[{"filename":"src/ameba/rule/layout/line_length.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/layout/line_length.cr#L1"},{"filename":"src/ameba/rule/layout/trailing_blank_lines.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/layout/trailing_blank_lines.cr#L1"},{"filename":"src/ameba/rule/layout/trailing_whitespace.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/layout/trailing_whitespace.cr#L1"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule","kind":"module","full_name":"Ameba::Rule","name":"Rule"},"doc":null,"summary":null,"class_methods":[],"constructors":[],"instance_methods":[],"macros":[],"types":[{"html_id":"ameba/Ameba/Rule/Layout/LineLength","path":"Ameba/Rule/Layout/LineLength.html","kind":"struct","full_name":"Ameba::Rule::Layout::LineLength","name":"LineLength","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/layout/line_length.cr","line_number":12,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/layout/line_length.cr#L12"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Line too long\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Layout","kind":"module","full_name":"Ameba::Rule::Layout","name":"Layout"},"doc":"A rule that disallows lines longer than `max_length` number of symbols.\n\nYAML configuration example:\n\n```\nLayout/LineLength:\n Enabled: true\n MaxLength: 100\n```\n","summary":"

    A rule that disallows lines longer than #max_length number of symbols.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows lines longer than `max_length` number of symbols.\n\nYAML configuration example:\n\n```\nLayout/LineLength:\n Enabled: true\n MaxLength: 100\n```\n","summary":"

    A rule that disallows lines longer than #max_length number of symbols.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/layout/line_length.cr#L12","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Bool","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled:Bool)-instance-method","html_id":"enabled=(enabled:Bool)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":"Bool"}],"args_string":"(enabled : Bool)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":"Bool"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"max_length:Int32-instance-method","html_id":"max_length:Int32-instance-method","name":"max_length","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Int32","source_link":null,"def":{"name":"max_length","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Int32","visibility":"Public","body":"@max_length"}},{"id":"max_length=(max_length:Int32)-instance-method","html_id":"max_length=(max_length:Int32)-instance-method","name":"max_length=","doc":null,"summary":null,"abstract":false,"args":[{"name":"max_length","doc":null,"default_value":"","external_name":"max_length","restriction":"Int32"}],"args_string":"(max_length : Int32)","source_link":null,"def":{"name":"max_length=","args":[{"name":"max_length","doc":null,"default_value":"","external_name":"max_length","restriction":"Int32"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@max_length = max_length"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source)-instance-method","html_id":"test(source)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"args_string":"(source)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/layout/line_length.cr#L21","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"source.lines.each_with_index do |line, index|\n if line.size > max_length\n else\n next\n end\n issue_for({index + 1, max_length + 1}, MSG)\nend"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Layout/TrailingBlankLines","path":"Ameba/Rule/Layout/TrailingBlankLines.html","kind":"struct","full_name":"Ameba::Rule::Layout::TrailingBlankLines","name":"TrailingBlankLines","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/layout/trailing_blank_lines.cr","line_number":11,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/layout/trailing_blank_lines.cr#L11"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Excessive trailing newline detected\"","doc":null,"summary":null},{"id":"MSG_FINAL_NEWLINE","name":"MSG_FINAL_NEWLINE","value":"\"Trailing newline missing\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Layout","kind":"module","full_name":"Ameba::Rule::Layout","name":"Layout"},"doc":"A rule that disallows trailing blank lines at the end of the source file.\n\nYAML configuration example:\n\n```\nLayout/TrailingBlankLines:\n Enabled: true\n```\n","summary":"

    A rule that disallows trailing blank lines at the end of the source file.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows trailing blank lines at the end of the source file.\n\nYAML configuration example:\n\n```\nLayout/TrailingBlankLines:\n Enabled: true\n```\n","summary":"

    A rule that disallows trailing blank lines at the end of the source file.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/layout/trailing_blank_lines.cr#L11","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source)-instance-method","html_id":"test(source)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"args_string":"(source)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/layout/trailing_blank_lines.cr#L19","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"source_lines = source.lines\nif source_lines.empty?\n return\nend\nlast_source_line = source_lines.last\nsource_lines_size = source_lines.size\nif (source_lines_size == 1) && last_source_line.empty?\n return\nend\nlast_line_not_empty = !last_source_line.empty?\nif source_lines_size >= 1 && ((source_lines.last(2)).join.strip.empty? || last_line_not_empty)\n issue_for({source_lines_size - 1, 1}, last_line_not_empty ? MSG_FINAL_NEWLINE : MSG)\nend\n"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Layout/TrailingWhitespace","path":"Ameba/Rule/Layout/TrailingWhitespace.html","kind":"struct","full_name":"Ameba::Rule::Layout::TrailingWhitespace","name":"TrailingWhitespace","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/layout/trailing_whitespace.cr","line_number":11,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/layout/trailing_whitespace.cr#L11"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Trailing whitespace detected\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Layout","kind":"module","full_name":"Ameba::Rule::Layout","name":"Layout"},"doc":"A rule that disallows trailing whitespaces.\n\nYAML configuration example:\n\n```\nLayout/TrailingWhitespace:\n Enabled: true\n```\n","summary":"

    A rule that disallows trailing whitespaces.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows trailing whitespaces.\n\nYAML configuration example:\n\n```\nLayout/TrailingWhitespace:\n Enabled: true\n```\n","summary":"

    A rule that disallows trailing whitespaces.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/layout/trailing_whitespace.cr#L11","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source)-instance-method","html_id":"test(source)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"args_string":"(source)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/layout/trailing_whitespace.cr#L18","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"source.lines.each_with_index do |line, index|\n if line =~ (/\\s$/)\n else\n next\n end\n issue_for({index + 1, line.size}, MSG)\nend"}}],"macros":[],"types":[]}]},{"html_id":"ameba/Ameba/Rule/Lint","path":"Ameba/Rule/Lint.html","kind":"module","full_name":"Ameba::Rule::Lint","name":"Lint","abstract":false,"superclass":null,"ancestors":[],"locations":[{"filename":"src/ameba/rule/lint/bad_directive.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/bad_directive.cr#L1"},{"filename":"src/ameba/rule/lint/comparison_to_boolean.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/comparison_to_boolean.cr#L1"},{"filename":"src/ameba/rule/lint/debugger_statement.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/debugger_statement.cr#L1"},{"filename":"src/ameba/rule/lint/empty_ensure.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/empty_ensure.cr#L1"},{"filename":"src/ameba/rule/lint/empty_expression.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/empty_expression.cr#L1"},{"filename":"src/ameba/rule/lint/empty_loop.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/empty_loop.cr#L1"},{"filename":"src/ameba/rule/lint/hash_duplicated_key.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/hash_duplicated_key.cr#L1"},{"filename":"src/ameba/rule/lint/literal_in_condition.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/literal_in_condition.cr#L1"},{"filename":"src/ameba/rule/lint/literal_in_interpolation.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/literal_in_interpolation.cr#L1"},{"filename":"src/ameba/rule/lint/percent_array.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/percent_array.cr#L1"},{"filename":"src/ameba/rule/lint/rand_zero.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/rand_zero.cr#L1"},{"filename":"src/ameba/rule/lint/redundant_string_coercion.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/redundant_string_coercion.cr#L1"},{"filename":"src/ameba/rule/lint/redundant_with_index.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/redundant_with_index.cr#L1"},{"filename":"src/ameba/rule/lint/redundant_with_object.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/redundant_with_object.cr#L1"},{"filename":"src/ameba/rule/lint/shadowed_argument.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/shadowed_argument.cr#L1"},{"filename":"src/ameba/rule/lint/shadowed_exception.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/shadowed_exception.cr#L1"},{"filename":"src/ameba/rule/lint/shadowing_local_outer_var.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/shadowing_local_outer_var.cr#L1"},{"filename":"src/ameba/rule/lint/shared_var_in_fiber.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/shared_var_in_fiber.cr#L1"},{"filename":"src/ameba/rule/lint/syntax.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/syntax.cr#L1"},{"filename":"src/ameba/rule/lint/unneeded_disable_directive.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/unneeded_disable_directive.cr#L1"},{"filename":"src/ameba/rule/lint/unreachable_code.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/unreachable_code.cr#L1"},{"filename":"src/ameba/rule/lint/unused_argument.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/unused_argument.cr#L1"},{"filename":"src/ameba/rule/lint/useless_assign.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/useless_assign.cr#L1"},{"filename":"src/ameba/rule/lint/useless_condition_in_when.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/useless_condition_in_when.cr#L1"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule","kind":"module","full_name":"Ameba::Rule","name":"Rule"},"doc":null,"summary":null,"class_methods":[],"constructors":[],"instance_methods":[],"macros":[],"types":[{"html_id":"ameba/Ameba/Rule/Lint/BadDirective","path":"Ameba/Rule/Lint/BadDirective.html","kind":"struct","full_name":"Ameba::Rule::Lint::BadDirective","name":"BadDirective","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/lint/bad_directive.cr","line_number":21,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/bad_directive.cr#L21"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"ALL_GROUP_NAMES","name":"ALL_GROUP_NAMES","value":"Rule.rules.map(&.group_name).uniq!","doc":null,"summary":null},{"id":"ALL_RULE_NAMES","name":"ALL_RULE_NAMES","value":"Rule.rules.map(&.rule_name)","doc":null,"summary":null},{"id":"AVAILABLE_ACTIONS","name":"AVAILABLE_ACTIONS","value":"InlineComments::Action.names.map(&.downcase)","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Lint","kind":"module","full_name":"Ameba::Rule::Lint","name":"Lint"},"doc":"A rule that reports incorrect comment directives for Ameba.\n\nFor example, the user can mistakenly add a directive\nto disable a rule that even doesn't exist:\n\n```\n# ameba:disable BadRuleName\ndef foo\n :bar\nend\n```\n\nYAML configuration example:\n\n```\nLint/BadDirective:\n Enabled: true\n```\n","summary":"

    A rule that reports incorrect comment directives for Ameba.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that reports incorrect comment directives for Ameba.\n\nFor example, the user can mistakenly add a directive\nto disable a rule that even doesn't exist:\n\n```\n# ameba:disable BadRuleName\ndef foo\n :bar\nend\n```\n\nYAML configuration example:\n\n```\nLint/BadDirective:\n Enabled: true\n```\n","summary":"

    A rule that reports incorrect comment directives for Ameba.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/bad_directive.cr#L21","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source)-instance-method","html_id":"test(source)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"args_string":"(source)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/bad_directive.cr#L30","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"(Tokenizer.new(source)).run do |token|\n if token.type == (:COMMENT)\n else\n next\n end\n if directive = source.parse_inline_directive(token.value.to_s)\n else\n next\n end\n check_action(source, token, directive[:action])\n check_rules(source, token, directive[:rules])\nend"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Lint/ComparisonToBoolean","path":"Ameba/Rule/Lint/ComparisonToBoolean.html","kind":"struct","full_name":"Ameba::Rule::Lint::ComparisonToBoolean","name":"ComparisonToBoolean","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/lint/comparison_to_boolean.cr","line_number":23,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/comparison_to_boolean.cr#L23"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Comparison to a boolean is pointless\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Lint","kind":"module","full_name":"Ameba::Rule::Lint","name":"Lint"},"doc":"A rule that disallows comparison to booleans.\n\nFor example, these are considered invalid:\n\n```\nfoo == true\nbar != false\nfalse === baz\n```\n\nThis is because these expressions evaluate to `true` or `false`, so you\ncould get the same result by using either the variable directly,\nor negating the variable.\n\nYAML configuration example:\n\n```\nLint/ComparisonToBoolean:\n Enabled: true\n```\n","summary":"

    A rule that disallows comparison to booleans.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows comparison to booleans.\n\nFor example, these are considered invalid:\n\n```\nfoo == true\nbar != false\nfalse === baz\n```\n\nThis is because these expressions evaluate to `true` or `false`, so you\ncould get the same result by using either the variable directly,\nor negating the variable.\n\nYAML configuration example:\n\n```\nLint/ComparisonToBoolean:\n Enabled: true\n```\n","summary":"

    A rule that disallows comparison to booleans.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/comparison_to_boolean.cr#L23","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Bool","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled:Bool)-instance-method","html_id":"enabled=(enabled:Bool)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":"Bool"}],"args_string":"(enabled : Bool)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":"Bool"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node:Crystal::Call)-instance-method","html_id":"test(source,node:Crystal::Call)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Call"}],"args_string":"(source, node : Crystal::Call)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/comparison_to_boolean.cr#L31","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Call"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"comparison = ([\"==\", \"!=\", \"===\"] of ::String).includes?(node.name)\nto_boolean = node.args.first?.try do |__arg0|\n __arg0.is_a?(Crystal::BoolLiteral)\nend || node.obj.is_a?(Crystal::BoolLiteral)\nif comparison && to_boolean\nelse\n return\nend\nissue_for(node, MSG)\n"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Lint/DebuggerStatement","path":"Ameba/Rule/Lint/DebuggerStatement.html","kind":"struct","full_name":"Ameba::Rule::Lint::DebuggerStatement","name":"DebuggerStatement","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/lint/debugger_statement.cr","line_number":14,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/debugger_statement.cr#L14"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Possible forgotten debugger statement detected\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Lint","kind":"module","full_name":"Ameba::Rule::Lint","name":"Lint"},"doc":"A rule that disallows calls to debugger.\n\nThis is because we don't want debugger breakpoints accidentally being\ncommitted into our codebase.\n\nYAML configuration example:\n\n```\nLint/DebuggerStatement:\n Enabled: true\n```\n","summary":"

    A rule that disallows calls to debugger.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows calls to debugger.\n\nThis is because we don't want debugger breakpoints accidentally being\ncommitted into our codebase.\n\nYAML configuration example:\n\n```\nLint/DebuggerStatement:\n Enabled: true\n```\n","summary":"

    A rule that disallows calls to debugger.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/debugger_statement.cr#L14","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node:Crystal::Call)-instance-method","html_id":"test(source,node:Crystal::Call)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Call"}],"args_string":"(source, node : Crystal::Call)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/debugger_statement.cr#L21","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Call"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if ((node.name == \"debugger\") && node.args.empty?) && node.obj.nil?\nelse\n return\nend\nissue_for(node, MSG)\n"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Lint/EmptyEnsure","path":"Ameba/Rule/Lint/EmptyEnsure.html","kind":"struct","full_name":"Ameba::Rule::Lint::EmptyEnsure","name":"EmptyEnsure","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/lint/empty_ensure.cr","line_number":42,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/empty_ensure.cr#L42"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Empty `ensure` block detected\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Lint","kind":"module","full_name":"Ameba::Rule::Lint","name":"Lint"},"doc":"A rule that disallows empty ensure statement.\n\nFor example, this is considered invalid:\n\n```\ndef some_method\n do_some_stuff\nensure\nend\n\nbegin\n do_some_stuff\nensure\nend\n```\n\nAnd it should be written as this:\n\n\n```\ndef some_method\n do_some_stuff\nensure\n do_something_else\nend\n\nbegin\n do_some_stuff\nensure\n do_something_else\nend\n```\n\nYAML configuration example:\n\n```\nLint/EmptyEnsure\n Enabled: true\n```\n","summary":"

    A rule that disallows empty ensure statement.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows empty ensure statement.\n\nFor example, this is considered invalid:\n\n```\ndef some_method\n do_some_stuff\nensure\nend\n\nbegin\n do_some_stuff\nensure\nend\n```\n\nAnd it should be written as this:\n\n\n```\ndef some_method\n do_some_stuff\nensure\n do_something_else\nend\n\nbegin\n do_some_stuff\nensure\n do_something_else\nend\n```\n\nYAML configuration example:\n\n```\nLint/EmptyEnsure\n Enabled: true\n```\n","summary":"

    A rule that disallows empty ensure statement.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/empty_ensure.cr#L42","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node:Crystal::ExceptionHandler)-instance-method","html_id":"test(source,node:Crystal::ExceptionHandler)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ExceptionHandler"}],"args_string":"(source, node : Crystal::ExceptionHandler)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/empty_ensure.cr#L49","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ExceptionHandler"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"node_ensure = node.ensure\nif node_ensure.nil? || (!node_ensure.nop?)\n return\nend\nissue_for(node, MSG)\n"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Lint/EmptyExpression","path":"Ameba/Rule/Lint/EmptyExpression.html","kind":"struct","full_name":"Ameba::Rule::Lint::EmptyExpression","name":"EmptyExpression","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/Ameba/AST/Util","kind":"module","full_name":"Ameba::AST::Util","name":"Util"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/lint/empty_expression.cr","line_number":31,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/empty_expression.cr#L31"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Avoid empty expression %s\"","doc":null,"summary":null},{"id":"MSG_EXRS","name":"MSG_EXRS","value":"\"Avoid empty expressions\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/Ameba/AST/Util","kind":"module","full_name":"Ameba::AST::Util","name":"Util"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Lint","kind":"module","full_name":"Ameba::Rule::Lint","name":"Lint"},"doc":"A rule that disallows empty expressions.\n\nThis is considered invalid:\n\n```\nfoo = ()\n\nif ()\n bar\nend\n```\n\nAnd this is valid:\n\n```\nfoo = (some_expression)\n\nif (some_expression)\n bar\nend\n```\n\nYAML configuration example:\n\n```\nLint/EmptyExpression:\n Enabled: true\n```\n","summary":"

    A rule that disallows empty expressions.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows empty expressions.\n\nThis is considered invalid:\n\n```\nfoo = ()\n\nif ()\n bar\nend\n```\n\nAnd this is valid:\n\n```\nfoo = (some_expression)\n\nif (some_expression)\n bar\nend\n```\n\nYAML configuration example:\n\n```\nLint/EmptyExpression:\n Enabled: true\n```\n","summary":"

    A rule that disallows empty expressions.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/empty_expression.cr#L31","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Bool","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled:Bool)-instance-method","html_id":"enabled=(enabled:Bool)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":"Bool"}],"args_string":"(enabled : Bool)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":"Bool"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node:Crystal::NilLiteral)-instance-method","html_id":"test(source,node:Crystal::NilLiteral)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::NilLiteral"}],"args_string":"(source, node : Crystal::NilLiteral)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/empty_expression.cr#L42","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::NilLiteral"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"exp = (node_source(node, source.lines)).try(&.join)\nif exp.nil? || (exp == \"nil\")\n return\nend\nissue_for(node, MSG % exp)\n"}},{"id":"test(source,node:Crystal::Expressions)-instance-method","html_id":"test(source,node:Crystal::Expressions)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Expressions"}],"args_string":"(source, node : Crystal::Expressions)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/empty_expression.cr#L50","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Expressions"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (node.expressions.size == 1) && node.expressions.first.nop?\n issue_for(node, MSG_EXRS)\nend"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Lint/EmptyLoop","path":"Ameba/Rule/Lint/EmptyLoop.html","kind":"struct","full_name":"Ameba::Rule::Lint::EmptyLoop","name":"EmptyLoop","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/Ameba/AST/Util","kind":"module","full_name":"Ameba::AST::Util","name":"Util"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/lint/empty_loop.cr","line_number":40,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/empty_loop.cr#L40"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Empty loop detected\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/Ameba/AST/Util","kind":"module","full_name":"Ameba::AST::Util","name":"Util"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Lint","kind":"module","full_name":"Ameba::Rule::Lint","name":"Lint"},"doc":"A rule that disallows empty loops.\n\nThis is considered invalid:\n\n```\nwhile false\nend\n\nuntil 10\nend\n\nloop do\n # nothing here\nend\n```\n\nAnd this is valid:\n\n```\na = 1\nwhile a < 10\n a += 1\nend\n\nuntil socket_opened?\nend\n\nloop do\n do_something_here\nend\n```\n\nYAML configuration example:\n\n```\nLint/EmptyLoop:\n Enabled: true\n```","summary":"

    A rule that disallows empty loops.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows empty loops.\n\nThis is considered invalid:\n\n```\nwhile false\nend\n\nuntil 10\nend\n\nloop do\n # nothing here\nend\n```\n\nAnd this is valid:\n\n```\na = 1\nwhile a < 10\n a += 1\nend\n\nuntil socket_opened?\nend\n\nloop do\n do_something_here\nend\n```\n\nYAML configuration example:\n\n```\nLint/EmptyLoop:\n Enabled: true\n```","summary":"

    A rule that disallows empty loops.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/empty_loop.cr#L40","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node:Crystal::Call)-instance-method","html_id":"test(source,node:Crystal::Call)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Call"}],"args_string":"(source, node : Crystal::Call)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/empty_loop.cr#L49","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Call"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if loop?(node)\nelse\n return\nend\ncheck_node(source, node, node.block)\n"}},{"id":"test(source,node:Crystal::While)-instance-method","html_id":"test(source,node:Crystal::While)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::While"}],"args_string":"(source, node : Crystal::While)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/empty_loop.cr#L55","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::While"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if literal?(node.cond)\n check_node(source, node, node.body)\nend"}},{"id":"test(source,node:Crystal::Until)-instance-method","html_id":"test(source,node:Crystal::Until)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Until"}],"args_string":"(source, node : Crystal::Until)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/empty_loop.cr#L59","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Until"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if literal?(node.cond)\n check_node(source, node, node.body)\nend"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Lint/HashDuplicatedKey","path":"Ameba/Rule/Lint/HashDuplicatedKey.html","kind":"struct","full_name":"Ameba::Rule::Lint::HashDuplicatedKey","name":"HashDuplicatedKey","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/lint/hash_duplicated_key.cr","line_number":23,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/hash_duplicated_key.cr#L23"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Duplicated keys in hash literal: %s\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Lint","kind":"module","full_name":"Ameba::Rule::Lint","name":"Lint"},"doc":"A rule that disallows duplicated keys in hash literals.\n\nThis is considered invalid:\n\n```\nh = {\"foo\" => 1, \"bar\" => 2, \"foo\" => 3}\n```\n\nAnd it has to written as this instead:\n\n```\nh = {\"foo\" => 1, \"bar\" => 2}\n```\n\nYAML configuration example:\n\n```\nLint/HashDuplicatedKey:\n Enabled: true\n```\n","summary":"

    A rule that disallows duplicated keys in hash literals.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows duplicated keys in hash literals.\n\nThis is considered invalid:\n\n```\nh = {\"foo\" => 1, \"bar\" => 2, \"foo\" => 3}\n```\n\nAnd it has to written as this instead:\n\n```\nh = {\"foo\" => 1, \"bar\" => 2}\n```\n\nYAML configuration example:\n\n```\nLint/HashDuplicatedKey:\n Enabled: true\n```\n","summary":"

    A rule that disallows duplicated keys in hash literals.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/hash_duplicated_key.cr#L23","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node:Crystal::HashLiteral)-instance-method","html_id":"test(source,node:Crystal::HashLiteral)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::HashLiteral"}],"args_string":"(source, node : Crystal::HashLiteral)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/hash_duplicated_key.cr#L30","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::HashLiteral"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (keys = duplicated_keys(node.entries)).any?\nelse\n return\nend\nissue_for(node, MSG % (keys.join(\", \")))\n"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Lint/LiteralInCondition","path":"Ameba/Rule/Lint/LiteralInCondition.html","kind":"struct","full_name":"Ameba::Rule::Lint::LiteralInCondition","name":"LiteralInCondition","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/Ameba/AST/Util","kind":"module","full_name":"Ameba::AST::Util","name":"Util"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/lint/literal_in_condition.cr","line_number":23,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/literal_in_condition.cr#L23"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Literal value found in conditional\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/Ameba/AST/Util","kind":"module","full_name":"Ameba::AST::Util","name":"Util"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Lint","kind":"module","full_name":"Ameba::Rule::Lint","name":"Lint"},"doc":"A rule that disallows useless conditional statements that contain a literal\nin place of a variable or predicate function.\n\nThis is because a conditional construct with a literal predicate will\nalways result in the same behaviour at run time, meaning it can be\nreplaced with either the body of the construct, or deleted entirely.\n\nThis is considered invalid:\n```\nif \"something\"\n :ok\nend\n```\n\nYAML configuration example:\n\n```\nLint/LiteralInCondition:\n Enabled: true\n```\n","summary":"

    A rule that disallows useless conditional statements that contain a literal in place of a variable or predicate function.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows useless conditional statements that contain a literal\nin place of a variable or predicate function.\n\nThis is because a conditional construct with a literal predicate will\nalways result in the same behaviour at run time, meaning it can be\nreplaced with either the body of the construct, or deleted entirely.\n\nThis is considered invalid:\n```\nif \"something\"\n :ok\nend\n```\n\nYAML configuration example:\n\n```\nLint/LiteralInCondition:\n Enabled: true\n```\n","summary":"

    A rule that disallows useless conditional statements that contain a literal in place of a variable or predicate function.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/literal_in_condition.cr#L23","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"check_node(source,node)-instance-method","html_id":"check_node(source,node)-instance-method","name":"check_node","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"args_string":"(source, node)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/literal_in_condition.cr#L33","def":{"name":"check_node","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if literal?(node.cond)\nelse\n return\nend\nissue_for(node, MSG)\n"}},{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node:Crystal::If)-instance-method","html_id":"test(source,node:Crystal::If)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::If"}],"args_string":"(source, node : Crystal::If)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/literal_in_condition.cr#L38","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::If"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"check_node(source, node)"}},{"id":"test(source,node:Crystal::Unless)-instance-method","html_id":"test(source,node:Crystal::Unless)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Unless"}],"args_string":"(source, node : Crystal::Unless)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/literal_in_condition.cr#L42","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Unless"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"check_node(source, node)"}},{"id":"test(source,node:Crystal::Case)-instance-method","html_id":"test(source,node:Crystal::Case)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Case"}],"args_string":"(source, node : Crystal::Case)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/literal_in_condition.cr#L46","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Case"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"check_node(source, node)"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Lint/LiteralInInterpolation","path":"Ameba/Rule/Lint/LiteralInInterpolation.html","kind":"struct","full_name":"Ameba::Rule::Lint::LiteralInInterpolation","name":"LiteralInInterpolation","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/Ameba/AST/Util","kind":"module","full_name":"Ameba::AST::Util","name":"Util"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/lint/literal_in_interpolation.cr","line_number":19,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/literal_in_interpolation.cr#L19"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Literal value found in interpolation\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/Ameba/AST/Util","kind":"module","full_name":"Ameba::AST::Util","name":"Util"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Lint","kind":"module","full_name":"Ameba::Rule::Lint","name":"Lint"},"doc":"A rule that disallows useless string interpolations\nthat contain a literal value instead of a variable or function.\n\nFor example:\n\n```\n\"Hello, #{:Ary}\"\n\"There are #{4} cats\"\n```\n\nYAML configuration example:\n\n```\nLint/LiteralInInterpolation\n Enabled: true\n```\n","summary":"

    A rule that disallows useless string interpolations that contain a literal value instead of a variable or function.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows useless string interpolations\nthat contain a literal value instead of a variable or function.\n\nFor example:\n\n```\n\"Hello, #{:Ary}\"\n\"There are #{4} cats\"\n```\n\nYAML configuration example:\n\n```\nLint/LiteralInInterpolation\n Enabled: true\n```\n","summary":"

    A rule that disallows useless string interpolations that contain a literal value instead of a variable or function.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/literal_in_interpolation.cr#L19","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node:Crystal::StringInterpolation)-instance-method","html_id":"test(source,node:Crystal::StringInterpolation)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::StringInterpolation"}],"args_string":"(source, node : Crystal::StringInterpolation)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/literal_in_interpolation.cr#L28","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::StringInterpolation"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"node.expressions.select do |e|\n (!e.is_a?(Crystal::StringLiteral)) && (literal?(e))\nend.each do |n|\n issue_for(n, MSG)\nend"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Lint/PercentArrays","path":"Ameba/Rule/Lint/PercentArrays.html","kind":"struct","full_name":"Ameba::Rule::Lint::PercentArrays","name":"PercentArrays","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/lint/percent_array.cr","line_number":27,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/percent_array.cr#L27"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Symbols `%s` may be unwanted in %s array literals\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Lint","kind":"module","full_name":"Ameba::Rule::Lint","name":"Lint"},"doc":"A rule that disallows some unwanted symbols in percent array literals.\n\nFor example, this is usually written by mistake:\n\n```\n%i(:one, :two)\n%w(\"one\", \"two\")\n```\n\nAnd the expected example is:\n\n```\n%i(one two)\n%w(one two)\n```\n\nYAML configuration example:\n\n```\nLint/PercentArrays:\n Enabled: true\n StringArrayUnwantedSymbols: ',\"'\n SymbolArrayUnwantedSymbols: ',:'\n```\n","summary":"

    A rule that disallows some unwanted symbols in percent array literals.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows some unwanted symbols in percent array literals.\n\nFor example, this is usually written by mistake:\n\n```\n%i(:one, :two)\n%w(\"one\", \"two\")\n```\n\nAnd the expected example is:\n\n```\n%i(one two)\n%w(one two)\n```\n\nYAML configuration example:\n\n```\nLint/PercentArrays:\n Enabled: true\n StringArrayUnwantedSymbols: ',\"'\n SymbolArrayUnwantedSymbols: ',:'\n```\n","summary":"

    A rule that disallows some unwanted symbols in percent array literals.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/percent_array.cr#L27","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"string_array_unwanted_symbols:String-instance-method","html_id":"string_array_unwanted_symbols:String-instance-method","name":"string_array_unwanted_symbols","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"string_array_unwanted_symbols","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@string_array_unwanted_symbols"}},{"id":"string_array_unwanted_symbols=(string_array_unwanted_symbols:String)-instance-method","html_id":"string_array_unwanted_symbols=(string_array_unwanted_symbols:String)-instance-method","name":"string_array_unwanted_symbols=","doc":null,"summary":null,"abstract":false,"args":[{"name":"string_array_unwanted_symbols","doc":null,"default_value":"","external_name":"string_array_unwanted_symbols","restriction":"String"}],"args_string":"(string_array_unwanted_symbols : String)","source_link":null,"def":{"name":"string_array_unwanted_symbols=","args":[{"name":"string_array_unwanted_symbols","doc":null,"default_value":"","external_name":"string_array_unwanted_symbols","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@string_array_unwanted_symbols = string_array_unwanted_symbols"}},{"id":"symbol_array_unwanted_symbols:String-instance-method","html_id":"symbol_array_unwanted_symbols:String-instance-method","name":"symbol_array_unwanted_symbols","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"symbol_array_unwanted_symbols","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@symbol_array_unwanted_symbols"}},{"id":"symbol_array_unwanted_symbols=(symbol_array_unwanted_symbols:String)-instance-method","html_id":"symbol_array_unwanted_symbols=(symbol_array_unwanted_symbols:String)-instance-method","name":"symbol_array_unwanted_symbols=","doc":null,"summary":null,"abstract":false,"args":[{"name":"symbol_array_unwanted_symbols","doc":null,"default_value":"","external_name":"symbol_array_unwanted_symbols","restriction":"String"}],"args_string":"(symbol_array_unwanted_symbols : String)","source_link":null,"def":{"name":"symbol_array_unwanted_symbols=","args":[{"name":"symbol_array_unwanted_symbols","doc":null,"default_value":"","external_name":"symbol_array_unwanted_symbols","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@symbol_array_unwanted_symbols = symbol_array_unwanted_symbols"}},{"id":"test(source)-instance-method","html_id":"test(source)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"args_string":"(source)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/percent_array.cr#L36","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"issue = start_token = nil\n(Tokenizer.new(source)).run do |token|\n case token.type\n when :STRING_ARRAY_START, :SYMBOL_ARRAY_START\n start_token = token.dup\n when :STRING\n if start_token && issue.nil?\n issue = array_entry_invalid?(token.value, start_token.not_nil!.raw)\n end\n when :STRING_ARRAY_END, :SYMBOL_ARRAY_END\n if issue\n issue_for(start_token.not_nil!, issue.not_nil!)\n end\n issue = start_token = nil\n else\n end\nend\n"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Lint/RandZero","path":"Ameba/Rule/Lint/RandZero.html","kind":"struct","full_name":"Ameba::Rule::Lint::RandZero","name":"RandZero","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/lint/rand_zero.cr","line_number":26,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/rand_zero.cr#L26"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"%s always returns 0\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Lint","kind":"module","full_name":"Ameba::Rule::Lint","name":"Lint"},"doc":"A rule that disallows `rand(0)` and `rand(1)` calls.\nSuch calls always return `0`.\n\nFor example:\n\n```\nrand(1)\n```\n\nShould be written as:\n\n```\nrand\n# or\nrand(2)\n```\n\nYAML configuration example:\n\n```\nLint/RandZero:\n Enabled: true\n```\n","summary":"

    A rule that disallows rand(0) and rand(1) calls.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows `rand(0)` and `rand(1)` calls.\nSuch calls always return `0`.\n\nFor example:\n\n```\nrand(1)\n```\n\nShould be written as:\n\n```\nrand\n# or\nrand(2)\n```\n\nYAML configuration example:\n\n```\nLint/RandZero:\n Enabled: true\n```\n","summary":"

    A rule that disallows rand(0) and rand(1) calls.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/rand_zero.cr#L26","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node:Crystal::Call)-instance-method","html_id":"test(source,node:Crystal::Call)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Call"}],"args_string":"(source, node : Crystal::Call)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/rand_zero.cr#L33","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Call"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (((((node.name == \"rand\") && (node.args.size == 1)) && (arg = node.args.first)) && (arg.is_a?(Crystal::NumberLiteral))) && (value = arg.value)) && ((value == \"0\") || (value == \"1\"))\nelse\n return\nend\nissue_for(node, MSG % node)\n"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Lint/RedundantStringCoercion","path":"Ameba/Rule/Lint/RedundantStringCoercion.html","kind":"struct","full_name":"Ameba::Rule::Lint::RedundantStringCoercion","name":"RedundantStringCoercion","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/Ameba/AST/Util","kind":"module","full_name":"Ameba::AST::Util","name":"Util"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/lint/redundant_string_coercion.cr","line_number":24,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/redundant_string_coercion.cr#L24"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Redundant use of `Object#to_s` in interpolation\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/Ameba/AST/Util","kind":"module","full_name":"Ameba::AST::Util","name":"Util"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Lint","kind":"module","full_name":"Ameba::Rule::Lint","name":"Lint"},"doc":"A rule that disallows string conversion in string interpolation,\nwhich is redundant.\n\nFor example, this is considered invalid:\n\n```\n\"Hello, #{name.to_s}\"\n```\n\nAnd this is valid:\n\n```\n\"Hello, #{name}\"\n```\n\nYAML configuration example:\n\n```\nLint/RedundantStringCoersion\n Enabled: true\n```\n","summary":"

    A rule that disallows string conversion in string interpolation, which is redundant.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows string conversion in string interpolation,\nwhich is redundant.\n\nFor example, this is considered invalid:\n\n```\n\"Hello, #{name.to_s}\"\n```\n\nAnd this is valid:\n\n```\n\"Hello, #{name}\"\n```\n\nYAML configuration example:\n\n```\nLint/RedundantStringCoersion\n Enabled: true\n```\n","summary":"

    A rule that disallows string conversion in string interpolation, which is redundant.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/redundant_string_coercion.cr#L24","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node:Crystal::StringInterpolation)-instance-method","html_id":"test(source,node:Crystal::StringInterpolation)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::StringInterpolation"}],"args_string":"(source, node : Crystal::StringInterpolation)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/redundant_string_coercion.cr#L33","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::StringInterpolation"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"(string_coercion_nodes(node)).each do |n|\n issue_for(n.name_location, n.end_location, MSG)\nend"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Lint/RedundantWithIndex","path":"Ameba/Rule/Lint/RedundantWithIndex.html","kind":"struct","full_name":"Ameba::Rule::Lint::RedundantWithIndex","name":"RedundantWithIndex","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/lint/redundant_with_index.cr","line_number":30,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/redundant_with_index.cr#L30"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Lint","kind":"module","full_name":"Ameba::Rule::Lint","name":"Lint"},"doc":"A rule that disallows redundant `with_index` calls.\n\nFor example, this is considered invalid:\n```\ncollection.each.with_index do |e|\n # ...\nend\n\ncollection.each_with_index do |e, _|\n # ...\nend\n```\n\nand it should be written as follows:\n\n```\ncollection.each do |e|\n # ...\nend\n```\n\nYAML configuration example:\n\n```\nLint/RedundantWithIndex:\n Enabled: true\n```\n","summary":"

    A rule that disallows redundant with_index calls.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows redundant `with_index` calls.\n\nFor example, this is considered invalid:\n```\ncollection.each.with_index do |e|\n # ...\nend\n\ncollection.each_with_index do |e, _|\n # ...\nend\n```\n\nand it should be written as follows:\n\n```\ncollection.each do |e|\n # ...\nend\n```\n\nYAML configuration example:\n\n```\nLint/RedundantWithIndex:\n Enabled: true\n```\n","summary":"

    A rule that disallows redundant with_index calls.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/redundant_with_index.cr#L30","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node:Crystal::Call)-instance-method","html_id":"test(source,node:Crystal::Call)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Call"}],"args_string":"(source, node : Crystal::Call)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/redundant_with_index.cr#L35","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Call"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"args, block = node.args, node.block\nif (args.size > 1 || block.nil?) || (with_index_arg?(block.not_nil!))\n return\nend\ncase node.name\nwhen \"with_index\"\n report(source, node, \"Remove redundant with_index\")\nwhen \"each_with_index\"\n report(source, node, \"Use each instead of each_with_index\")\nelse\nend\n"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Lint/RedundantWithObject","path":"Ameba/Rule/Lint/RedundantWithObject.html","kind":"struct","full_name":"Ameba::Rule::Lint::RedundantWithObject","name":"RedundantWithObject","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/lint/redundant_with_object.cr","line_number":31,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/redundant_with_object.cr#L31"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Lint","kind":"module","full_name":"Ameba::Rule::Lint","name":"Lint"},"doc":"A rule that disallows redundant `each_with_object` calls.\n\nFor example, this is considered invalid:\n\n```\ncollection.each_with_object(0) do |e|\n # ...\nend\n\ncollection.each_with_object(0) do |e, _|\n # ...\nend\n```\n\nand it should be written as follows:\n\n```\ncollection.each do |e|\n # ...\nend\n```\n\nYAML configuration example:\n\n```\nLint/RedundantWithObject:\n Enabled: true\n```\n","summary":"

    A rule that disallows redundant each_with_object calls.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows redundant `each_with_object` calls.\n\nFor example, this is considered invalid:\n\n```\ncollection.each_with_object(0) do |e|\n # ...\nend\n\ncollection.each_with_object(0) do |e, _|\n # ...\nend\n```\n\nand it should be written as follows:\n\n```\ncollection.each do |e|\n # ...\nend\n```\n\nYAML configuration example:\n\n```\nLint/RedundantWithObject:\n Enabled: true\n```\n","summary":"

    A rule that disallows redundant each_with_object calls.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/redundant_with_object.cr#L31","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node:Crystal::Call)-instance-method","html_id":"test(source,node:Crystal::Call)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Call"}],"args_string":"(source, node : Crystal::Call)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/redundant_with_object.cr#L36","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Call"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (((node.name != \"each_with_object\") || (node.args.size != 1)) || node.block.nil?) || (with_index_arg?(node.block.not_nil!))\n return\nend\nissue_for(node.name_location, node.name_end_location, \"Use each instead of each_with_object\")\n"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Lint/ShadowedArgument","path":"Ameba/Rule/Lint/ShadowedArgument.html","kind":"struct","full_name":"Ameba::Rule::Lint::ShadowedArgument","name":"ShadowedArgument","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/lint/shadowed_argument.cr","line_number":39,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/shadowed_argument.cr#L39"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Argument `%s` is assigned before it is used\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Lint","kind":"module","full_name":"Ameba::Rule::Lint","name":"Lint"},"doc":"A rule that disallows shadowed arguments.\n\nFor example, this is considered invalid:\n\n```\ndo_something do |foo|\n foo = 1 # shadows block argument\n foo\nend\n\ndef do_something(foo)\n foo = 1 # shadows method argument\n foo\nend\n```\n\nand it should be written as follows:\n\n```\ndo_something do |foo|\n foo = foo + 42\n foo\nend\n\ndef do_something(foo)\n foo = foo + 42\n foo\nend\n```\n\nYAML configuration example:\n\n```\nLint/ShadowedArgument:\n Enabled: true\n```\n","summary":"

    A rule that disallows shadowed arguments.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows shadowed arguments.\n\nFor example, this is considered invalid:\n\n```\ndo_something do |foo|\n foo = 1 # shadows block argument\n foo\nend\n\ndef do_something(foo)\n foo = 1 # shadows method argument\n foo\nend\n```\n\nand it should be written as follows:\n\n```\ndo_something do |foo|\n foo = foo + 42\n foo\nend\n\ndef do_something(foo)\n foo = foo + 42\n foo\nend\n```\n\nYAML configuration example:\n\n```\nLint/ShadowedArgument:\n Enabled: true\n```\n","summary":"

    A rule that disallows shadowed arguments.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/shadowed_argument.cr#L39","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node,scope:AST::Scope)-instance-method","html_id":"test(source,node,scope:AST::Scope)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""},{"name":"scope","doc":null,"default_value":"","external_name":"scope","restriction":"AST::Scope"}],"args_string":"(source, node, scope : AST::Scope)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/shadowed_argument.cr#L50","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""},{"name":"scope","doc":null,"default_value":"","external_name":"scope","restriction":"AST::Scope"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"scope.arguments.each do |arg|\n if assign = arg.variable.assign_before_reference\n else\n next\n end\n issue_for(assign, MSG % arg.name)\nend"}},{"id":"test(source)-instance-method","html_id":"test(source)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"args_string":"(source)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/shadowed_argument.cr#L46","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"AST::ScopeVisitor.new(self, source)"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Lint/ShadowedException","path":"Ameba/Rule/Lint/ShadowedException.html","kind":"struct","full_name":"Ameba::Rule::Lint::ShadowedException","name":"ShadowedException","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/lint/shadowed_exception.cr","line_number":37,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/shadowed_exception.cr#L37"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Exception handler has shadowed exceptions: %s\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Lint","kind":"module","full_name":"Ameba::Rule::Lint","name":"Lint"},"doc":"A rule that disallows a rescued exception that get shadowed by a\nless specific exception being rescued before a more specific\nexception is rescued.\n\nFor example, this is invalid:\n\n```\nbegin\n do_something\nrescue Exception\n handle_exception\nrescue ArgumentError\n handle_argument_error_exception\nend\n```\n\nAnd it has to be written as follows:\n\n```\nbegin\n do_something\nrescue ArgumentError\n handle_argument_error_exception\nrescue Exception\n handle_exception\nend\n```\n\nYAML configuration example:\n\n```\nLint/ShadowedException:\n Enabled: true\n```\n","summary":"

    A rule that disallows a rescued exception that get shadowed by a less specific exception being rescued before a more specific exception is rescued.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows a rescued exception that get shadowed by a\nless specific exception being rescued before a more specific\nexception is rescued.\n\nFor example, this is invalid:\n\n```\nbegin\n do_something\nrescue Exception\n handle_exception\nrescue ArgumentError\n handle_argument_error_exception\nend\n```\n\nAnd it has to be written as follows:\n\n```\nbegin\n do_something\nrescue ArgumentError\n handle_argument_error_exception\nrescue Exception\n handle_exception\nend\n```\n\nYAML configuration example:\n\n```\nLint/ShadowedException:\n Enabled: true\n```\n","summary":"

    A rule that disallows a rescued exception that get shadowed by a less specific exception being rescued before a more specific exception is rescued.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/shadowed_exception.cr#L37","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node:Crystal::ExceptionHandler)-instance-method","html_id":"test(source,node:Crystal::ExceptionHandler)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ExceptionHandler"}],"args_string":"(source, node : Crystal::ExceptionHandler)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/shadowed_exception.cr#L44","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ExceptionHandler"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if excs = node.rescues\nelse\n return\nend\nif (excs = shadowed(excs.map(&.types))).any?\n issue_for(node, MSG % (excs.join(\", \")))\nend\n"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Lint/ShadowingOuterLocalVar","path":"Ameba/Rule/Lint/ShadowingOuterLocalVar.html","kind":"struct","full_name":"Ameba::Rule::Lint::ShadowingOuterLocalVar","name":"ShadowingOuterLocalVar","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/lint/shadowing_local_outer_var.cr","line_number":34,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/shadowing_local_outer_var.cr#L34"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Shadowing outer local variable `%s`\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Lint","kind":"module","full_name":"Ameba::Rule::Lint","name":"Lint"},"doc":"A rule that disallows the usage of the same name as outer local variables\nfor block or proc arguments.\n\nFor example, this is considered incorrect:\n\n```\ndef some_method\n foo = 1\n\n 3.times do |foo| # shadowing outer `foo`\n end\nend\n```\n\nand should be written as:\n\n```\ndef some_method\n foo = 1\n\n 3.times do |bar|\n end\nend\n```\n\nYAML configuration example:\n\n```\nLint/ShadowingOuterLocalVar:\n Enabled: true\n```\n","summary":"

    A rule that disallows the usage of the same name as outer local variables for block or proc arguments.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows the usage of the same name as outer local variables\nfor block or proc arguments.\n\nFor example, this is considered incorrect:\n\n```\ndef some_method\n foo = 1\n\n 3.times do |foo| # shadowing outer `foo`\n end\nend\n```\n\nand should be written as:\n\n```\ndef some_method\n foo = 1\n\n 3.times do |bar|\n end\nend\n```\n\nYAML configuration example:\n\n```\nLint/ShadowingOuterLocalVar:\n Enabled: true\n```\n","summary":"

    A rule that disallows the usage of the same name as outer local variables for block or proc arguments.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/shadowing_local_outer_var.cr#L34","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node:Crystal::ProcLiteral,scope:AST::Scope)-instance-method","html_id":"test(source,node:Crystal::ProcLiteral,scope:AST::Scope)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ProcLiteral"},{"name":"scope","doc":null,"default_value":"","external_name":"scope","restriction":"AST::Scope"}],"args_string":"(source, node : Crystal::ProcLiteral, scope : AST::Scope)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/shadowing_local_outer_var.cr#L46","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ProcLiteral"},{"name":"scope","doc":null,"default_value":"","external_name":"scope","restriction":"AST::Scope"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"find_shadowing(source, scope)"}},{"id":"test(source,node:Crystal::Block,scope:AST::Scope)-instance-method","html_id":"test(source,node:Crystal::Block,scope:AST::Scope)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Block"},{"name":"scope","doc":null,"default_value":"","external_name":"scope","restriction":"AST::Scope"}],"args_string":"(source, node : Crystal::Block, scope : AST::Scope)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/shadowing_local_outer_var.cr#L50","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Block"},{"name":"scope","doc":null,"default_value":"","external_name":"scope","restriction":"AST::Scope"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"find_shadowing(source, scope)"}},{"id":"test(source)-instance-method","html_id":"test(source)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"args_string":"(source)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/shadowing_local_outer_var.cr#L42","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"AST::ScopeVisitor.new(self, source)"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Lint/SharedVarInFiber","path":"Ameba/Rule/Lint/SharedVarInFiber.html","kind":"struct","full_name":"Ameba::Rule::Lint::SharedVarInFiber","name":"SharedVarInFiber","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/lint/shared_var_in_fiber.cr","line_number":53,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/shared_var_in_fiber.cr#L53"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Shared variable `%s` is used in fiber\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Lint","kind":"module","full_name":"Ameba::Rule::Lint","name":"Lint"},"doc":"A rule that disallows using shared variables in fibers,\nwhich are mutated during iterations.\n\nIn most cases it leads to unexpected behaviour and is undesired.\n\nFor example, having this example:\n\n```\nn = 0\nchannel = Channel(Int32).new\n\nwhile n < 3\n n = n + 1\n spawn { channel.send n }\nend\n\n3.times { puts channel.receive } # => # 3, 3, 3\n```\n\nThe problem is there is only one shared between fibers variable `n`\nand when `channel.receive` is executed its value is `3`.\n\nTo solve this, the code above needs to be rewritten to the following:\n\n```\nn = 0\nchannel = Channel(Int32).new\n\nwhile n < 3\n n = n + 1\n m = n\n spawn do { channel.send m }\nend\n\n3.times { puts channel.receive } # => # 1, 2, 3\n```\n\nThis rule is able to find the shared variables between fibers, which are mutated\nduring iterations. So it reports the issue on the first sample and passes on\nthe second one.\n\nThere are also other technics to solve the problem above which are\n[officially documented](https://crystal-lang.org/reference/guides/concurrency.html)\n\nYAML configuration example:\n\n```\nLint/SharedVarInFiber:\n Enabled: true\n```\n","summary":"

    A rule that disallows using shared variables in fibers, which are mutated during iterations.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows using shared variables in fibers,\nwhich are mutated during iterations.\n\nIn most cases it leads to unexpected behaviour and is undesired.\n\nFor example, having this example:\n\n```\nn = 0\nchannel = Channel(Int32).new\n\nwhile n < 3\n n = n + 1\n spawn { channel.send n }\nend\n\n3.times { puts channel.receive } # => # 3, 3, 3\n```\n\nThe problem is there is only one shared between fibers variable `n`\nand when `channel.receive` is executed its value is `3`.\n\nTo solve this, the code above needs to be rewritten to the following:\n\n```\nn = 0\nchannel = Channel(Int32).new\n\nwhile n < 3\n n = n + 1\n m = n\n spawn do { channel.send m }\nend\n\n3.times { puts channel.receive } # => # 1, 2, 3\n```\n\nThis rule is able to find the shared variables between fibers, which are mutated\nduring iterations. So it reports the issue on the first sample and passes on\nthe second one.\n\nThere are also other technics to solve the problem above which are\n[officially documented](https://crystal-lang.org/reference/guides/concurrency.html)\n\nYAML configuration example:\n\n```\nLint/SharedVarInFiber:\n Enabled: true\n```\n","summary":"

    A rule that disallows using shared variables in fibers, which are mutated during iterations.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/shared_var_in_fiber.cr#L53","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node,scope:AST::Scope)-instance-method","html_id":"test(source,node,scope:AST::Scope)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""},{"name":"scope","doc":null,"default_value":"","external_name":"scope","restriction":"AST::Scope"}],"args_string":"(source, node, scope : AST::Scope)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/shared_var_in_fiber.cr#L64","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""},{"name":"scope","doc":null,"default_value":"","external_name":"scope","restriction":"AST::Scope"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if scope.spawn_block?\nelse\n return\nend\nscope.references.each do |ref|\n if ( variable = scope.find_variable(ref.name)).nil?\n next\n end\n if (variable.scope == scope) || (!(mutated_in_loop?(variable)))\n next\n end\n issue_for(ref.node, MSG % variable.name)\nend\n"}},{"id":"test(source)-instance-method","html_id":"test(source)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"args_string":"(source)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/shared_var_in_fiber.cr#L60","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"AST::ScopeVisitor.new(self, source)"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Lint/Syntax","path":"Ameba/Rule/Lint/Syntax.html","kind":"struct","full_name":"Ameba::Rule::Lint::Syntax","name":"Syntax","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/lint/syntax.cr","line_number":22,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/syntax.cr#L22"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Lint","kind":"module","full_name":"Ameba::Rule::Lint","name":"Lint"},"doc":"A rule that reports invalid Crystal syntax.\n\nFor example, this syntax is invalid:\n\n```\ndef hello\n do_something\nrescue Exception => e\nend\n```\n\nAnd should be properly written:\n\n```\ndef hello\n do_something\nrescue e : Exception\nend\n```\n","summary":"

    A rule that reports invalid Crystal syntax.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that reports invalid Crystal syntax.\n\nFor example, this syntax is invalid:\n\n```\ndef hello\n do_something\nrescue Exception => e\nend\n```\n\nAnd should be properly written:\n\n```\ndef hello\n do_something\nrescue e : Exception\nend\n```\n","summary":"

    A rule that reports invalid Crystal syntax.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/syntax.cr#L22","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Ameba::Severity","visibility":"Public","body":"@severity"}},{"id":"severity=(severity:Ameba::Severity)-instance-method","html_id":"severity=(severity:Ameba::Severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":"Ameba::Severity"}],"args_string":"(severity : Ameba::Severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":"Ameba::Severity"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source)-instance-method","html_id":"test(source)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"args_string":"(source)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/syntax.cr#L28","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"begin\n source.ast\nrescue e : Crystal::SyntaxException\n issue_for({e.line_number, e.column_number}, e.message.to_s)\nend"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Lint/UnneededDisableDirective","path":"Ameba/Rule/Lint/UnneededDisableDirective.html","kind":"struct","full_name":"Ameba::Rule::Lint::UnneededDisableDirective","name":"UnneededDisableDirective","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/lint/unneeded_disable_directive.cr","line_number":28,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/unneeded_disable_directive.cr#L28"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Unnecessary disabling of %s\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Lint","kind":"module","full_name":"Ameba::Rule::Lint","name":"Lint"},"doc":"A rule that reports unneeded disable directives.\nFor example, this is considered invalid:\n\n```\n# ameba:disable Style/PredicateName\ndef comment?\n do_something\nend\n```\n\nas the predicate name is correct and the comment directive does not\nhave any effect, the snippet should be written as the following:\n\n```\ndef comment?\n do_something\nend\n```\n\nYAML configuration example:\n\n```\nLint/UnneededDisableDirective\n Enabled: true\n```\n","summary":"

    A rule that reports unneeded disable directives.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that reports unneeded disable directives.\nFor example, this is considered invalid:\n\n```\n# ameba:disable Style/PredicateName\ndef comment?\n do_something\nend\n```\n\nas the predicate name is correct and the comment directive does not\nhave any effect, the snippet should be written as the following:\n\n```\ndef comment?\n do_something\nend\n```\n\nYAML configuration example:\n\n```\nLint/UnneededDisableDirective\n Enabled: true\n```\n","summary":"

    A rule that reports unneeded disable directives.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/unneeded_disable_directive.cr#L28","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source)-instance-method","html_id":"test(source)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"args_string":"(source)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/unneeded_disable_directive.cr#L35","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"(Tokenizer.new(source)).run do |token|\n if token.type == (:COMMENT)\n else\n next\n end\n if directive = source.parse_inline_directive(token.value.to_s)\n else\n next\n end\n if names = unneeded_disables(source, directive, token.location)\n else\n next\n end\n if names.any?\n else\n next\n end\n issue_for(token, MSG % (names.join(\", \")))\nend"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Lint/UnreachableCode","path":"Ameba/Rule/Lint/UnreachableCode.html","kind":"struct","full_name":"Ameba::Rule::Lint::UnreachableCode","name":"UnreachableCode","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/Ameba/AST/Util","kind":"module","full_name":"Ameba::AST::Util","name":"Util"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/lint/unreachable_code.cr","line_number":45,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/unreachable_code.cr#L45"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Unreachable code detected\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/Ameba/AST/Util","kind":"module","full_name":"Ameba::AST::Util","name":"Util"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Lint","kind":"module","full_name":"Ameba::Rule::Lint","name":"Lint"},"doc":"A rule that reports unreachable code.\n\nFor example, this is considered invalid:\n\n```\ndef method(a)\n return 42\n a + 1\nend\n```\n\n```\na = 1\nloop do\n break\n a += 1\nend\n```\n\nAnd has to be written as the following:\n\n```\ndef method(a)\n return 42 if a == 0\n a + 1\nend\n```\n\n```\na = 1\nloop do\n break a > 3\n a += 1\nend\n```\n\nYAML configuration example:\n\n```\nLint/UnreachableCode:\n Enabled: true\n```\n","summary":"

    A rule that reports unreachable code.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that reports unreachable code.\n\nFor example, this is considered invalid:\n\n```\ndef method(a)\n return 42\n a + 1\nend\n```\n\n```\na = 1\nloop do\n break\n a += 1\nend\n```\n\nAnd has to be written as the following:\n\n```\ndef method(a)\n return 42 if a == 0\n a + 1\nend\n```\n\n```\na = 1\nloop do\n break a > 3\n a += 1\nend\n```\n\nYAML configuration example:\n\n```\nLint/UnreachableCode:\n Enabled: true\n```\n","summary":"

    A rule that reports unreachable code.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/unreachable_code.cr#L45","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node,flow_expression:AST::FlowExpression)-instance-method","html_id":"test(source,node,flow_expression:AST::FlowExpression)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""},{"name":"flow_expression","doc":null,"default_value":"","external_name":"flow_expression","restriction":"AST::FlowExpression"}],"args_string":"(source, node, flow_expression : AST::FlowExpression)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/unreachable_code.cr#L58","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""},{"name":"flow_expression","doc":null,"default_value":"","external_name":"flow_expression","restriction":"AST::FlowExpression"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if unreachable_node = flow_expression.unreachable_nodes.first?\n issue_for(unreachable_node, MSG)\nend"}},{"id":"test(source)-instance-method","html_id":"test(source)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"args_string":"(source)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/unreachable_code.cr#L54","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"AST::FlowExpressionVisitor.new(self, source)"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Lint/UnusedArgument","path":"Ameba/Rule/Lint/UnusedArgument.html","kind":"struct","full_name":"Ameba::Rule::Lint::UnusedArgument","name":"UnusedArgument","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/lint/unused_argument.cr","line_number":28,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/unused_argument.cr#L28"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Unused argument `%s`. If it's necessary, use `%s` as an argument name to indicate that it won't be used.\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Lint","kind":"module","full_name":"Ameba::Rule::Lint","name":"Lint"},"doc":"A rule that reports unused arguments.\nFor example, this is considered invalid:\n\n```\ndef method(a, b, c)\n a + b\nend\n```\nand should be written as:\n\n```\ndef method(a, b)\n a + b\nend\n```\n\nYAML configuration example:\n\n```\nLint/UnusedArgument:\n Enabled: true\n IgnoreDefs: true\n IgnoreBlocks: false\n IgnoreProcs: false\n```\n","summary":"

    A rule that reports unused arguments.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that reports unused arguments.\nFor example, this is considered invalid:\n\n```\ndef method(a, b, c)\n a + b\nend\n```\nand should be written as:\n\n```\ndef method(a, b)\n a + b\nend\n```\n\nYAML configuration example:\n\n```\nLint/UnusedArgument:\n Enabled: true\n IgnoreDefs: true\n IgnoreBlocks: false\n IgnoreProcs: false\n```\n","summary":"

    A rule that reports unused arguments.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/unused_argument.cr#L28","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"ignore_blocks:Bool-instance-method","html_id":"ignore_blocks:Bool-instance-method","name":"ignore_blocks","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"ignore_blocks","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Bool","visibility":"Public","body":"@ignore_blocks"}},{"id":"ignore_blocks=(ignore_blocks:Bool)-instance-method","html_id":"ignore_blocks=(ignore_blocks:Bool)-instance-method","name":"ignore_blocks=","doc":null,"summary":null,"abstract":false,"args":[{"name":"ignore_blocks","doc":null,"default_value":"","external_name":"ignore_blocks","restriction":"Bool"}],"args_string":"(ignore_blocks : Bool)","source_link":null,"def":{"name":"ignore_blocks=","args":[{"name":"ignore_blocks","doc":null,"default_value":"","external_name":"ignore_blocks","restriction":"Bool"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@ignore_blocks = ignore_blocks"}},{"id":"ignore_defs:Bool-instance-method","html_id":"ignore_defs:Bool-instance-method","name":"ignore_defs","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"ignore_defs","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Bool","visibility":"Public","body":"@ignore_defs"}},{"id":"ignore_defs=(ignore_defs:Bool)-instance-method","html_id":"ignore_defs=(ignore_defs:Bool)-instance-method","name":"ignore_defs=","doc":null,"summary":null,"abstract":false,"args":[{"name":"ignore_defs","doc":null,"default_value":"","external_name":"ignore_defs","restriction":"Bool"}],"args_string":"(ignore_defs : Bool)","source_link":null,"def":{"name":"ignore_defs=","args":[{"name":"ignore_defs","doc":null,"default_value":"","external_name":"ignore_defs","restriction":"Bool"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@ignore_defs = ignore_defs"}},{"id":"ignore_procs:Bool-instance-method","html_id":"ignore_procs:Bool-instance-method","name":"ignore_procs","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"ignore_procs","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Bool","visibility":"Public","body":"@ignore_procs"}},{"id":"ignore_procs=(ignore_procs:Bool)-instance-method","html_id":"ignore_procs=(ignore_procs:Bool)-instance-method","name":"ignore_procs=","doc":null,"summary":null,"abstract":false,"args":[{"name":"ignore_procs","doc":null,"default_value":"","external_name":"ignore_procs","restriction":"Bool"}],"args_string":"(ignore_procs : Bool)","source_link":null,"def":{"name":"ignore_procs=","args":[{"name":"ignore_procs","doc":null,"default_value":"","external_name":"ignore_procs","restriction":"Bool"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@ignore_procs = ignore_procs"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node:Crystal::ProcLiteral,scope:AST::Scope)-instance-method","html_id":"test(source,node:Crystal::ProcLiteral,scope:AST::Scope)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ProcLiteral"},{"name":"scope","doc":null,"default_value":"","external_name":"scope","restriction":"AST::Scope"}],"args_string":"(source, node : Crystal::ProcLiteral, scope : AST::Scope)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/unused_argument.cr#L44","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ProcLiteral"},{"name":"scope","doc":null,"default_value":"","external_name":"scope","restriction":"AST::Scope"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"ignore_procs || (find_unused_arguments(source, scope))"}},{"id":"test(source,node:Crystal::Block,scope:AST::Scope)-instance-method","html_id":"test(source,node:Crystal::Block,scope:AST::Scope)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Block"},{"name":"scope","doc":null,"default_value":"","external_name":"scope","restriction":"AST::Scope"}],"args_string":"(source, node : Crystal::Block, scope : AST::Scope)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/unused_argument.cr#L48","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Block"},{"name":"scope","doc":null,"default_value":"","external_name":"scope","restriction":"AST::Scope"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"ignore_blocks || (find_unused_arguments(source, scope))"}},{"id":"test(source,node:Crystal::Def,scope:AST::Scope)-instance-method","html_id":"test(source,node:Crystal::Def,scope:AST::Scope)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Def"},{"name":"scope","doc":null,"default_value":"","external_name":"scope","restriction":"AST::Scope"}],"args_string":"(source, node : Crystal::Def, scope : AST::Scope)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/unused_argument.cr#L52","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Def"},{"name":"scope","doc":null,"default_value":"","external_name":"scope","restriction":"AST::Scope"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"ignore_defs || (find_unused_arguments(source, scope))"}},{"id":"test(source)-instance-method","html_id":"test(source)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"args_string":"(source)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/unused_argument.cr#L40","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"AST::ScopeVisitor.new(self, source)"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Lint/UselessAssign","path":"Ameba/Rule/Lint/UselessAssign.html","kind":"struct","full_name":"Ameba::Rule::Lint::UselessAssign","name":"UselessAssign","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/lint/useless_assign.cr","line_number":29,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/useless_assign.cr#L29"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Useless assignment to variable `%s`\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Lint","kind":"module","full_name":"Ameba::Rule::Lint","name":"Lint"},"doc":"A rule that disallows useless assignments.\n\nFor example, this is considered invalid:\n\n```\ndef method\n var = 1\n do_something\nend\n```\n\nAnd has to be written as the following:\n\n```\ndef method\n var = 1\n do_something(var)\nend\n```\n\nYAML configuration example:\n\n```\nLint/UselessAssign:\n Enabled: true\n```\n","summary":"

    A rule that disallows useless assignments.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows useless assignments.\n\nFor example, this is considered invalid:\n\n```\ndef method\n var = 1\n do_something\nend\n```\n\nAnd has to be written as the following:\n\n```\ndef method\n var = 1\n do_something(var)\nend\n```\n\nYAML configuration example:\n\n```\nLint/UselessAssign:\n Enabled: true\n```\n","summary":"

    A rule that disallows useless assignments.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/useless_assign.cr#L29","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node,scope:AST::Scope)-instance-method","html_id":"test(source,node,scope:AST::Scope)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""},{"name":"scope","doc":null,"default_value":"","external_name":"scope","restriction":"AST::Scope"}],"args_string":"(source, node, scope : AST::Scope)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/useless_assign.cr#L40","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""},{"name":"scope","doc":null,"default_value":"","external_name":"scope","restriction":"AST::Scope"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"scope.variables.each do |var|\n if (var.captured_by_block? || var.used_in_macro?) || var.ignored?\n next\n end\n var.assignments.each do |assign|\n if assign.referenced? || assign.transformed?\n next\n end\n issue_for(assign.target_node, MSG % var.name)\n end\nend"}},{"id":"test(source)-instance-method","html_id":"test(source)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"args_string":"(source)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/useless_assign.cr#L36","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"AST::ScopeVisitor.new(self, source)"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Lint/UselessConditionInWhen","path":"Ameba/Rule/Lint/UselessConditionInWhen.html","kind":"struct","full_name":"Ameba::Rule::Lint::UselessConditionInWhen","name":"UselessConditionInWhen","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/lint/useless_condition_in_when.cr","line_number":34,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/useless_condition_in_when.cr#L34"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Useless condition in when detected\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Lint","kind":"module","full_name":"Ameba::Rule::Lint","name":"Lint"},"doc":"A rule that disallows useless conditions in when clause\nwhere it is guaranteed to always return the same result.\n\nFor example, this is considered invalid:\n\n```\ncase\nwhen utc?\n io << \" UTC\"\nwhen local?\n Format.new(\" %:z\").format(self, io) if local?\nend\n```\n\nAnd has to be written as the following:\n\n```\ncase\nwhen utc?\n io << \" UTC\"\nwhen local?\n Format.new(\" %:z\").format(self, io)\nend\n```\n\nYAML configuration example:\n\n```\nLint/UselessConditionInWhen:\n Enabled: true\n```\n","summary":"

    A rule that disallows useless conditions in when clause where it is guaranteed to always return the same result.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows useless conditions in when clause\nwhere it is guaranteed to always return the same result.\n\nFor example, this is considered invalid:\n\n```\ncase\nwhen utc?\n io << \" UTC\"\nwhen local?\n Format.new(\" %:z\").format(self, io) if local?\nend\n```\n\nAnd has to be written as the following:\n\n```\ncase\nwhen utc?\n io << \" UTC\"\nwhen local?\n Format.new(\" %:z\").format(self, io)\nend\n```\n\nYAML configuration example:\n\n```\nLint/UselessConditionInWhen:\n Enabled: true\n```\n","summary":"

    A rule that disallows useless conditions in when clause where it is guaranteed to always return the same result.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/useless_condition_in_when.cr#L34","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node:Crystal::When)-instance-method","html_id":"test(source,node:Crystal::When)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::When"}],"args_string":"(source, node : Crystal::When)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/useless_condition_in_when.cr#L54","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::When"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"ConditionInWhenVisitor.new(self, source, node)"}}],"macros":[],"types":[]}]},{"html_id":"ameba/Ameba/Rule/Metrics","path":"Ameba/Rule/Metrics.html","kind":"module","full_name":"Ameba::Rule::Metrics","name":"Metrics","abstract":false,"superclass":null,"ancestors":[],"locations":[{"filename":"src/ameba/rule/metrics/cyclomatic_complexity.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/metrics/cyclomatic_complexity.cr#L1"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule","kind":"module","full_name":"Ameba::Rule","name":"Rule"},"doc":null,"summary":null,"class_methods":[],"constructors":[],"instance_methods":[],"macros":[],"types":[{"html_id":"ameba/Ameba/Rule/Metrics/CyclomaticComplexity","path":"Ameba/Rule/Metrics/CyclomaticComplexity.html","kind":"struct","full_name":"Ameba::Rule::Metrics::CyclomaticComplexity","name":"CyclomaticComplexity","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/metrics/cyclomatic_complexity.cr","line_number":12,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/metrics/cyclomatic_complexity.cr#L12"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Cyclomatic complexity too high [%d/%d]\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Metrics","kind":"module","full_name":"Ameba::Rule::Metrics","name":"Metrics"},"doc":"A rule that disallows methods with a cyclomatic complexity higher than `MaxComplexity`\n\nYAML configuration example:\n\n```\nMetrics/CyclomaticComplexity:\n Enabled: true\n MaxComplexity: 10\n```\n","summary":"

    A rule that disallows methods with a cyclomatic complexity higher than MaxComplexity

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows methods with a cyclomatic complexity higher than `MaxComplexity`\n\nYAML configuration example:\n\n```\nMetrics/CyclomaticComplexity:\n Enabled: true\n MaxComplexity: 10\n```\n","summary":"

    A rule that disallows methods with a cyclomatic complexity higher than MaxComplexity

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/metrics/cyclomatic_complexity.cr#L12","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"max_complexity:Int32-instance-method","html_id":"max_complexity:Int32-instance-method","name":"max_complexity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Int32","source_link":null,"def":{"name":"max_complexity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Int32","visibility":"Public","body":"@max_complexity"}},{"id":"max_complexity=(max_complexity:Int32)-instance-method","html_id":"max_complexity=(max_complexity:Int32)-instance-method","name":"max_complexity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"max_complexity","doc":null,"default_value":"","external_name":"max_complexity","restriction":"Int32"}],"args_string":"(max_complexity : Int32)","source_link":null,"def":{"name":"max_complexity=","args":[{"name":"max_complexity","doc":null,"default_value":"","external_name":"max_complexity","restriction":"Int32"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@max_complexity = max_complexity"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node:Crystal::Def)-instance-method","html_id":"test(source,node:Crystal::Def)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Def"}],"args_string":"(source, node : Crystal::Def)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/metrics/cyclomatic_complexity.cr#L20","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Def"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"complexity = (AST::CountingVisitor.new(node)).count\nif complexity > max_complexity && (location = node.name_location)\n issue_for(location, def_name_end_location(node), MSG % {complexity, max_complexity})\nend\n"}}],"macros":[],"types":[]}]},{"html_id":"ameba/Ameba/Rule/Performance","path":"Ameba/Rule/Performance.html","kind":"module","full_name":"Ameba::Rule::Performance","name":"Performance","abstract":false,"superclass":null,"ancestors":[],"locations":[{"filename":"src/ameba/rule/performance/any_after_filter.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/performance/any_after_filter.cr#L1"},{"filename":"src/ameba/rule/performance/first_last_after_filter.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/performance/first_last_after_filter.cr#L1"},{"filename":"src/ameba/rule/performance/size_after_filter.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/performance/size_after_filter.cr#L1"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule","kind":"module","full_name":"Ameba::Rule","name":"Rule"},"doc":null,"summary":null,"class_methods":[],"constructors":[],"instance_methods":[],"macros":[],"types":[{"html_id":"ameba/Ameba/Rule/Performance/AnyAfterFilter","path":"Ameba/Rule/Performance/AnyAfterFilter.html","kind":"struct","full_name":"Ameba::Rule::Performance::AnyAfterFilter","name":"AnyAfterFilter","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/performance/any_after_filter.cr","line_number":28,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/performance/any_after_filter.cr#L28"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"ANY_NAME","name":"ANY_NAME","value":"\"any?\"","doc":null,"summary":null},{"id":"MSG","name":"MSG","value":"\"Use `#{ANY_NAME} {...}` instead of `%s {...}.#{ANY_NAME}`\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Performance","kind":"module","full_name":"Ameba::Rule::Performance","name":"Performance"},"doc":"This rule is used to identify usage of `any?` calls that follow filters.\n\nFor example, this is considered invalid:\n\n```\n[1, 2, 3].select { |e| e > 2 }.any?\n[1, 2, 3].reject { |e| e >= 2 }.any?\n```\n\nAnd it should be written as this:\n\n```\n[1, 2, 3].any? { |e| e > 2 }\n[1, 2, 3].any? { |e| e < 2 }\n```\n\nYAML configuration example:\n\n```\nPerformance/AnyAfterFilter:\n Enabled: true\n FilterNames:\n - select\n - reject\n```\n","summary":"

    This rule is used to identify usage of any? calls that follow filters.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"This rule is used to identify usage of `any?` calls that follow filters.\n\nFor example, this is considered invalid:\n\n```\n[1, 2, 3].select { |e| e > 2 }.any?\n[1, 2, 3].reject { |e| e >= 2 }.any?\n```\n\nAnd it should be written as this:\n\n```\n[1, 2, 3].any? { |e| e > 2 }\n[1, 2, 3].any? { |e| e < 2 }\n```\n\nYAML configuration example:\n\n```\nPerformance/AnyAfterFilter:\n Enabled: true\n FilterNames:\n - select\n - reject\n```\n","summary":"

    This rule is used to identify usage of any? calls that follow filters.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/performance/any_after_filter.cr#L28","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"filter_names:Array(String)-instance-method","html_id":"filter_names:Array(String)-instance-method","name":"filter_names","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)","source_link":null,"def":{"name":"filter_names","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String)","visibility":"Public","body":"@filter_names"}},{"id":"filter_names=(filter_names:Array(String))-instance-method","html_id":"filter_names=(filter_names:Array(String))-instance-method","name":"filter_names=","doc":null,"summary":null,"abstract":false,"args":[{"name":"filter_names","doc":null,"default_value":"","external_name":"filter_names","restriction":"Array(String)"}],"args_string":"(filter_names : Array(String))","source_link":null,"def":{"name":"filter_names=","args":[{"name":"filter_names","doc":null,"default_value":"","external_name":"filter_names","restriction":"Array(String)"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@filter_names = filter_names"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node:Crystal::Call)-instance-method","html_id":"test(source,node:Crystal::Call)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Call"}],"args_string":"(source, node : Crystal::Call)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/performance/any_after_filter.cr#L37","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Call"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (node.name == ANY_NAME) && (obj = node.obj)\nelse\n return\nend\nif ((node.block.nil? && obj.is_a?(Crystal::Call)) && (filter_names.includes?(obj.name))) && (!obj.block.nil?)\n issue_for(obj.name_location, node.name_end_location, MSG % obj.name)\nend\n"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Performance/FirstLastAfterFilter","path":"Ameba/Rule/Performance/FirstLastAfterFilter.html","kind":"struct","full_name":"Ameba::Rule::Performance::FirstLastAfterFilter","name":"FirstLastAfterFilter","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/performance/first_last_after_filter.cr","line_number":27,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/performance/first_last_after_filter.cr#L27"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"CALL_NAMES","name":"CALL_NAMES","value":"[\"first\", \"last\", \"first?\", \"last?\"] of ::String","doc":null,"summary":null},{"id":"MSG","name":"MSG","value":"\"Use `find {...}` instead of `%s {...}.%s`\"","doc":null,"summary":null},{"id":"MSG_REVERSE","name":"MSG_REVERSE","value":"\"Use `reverse_each.find {...}` instead of `%s {...}.%s`\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Performance","kind":"module","full_name":"Ameba::Rule::Performance","name":"Performance"},"doc":"This rule is used to identify usage of `first/last/first?/last?` calls that follow filters.\n\nFor example, this is considered inefficient:\n\n```\n[-1, 0, 1, 2].select { |e| e > 0 }.first?\n[-1, 0, 1, 2].select { |e| e > 0 }.last?\n```\n\nAnd can be written as this:\n\n```\n[-1, 0, 1, 2].find { |e| e > 0 }\n[-1, 0, 1, 2].reverse_each.find { |e| e > 0 }\n```\n\nYAML configuration example:\n\n```\nPerformance/FirstLastAfterFilter\n Enabled: true\n FilterNames:\n - select\n```\n","summary":"

    This rule is used to identify usage of first/last/first?/last? calls that follow filters.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"This rule is used to identify usage of `first/last/first?/last?` calls that follow filters.\n\nFor example, this is considered inefficient:\n\n```\n[-1, 0, 1, 2].select { |e| e > 0 }.first?\n[-1, 0, 1, 2].select { |e| e > 0 }.last?\n```\n\nAnd can be written as this:\n\n```\n[-1, 0, 1, 2].find { |e| e > 0 }\n[-1, 0, 1, 2].reverse_each.find { |e| e > 0 }\n```\n\nYAML configuration example:\n\n```\nPerformance/FirstLastAfterFilter\n Enabled: true\n FilterNames:\n - select\n```\n","summary":"

    This rule is used to identify usage of first/last/first?/last? calls that follow filters.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/performance/first_last_after_filter.cr#L27","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"filter_names:Array(String)-instance-method","html_id":"filter_names:Array(String)-instance-method","name":"filter_names","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)","source_link":null,"def":{"name":"filter_names","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String)","visibility":"Public","body":"@filter_names"}},{"id":"filter_names=(filter_names:Array(String))-instance-method","html_id":"filter_names=(filter_names:Array(String))-instance-method","name":"filter_names=","doc":null,"summary":null,"abstract":false,"args":[{"name":"filter_names","doc":null,"default_value":"","external_name":"filter_names","restriction":"Array(String)"}],"args_string":"(filter_names : Array(String))","source_link":null,"def":{"name":"filter_names=","args":[{"name":"filter_names","doc":null,"default_value":"","external_name":"filter_names","restriction":"Array(String)"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@filter_names = filter_names"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node:Crystal::Call)-instance-method","html_id":"test(source,node:Crystal::Call)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Call"}],"args_string":"(source, node : Crystal::Call)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/performance/first_last_after_filter.cr#L46","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Call"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (CALL_NAMES.includes?(node.name)) && (obj = node.obj)\nelse\n return\nend\nif node.args.any?\n return\nend\nif ((node.block.nil? && obj.is_a?(Crystal::Call)) && (filter_names.includes?(obj.name))) && (!obj.block.nil?)\n message = node.name.includes?(CALL_NAMES.first) ? MSG : MSG_REVERSE\n issue_for(obj.name_location, node.name_end_location, message % {obj.name, node.name})\nend\n"}},{"id":"test(source)-instance-method","html_id":"test(source)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"args_string":"(source)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/performance/first_last_after_filter.cr#L37","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"AST::NodeVisitor.new(self, source, skip: [Crystal::Macro, Crystal::MacroExpression, Crystal::MacroIf, Crystal::MacroFor])"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Performance/SizeAfterFilter","path":"Ameba/Rule/Performance/SizeAfterFilter.html","kind":"struct","full_name":"Ameba::Rule::Performance::SizeAfterFilter","name":"SizeAfterFilter","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/performance/size_after_filter.cr","line_number":34,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/performance/size_after_filter.cr#L34"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Use `count {...}` instead of `%s {...}.#{SIZE_NAME}`.\"","doc":null,"summary":null},{"id":"SIZE_NAME","name":"SIZE_NAME","value":"\"size\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Performance","kind":"module","full_name":"Ameba::Rule::Performance","name":"Performance"},"doc":"This rule is used to identify usage of `size` calls that follow filter.\n\nFor example, this is considered invalid:\n\n```\n[1, 2, 3].select { |e| e > 2 }.size\n[1, 2, 3].reject { |e| e < 2 }.size\n[1, 2, 3].select(&.< 2).size\n[0, 1, 2].select(&.zero?).size\n[0, 1, 2].reject(&.zero?).size\n```\n\nAnd it should be written as this:\n\n```\n[1, 2, 3].count { |e| e > 2 }\n[1, 2, 3].count { |e| e >= 2 }\n[1, 2, 3].count(&.< 2)\n[0, 1, 2].count(&.zero?)\n[0, 1, 2].count(&.!= 0)\n```\n\nYAML configuration example:\n\n```\nPerformance/SizeAfterFilter:\n Enabled: true\n FilterNames:\n - select\n - reject\n```\n","summary":"

    This rule is used to identify usage of size calls that follow filter.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"This rule is used to identify usage of `size` calls that follow filter.\n\nFor example, this is considered invalid:\n\n```\n[1, 2, 3].select { |e| e > 2 }.size\n[1, 2, 3].reject { |e| e < 2 }.size\n[1, 2, 3].select(&.< 2).size\n[0, 1, 2].select(&.zero?).size\n[0, 1, 2].reject(&.zero?).size\n```\n\nAnd it should be written as this:\n\n```\n[1, 2, 3].count { |e| e > 2 }\n[1, 2, 3].count { |e| e >= 2 }\n[1, 2, 3].count(&.< 2)\n[0, 1, 2].count(&.zero?)\n[0, 1, 2].count(&.!= 0)\n```\n\nYAML configuration example:\n\n```\nPerformance/SizeAfterFilter:\n Enabled: true\n FilterNames:\n - select\n - reject\n```\n","summary":"

    This rule is used to identify usage of size calls that follow filter.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/performance/size_after_filter.cr#L34","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"filter_names:Array(String)-instance-method","html_id":"filter_names:Array(String)-instance-method","name":"filter_names","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)","source_link":null,"def":{"name":"filter_names","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String)","visibility":"Public","body":"@filter_names"}},{"id":"filter_names=(filter_names:Array(String))-instance-method","html_id":"filter_names=(filter_names:Array(String))-instance-method","name":"filter_names=","doc":null,"summary":null,"abstract":false,"args":[{"name":"filter_names","doc":null,"default_value":"","external_name":"filter_names","restriction":"Array(String)"}],"args_string":"(filter_names : Array(String))","source_link":null,"def":{"name":"filter_names=","args":[{"name":"filter_names","doc":null,"default_value":"","external_name":"filter_names","restriction":"Array(String)"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@filter_names = filter_names"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node:Crystal::Call)-instance-method","html_id":"test(source,node:Crystal::Call)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Call"}],"args_string":"(source, node : Crystal::Call)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/performance/size_after_filter.cr#L52","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Call"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (node.name == SIZE_NAME) && (obj = node.obj)\nelse\n return\nend\nif (obj.is_a?(Crystal::Call) && (filter_names.includes?(obj.name))) && (!obj.block.nil?)\n issue_for(obj.name_location, node.name_end_location, MSG % obj.name)\nend\n"}},{"id":"test(source)-instance-method","html_id":"test(source)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"args_string":"(source)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/performance/size_after_filter.cr#L43","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"AST::NodeVisitor.new(self, source, skip: [Crystal::Macro, Crystal::MacroExpression, Crystal::MacroIf, Crystal::MacroFor])"}}],"macros":[],"types":[]}]},{"html_id":"ameba/Ameba/Rule/Style","path":"Ameba/Rule/Style.html","kind":"module","full_name":"Ameba::Rule::Style","name":"Style","abstract":false,"superclass":null,"ancestors":[],"locations":[{"filename":"src/ameba/rule/style/constant_names.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/style/constant_names.cr#L1"},{"filename":"src/ameba/rule/style/is_a_nil.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/style/is_a_nil.cr#L1"},{"filename":"src/ameba/rule/style/large_numbers.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/style/large_numbers.cr#L1"},{"filename":"src/ameba/rule/style/method_names.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/style/method_names.cr#L1"},{"filename":"src/ameba/rule/style/negated_conditions_in_unless.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/style/negated_conditions_in_unless.cr#L1"},{"filename":"src/ameba/rule/style/predicate_name.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/style/predicate_name.cr#L1"},{"filename":"src/ameba/rule/style/redundant_begin.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/style/redundant_begin.cr#L1"},{"filename":"src/ameba/rule/style/redundant_next.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/style/redundant_next.cr#L1"},{"filename":"src/ameba/rule/style/redundant_return.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/style/redundant_return.cr#L1"},{"filename":"src/ameba/rule/style/type_names.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/style/type_names.cr#L1"},{"filename":"src/ameba/rule/style/unless_else.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/style/unless_else.cr#L1"},{"filename":"src/ameba/rule/style/variable_names.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/style/variable_names.cr#L1"},{"filename":"src/ameba/rule/style/while_true.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/style/while_true.cr#L1"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule","kind":"module","full_name":"Ameba::Rule","name":"Rule"},"doc":null,"summary":null,"class_methods":[],"constructors":[],"instance_methods":[],"macros":[],"types":[{"html_id":"ameba/Ameba/Rule/Style/ConstantNames","path":"Ameba/Rule/Style/ConstantNames.html","kind":"struct","full_name":"Ameba::Rule::Style::ConstantNames","name":"ConstantNames","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/style/constant_names.cr","line_number":25,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/style/constant_names.cr#L25"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Constant name should be screaming-cased: %s, not %s\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Style","kind":"module","full_name":"Ameba::Rule::Style","name":"Style"},"doc":"A rule that enforces constant names to be in screaming case.\n\nFor example, these constant names are considered valid:\n\n```\nLUCKY_NUMBERS = [3, 7, 11]\nDOCUMENTATION_URL = \"http://crystal-lang.org/docs\"\n```\n\nAnd these are invalid names:\n\n```\nmyBadConstant = 1\nWrong_NAME = 2\n```\n\nYAML configuration example:\n\n```\nStyle/ConstantNames:\n Enabled: true\n```\n","summary":"

    A rule that enforces constant names to be in screaming case.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that enforces constant names to be in screaming case.\n\nFor example, these constant names are considered valid:\n\n```\nLUCKY_NUMBERS = [3, 7, 11]\nDOCUMENTATION_URL = \"http://crystal-lang.org/docs\"\n```\n\nAnd these are invalid names:\n\n```\nmyBadConstant = 1\nWrong_NAME = 2\n```\n\nYAML configuration example:\n\n```\nStyle/ConstantNames:\n Enabled: true\n```\n","summary":"

    A rule that enforces constant names to be in screaming case.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/style/constant_names.cr#L25","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node:Crystal::Assign)-instance-method","html_id":"test(source,node:Crystal::Assign)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Assign"}],"args_string":"(source, node : Crystal::Assign)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/style/constant_names.cr#L32","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Assign"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (target = node.target).is_a?(Crystal::Path)\n name = target.names.first\n expected = name.upcase\n if (expected == name) || (name.camelcase == name)\n return\n end\n issue_for(target, MSG % {expected, name})\nend"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Style/IsANil","path":"Ameba/Rule/Style/IsANil.html","kind":"struct","full_name":"Ameba::Rule::Style::IsANil","name":"IsANil","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/style/is_a_nil.cr","line_number":23,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/style/is_a_nil.cr#L23"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Use `nil?` instead of `is_a?(Nil)`\"","doc":null,"summary":null},{"id":"PATH_NIL_NAMES","name":"PATH_NIL_NAMES","value":"[\"Nil\"] of ::String","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Style","kind":"module","full_name":"Ameba::Rule::Style","name":"Style"},"doc":"A rule that disallows calls to `is_a?(Nil)` in favor of `nil?`.\n\nThis is considered bad:\n\n```\nvar.is_a? Nil\n```\n\nAnd needs to be written as:\n\n```\nvar.nil?\n```\n\nYAML configuration example:\n\n```\nStyle/IsANil:\n Enabled: true\n```\n","summary":"

    A rule that disallows calls to is_a?(Nil) in favor of nil?.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows calls to `is_a?(Nil)` in favor of `nil?`.\n\nThis is considered bad:\n\n```\nvar.is_a? Nil\n```\n\nAnd needs to be written as:\n\n```\nvar.nil?\n```\n\nYAML configuration example:\n\n```\nStyle/IsANil:\n Enabled: true\n```\n","summary":"

    A rule that disallows calls to is_a?(Nil) in favor of nil?.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/style/is_a_nil.cr#L23","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node:Crystal::IsA)-instance-method","html_id":"test(source,node:Crystal::IsA)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::IsA"}],"args_string":"(source, node : Crystal::IsA)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/style/is_a_nil.cr#L31","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::IsA"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if node.nil_check?\n return\nend\nconst = node.const\nif const.is_a?(Crystal::Path) && (const.names == PATH_NIL_NAMES)\n issue_for(const, MSG)\nend\n"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Style/LargeNumbers","path":"Ameba/Rule/Style/LargeNumbers.html","kind":"struct","full_name":"Ameba::Rule::Style::LargeNumbers","name":"LargeNumbers","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/style/large_numbers.cr","line_number":30,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/style/large_numbers.cr#L30"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Large numbers should be written with underscores: %s\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Style","kind":"module","full_name":"Ameba::Rule::Style","name":"Style"},"doc":"A rule that disallows usage of large numbers without underscore.\nThese do not affect the value of the number, but can help read\nlarge numbers more easily.\n\nFor example, these are considered invalid:\n\n```\n10000\n141592654\n5.12345\n```\n\nAnd has to be rewritten as the following:\n\n```\n10_000\n141_592_654\n5.123_45\n```\n\nYAML configuration example:\n\n```\nStyle/LargeNumbers:\n Enabled: true\n IntMinDigits: 5 # i.e. integers higher than 9999\n```\n","summary":"

    A rule that disallows usage of large numbers without underscore.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows usage of large numbers without underscore.\nThese do not affect the value of the number, but can help read\nlarge numbers more easily.\n\nFor example, these are considered invalid:\n\n```\n10000\n141592654\n5.12345\n```\n\nAnd has to be rewritten as the following:\n\n```\n10_000\n141_592_654\n5.123_45\n```\n\nYAML configuration example:\n\n```\nStyle/LargeNumbers:\n Enabled: true\n IntMinDigits: 5 # i.e. integers higher than 9999\n```\n","summary":"

    A rule that disallows usage of large numbers without underscore.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/style/large_numbers.cr#L30","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Bool","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled:Bool)-instance-method","html_id":"enabled=(enabled:Bool)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":"Bool"}],"args_string":"(enabled : Bool)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":"Bool"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"int_min_digits:Int32-instance-method","html_id":"int_min_digits:Int32-instance-method","name":"int_min_digits","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Int32","source_link":null,"def":{"name":"int_min_digits","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Int32","visibility":"Public","body":"@int_min_digits"}},{"id":"int_min_digits=(int_min_digits:Int32)-instance-method","html_id":"int_min_digits=(int_min_digits:Int32)-instance-method","name":"int_min_digits=","doc":null,"summary":null,"abstract":false,"args":[{"name":"int_min_digits","doc":null,"default_value":"","external_name":"int_min_digits","restriction":"Int32"}],"args_string":"(int_min_digits : Int32)","source_link":null,"def":{"name":"int_min_digits=","args":[{"name":"int_min_digits","doc":null,"default_value":"","external_name":"int_min_digits","restriction":"Int32"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@int_min_digits = int_min_digits"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source)-instance-method","html_id":"test(source)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"args_string":"(source)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/style/large_numbers.cr#L39","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"(Tokenizer.new(source)).run do |token|\n if (token.type == (:NUMBER)) && (decimal?(token.raw))\n else\n next\n end\n parsed = parse_number(token.raw)\n if (allowed?(*parsed)) && ((expected = underscored(*parsed)) != token.raw)\n issue_for(token, MSG % expected)\n end\nend"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Style/MethodNames","path":"Ameba/Rule/Style/MethodNames.html","kind":"struct","full_name":"Ameba::Rule::Style::MethodNames","name":"MethodNames","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/style/method_names.cr","line_number":41,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/style/method_names.cr#L41"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Method name should be underscore-cased: %s, not %s\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Style","kind":"module","full_name":"Ameba::Rule::Style","name":"Style"},"doc":"A rule that enforces method names to be in underscored case.\n\nFor example, these are considered valid:\n\n```\nclass Person\n def first_name\n end\n\n def date_of_birth\n end\n\n def homepage_url\n end\nend\n```\n\nAnd these are invalid method names:\n\n```\nclass Person\n def firstName\n end\n\n def date_of_Birth\n end\n\n def homepageURL\n end\nend\n```\n\nYAML configuration example:\n\n```\nStyle/MethodNames:\n Enabled: true\n```\n","summary":"

    A rule that enforces method names to be in underscored case.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that enforces method names to be in underscored case.\n\nFor example, these are considered valid:\n\n```\nclass Person\n def first_name\n end\n\n def date_of_birth\n end\n\n def homepage_url\n end\nend\n```\n\nAnd these are invalid method names:\n\n```\nclass Person\n def firstName\n end\n\n def date_of_Birth\n end\n\n def homepageURL\n end\nend\n```\n\nYAML configuration example:\n\n```\nStyle/MethodNames:\n Enabled: true\n```\n","summary":"

    A rule that enforces method names to be in underscored case.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/style/method_names.cr#L41","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node:Crystal::Def)-instance-method","html_id":"test(source,node:Crystal::Def)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Def"}],"args_string":"(source, node : Crystal::Def)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/style/method_names.cr#L48","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Def"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (expected = node.name.underscore) == node.name\n return\nend\nline_number = node.location.try(&.line_number)\ncolumn_number = node.name_location.try(&.column_number)\nif line_number.nil? || column_number.nil?\n return\nend\nissue_for({line_number, column_number}, {line_number, (column_number + node.name.size) - 1}, MSG % {expected, node.name})\n"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Style/NegatedConditionsInUnless","path":"Ameba/Rule/Style/NegatedConditionsInUnless.html","kind":"struct","full_name":"Ameba::Rule::Style::NegatedConditionsInUnless","name":"NegatedConditionsInUnless","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/style/negated_conditions_in_unless.cr","line_number":30,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/style/negated_conditions_in_unless.cr#L30"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Avoid negated conditions in unless blocks\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Style","kind":"module","full_name":"Ameba::Rule::Style","name":"Style"},"doc":"A rule that disallows negated conditions in unless.\n\nFor example, this is considered invalid:\n\n```\nunless !s.empty?\n :ok\nend\n```\n\nAnd should be rewritten to the following:\n\n```\nif s.emtpy?\n :ok\nend\n```\n\nIt is pretty difficult to wrap your head around a block of code\nthat is executed if a negated condition is NOT met.\n\nYAML configuration example:\n\n```\nStyle/NegatedConditionsInUnless:\n Enabled: true\n```\n","summary":"

    A rule that disallows negated conditions in unless.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows negated conditions in unless.\n\nFor example, this is considered invalid:\n\n```\nunless !s.empty?\n :ok\nend\n```\n\nAnd should be rewritten to the following:\n\n```\nif s.emtpy?\n :ok\nend\n```\n\nIt is pretty difficult to wrap your head around a block of code\nthat is executed if a negated condition is NOT met.\n\nYAML configuration example:\n\n```\nStyle/NegatedConditionsInUnless:\n Enabled: true\n```\n","summary":"

    A rule that disallows negated conditions in unless.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/style/negated_conditions_in_unless.cr#L30","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node:Crystal::Unless)-instance-method","html_id":"test(source,node:Crystal::Unless)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Unless"}],"args_string":"(source, node : Crystal::Unless)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/style/negated_conditions_in_unless.cr#L37","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Unless"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if negated_condition?(node.cond)\nelse\n return\nend\nissue_for(node, MSG)\n"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Style/PredicateName","path":"Ameba/Rule/Style/PredicateName.html","kind":"struct","full_name":"Ameba::Rule::Style::PredicateName","name":"PredicateName","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/style/predicate_name.cr","line_number":32,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/style/predicate_name.cr#L32"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Favour method name '%s?' over '%s'\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Style","kind":"module","full_name":"Ameba::Rule::Style","name":"Style"},"doc":"A rule that disallows tautological predicate names, meaning those that\nstart with the prefix `has_` or the prefix `is_`. Ignores if the alternative isn't valid Crystal code (e.g. `is_404?`).\n\nFavour these:\n\n```\ndef valid?(x)\nend\n\ndef picture?(x)\nend\n```\n\nOver these:\n\n```\ndef is_valid?(x)\nend\n\ndef has_picture?(x)\nend\n```\n\nYAML configuration example:\n\n```\nStyle/PredicateName:\n Enabled: true\n```\n","summary":"

    A rule that disallows tautological predicate names, meaning those that start with the prefix has_ or the prefix is_.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows tautological predicate names, meaning those that\nstart with the prefix `has_` or the prefix `is_`. Ignores if the alternative isn't valid Crystal code (e.g. `is_404?`).\n\nFavour these:\n\n```\ndef valid?(x)\nend\n\ndef picture?(x)\nend\n```\n\nOver these:\n\n```\ndef is_valid?(x)\nend\n\ndef has_picture?(x)\nend\n```\n\nYAML configuration example:\n\n```\nStyle/PredicateName:\n Enabled: true\n```\n","summary":"

    A rule that disallows tautological predicate names, meaning those that start with the prefix has_ or the prefix is_.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/style/predicate_name.cr#L32","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Bool","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled:Bool)-instance-method","html_id":"enabled=(enabled:Bool)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":"Bool"}],"args_string":"(enabled : Bool)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":"Bool"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node:Crystal::Def)-instance-method","html_id":"test(source,node:Crystal::Def)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Def"}],"args_string":"(source, node : Crystal::Def)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/style/predicate_name.cr#L40","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Def"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if node.name =~ (/^(is|has)_(\\w+)\\?/)\n alternative = $~[2]\n if alternative =~ (/^[a-z][a-zA-Z_0-9]*$/)\n else\n return\n end\n issue_for(node, MSG % {alternative, node.name})\nend"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Style/RedundantBegin","path":"Ameba/Rule/Style/RedundantBegin.html","kind":"struct","full_name":"Ameba::Rule::Style::RedundantBegin","name":"RedundantBegin","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/Ameba/AST/Util","kind":"module","full_name":"Ameba::AST::Util","name":"Util"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/style/redundant_begin.cr","line_number":59,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/style/redundant_begin.cr#L59"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Redundant `begin` block detected\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/Ameba/AST/Util","kind":"module","full_name":"Ameba::AST::Util","name":"Util"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Style","kind":"module","full_name":"Ameba::Rule::Style","name":"Style"},"doc":"A rule that disallows redundant begin blocks.\n\nCurrently it is able to detect:\n\n1. Exception handler block that can be used as a part of the method.\n\nFor example, this:\n\n```\ndef method\n begin\n read_content\n rescue\n close_file\n end\nend\n```\n\nshould be rewritten as:\n\n```\ndef method\n read_content\nrescue\n close_file\nend\n```\n\n2. begin..end block as a top level block in a method.\n\nFor example this is considered invalid:\n\n```\ndef method\n begin\n a = 1\n b = 2\n end\nend\n```\n\nand has to be written as the following:\n\n```\ndef method\n a = 1\n b = 2\nend\n```\n\nYAML configuration example:\n\n```\nStyle/RedundantBegin:\n Enabled: true\n```\n","summary":"

    A rule that disallows redundant begin blocks.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows redundant begin blocks.\n\nCurrently it is able to detect:\n\n1. Exception handler block that can be used as a part of the method.\n\nFor example, this:\n\n```\ndef method\n begin\n read_content\n rescue\n close_file\n end\nend\n```\n\nshould be rewritten as:\n\n```\ndef method\n read_content\nrescue\n close_file\nend\n```\n\n2. begin..end block as a top level block in a method.\n\nFor example this is considered invalid:\n\n```\ndef method\n begin\n a = 1\n b = 2\n end\nend\n```\n\nand has to be written as the following:\n\n```\ndef method\n a = 1\n b = 2\nend\n```\n\nYAML configuration example:\n\n```\nStyle/RedundantBegin:\n Enabled: true\n```\n","summary":"

    A rule that disallows redundant begin blocks.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/style/redundant_begin.cr#L59","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node:Crystal::Def)-instance-method","html_id":"test(source,node:Crystal::Def)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Def"}],"args_string":"(source, node : Crystal::Def)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/style/redundant_begin.cr#L67","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Def"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if redundant_begin?(source, node)\nelse\n return\nend\nissue_for(node, MSG)\n"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Style/RedundantNext","path":"Ameba/Rule/Style/RedundantNext.html","kind":"struct","full_name":"Ameba::Rule::Style::RedundantNext","name":"RedundantNext","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/style/redundant_next.cr","line_number":99,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/style/redundant_next.cr#L99"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Redundant `next` detected\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Style","kind":"module","full_name":"Ameba::Rule::Style","name":"Style"},"doc":"A rule that disallows redundant next expressions. A `next` keyword allows\na block to skip to the next iteration early, however, it is considered\nredundant in cases where it is the last expression in a block or combines\ninto the node which is the last in a block.\n\nFor example, this is considered invalid:\n\n```\nblock do |v|\n next v + 1\nend\n```\n\n```\nblock do |v|\n case v\n when .nil?\n next \"nil\"\n when .blank?\n next \"blank\"\n else\n next \"empty\"\n end\nend\n```\n\nAnd has to be written as the following:\n\n```\nblock do |v|\n v + 1\nend\n```\n\n```\nblock do |v|\n case arg\n when .nil?\n \"nil\"\n when .blank?\n \"blank\"\n else\n \"empty\"\n end\nend\n```\n\n### Configuration params\n\n1. *allow_multi_next*, default: true\n\nAllows end-user to configure whether to report or not the next statements\nwhich yield tuple literals i.e.\n\n```\nblock do\n next a, b\nend\n```\n\nIf this param equals to `false`, the block above will be forced to be written as:\n\n```\nblock do\n {a, b}\nend\n```\n\n2. *allow_empty_next*, default: true\n\nAllows end-user to configure whether to report or not the next statements\nwithout arguments. Sometimes such statements are used to yild the `nil` value explicitly.\n\n```\nblock do\n @foo = :empty\n next\nend\n```\n\nIf this param equals to `false`, the block above will be forced to be written as:\n\n```\nblock do\n @foo = :empty\n nil\nend\n```\n\n### YAML config example\n\n```\nStyle/RedundantNext:\n Enabled: true\n AllowMultiNext: true\n AllowEmptyNext: true\n```","summary":"

    A rule that disallows redundant next expressions.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows redundant next expressions. A `next` keyword allows\na block to skip to the next iteration early, however, it is considered\nredundant in cases where it is the last expression in a block or combines\ninto the node which is the last in a block.\n\nFor example, this is considered invalid:\n\n```\nblock do |v|\n next v + 1\nend\n```\n\n```\nblock do |v|\n case v\n when .nil?\n next \"nil\"\n when .blank?\n next \"blank\"\n else\n next \"empty\"\n end\nend\n```\n\nAnd has to be written as the following:\n\n```\nblock do |v|\n v + 1\nend\n```\n\n```\nblock do |v|\n case arg\n when .nil?\n \"nil\"\n when .blank?\n \"blank\"\n else\n \"empty\"\n end\nend\n```\n\n### Configuration params\n\n1. *allow_multi_next*, default: true\n\nAllows end-user to configure whether to report or not the next statements\nwhich yield tuple literals i.e.\n\n```\nblock do\n next a, b\nend\n```\n\nIf this param equals to `false`, the block above will be forced to be written as:\n\n```\nblock do\n {a, b}\nend\n```\n\n2. *allow_empty_next*, default: true\n\nAllows end-user to configure whether to report or not the next statements\nwithout arguments. Sometimes such statements are used to yild the `nil` value explicitly.\n\n```\nblock do\n @foo = :empty\n next\nend\n```\n\nIf this param equals to `false`, the block above will be forced to be written as:\n\n```\nblock do\n @foo = :empty\n nil\nend\n```\n\n### YAML config example\n\n```\nStyle/RedundantNext:\n Enabled: true\n AllowMultiNext: true\n AllowEmptyNext: true\n```","summary":"

    A rule that disallows redundant next expressions.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/style/redundant_next.cr#L99","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"allow_empty_next:Bool-instance-method","html_id":"allow_empty_next:Bool-instance-method","name":"allow_empty_next","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"allow_empty_next","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Bool","visibility":"Public","body":"@allow_empty_next"}},{"id":"allow_empty_next=(allow_empty_next:Bool)-instance-method","html_id":"allow_empty_next=(allow_empty_next:Bool)-instance-method","name":"allow_empty_next=","doc":null,"summary":null,"abstract":false,"args":[{"name":"allow_empty_next","doc":null,"default_value":"","external_name":"allow_empty_next","restriction":"Bool"}],"args_string":"(allow_empty_next : Bool)","source_link":null,"def":{"name":"allow_empty_next=","args":[{"name":"allow_empty_next","doc":null,"default_value":"","external_name":"allow_empty_next","restriction":"Bool"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@allow_empty_next = allow_empty_next"}},{"id":"allow_multi_next:Bool-instance-method","html_id":"allow_multi_next:Bool-instance-method","name":"allow_multi_next","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"allow_multi_next","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Bool","visibility":"Public","body":"@allow_multi_next"}},{"id":"allow_multi_next=(allow_multi_next:Bool)-instance-method","html_id":"allow_multi_next=(allow_multi_next:Bool)-instance-method","name":"allow_multi_next=","doc":null,"summary":null,"abstract":false,"args":[{"name":"allow_multi_next","doc":null,"default_value":"","external_name":"allow_multi_next","restriction":"Bool"}],"args_string":"(allow_multi_next : Bool)","source_link":null,"def":{"name":"allow_multi_next=","args":[{"name":"allow_multi_next","doc":null,"default_value":"","external_name":"allow_multi_next","restriction":"Bool"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@allow_multi_next = allow_multi_next"}},{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node:Crystal::Next,visitor:AST::RedundantControlExpressionVisitor)-instance-method","html_id":"test(source,node:Crystal::Next,visitor:AST::RedundantControlExpressionVisitor)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Next"},{"name":"visitor","doc":null,"default_value":"","external_name":"visitor","restriction":"AST::RedundantControlExpressionVisitor"}],"args_string":"(source, node : Crystal::Next, visitor : AST::RedundantControlExpressionVisitor)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/style/redundant_next.cr#L112","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Next"},{"name":"visitor","doc":null,"default_value":"","external_name":"visitor","restriction":"AST::RedundantControlExpressionVisitor"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if allow_multi_next && node.exp.is_a?(Crystal::TupleLiteral)\n return\nend\nif allow_empty_next && (node.exp.nil? || node.exp.not_nil!.nop?)\n return\nend\nsource.try(&.add_issue(self, node, MSG))\n"}},{"id":"test(source,node:Crystal::Block)-instance-method","html_id":"test(source,node:Crystal::Block)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Block"}],"args_string":"(source, node : Crystal::Block)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/style/redundant_next.cr#L108","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Block"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"AST::RedundantControlExpressionVisitor.new(self, source, node.body)"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Style/RedundantReturn","path":"Ameba/Rule/Style/RedundantReturn.html","kind":"struct","full_name":"Ameba::Rule::Style::RedundantReturn","name":"RedundantReturn","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/style/redundant_return.cr","line_number":96,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/style/redundant_return.cr#L96"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Redundant `return` detected\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Style","kind":"module","full_name":"Ameba::Rule::Style","name":"Style"},"doc":"A rule that disallows redundant return expressions.\n\nFor example, this is considered invalid:\n\n```\ndef foo\n return :bar\nend\n```\n\n```\ndef bar(arg)\n case arg\n when .nil?\n return \"nil\"\n when .blank?\n return \"blank\"\n else\n return \"empty\"\n end\nend\n```\n\nAnd has to be written as the following:\n\n```\ndef foo\n :bar\nend\n```\n\n```\ndef bar(arg)\n case arg\n when .nil?\n \"nil\"\n when .blank?\n \"blank\"\n else\n \"empty\"\n end\nend\n```\n\n### Configuration params\n\n1. *allow_multi_return*, default: true\n\nAllows end-user to configure whether to report or not the return statements\nwhich return tuple literals i.e.\n\n```\ndef method(a, b)\n return a, b\nend\n```\n\nIf this param equals to `false`, the method above has to be written as:\n\n```\ndef method(a, b)\n {a, b}\nend\n```\n\n2. *allow_empty_return*, default: true\n\nAllows end-user to configure whether to report or not the return statements\nwithout arguments. Sometimes such returns are used to return the `nil` value explicitly.\n\n```\ndef method\n @foo = :empty\n return\nend\n```\n\nIf this param equals to `false`, the method above has to be written as:\n\n```\ndef method\n @foo = :empty\n nil\nend\n```\n\n### YAML config example\n\n```\nStyle/RedundantReturn:\n Enabled: true\n AllowMutliReturn: true\n AllowEmptyReturn: true\n```","summary":"

    A rule that disallows redundant return expressions.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows redundant return expressions.\n\nFor example, this is considered invalid:\n\n```\ndef foo\n return :bar\nend\n```\n\n```\ndef bar(arg)\n case arg\n when .nil?\n return \"nil\"\n when .blank?\n return \"blank\"\n else\n return \"empty\"\n end\nend\n```\n\nAnd has to be written as the following:\n\n```\ndef foo\n :bar\nend\n```\n\n```\ndef bar(arg)\n case arg\n when .nil?\n \"nil\"\n when .blank?\n \"blank\"\n else\n \"empty\"\n end\nend\n```\n\n### Configuration params\n\n1. *allow_multi_return*, default: true\n\nAllows end-user to configure whether to report or not the return statements\nwhich return tuple literals i.e.\n\n```\ndef method(a, b)\n return a, b\nend\n```\n\nIf this param equals to `false`, the method above has to be written as:\n\n```\ndef method(a, b)\n {a, b}\nend\n```\n\n2. *allow_empty_return*, default: true\n\nAllows end-user to configure whether to report or not the return statements\nwithout arguments. Sometimes such returns are used to return the `nil` value explicitly.\n\n```\ndef method\n @foo = :empty\n return\nend\n```\n\nIf this param equals to `false`, the method above has to be written as:\n\n```\ndef method\n @foo = :empty\n nil\nend\n```\n\n### YAML config example\n\n```\nStyle/RedundantReturn:\n Enabled: true\n AllowMutliReturn: true\n AllowEmptyReturn: true\n```","summary":"

    A rule that disallows redundant return expressions.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/style/redundant_return.cr#L96","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"allow_empty_return:Bool-instance-method","html_id":"allow_empty_return:Bool-instance-method","name":"allow_empty_return","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"allow_empty_return","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Bool","visibility":"Public","body":"@allow_empty_return"}},{"id":"allow_empty_return=(allow_empty_return:Bool)-instance-method","html_id":"allow_empty_return=(allow_empty_return:Bool)-instance-method","name":"allow_empty_return=","doc":null,"summary":null,"abstract":false,"args":[{"name":"allow_empty_return","doc":null,"default_value":"","external_name":"allow_empty_return","restriction":"Bool"}],"args_string":"(allow_empty_return : Bool)","source_link":null,"def":{"name":"allow_empty_return=","args":[{"name":"allow_empty_return","doc":null,"default_value":"","external_name":"allow_empty_return","restriction":"Bool"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@allow_empty_return = allow_empty_return"}},{"id":"allow_multi_return:Bool-instance-method","html_id":"allow_multi_return:Bool-instance-method","name":"allow_multi_return","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"allow_multi_return","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Bool","visibility":"Public","body":"@allow_multi_return"}},{"id":"allow_multi_return=(allow_multi_return:Bool)-instance-method","html_id":"allow_multi_return=(allow_multi_return:Bool)-instance-method","name":"allow_multi_return=","doc":null,"summary":null,"abstract":false,"args":[{"name":"allow_multi_return","doc":null,"default_value":"","external_name":"allow_multi_return","restriction":"Bool"}],"args_string":"(allow_multi_return : Bool)","source_link":null,"def":{"name":"allow_multi_return=","args":[{"name":"allow_multi_return","doc":null,"default_value":"","external_name":"allow_multi_return","restriction":"Bool"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@allow_multi_return = allow_multi_return"}},{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node:Crystal::Return,visitor:AST::RedundantControlExpressionVisitor)-instance-method","html_id":"test(source,node:Crystal::Return,visitor:AST::RedundantControlExpressionVisitor)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Return"},{"name":"visitor","doc":null,"default_value":"","external_name":"visitor","restriction":"AST::RedundantControlExpressionVisitor"}],"args_string":"(source, node : Crystal::Return, visitor : AST::RedundantControlExpressionVisitor)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/style/redundant_return.cr#L109","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Return"},{"name":"visitor","doc":null,"default_value":"","external_name":"visitor","restriction":"AST::RedundantControlExpressionVisitor"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if allow_multi_return && node.exp.is_a?(Crystal::TupleLiteral)\n return\nend\nif allow_empty_return && (node.exp.nil? || node.exp.not_nil!.nop?)\n return\nend\nsource.try(&.add_issue(self, node, MSG))\n"}},{"id":"test(source,node:Crystal::Def)-instance-method","html_id":"test(source,node:Crystal::Def)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Def"}],"args_string":"(source, node : Crystal::Def)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/style/redundant_return.cr#L105","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Def"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"AST::RedundantControlExpressionVisitor.new(self, source, node.body)"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Style/TypeNames","path":"Ameba/Rule/Style/TypeNames.html","kind":"struct","full_name":"Ameba::Rule::Style::TypeNames","name":"TypeNames","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/style/type_names.cr","line_number":55,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/style/type_names.cr#L55"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Type name should be camelcased: %s, but it was %s\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Style","kind":"module","full_name":"Ameba::Rule::Style","name":"Style"},"doc":"A rule that enforces type names in camelcase manner.\n\nFor example, these are considered valid:\n\n```\nclass ParseError < Exception\nend\n\nmodule HTTP\n class RequestHandler\n end\nend\n\nalias NumericValue = Float32 | Float64 | Int32 | Int64\n\nlib LibYAML\nend\n\nstruct TagDirective\nend\n\nenum Time::DayOfWeek\nend\n```\n\nAnd these are invalid type names\n\n```\nclass My_class\nend\n\nmodule HTT_p\nend\n\nalias Numeric_value = Int32\n\nlib Lib_YAML\nend\n\nstruct Tag_directive\nend\n\nenum Time_enum::Day_of_week\nend\n```\n\nYAML configuration example:\n\n```\nStyle/TypeNames:\n Enabled: true\n```\n","summary":"

    A rule that enforces type names in camelcase manner.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that enforces type names in camelcase manner.\n\nFor example, these are considered valid:\n\n```\nclass ParseError < Exception\nend\n\nmodule HTTP\n class RequestHandler\n end\nend\n\nalias NumericValue = Float32 | Float64 | Int32 | Int64\n\nlib LibYAML\nend\n\nstruct TagDirective\nend\n\nenum Time::DayOfWeek\nend\n```\n\nAnd these are invalid type names\n\n```\nclass My_class\nend\n\nmodule HTT_p\nend\n\nalias Numeric_value = Int32\n\nlib Lib_YAML\nend\n\nstruct Tag_directive\nend\n\nenum Time_enum::Day_of_week\nend\n```\n\nYAML configuration example:\n\n```\nStyle/TypeNames:\n Enabled: true\n```\n","summary":"

    A rule that enforces type names in camelcase manner.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/style/type_names.cr#L55","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node:Crystal::ClassDef)-instance-method","html_id":"test(source,node:Crystal::ClassDef)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ClassDef"}],"args_string":"(source, node : Crystal::ClassDef)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/style/type_names.cr#L70","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ClassDef"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"check_node(source, node)"}},{"id":"test(source,node:Crystal::Alias)-instance-method","html_id":"test(source,node:Crystal::Alias)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Alias"}],"args_string":"(source, node : Crystal::Alias)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/style/type_names.cr#L74","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Alias"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"check_node(source, node)"}},{"id":"test(source,node:Crystal::LibDef)-instance-method","html_id":"test(source,node:Crystal::LibDef)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::LibDef"}],"args_string":"(source, node : Crystal::LibDef)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/style/type_names.cr#L78","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::LibDef"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"check_node(source, node)"}},{"id":"test(source,node:Crystal::EnumDef)-instance-method","html_id":"test(source,node:Crystal::EnumDef)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::EnumDef"}],"args_string":"(source, node : Crystal::EnumDef)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/style/type_names.cr#L82","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::EnumDef"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"check_node(source, node)"}},{"id":"test(source,node:Crystal::ModuleDef)-instance-method","html_id":"test(source,node:Crystal::ModuleDef)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ModuleDef"}],"args_string":"(source, node : Crystal::ModuleDef)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/style/type_names.cr#L86","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ModuleDef"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"check_node(source, node)"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Style/UnlessElse","path":"Ameba/Rule/Style/UnlessElse.html","kind":"struct","full_name":"Ameba::Rule::Style::UnlessElse","name":"UnlessElse","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/style/unless_else.cr","line_number":46,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/style/unless_else.cr#L46"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Favour if over unless with else\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Style","kind":"module","full_name":"Ameba::Rule::Style","name":"Style"},"doc":"A rule that disallows the use of an `else` block with the `unless`.\n\nFor example, the rule considers these valid:\n\n```\nunless something\n :ok\nend\n\nif something\n :one\nelse\n :two\nend\n```\n\nBut it considers this one invalid as it is an `unless` with an `else`:\n\n```\nunless something\n :one\nelse\n :two\nend\n```\n\nThe solution is to swap the order of the blocks, and change the `unless` to\nan `if`, so the previous invalid example would become this:\n\n```\nif something\n :two\nelse\n :one\nend\n```\n\nYAML configuration example:\n\n```\nStyle/UnlessElse:\n Enabled: true\n```\n","summary":"

    A rule that disallows the use of an else block with the unless.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows the use of an `else` block with the `unless`.\n\nFor example, the rule considers these valid:\n\n```\nunless something\n :ok\nend\n\nif something\n :one\nelse\n :two\nend\n```\n\nBut it considers this one invalid as it is an `unless` with an `else`:\n\n```\nunless something\n :one\nelse\n :two\nend\n```\n\nThe solution is to swap the order of the blocks, and change the `unless` to\nan `if`, so the previous invalid example would become this:\n\n```\nif something\n :two\nelse\n :one\nend\n```\n\nYAML configuration example:\n\n```\nStyle/UnlessElse:\n Enabled: true\n```\n","summary":"

    A rule that disallows the use of an else block with the unless.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/style/unless_else.cr#L46","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node:Crystal::Unless)-instance-method","html_id":"test(source,node:Crystal::Unless)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Unless"}],"args_string":"(source, node : Crystal::Unless)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/style/unless_else.cr#L53","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Unless"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if node.else.nop?\n return\nend\nissue_for(node, MSG)\n"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Style/VariableNames","path":"Ameba/Rule/Style/VariableNames.html","kind":"struct","full_name":"Ameba::Rule::Style::VariableNames","name":"VariableNames","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/style/variable_names.cr","line_number":26,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/style/variable_names.cr#L26"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Var name should be underscore-cased: %s, not %s\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Style","kind":"module","full_name":"Ameba::Rule::Style","name":"Style"},"doc":"A rule that enforces variable names to be in underscored case.\n\nFor example, these variable names are considered valid:\n\n```\nvar_name = 1\nname = 2\n_another_good_name = 3\n```\n\nAnd these are invalid variable names:\n\n```\nmyBadNamedVar = 1\nwrong_Name = 2\n```\n\nYAML configuration example:\n\n```\nStyle/VariableNames:\n Enabled: true\n```\n","summary":"

    A rule that enforces variable names to be in underscored case.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that enforces variable names to be in underscored case.\n\nFor example, these variable names are considered valid:\n\n```\nvar_name = 1\nname = 2\n_another_good_name = 3\n```\n\nAnd these are invalid variable names:\n\n```\nmyBadNamedVar = 1\nwrong_Name = 2\n```\n\nYAML configuration example:\n\n```\nStyle/VariableNames:\n Enabled: true\n```\n","summary":"

    A rule that enforces variable names to be in underscored case.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/style/variable_names.cr#L26","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node:Crystal::Var)-instance-method","html_id":"test(source,node:Crystal::Var)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Var"}],"args_string":"(source, node : Crystal::Var)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/style/variable_names.cr#L39","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Var"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"check_node(source, node)"}},{"id":"test(source,node:Crystal::InstanceVar)-instance-method","html_id":"test(source,node:Crystal::InstanceVar)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::InstanceVar"}],"args_string":"(source, node : Crystal::InstanceVar)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/style/variable_names.cr#L43","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::InstanceVar"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"check_node(source, node)"}},{"id":"test(source,node:Crystal::ClassVar)-instance-method","html_id":"test(source,node:Crystal::ClassVar)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ClassVar"}],"args_string":"(source, node : Crystal::ClassVar)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/style/variable_names.cr#L47","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ClassVar"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"check_node(source, node)"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Style/WhileTrue","path":"Ameba/Rule/Style/WhileTrue.html","kind":"struct","full_name":"Ameba::Rule::Style::WhileTrue","name":"WhileTrue","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/style/while_true.cr","line_number":29,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/style/while_true.cr#L29"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"While statement using true literal as condition\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Style","kind":"module","full_name":"Ameba::Rule::Style","name":"Style"},"doc":"A rule that disallows the use of `while true` instead of using the idiomatic `loop`\n\nFor example, this is considered invalid:\n\n```\nwhile true\n do_something\n break if some_condition\nend\n```\n\nAnd should be replaced by the following:\n\n```\nloop do\n do_something\n break if some_condition\nend\n```\n\nYAML configuration example:\n\n```\nStyle/WhileTrue:\n Enabled: true\n```\n","summary":"

    A rule that disallows the use of while true instead of using the idiomatic loop

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows the use of `while true` instead of using the idiomatic `loop`\n\nFor example, this is considered invalid:\n\n```\nwhile true\n do_something\n break if some_condition\nend\n```\n\nAnd should be replaced by the following:\n\n```\nloop do\n do_something\n break if some_condition\nend\n```\n\nYAML configuration example:\n\n```\nStyle/WhileTrue:\n Enabled: true\n```\n","summary":"

    A rule that disallows the use of while true instead of using the idiomatic loop

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/style/while_true.cr#L29","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node:Crystal::While)-instance-method","html_id":"test(source,node:Crystal::While)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::While"}],"args_string":"(source, node : Crystal::While)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/style/while_true.cr#L36","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::While"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if node.cond.true_literal?\nelse\n return\nend\nissue_for(node, MSG)\n"}}],"macros":[],"types":[]}]}]},{"html_id":"ameba/Ameba/Runner","path":"Ameba/Runner.html","kind":"class","full_name":"Ameba::Runner","name":"Runner","abstract":false,"superclass":{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},"ancestors":[{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/runner.cr","line_number":13,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/runner.cr#L13"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba","kind":"module","full_name":"Ameba","name":"Ameba"},"doc":"Represents a runner for inspecting sources files.\nHolds a list of rules to do inspection based on,\nlist of sources to run inspection on and a formatter\nto prepare a report.\n\n```\nconfig = Ameba::Config.load\nrunner = Ameba::Runner.new config\nrunner.run.success? # => true or false\n```\n","summary":"

    Represents a runner for inspecting sources files.

    ","class_methods":[],"constructors":[{"id":"new(config:Config)-class-method","html_id":"new(config:Config)-class-method","name":"new","doc":"Instantiates a runner using a `config`.\n\n```\nconfig = Ameba::Config.load\nconfig.files = files\nconfig.formatter = formatter\n\nAmeba::Runner.new config\n```\n","summary":"

    Instantiates a runner using a config.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"","external_name":"config","restriction":"Config"}],"args_string":"(config : Config)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/runner.cr#L42","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"","external_name":"config","restriction":"Config"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"_ = allocate\n_.initialize(config)\nif _.responds_to?(:finalize)\n ::GC.add_finalizer(_)\nend\n_\n"}}],"instance_methods":[{"id":"explain(location,output=STDOUT)-instance-method","html_id":"explain(location,output=STDOUT)-instance-method","name":"explain","doc":"Explains an issue at a specified *location*.\n\nRunner should perform inspection before doing the explain.\nThis is necessary to be able to find the issue at a specified location.\n\n```\nrunner = Ameba::Runner.new config\nrunner.run\nrunner.explain({file: file, line: l, column: c})\n```\n","summary":"

    Explains an issue at a specified location.

    ","abstract":false,"args":[{"name":"location","doc":null,"default_value":"","external_name":"location","restriction":""},{"name":"output","doc":null,"default_value":"STDOUT","external_name":"output","restriction":""}],"args_string":"(location, output = STDOUT)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/runner.cr#L118","def":{"name":"explain","args":[{"name":"location","doc":null,"default_value":"","external_name":"location","restriction":""},{"name":"output","doc":null,"default_value":"STDOUT","external_name":"output","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"(Formatter::ExplainFormatter.new(output, location)).finished(@sources)"}},{"id":"run-instance-method","html_id":"run-instance-method","name":"run","doc":"Performs the inspection. Iterates through all sources and test it using\nlist of rules. If a specific rule fails on a specific source, it adds\nan issue to that source.\n\nThis action also notifies formatter when inspection is started/finished,\nand when a specific source started/finished to be inspected.\n\n```\nrunner = Ameba::Runner.new config\nrunner.run # => returns runner again\n```\n","summary":"

    Performs the inspection.

    ","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/runner.cr#L69","def":{"name":"run","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"begin\n @formatter.started(@sources)\n channels = @sources.map do\n Channel(Exception | ::Nil).new\n end\n @sources.each_with_index do |source, idx|\n channel = channels[idx]\n spawn do\n begin\n run_source(source)\n rescue e\n channel.send(e)\n else\n channel.send(nil)\n end\n end\n end\n channels.each do |c|\n e = c.receive\n if e.nil?\n else\n raise(e)\n end\n end\n self\nensure\n @formatter.finished(@sources)\nend"}},{"id":"sources:Array(Source)-instance-method","html_id":"sources:Array(Source)-instance-method","name":"sources","doc":"A list of sources to run inspection on.","summary":"

    A list of sources to run inspection on.

    ","abstract":false,"args":[],"args_string":" : Array(Source)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/runner.cr#L18","def":{"name":"sources","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(Source)","visibility":"Public","body":"@sources"}},{"id":"success?-instance-method","html_id":"success?-instance-method","name":"success?","doc":"Indicates whether the last inspection successful or not.\nIt returns true if no issues matching severity in sources found, false otherwise.\n\n```\nrunner = Ameba::Runner.new config\nrunner.run\nrunner.success? # => true or false\n```\n","summary":"

    Indicates whether the last inspection successful or not.

    ","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/runner.cr#L131","def":{"name":"success?","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@sources.all? do |source|\n source.issues.reject(&.disabled?).none? do |issue|\n issue.rule.severity <= @severity\n end\nend"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Severity","path":"Ameba/Severity.html","kind":"enum","full_name":"Ameba::Severity","name":"Severity","abstract":false,"superclass":null,"ancestors":[{"html_id":"ameba/Enum","kind":"struct","full_name":"Enum","name":"Enum"},{"html_id":"ameba/Comparable","kind":"module","full_name":"Comparable","name":"Comparable"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/severity.cr","line_number":2,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/severity.cr#L2"}],"repository_name":"ameba","program":false,"enum":true,"alias":false,"aliased":"","const":false,"constants":[{"id":"Error","name":"Error","value":"0","doc":null,"summary":null},{"id":"Warning","name":"Warning","value":"1","doc":null,"summary":null},{"id":"Convention","name":"Convention","value":"2","doc":null,"summary":null}],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba","kind":"module","full_name":"Ameba","name":"Ameba"},"doc":null,"summary":null,"class_methods":[{"id":"parse(name:String)-class-method","html_id":"parse(name:String)-class-method","name":"parse","doc":"Creates Severity by the name.\n\n```\nSeverity.parse(\"convention\") # => Severity::Convention\nSeverity.parse(\"foo-bar\") # => Exception: Incorrect severity name\n```\n","summary":"

    Creates Severity by the name.

    ","abstract":false,"args":[{"name":"name","doc":null,"default_value":"","external_name":"name","restriction":"String"}],"args_string":"(name : String)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/severity.cr#L23","def":{"name":"parse","args":[{"name":"name","doc":null,"default_value":"","external_name":"name","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"begin\n super(name)\nrescue ArgumentError\n raise(\"Incorrect severity name #{name}. Try one of #{values}\")\nend"}}],"constructors":[],"instance_methods":[{"id":"convention?-instance-method","html_id":"convention?-instance-method","name":"convention?","doc":null,"summary":null,"abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/severity.cr#L5","def":{"name":"convention?","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"self == Convention"}},{"id":"error?-instance-method","html_id":"error?-instance-method","name":"error?","doc":null,"summary":null,"abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/severity.cr#L3","def":{"name":"error?","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"self == Error"}},{"id":"symbol-instance-method","html_id":"symbol-instance-method","name":"symbol","doc":"Returns a symbol uniquely indicating severity.\n\n```\nSeverity::Warning.symbol # => 'W'\n```","summary":"

    Returns a symbol uniquely indicating severity.

    ","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/severity.cr#L12","def":{"name":"symbol","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"to_s[0]"}},{"id":"warning?-instance-method","html_id":"warning?-instance-method","name":"warning?","doc":null,"summary":null,"abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/severity.cr#L4","def":{"name":"warning?","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"self == Warning"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/SeverityYamlConverter","path":"Ameba/SeverityYamlConverter.html","kind":"class","full_name":"Ameba::SeverityYamlConverter","name":"SeverityYamlConverter","abstract":false,"superclass":{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},"ancestors":[{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/severity.cr","line_number":31,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/severity.cr#L31"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba","kind":"module","full_name":"Ameba","name":"Ameba"},"doc":"Converter for `YAML.mapping` which converts severity enum to and from YAML.","summary":"

    Converter for YAML.mapping which converts severity enum to and from YAML.

    ","class_methods":[{"id":"from_yaml(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"from_yaml(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"from_yaml","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/severity.cr#L32","def":{"name":"from_yaml","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if node.is_a?(YAML::Nodes::Scalar)\nelse\n raise(\"Severity must be a scalar, not #{node.class}\")\nend\ncase value = node.value\nwhen String\n Severity.parse(value)\nwhen Nil\n nil\nelse\n raise(\"Incorrect severity: #{value}\")\nend\n"}},{"id":"to_yaml(value:Severity,yaml:YAML::Nodes::Builder)-class-method","html_id":"to_yaml(value:Severity,yaml:YAML::Nodes::Builder)-class-method","name":"to_yaml","doc":null,"summary":null,"abstract":false,"args":[{"name":"value","doc":null,"default_value":"","external_name":"value","restriction":"Severity"},{"name":"yaml","doc":null,"default_value":"","external_name":"yaml","restriction":"YAML::Nodes::Builder"}],"args_string":"(value : Severity, yaml : YAML::Nodes::Builder)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/severity.cr#L45","def":{"name":"to_yaml","args":[{"name":"value","doc":null,"default_value":"","external_name":"value","restriction":"Severity"},{"name":"yaml","doc":null,"default_value":"","external_name":"yaml","restriction":"YAML::Nodes::Builder"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"yaml.scalar(value)"}}],"constructors":[],"instance_methods":[],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Source","path":"Ameba/Source.html","kind":"class","full_name":"Ameba::Source","name":"Source","abstract":false,"superclass":{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},"ancestors":[{"html_id":"ameba/Ameba/Reportable","kind":"module","full_name":"Ameba::Reportable","name":"Reportable"},{"html_id":"ameba/Ameba/InlineComments","kind":"module","full_name":"Ameba::InlineComments","name":"InlineComments"},{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/source.cr","line_number":4,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/source.cr#L4"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[{"html_id":"ameba/Ameba/InlineComments","kind":"module","full_name":"Ameba::InlineComments","name":"InlineComments"},{"html_id":"ameba/Ameba/Reportable","kind":"module","full_name":"Ameba::Reportable","name":"Reportable"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba","kind":"module","full_name":"Ameba","name":"Ameba"},"doc":"An entity that represents a Crystal source file.\nHas path, lines of code and issues reported by rules.","summary":"

    An entity that represents a Crystal source file.

    ","class_methods":[],"constructors":[{"id":"new(code:String,path="")-class-method","html_id":"new(code:String,path="")-class-method","name":"new","doc":"Creates a new source by `code` and `path`.\n\nFor example:\n\n```\npath = \"./src/source.cr\"\nAmeba::Source.new File.read(path), path\n```\n","summary":"

    Creates a new source by #code and #path.

    ","abstract":false,"args":[{"name":"code","doc":null,"default_value":"","external_name":"code","restriction":"String"},{"name":"path","doc":null,"default_value":"\"\"","external_name":"path","restriction":""}],"args_string":"(code : String, path = "")","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/source.cr#L27","def":{"name":"new","args":[{"name":"code","doc":null,"default_value":"","external_name":"code","restriction":"String"},{"name":"path","doc":null,"default_value":"\"\"","external_name":"path","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"_ = allocate\n_.initialize(code, path)\nif _.responds_to?(:finalize)\n ::GC.add_finalizer(_)\nend\n_\n"}}],"instance_methods":[{"id":"ast-instance-method","html_id":"ast-instance-method","name":"ast","doc":"Returns AST nodes constructed by `Crystal::Parser`.\n\n```\nsource = Ameba::Source.new code, path\nsource.ast\n```\n","summary":"

    Returns AST nodes constructed by Crystal::Parser.

    ","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/source.cr#L52","def":{"name":"ast","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@ast || (@ast = (Crystal::Parser.new(code)).tap do |parser|\n parser.wants_doc = true\nend.tap do |parser|\n parser.filename = @path\nend.parse)"}},{"id":"code:String-instance-method","html_id":"code:String-instance-method","name":"code","doc":"Crystal code (content of a source file).","summary":"

    Crystal code (content of a source file).

    ","abstract":false,"args":[],"args_string":" : String","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/source.cr#L12","def":{"name":"code","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@code"}},{"id":"fullpath-instance-method","html_id":"fullpath-instance-method","name":"fullpath","doc":null,"summary":null,"abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/source.cr#L60","def":{"name":"fullpath","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@fullpath || (@fullpath = File.expand_path(@path))"}},{"id":"lines-instance-method","html_id":"lines-instance-method","name":"lines","doc":"Returns lines of code splitted by new line character.\nSince `code` is immutable and can't be changed, this\nmethod caches lines in an instance variable, so calling\nit second time will not perform a split, but will return\nlines instantly.\n\n```\nsource = Ameba::Source.new \"a = 1\\nb = 2\", path\nsource.lines # => [\"a = 1\", \"b = 2\"]\n```\n","summary":"

    Returns lines of code splitted by new line character.

    ","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/source.cr#L41","def":{"name":"lines","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@lines || (@lines = @code.split(\"\\n\"))"}},{"id":"matches_path?(filepath)-instance-method","html_id":"matches_path?(filepath)-instance-method","name":"matches_path?","doc":"Returns true if *filepath* matches the source's path, false if it does not.","summary":"

    Returns true if filepath matches the source's path, false if it does not.

    ","abstract":false,"args":[{"name":"filepath","doc":null,"default_value":"","external_name":"filepath","restriction":""}],"args_string":"(filepath)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/source.cr#L65","def":{"name":"matches_path?","args":[{"name":"filepath","doc":null,"default_value":"","external_name":"filepath","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"(path == filepath) || (path == (File.expand_path(filepath)))"}},{"id":"path:String-instance-method","html_id":"path:String-instance-method","name":"path","doc":"Path to the source file.","summary":"

    Path to the source file.

    ","abstract":false,"args":[],"args_string":" : String","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/source.cr#L9","def":{"name":"path","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@path"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Tokenizer","path":"Ameba/Tokenizer.html","kind":"class","full_name":"Ameba::Tokenizer","name":"Tokenizer","abstract":false,"superclass":{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},"ancestors":[{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/tokenizer.cr","line_number":14,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/tokenizer.cr#L14"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba","kind":"module","full_name":"Ameba","name":"Ameba"},"doc":"Represents Crystal syntax tokenizer based on `Crystal::Lexer`.\n\n```\nsource = Ameba::Source.new code, path\ntokenizer = Ameba::Tokenizer.new(source)\ntokenizer.run do |token|\n puts token\nend\n```\n","summary":"

    Represents Crystal syntax tokenizer based on Crystal::Lexer.

    ","class_methods":[],"constructors":[{"id":"new(lexer:Crystal::Lexer)-class-method","html_id":"new(lexer:Crystal::Lexer)-class-method","name":"new","doc":"Instantiates Tokenizer using a `lexer`.\n\n```\nlexer = Crystal::Lexer.new(code)\nAmeba::Tokenizer.new(lexer)\n```\n","summary":"

    Instantiates Tokenizer using a lexer.

    ","abstract":false,"args":[{"name":"lexer","doc":null,"default_value":"","external_name":"lexer","restriction":"Crystal::Lexer"}],"args_string":"(lexer : Crystal::Lexer)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/tokenizer.cr#L37","def":{"name":"new","args":[{"name":"lexer","doc":null,"default_value":"","external_name":"lexer","restriction":"Crystal::Lexer"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"_ = allocate\n_.initialize(lexer)\nif _.responds_to?(:finalize)\n ::GC.add_finalizer(_)\nend\n_\n"}},{"id":"new(source)-class-method","html_id":"new(source)-class-method","name":"new","doc":"Instantiates Tokenizer using a `source`.\n\n```\nsource = Ameba::Source.new code, path\nAmeba::Tokenizer.new(source)\n```\n","summary":"

    Instantiates Tokenizer using a source.

    ","abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"args_string":"(source)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/tokenizer.cr#L22","def":{"name":"new","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"_ = allocate\n_.initialize(source)\nif _.responds_to?(:finalize)\n ::GC.add_finalizer(_)\nend\n_\n"}}],"instance_methods":[{"id":"run(&block:Crystal::Token->_)-instance-method","html_id":"run(&block:Crystal::Token->_)-instance-method","name":"run","doc":"Runs the tokenizer and yields each token as a block argument.\n\n```\nAmeba::Tokenizer.new(source).run do |token|\n puts token\nend\n```\n","summary":"

    Runs the tokenizer and yields each token as a block argument.

    ","abstract":false,"args":[],"args_string":"(&block : Crystal::Token -> _)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/tokenizer.cr#L48","def":{"name":"run","args":[],"double_splat":null,"splat_index":null,"yields":1,"block_arg":{"name":"block","doc":null,"default_value":"","external_name":"block","restriction":"(Crystal::Token -> _)"},"return_type":"","visibility":"Public","body":"begin\n run_normal_state(@lexer, &block)\n true\nrescue e : Crystal::SyntaxException\n false\nend"}}],"macros":[],"types":[]}]}]}} \ No newline at end of file +{"repository_name":"ameba","body":"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n- [About](#about)\n- [Usage](#usage)\n * [Run in parallel](#run-in-parallel)\n- [Installation](#installation)\n * [As a project dependency:](#as-a-project-dependency)\n * [OS X](#os-x)\n * [Docker](#docker)\n * [From sources](#from-sources)\n- [Configuration](#configuration)\n * [Sources](#sources)\n * [Rules](#rules)\n * [Explain issues](#explain-issues)\n * [Inline disabling](#inline-disabling)\n- [Editors & integrations](#editors--integrations)\n- [Credits & inspirations](#credits--inspirations)\n- [Contributors](#contributors)\n\n## About\n\nAmeba is a static code analysis tool for the Crystal language.\nIt enforces a consistent [Crystal code style](https://crystal-lang.org/docs/conventions/coding_style.html),\nalso catches code smells and wrong code constructions.\n\nSee also [Roadmap](https://github.com/crystal-ameba/ameba/wiki).\n\n## Usage\n\nRun `ameba` binary within your project directory to catch code issues:\n\n```sh\n$ ameba\nInspecting 107 files.\n\n...............F.....................F....................................................................\n\nsrc/ameba/formatter/flycheck_formatter.cr:4:33\n[W] Lint/UnusedArgument: Unused argument `location`\n> source.issues.each do |e, location|\n ^\n\nsrc/ameba/formatter/base_formatter.cr:12:7\n[W] Lint/UselessAssign: Useless assignment to variable `s`\n> return s += issues.size\n ^\n\nFinished in 542.64 milliseconds\n\n129 inspected, 2 failures.\n\n```\n\n### Run in parallel\n\nStarting from 0.31.0 Crystal [supports parallelism](https://crystal-lang.org/2019/09/06/parallelism-in-crystal.html).\nIt allows to run linting in parallel too.\nIn order to take advantage of this feature you need to build ameba with preview_mt support:\n\n```sh\n$ crystal build src/cli.cr -Dpreview_mt -o bin/ameba\n$ make install\n```\n\nSome quick benchmark results measured while running Ameba on Crystal repo:\n\n```sh\n$ CRYSTAL_WORKERS=1 ameba #=> 29.11 seconds\n$ CRYSTAL_WORKERS=2 ameba #=> 19.49 seconds\n$ CRYSTAL_WORKERS=4 ameba #=> 13.48 seconds\n$ CRYSTAL_WORKERS=8 ameba #=> 10.14 seconds\n```\n\n## Installation\n\n### As a project dependency:\n\nAdd this to your application's `shard.yml`:\n\n```yaml\ndevelopment_dependencies:\n ameba:\n github: crystal-ameba/ameba\n version: ~> 0.13.0\n```\n\nBuild `bin/ameba` binary within your project directory while running `shards install`.\n\nYou may also want to use it on [Travis](travis-ci.org):\n\n```yaml\n# .travis.yml\nlanguage: crystal\ninstall:\n - shards install\nscript:\n - crystal spec\n - crystal bin/ameba.cr\n```\n\nUsing this config Ameba will inspect files just after the specs run. Travis will also fail\nthe build if some problems detected.\n\n### OS X\n\n```sh\n$ brew tap veelenga/tap\n$ brew install ameba\n```\n\n### Docker\n\nBuild the image:\n\n```sh\n$ docker build -t crystal-ameba/ameba .\n```\n\nTo use the resulting image on a local source folder, mount the current (or target) directory into `/src`:\n\n```sh\n$ docker run -v $(pwd):/src crystal-ameba/ameba\n```\n\nAlso available on DockerHub: https://hub.docker.com/r/veelenga/ameba\n\n### From sources\n\n```sh\n$ git clone https://github.com/crystal-ameba/ameba && cd ameba\n$ make install\n```\n\n## Configuration\n\nDefault configuration file is `.ameba.yml`.\nIt allows to configure rule properties, disable specific rules and exclude sources from the rules.\n\nGenerate new file by running `ameba --gen-config`.\n\n### Sources\n\n**List of sources to run Ameba on can be configured globally via:**\n\n- `Globs` section - an array of wildcards (or paths) to include to the\n inspection. Defaults to `%w(**/*.cr !lib)`, meaning it includes all project\n files with `*.cr` extension except those which exist in `lib` folder.\n- `Excluded` section - an array of wildcards (or paths) to exclude from the\n source list defined by `Globs`. Defaults to an empty array.\n\nIn this example we define default globs and exclude `src/compiler` folder:\n\n``` yaml\nGlobs:\n - **/*.cr\n - !lib\n\nExcluded:\n - src/compiler\n```\n\n**Specific sources can be excluded at rule level**:\n\n``` yaml\nStyle/RedundantBegin:\n Excluded:\n - src/server/processor.cr\n - src/server/api.cr\n```\n\n### Rules\n\nOne or more rules, or a one or more group of rules can be included or excluded\nvia command line arguments:\n\n```sh\n$ ameba --only Lint/Syntax # runs only Lint/Syntax rule\n$ ameba --only Style,Lint # runs only rules from Style and Lint groups\n$ ameba --except Lint/Syntax # runs all rules except Lint/Syntax\n$ ameba --except Style,Lint # runs all rules except rules in Style and Lint groups\n```\n\nOr through the configuration file:\n\n``` yaml\nStyle/RedundantBegin:\n Enabled: false\n```\n\n### Explain issues\n\nAmeba allows you to dig deeper into an issue, by showing you details about the issue\nand the reasoning by it being reported.\n\nTo be convenient, you can just copy-paste the `PATH:line:column` string from the\nreport and paste behind the `ameba` command to check it out.\n\n```sh\n$ ameba crystal/command/format.cr:26:83 # show explanation for the issue\n$ ameba --explain crystal/command/format.cr:26:83 # same thing\n```\n\n### Inline disabling\n\nOne or more rules or one or more group of rules can be disabled using inline directives:\n\n```crystal\n# ameba:disable Style/LargeNumbers\ntime = Time.epoch(1483859302)\n\ntime = Time.epoch(1483859302) # ameba:disable Style/LargeNumbers, Lint/UselessAssign\n\ntime = Time.epoch(1483859302) # ameba:disable Style, Lint\n```\n\n## Editors & integrations\n\n * Vim: [vim-crystal](https://github.com/rhysd/vim-crystal), [Ale](https://github.com/w0rp/ale)\n * Emacs: [ameba.el](https://github.com/crystal-ameba/ameba.el)\n * Sublime Text: [Sublime Linter Ameba](https://github.com/epergo/SublimeLinter-contrib-ameba)\n * VSCode: [vscode-crystal-ameba](https://github.com/crystal-ameba/vscode-crystal-ameba)\n * Codacy: [codacy-ameba](https://github.com/codacy/codacy-ameba)\n * GitHub Actions: [github-action](https://github.com/crystal-ameba/github-action)\n\n## Credits & inspirations\n\n- [Crystal Language](https://crystal-lang.org)\n- [Rubocop](https://rubocop.readthedocs.io/en/latest/)\n- [Credo](http://credo-ci.org/)\n- [Dogma](https://github.com/lpil/dogma)\n\n## Contributors\n\n- [veelenga](https://github.com/veelenga) Vitalii Elenhaupt - creator, maintainer\n","program":{"html_id":"ameba/toplevel","path":"toplevel.html","kind":"module","full_name":"Top Level Namespace","name":"Top Level Namespace","abstract":false,"superclass":null,"ancestors":[],"locations":[],"repository_name":"ameba","program":true,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":null,"doc":null,"summary":null,"class_methods":[],"constructors":[],"instance_methods":[],"macros":[],"types":[{"html_id":"ameba/Ameba","path":"Ameba.html","kind":"module","full_name":"Ameba","name":"Ameba","abstract":false,"superclass":null,"ancestors":[],"locations":[{"filename":"src/ameba.cr","line_number":24,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba.cr#L24"},{"filename":"src/ameba/glob_utils.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/glob_utils.cr#L1"},{"filename":"src/ameba/inline_comments.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/inline_comments.cr#L1"},{"filename":"src/ameba/issue.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/issue.cr#L1"},{"filename":"src/ameba/reportable.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/reportable.cr#L1"},{"filename":"src/ameba/runner.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/runner.cr#L1"},{"filename":"src/ameba/severity.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/severity.cr#L1"},{"filename":"src/ameba/source.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/source.cr#L1"},{"filename":"src/ameba/tokenizer.cr","line_number":3,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/tokenizer.cr#L3"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"VERSION","name":"VERSION","value":"{{ (`shards version \\\"/home/runner/work/ameba/ameba/src\\\"`).chomp.stringify }}","doc":null,"summary":null}],"included_modules":[],"extended_modules":[{"html_id":"ameba/Ameba","kind":"module","full_name":"Ameba","name":"Ameba"}],"subclasses":[],"including_types":[],"namespace":null,"doc":"Ameba's entry module.\n\nTo run the linter with default parameters:\n\n```\nAmeba.run\n```\n\nTo configure and run it:\n\n```\nconfig = Ameba::Config.load\nconfig.formatter = formatter\nconfig.files = file_paths\n\nAmeba.run config\n```\n","summary":"

    Ameba's entry module.

    ","class_methods":[],"constructors":[],"instance_methods":[{"id":"run(config=Config.load)-instance-method","html_id":"run(config=Config.load)-instance-method","name":"run","doc":"Initializes `Ameba::Runner` and runs it.\nCan be configured via `config` parameter.\n\nExamples:\n\n```\nAmeba.run\nAmeba.run config\n```\n","summary":"

    Initializes Ameba::Runner and runs it.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"Config.load","external_name":"config","restriction":""}],"args_string":"(config = Config.load)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba.cr#L39","def":{"name":"run","args":[{"name":"config","doc":null,"default_value":"Config.load","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"(Runner.new(config)).run"}}],"macros":[],"types":[{"html_id":"ameba/Ameba/AST","path":"Ameba/AST.html","kind":"module","full_name":"Ameba::AST","name":"AST","abstract":false,"superclass":null,"ancestors":[],"locations":[{"filename":"src/ameba/ast/branch.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/branch.cr#L1"},{"filename":"src/ameba/ast/branchable.cr","line_number":3,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/branchable.cr#L3"},{"filename":"src/ameba/ast/flow_expression.cr","line_number":3,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/flow_expression.cr#L3"},{"filename":"src/ameba/ast/scope.cr","line_number":3,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/scope.cr#L3"},{"filename":"src/ameba/ast/variabling/argument.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/variabling/argument.cr#L1"},{"filename":"src/ameba/ast/variabling/assignment.cr","line_number":4,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/variabling/assignment.cr#L4"},{"filename":"src/ameba/ast/variabling/ivariable.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/variabling/ivariable.cr#L1"},{"filename":"src/ameba/ast/variabling/reference.cr","line_number":3,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/variabling/reference.cr#L3"},{"filename":"src/ameba/ast/variabling/variable.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/variabling/variable.cr#L1"},{"filename":"src/ameba/ast/visitors/base_visitor.cr","line_number":4,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/visitors/base_visitor.cr#L4"},{"filename":"src/ameba/ast/visitors/counting_visitor.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/visitors/counting_visitor.cr#L1"},{"filename":"src/ameba/ast/visitors/flow_expression_visitor.cr","line_number":4,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/visitors/flow_expression_visitor.cr#L4"},{"filename":"src/ameba/ast/visitors/node_visitor.cr","line_number":3,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/visitors/node_visitor.cr#L3"},{"filename":"src/ameba/ast/visitors/redundant_control_expression_visitor.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/visitors/redundant_control_expression_visitor.cr#L1"},{"filename":"src/ameba/ast/visitors/scope_visitor.cr","line_number":3,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/visitors/scope_visitor.cr#L3"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"NODES","name":"NODES","value":"[Alias, IsA, Assign, Call, Block, Case, ClassDef, ClassVar, Def, EnumDef, ExceptionHandler, Expressions, HashLiteral, If, InstanceVar, LibDef, ModuleDef, NilLiteral, StringInterpolation, Unless, Var, When, While, Until]","doc":"List of nodes to be visited by Ameba's rules.","summary":"

    List of nodes to be visited by Ameba's rules.

    "}],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba","kind":"module","full_name":"Ameba","name":"Ameba"},"doc":"A module that helps to traverse Crystal AST using `Crystal::Visitor`.","summary":"

    A module that helps to traverse Crystal AST using Crystal::Visitor.

    ","class_methods":[],"constructors":[],"instance_methods":[],"macros":[],"types":[{"html_id":"ameba/Ameba/AST/Argument","path":"Ameba/AST/Argument.html","kind":"class","full_name":"Ameba::AST::Argument","name":"Argument","abstract":false,"superclass":{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},"ancestors":[{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/ast/variabling/argument.cr","line_number":15,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/variabling/argument.cr#L15"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/AST","kind":"module","full_name":"Ameba::AST","name":"AST"},"doc":"Represents the argument of some node.\nHolds the reference to the variable, thus to scope.\n\nFor example, all these vars are arguments:\n\n```\ndef method(a, b, c = 10, &block)\n 3.times do |i|\n end\n\n ->(x : Int32) {}\nend\n```","summary":"

    Represents the argument of some node.

    ","class_methods":[],"constructors":[{"id":"new(node,variable)-class-method","html_id":"new(node,variable)-class-method","name":"new","doc":"Creates a new argument.\n\n```\nArgument.new(node, variable)\n```","summary":"

    Creates a new argument.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""},{"name":"variable","doc":null,"default_value":"","external_name":"variable","restriction":""}],"args_string":"(node, variable)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/variabling/argument.cr#L31","def":{"name":"new","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""},{"name":"variable","doc":null,"default_value":"","external_name":"variable","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"_ = allocate\n_.initialize(node, variable)\nif _.responds_to?(:finalize)\n ::GC.add_finalizer(_)\nend\n_\n"}}],"instance_methods":[{"id":"end_location(*args,**options)-instance-method","html_id":"end_location(*args,**options)-instance-method","name":"end_location","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/variabling/argument.cr#L23","def":{"name":"end_location","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.end_location(*args, **options)"}},{"id":"end_location(*args,**options,&)-instance-method","html_id":"end_location(*args,**options,&)-instance-method","name":"end_location","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options, &)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/variabling/argument.cr#L23","def":{"name":"end_location","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":1,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.end_location(*args, **options) do |*yield_args|\n yield *yield_args\nend"}},{"id":"ignored?-instance-method","html_id":"ignored?-instance-method","name":"ignored?","doc":"Returns true if the name starts with '_', false if not.","summary":"

    Returns true if the name starts with '_', false if not.

    ","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/variabling/argument.cr#L35","def":{"name":"ignored?","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"name.starts_with?('_')"}},{"id":"location(*args,**options)-instance-method","html_id":"location(*args,**options)-instance-method","name":"location","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/variabling/argument.cr#L22","def":{"name":"location","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.location(*args, **options)"}},{"id":"location(*args,**options,&)-instance-method","html_id":"location(*args,**options,&)-instance-method","name":"location","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options, &)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/variabling/argument.cr#L22","def":{"name":"location","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":1,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.location(*args, **options) do |*yield_args|\n yield *yield_args\nend"}},{"id":"name-instance-method","html_id":"name-instance-method","name":"name","doc":"Name of the argument.","summary":"

    Name of the argument.

    ","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/variabling/argument.cr#L40","def":{"name":"name","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"case current_node = node\nwhen Crystal::Var\n current_node.name\nwhen Crystal::Arg\n current_node.name\nelse\n raise(ArgumentError.new(\"invalid node\"))\nend"}},{"id":"node:Crystal::Var|Crystal::Arg-instance-method","html_id":"node:Crystal::Var|Crystal::Arg-instance-method","name":"node","doc":"The actual node.","summary":"

    The actual node.

    ","abstract":false,"args":[],"args_string":" : Crystal::Var | Crystal::Arg","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/variabling/argument.cr#L17","def":{"name":"node","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Crystal::Var | Crystal::Arg","visibility":"Public","body":"@node"}},{"id":"to_s(*args,**options)-instance-method","html_id":"to_s(*args,**options)-instance-method","name":"to_s","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/variabling/argument.cr#L24","def":{"name":"to_s","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.to_s(*args, **options)"}},{"id":"to_s(*args,**options,&)-instance-method","html_id":"to_s(*args,**options,&)-instance-method","name":"to_s","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options, &)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/variabling/argument.cr#L24","def":{"name":"to_s","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":1,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.to_s(*args, **options) do |*yield_args|\n yield *yield_args\nend"}},{"id":"variable:Variable-instance-method","html_id":"variable:Variable-instance-method","name":"variable","doc":"Variable of this argument (may be the same node)","summary":"

    Variable of this argument (may be the same node)

    ","abstract":false,"args":[],"args_string":" : Variable","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/variabling/argument.cr#L20","def":{"name":"variable","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Variable","visibility":"Public","body":"@variable"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/AST/Assignment","path":"Ameba/AST/Assignment.html","kind":"class","full_name":"Ameba::AST::Assignment","name":"Assignment","abstract":false,"superclass":{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},"ancestors":[{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/ast/variabling/assignment.cr","line_number":7,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/variabling/assignment.cr#L7"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/AST","kind":"module","full_name":"Ameba::AST","name":"AST"},"doc":"Represents the assignment to the variable.\nHolds the assign node and the variable.","summary":"

    Represents the assignment to the variable.

    ","class_methods":[],"constructors":[{"id":"new(node,variable,scope)-class-method","html_id":"new(node,variable,scope)-class-method","name":"new","doc":"Creates a new assignment.\n\n```\nAssignment.new(node, variable, scope)\n```\n","summary":"

    Creates a new assignment.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""},{"name":"variable","doc":null,"default_value":"","external_name":"variable","restriction":""},{"name":"scope","doc":null,"default_value":"","external_name":"scope","restriction":""}],"args_string":"(node, variable, scope)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/variabling/assignment.cr#L32","def":{"name":"new","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""},{"name":"variable","doc":null,"default_value":"","external_name":"variable","restriction":""},{"name":"scope","doc":null,"default_value":"","external_name":"scope","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"_ = allocate\n_.initialize(node, variable, scope)\nif _.responds_to?(:finalize)\n ::GC.add_finalizer(_)\nend\n_\n"}}],"instance_methods":[{"id":"branch:Branch?-instance-method","html_id":"branch:Branch?-instance-method","name":"branch","doc":"Branch of this assignment.","summary":"

    Branch of this assignment.

    ","abstract":false,"args":[],"args_string":" : Branch?","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/variabling/assignment.cr#L17","def":{"name":"branch","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Branch | ::Nil","visibility":"Public","body":"@branch"}},{"id":"end_location(*args,**options,&)-instance-method","html_id":"end_location(*args,**options,&)-instance-method","name":"end_location","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options, &)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/variabling/assignment.cr#L24","def":{"name":"end_location","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":1,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.end_location(*args, **options) do |*yield_args|\n yield *yield_args\nend"}},{"id":"end_location(*args,**options)-instance-method","html_id":"end_location(*args,**options)-instance-method","name":"end_location","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/variabling/assignment.cr#L24","def":{"name":"end_location","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.end_location(*args, **options)"}},{"id":"in_branch?-instance-method","html_id":"in_branch?-instance-method","name":"in_branch?","doc":"Returns true if this assignment is in a branch, false if not.\nFor example, this assignment is in a branch:\n\n```\na = 1 if a.nil?\n```","summary":"

    Returns true if this assignment is in a branch, false if not.

    ","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/variabling/assignment.cr#L61","def":{"name":"in_branch?","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"!branch.nil?"}},{"id":"location(*args,**options)-instance-method","html_id":"location(*args,**options)-instance-method","name":"location","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/variabling/assignment.cr#L23","def":{"name":"location","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.location(*args, **options)"}},{"id":"location(*args,**options,&)-instance-method","html_id":"location(*args,**options,&)-instance-method","name":"location","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options, &)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/variabling/assignment.cr#L23","def":{"name":"location","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":1,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.location(*args, **options) do |*yield_args|\n yield *yield_args\nend"}},{"id":"node:Crystal::ASTNode-instance-method","html_id":"node:Crystal::ASTNode-instance-method","name":"node","doc":"The actual assignment node.","summary":"

    The actual assignment node.

    ","abstract":false,"args":[],"args_string":" : Crystal::ASTNode","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/variabling/assignment.cr#L11","def":{"name":"node","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Crystal::ASTNode","visibility":"Public","body":"@node"}},{"id":"op_assign?-instance-method","html_id":"op_assign?-instance-method","name":"op_assign?","doc":"Returns true if this assignment is an op assign, false if not.\nFor example, this is an op assign:\n\n```\na ||= 1\n```","summary":"

    Returns true if this assignment is an op assign, false if not.

    ","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/variabling/assignment.cr#L51","def":{"name":"op_assign?","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"node.is_a?(Crystal::OpAssign)"}},{"id":"referenced=(referenced)-instance-method","html_id":"referenced=(referenced)-instance-method","name":"referenced=","doc":null,"summary":null,"abstract":false,"args":[{"name":"referenced","doc":null,"default_value":"","external_name":"referenced","restriction":""}],"args_string":"(referenced)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/variabling/assignment.cr#L8","def":{"name":"referenced=","args":[{"name":"referenced","doc":null,"default_value":"","external_name":"referenced","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@referenced = referenced"}},{"id":"referenced?:Bool-instance-method","html_id":"referenced?:Bool-instance-method","name":"referenced?","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/variabling/assignment.cr#L8","def":{"name":"referenced?","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@referenced"}},{"id":"referenced_in_loop?-instance-method","html_id":"referenced_in_loop?-instance-method","name":"referenced_in_loop?","doc":null,"summary":null,"abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/variabling/assignment.cr#L41","def":{"name":"referenced_in_loop?","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@variable.referenced? && @branch.try(&.in_loop?)"}},{"id":"scope:Scope-instance-method","html_id":"scope:Scope-instance-method","name":"scope","doc":"A scope assignment belongs to","summary":"

    A scope assignment belongs to

    ","abstract":false,"args":[],"args_string":" : Scope","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/variabling/assignment.cr#L20","def":{"name":"scope","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Scope","visibility":"Public","body":"@scope"}},{"id":"target_node-instance-method","html_id":"target_node-instance-method","name":"target_node","doc":"Returns the target node of the variable in this assignment.","summary":"

    Returns the target node of the variable in this assignment.

    ","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/variabling/assignment.cr#L66","def":{"name":"target_node","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"case assign = node\nwhen Crystal::Assign\n assign.target\nwhen Crystal::OpAssign\n assign.target\nwhen Crystal::UninitializedVar\n assign.var\nwhen Crystal::MultiAssign\n assign.targets.find(node) do |target|\n target.is_a?(Crystal::Var) && (target.name == variable.name)\n end\nelse\n node\nend"}},{"id":"to_s(*args,**options,&)-instance-method","html_id":"to_s(*args,**options,&)-instance-method","name":"to_s","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options, &)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/variabling/assignment.cr#L22","def":{"name":"to_s","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":1,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.to_s(*args, **options) do |*yield_args|\n yield *yield_args\nend"}},{"id":"to_s(*args,**options)-instance-method","html_id":"to_s(*args,**options)-instance-method","name":"to_s","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/variabling/assignment.cr#L22","def":{"name":"to_s","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.to_s(*args, **options)"}},{"id":"transformed?-instance-method","html_id":"transformed?-instance-method","name":"transformed?","doc":"Indicates whether the node is a transformed assignment by the compiler.\ni.e.\n\n```\ncollection.each do |(a, b)|\n puts b\nend\n```\n\nis transformed to:\n\n```\ncollection.each do |__arg0|\n a = __arg0[0]\n b = __arg0[1]\n puts(b)\nend\n```\n","summary":"

    Indicates whether the node is a transformed assignment by the compiler.

    ","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/variabling/assignment.cr#L99","def":{"name":"transformed?","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (assign = node).is_a?(Crystal::Assign)\nelse\n return false\nend\nif (value = assign.value).is_a?(Crystal::Call)\nelse\n return false\nend\nif (obj = value.obj).is_a?(Crystal::Var)\nelse\n return false\nend\nobj.name.starts_with?(\"__arg\")\n"}},{"id":"variable:Variable-instance-method","html_id":"variable:Variable-instance-method","name":"variable","doc":"Variable of this assignment.","summary":"

    Variable of this assignment.

    ","abstract":false,"args":[],"args_string":" : Variable","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/variabling/assignment.cr#L14","def":{"name":"variable","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Variable","visibility":"Public","body":"@variable"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/AST/BaseVisitor","path":"Ameba/AST/BaseVisitor.html","kind":"class","full_name":"Ameba::AST::BaseVisitor","name":"BaseVisitor","abstract":true,"superclass":{"html_id":"ameba/Crystal/Visitor","kind":"class","full_name":"Crystal::Visitor","name":"Visitor"},"ancestors":[{"html_id":"ameba/Crystal/Visitor","kind":"class","full_name":"Crystal::Visitor","name":"Visitor"},{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/ast/visitors/base_visitor.cr","line_number":6,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/visitors/base_visitor.cr#L6"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[{"html_id":"ameba/Ameba/AST/FlowExpressionVisitor","kind":"class","full_name":"Ameba::AST::FlowExpressionVisitor","name":"FlowExpressionVisitor"},{"html_id":"ameba/Ameba/AST/NodeVisitor","kind":"class","full_name":"Ameba::AST::NodeVisitor","name":"NodeVisitor"},{"html_id":"ameba/Ameba/AST/ScopeVisitor","kind":"class","full_name":"Ameba::AST::ScopeVisitor","name":"ScopeVisitor"}],"including_types":[],"namespace":{"html_id":"ameba/Ameba/AST","kind":"module","full_name":"Ameba::AST","name":"AST"},"doc":"An abstract base visitor that utilizes general logic for all visitors.","summary":"

    An abstract base visitor that utilizes general logic for all visitors.

    ","class_methods":[],"constructors":[{"id":"new(rule,source)-class-method","html_id":"new(rule,source)-class-method","name":"new","doc":"Creates instance of this visitor.\n\n```\nvisitor = Ameba::AST::NodeVisitor.new(rule, source)\n```\n","summary":"

    Creates instance of this visitor.

    ","abstract":false,"args":[{"name":"rule","doc":null,"default_value":"","external_name":"rule","restriction":""},{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"args_string":"(rule, source)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/visitors/base_visitor.cr#L19","def":{"name":"new","args":[{"name":"rule","doc":null,"default_value":"","external_name":"rule","restriction":""},{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"_ = allocate\n_.initialize(rule, source)\nif _.responds_to?(:finalize)\n ::GC.add_finalizer(_)\nend\n_\n"}}],"instance_methods":[{"id":"visit(node:Crystal::ASTNode)-instance-method","html_id":"visit(node:Crystal::ASTNode)-instance-method","name":"visit","doc":"A main visit method that accepts `Crystal::ASTNode`.\nReturns true meaning all child nodes will be traversed.","summary":"

    A main visit method that accepts Crystal::ASTNode.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ASTNode"}],"args_string":"(node : Crystal::ASTNode)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/visitors/base_visitor.cr#L25","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ASTNode"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"true"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/AST/Branch","path":"Ameba/AST/Branch.html","kind":"class","full_name":"Ameba::AST::Branch","name":"Branch","abstract":false,"superclass":{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},"ancestors":[{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/ast/branch.cr","line_number":15,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/branch.cr#L15"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/AST","kind":"module","full_name":"Ameba::AST","name":"AST"},"doc":"Represents the branch in Crystal code.\nBranch is a part of a branchable statement.\nFor example, the branchable if statement contains 3 branches:\n\n```\nif a = something # --> Branch A\n a = 1 # --> Branch B\n put a if out # --> Branch C\nelse\n do_something a # --> Branch D\nend\n```\n","summary":"

    Represents the branch in Crystal code.

    ","class_methods":[{"id":"of(node:Crystal::ASTNode,parent_node:Crystal::ASTNode)-class-method","html_id":"of(node:Crystal::ASTNode,parent_node:Crystal::ASTNode)-class-method","name":"of","doc":"Constructs a new branch based on the node some parent scope.\n\n```\nBranch.of(assign_node, def_node)\n```","summary":"

    Constructs a new branch based on the node some parent scope.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ASTNode"},{"name":"parent_node","doc":null,"default_value":"","external_name":"parent_node","restriction":"Crystal::ASTNode"}],"args_string":"(node : Crystal::ASTNode, parent_node : Crystal::ASTNode)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/branch.cr#L66","def":{"name":"of","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ASTNode"},{"name":"parent_node","doc":null,"default_value":"","external_name":"parent_node","restriction":"Crystal::ASTNode"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"(BranchVisitor.new(node)).tap(&.accept(parent_node)).branch"}},{"id":"of(node:Crystal::ASTNode,scope:Scope)-class-method","html_id":"of(node:Crystal::ASTNode,scope:Scope)-class-method","name":"of","doc":"Constructs a new branch based on the node in scope.\n\n```\nBranch.of(assign_node, scope)\n```","summary":"

    Constructs a new branch based on the node in scope.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ASTNode"},{"name":"scope","doc":null,"default_value":"","external_name":"scope","restriction":"Scope"}],"args_string":"(node : Crystal::ASTNode, scope : Scope)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/branch.cr#L57","def":{"name":"of","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ASTNode"},{"name":"scope","doc":null,"default_value":"","external_name":"scope","restriction":"Scope"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"of(node, scope.node)"}}],"constructors":[{"id":"new(node,parent)-class-method","html_id":"new(node,parent)-class-method","name":"new","doc":"Creates a new branch.\n\n```\nBranch.new(if_node)\n```","summary":"

    Creates a new branch.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""},{"name":"parent","doc":null,"default_value":"","external_name":"parent","restriction":""}],"args_string":"(node, parent)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/branch.cr#L33","def":{"name":"new","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""},{"name":"parent","doc":null,"default_value":"","external_name":"parent","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"_ = allocate\n_.initialize(node, parent)\nif _.responds_to?(:finalize)\n ::GC.add_finalizer(_)\nend\n_\n"}}],"instance_methods":[{"id":"==(other:self)-instance-method","html_id":"==(other:self)-instance-method","name":"==","doc":"Returns `true` if this reference is the same as *other*. Invokes `same?`.","summary":"

    Returns true if this reference is the same as other.

    ","abstract":false,"args":[{"name":"other","doc":null,"default_value":"","external_name":"other","restriction":"self"}],"args_string":"(other : self)","source_link":null,"def":{"name":"==","args":[{"name":"other","doc":null,"default_value":"","external_name":"other","restriction":"self"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if node == other.node\nelse\n return false\nend\nif location == other.location\nelse\n return false\nend\ntrue\n"}},{"id":"end_location(*args,**options)-instance-method","html_id":"end_location(*args,**options)-instance-method","name":"end_location","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/branch.cr#L24","def":{"name":"end_location","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.end_location(*args, **options)"}},{"id":"end_location(*args,**options,&)-instance-method","html_id":"end_location(*args,**options,&)-instance-method","name":"end_location","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options, &)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/branch.cr#L24","def":{"name":"end_location","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":1,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.end_location(*args, **options) do |*yield_args|\n yield *yield_args\nend"}},{"id":"hash(hasher)-instance-method","html_id":"hash(hasher)-instance-method","name":"hash","doc":"See `Object#hash(hasher)`","summary":"

    See Object#hash(hasher)

    ","abstract":false,"args":[{"name":"hasher","doc":null,"default_value":"","external_name":"hasher","restriction":""}],"args_string":"(hasher)","source_link":null,"def":{"name":"hash","args":[{"name":"hasher","doc":null,"default_value":"","external_name":"hasher","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"hasher = node.hash(hasher)\nhasher = location.hash(hasher)\nhasher\n"}},{"id":"in_loop?-instance-method","html_id":"in_loop?-instance-method","name":"in_loop?","doc":"Returns true if current branch is in a loop, false - otherwise.\nFor example, this branch is in a loop:\n\n```\nwhile true\n handle_input # this branch is in a loop\n if wrong_input\n show_message # this branch is also in a loop.\n end\nend\n```\n","summary":"

    Returns true if current branch is in a loop, false - otherwise.

    ","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/branch.cr#L48","def":{"name":"in_loop?","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@parent.loop?"}},{"id":"location(*args,**options)-instance-method","html_id":"location(*args,**options)-instance-method","name":"location","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/branch.cr#L23","def":{"name":"location","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.location(*args, **options)"}},{"id":"location(*args,**options,&)-instance-method","html_id":"location(*args,**options,&)-instance-method","name":"location","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options, &)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/branch.cr#L23","def":{"name":"location","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":1,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.location(*args, **options) do |*yield_args|\n yield *yield_args\nend"}},{"id":"node:Crystal::ASTNode-instance-method","html_id":"node:Crystal::ASTNode-instance-method","name":"node","doc":"The actual branch node.","summary":"

    The actual branch node.

    ","abstract":false,"args":[],"args_string":" : Crystal::ASTNode","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/branch.cr#L17","def":{"name":"node","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Crystal::ASTNode","visibility":"Public","body":"@node"}},{"id":"parent:Branchable-instance-method","html_id":"parent:Branchable-instance-method","name":"parent","doc":"The parent branchable.","summary":"

    The parent branchable.

    ","abstract":false,"args":[],"args_string":" : Branchable","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/branch.cr#L20","def":{"name":"parent","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Branchable","visibility":"Public","body":"@parent"}},{"id":"to_s(*args,**options)-instance-method","html_id":"to_s(*args,**options)-instance-method","name":"to_s","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/branch.cr#L22","def":{"name":"to_s","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.to_s(*args, **options)"}},{"id":"to_s(*args,**options,&)-instance-method","html_id":"to_s(*args,**options,&)-instance-method","name":"to_s","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options, &)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/branch.cr#L22","def":{"name":"to_s","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":1,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.to_s(*args, **options) do |*yield_args|\n yield *yield_args\nend"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/AST/Branchable","path":"Ameba/AST/Branchable.html","kind":"class","full_name":"Ameba::AST::Branchable","name":"Branchable","abstract":false,"superclass":{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},"ancestors":[{"html_id":"ameba/Ameba/AST/Util","kind":"module","full_name":"Ameba::AST::Util","name":"Util"},{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/ast/branchable.cr","line_number":15,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/branchable.cr#L15"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[{"html_id":"ameba/Ameba/AST/Util","kind":"module","full_name":"Ameba::AST::Util","name":"Util"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/AST","kind":"module","full_name":"Ameba::AST","name":"AST"},"doc":"A generic entity to represent a branchable Crystal node.\nFor example, `Crystal::If`, `Crystal::Unless`, `Crystal::While`\nare branchables.\n\n```\nwhite a > 100 # Branchable A\n if b > 2 # Branchable B\n a += 1\n end\nend\n```","summary":"

    A generic entity to represent a branchable Crystal node.

    ","class_methods":[],"constructors":[{"id":"new(node,parent=nil)-class-method","html_id":"new(node,parent=nil)-class-method","name":"new","doc":"Creates a new branchable\n\n```\nBranchable.new(node, parent_branchable)\n```","summary":"

    Creates a new branchable

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""},{"name":"parent","doc":null,"default_value":"nil","external_name":"parent","restriction":""}],"args_string":"(node, parent = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/branchable.cr#L35","def":{"name":"new","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""},{"name":"parent","doc":null,"default_value":"nil","external_name":"parent","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"_ = allocate\n_.initialize(node, parent)\nif _.responds_to?(:finalize)\n ::GC.add_finalizer(_)\nend\n_\n"}}],"instance_methods":[{"id":"branches:Array(Crystal::ASTNode)-instance-method","html_id":"branches:Array(Crystal::ASTNode)-instance-method","name":"branches","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(Crystal::ASTNode)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/branchable.cr#L18","def":{"name":"branches","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@branches"}},{"id":"end_location(*args,**options)-instance-method","html_id":"end_location(*args,**options)-instance-method","name":"end_location","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/branchable.cr#L28","def":{"name":"end_location","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.end_location(*args, **options)"}},{"id":"end_location(*args,**options,&)-instance-method","html_id":"end_location(*args,**options,&)-instance-method","name":"end_location","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options, &)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/branchable.cr#L28","def":{"name":"end_location","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":1,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.end_location(*args, **options) do |*yield_args|\n yield *yield_args\nend"}},{"id":"location(*args,**options)-instance-method","html_id":"location(*args,**options)-instance-method","name":"location","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/branchable.cr#L27","def":{"name":"location","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.location(*args, **options)"}},{"id":"location(*args,**options,&)-instance-method","html_id":"location(*args,**options,&)-instance-method","name":"location","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options, &)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/branchable.cr#L27","def":{"name":"location","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":1,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.location(*args, **options) do |*yield_args|\n yield *yield_args\nend"}},{"id":"loop?-instance-method","html_id":"loop?-instance-method","name":"loop?","doc":"Returns true if this node or one of the parent branchables is a loop, false otherwise.","summary":"

    Returns true if this node or one of the parent branchables is a loop, false otherwise.

    ","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/branchable.cr#L39","def":{"name":"loop?","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if loop?(node)\n return true\nend\nparent.try(&.loop?) || false\n"}},{"id":"node:Crystal::ASTNode-instance-method","html_id":"node:Crystal::ASTNode-instance-method","name":"node","doc":"The actual Crystal node.","summary":"

    The actual Crystal node.

    ","abstract":false,"args":[],"args_string":" : Crystal::ASTNode","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/branchable.cr#L21","def":{"name":"node","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Crystal::ASTNode","visibility":"Public","body":"@node"}},{"id":"parent:Branchable?-instance-method","html_id":"parent:Branchable?-instance-method","name":"parent","doc":"Parent branchable (if any)","summary":"

    Parent branchable (if any)

    ","abstract":false,"args":[],"args_string":" : Branchable?","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/branchable.cr#L24","def":{"name":"parent","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Branchable | ::Nil","visibility":"Public","body":"@parent"}},{"id":"to_s(*args,**options)-instance-method","html_id":"to_s(*args,**options)-instance-method","name":"to_s","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/branchable.cr#L26","def":{"name":"to_s","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.to_s(*args, **options)"}},{"id":"to_s(*args,**options,&)-instance-method","html_id":"to_s(*args,**options,&)-instance-method","name":"to_s","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options, &)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/branchable.cr#L26","def":{"name":"to_s","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":1,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.to_s(*args, **options) do |*yield_args|\n yield *yield_args\nend"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/AST/CountingVisitor","path":"Ameba/AST/CountingVisitor.html","kind":"class","full_name":"Ameba::AST::CountingVisitor","name":"CountingVisitor","abstract":false,"superclass":{"html_id":"ameba/Crystal/Visitor","kind":"class","full_name":"Crystal::Visitor","name":"Visitor"},"ancestors":[{"html_id":"ameba/Crystal/Visitor","kind":"class","full_name":"Crystal::Visitor","name":"Visitor"},{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/ast/visitors/counting_visitor.cr","line_number":3,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/visitors/counting_visitor.cr#L3"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"DEFAULT_COMPLEXITY","name":"DEFAULT_COMPLEXITY","value":"1","doc":null,"summary":null}],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/AST","kind":"module","full_name":"Ameba::AST","name":"AST"},"doc":"AST Visitor that counts occurrences of certain keywords","summary":"

    AST Visitor that counts occurrences of certain keywords

    ","class_methods":[],"constructors":[{"id":"new(scope:Crystal::ASTNode)-class-method","html_id":"new(scope:Crystal::ASTNode)-class-method","name":"new","doc":"Creates a new counting visitor","summary":"

    Creates a new counting visitor

    ","abstract":false,"args":[{"name":"scope","doc":null,"default_value":"","external_name":"scope","restriction":"Crystal::ASTNode"}],"args_string":"(scope : Crystal::ASTNode)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/visitors/counting_visitor.cr#L8","def":{"name":"new","args":[{"name":"scope","doc":null,"default_value":"","external_name":"scope","restriction":"Crystal::ASTNode"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"_ = allocate\n_.initialize(scope)\nif _.responds_to?(:finalize)\n ::GC.add_finalizer(_)\nend\n_\n"}}],"instance_methods":[{"id":"count-instance-method","html_id":"count-instance-method","name":"count","doc":"Returns the number of keywords that were found in the node","summary":"

    Returns the number of keywords that were found in the node

    ","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/visitors/counting_visitor.cr#L18","def":{"name":"count","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@scope.accept(self)\n@complexity\n"}},{"id":"macro_condition:Bool-instance-method","html_id":"macro_condition:Bool-instance-method","name":"macro_condition","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/visitors/counting_visitor.cr#L5","def":{"name":"macro_condition","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@macro_condition"}},{"id":"visit(node:Crystal::MacroIf|Crystal::MacroFor)-instance-method","html_id":"visit(node:Crystal::MacroIf|Crystal::MacroFor)-instance-method","name":"visit","doc":null,"summary":null,"abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::MacroIf | Crystal::MacroFor"}],"args_string":"(node : Crystal::MacroIf | Crystal::MacroFor)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/visitors/counting_visitor.cr#L33","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::MacroIf | Crystal::MacroFor"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@macro_condition = true\n@complexity = DEFAULT_COMPLEXITY\nfalse\n"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/AST/FlowExpression","path":"Ameba/AST/FlowExpression.html","kind":"class","full_name":"Ameba::AST::FlowExpression","name":"FlowExpression","abstract":false,"superclass":{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},"ancestors":[{"html_id":"ameba/Ameba/AST/Util","kind":"module","full_name":"Ameba::AST::Util","name":"Util"},{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/ast/flow_expression.cr","line_number":18,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/flow_expression.cr#L18"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[{"html_id":"ameba/Ameba/AST/Util","kind":"module","full_name":"Ameba::AST::Util","name":"Util"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/AST","kind":"module","full_name":"Ameba::AST","name":"AST"},"doc":"Represents a flow expression in Crystal code.\nFor example,\n\n```\ndef foobar\n a = 3\n return 42 # => flow expression\n a + 1\nend\n```\n\nFlow expression contains an actual node of a control expression and\na parent node, which allows easily search through the related statement\n(i.e. find unreachable code)","summary":"

    Represents a flow expression in Crystal code.

    ","class_methods":[],"constructors":[{"id":"new(node,in_loop)-class-method","html_id":"new(node,in_loop)-class-method","name":"new","doc":"Creates a new flow expression.\n\n```\nFlowExpression.new(node, parent_node)\n```","summary":"

    Creates a new flow expression.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""},{"name":"in_loop","doc":null,"default_value":"","external_name":"in_loop","restriction":""}],"args_string":"(node, in_loop)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/flow_expression.cr#L36","def":{"name":"new","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""},{"name":"in_loop","doc":null,"default_value":"","external_name":"in_loop","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"_ = allocate\n_.initialize(node, in_loop)\nif _.responds_to?(:finalize)\n ::GC.add_finalizer(_)\nend\n_\n"}}],"instance_methods":[{"id":"end_location(*args,**options)-instance-method","html_id":"end_location(*args,**options)-instance-method","name":"end_location","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/flow_expression.cr#L29","def":{"name":"end_location","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.end_location(*args, **options)"}},{"id":"end_location(*args,**options,&)-instance-method","html_id":"end_location(*args,**options,&)-instance-method","name":"end_location","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options, &)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/flow_expression.cr#L29","def":{"name":"end_location","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":1,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.end_location(*args, **options) do |*yield_args|\n yield *yield_args\nend"}},{"id":"in_loop?:Bool-instance-method","html_id":"in_loop?:Bool-instance-method","name":"in_loop?","doc":"Is true only if some of the nodes parents is a loop.","summary":"

    Is true only if some of the nodes parents is a loop.

    ","abstract":false,"args":[],"args_string":" : Bool","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/flow_expression.cr#L22","def":{"name":"in_loop?","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Bool","visibility":"Public","body":"@in_loop"}},{"id":"location(*args,**options)-instance-method","html_id":"location(*args,**options)-instance-method","name":"location","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/flow_expression.cr#L28","def":{"name":"location","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.location(*args, **options)"}},{"id":"location(*args,**options,&)-instance-method","html_id":"location(*args,**options,&)-instance-method","name":"location","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options, &)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/flow_expression.cr#L28","def":{"name":"location","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":1,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.location(*args, **options) do |*yield_args|\n yield *yield_args\nend"}},{"id":"node:Crystal::ASTNode-instance-method","html_id":"node:Crystal::ASTNode-instance-method","name":"node","doc":"The actual node of the flow expression.","summary":"

    The actual node of the flow expression.

    ","abstract":false,"args":[],"args_string":" : Crystal::ASTNode","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/flow_expression.cr#L25","def":{"name":"node","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Crystal::ASTNode","visibility":"Public","body":"@node"}},{"id":"to_s(*args,**options)-instance-method","html_id":"to_s(*args,**options)-instance-method","name":"to_s","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/flow_expression.cr#L27","def":{"name":"to_s","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.to_s(*args, **options)"}},{"id":"to_s(*args,**options,&)-instance-method","html_id":"to_s(*args,**options,&)-instance-method","name":"to_s","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options, &)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/flow_expression.cr#L27","def":{"name":"to_s","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":1,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.to_s(*args, **options) do |*yield_args|\n yield *yield_args\nend"}},{"id":"unreachable_nodes-instance-method","html_id":"unreachable_nodes-instance-method","name":"unreachable_nodes","doc":"Returns nodes which can't be reached because of a flow command inside.\nFor example:\n\n```\ndef foobar\n a = 1\n return 42\n\n a + 2 # => unreachable assign node\nend\n```","summary":"

    Returns nodes which can't be reached because of a flow command inside.

    ","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/flow_expression.cr#L50","def":{"name":"unreachable_nodes","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"unreachable_nodes = [] of Crystal::ASTNode\ncase current_node = node\nwhen Crystal::Expressions\n control_flow_found = false\n current_node.expressions.each do |exp|\n if control_flow_found\n unreachable_nodes << exp\n end\n control_flow_found || (control_flow_found = flow_expression?(exp, in_loop?))\n end\nwhen Crystal::BinaryOp\n if flow_expression?(current_node.left, in_loop?)\n unreachable_nodes << current_node.right\n end\nelse\nend\nunreachable_nodes\n"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/AST/FlowExpressionVisitor","path":"Ameba/AST/FlowExpressionVisitor.html","kind":"class","full_name":"Ameba::AST::FlowExpressionVisitor","name":"FlowExpressionVisitor","abstract":false,"superclass":{"html_id":"ameba/Ameba/AST/BaseVisitor","kind":"class","full_name":"Ameba::AST::BaseVisitor","name":"BaseVisitor"},"ancestors":[{"html_id":"ameba/Ameba/AST/Util","kind":"module","full_name":"Ameba::AST::Util","name":"Util"},{"html_id":"ameba/Ameba/AST/BaseVisitor","kind":"class","full_name":"Ameba::AST::BaseVisitor","name":"BaseVisitor"},{"html_id":"ameba/Crystal/Visitor","kind":"class","full_name":"Crystal::Visitor","name":"Visitor"},{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/ast/visitors/flow_expression_visitor.cr","line_number":6,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/visitors/flow_expression_visitor.cr#L6"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[{"html_id":"ameba/Ameba/AST/Util","kind":"module","full_name":"Ameba::AST::Util","name":"Util"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/AST","kind":"module","full_name":"Ameba::AST","name":"AST"},"doc":"AST Visitor that traverses all the flow expressions.","summary":"

    AST Visitor that traverses all the flow expressions.

    ","class_methods":[],"constructors":[{"id":"new(rule,source)-class-method","html_id":"new(rule,source)-class-method","name":"new","doc":"Creates a new flow expression visitor.","summary":"

    Creates a new flow expression visitor.

    ","abstract":false,"args":[{"name":"rule","doc":null,"default_value":"","external_name":"rule","restriction":""},{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"args_string":"(rule, source)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/visitors/flow_expression_visitor.cr#L12","def":{"name":"new","args":[{"name":"rule","doc":null,"default_value":"","external_name":"rule","restriction":""},{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"_ = allocate\n_.initialize(rule, source)\nif _.responds_to?(:finalize)\n ::GC.add_finalizer(_)\nend\n_\n"}}],"instance_methods":[],"macros":[],"types":[]},{"html_id":"ameba/Ameba/AST/InstanceVariable","path":"Ameba/AST/InstanceVariable.html","kind":"class","full_name":"Ameba::AST::InstanceVariable","name":"InstanceVariable","abstract":false,"superclass":{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},"ancestors":[{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/ast/variabling/ivariable.cr","line_number":2,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/variabling/ivariable.cr#L2"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/AST","kind":"module","full_name":"Ameba::AST","name":"AST"},"doc":null,"summary":null,"class_methods":[],"constructors":[{"id":"new(node)-class-method","html_id":"new(node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"args_string":"(node)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/variabling/ivariable.cr#L10","def":{"name":"new","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"_ = allocate\n_.initialize(node)\nif _.responds_to?(:finalize)\n ::GC.add_finalizer(_)\nend\n_\n"}}],"instance_methods":[{"id":"end_location(*args,**options)-instance-method","html_id":"end_location(*args,**options)-instance-method","name":"end_location","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/variabling/ivariable.cr#L6","def":{"name":"end_location","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.end_location(*args, **options)"}},{"id":"end_location(*args,**options,&)-instance-method","html_id":"end_location(*args,**options,&)-instance-method","name":"end_location","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options, &)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/variabling/ivariable.cr#L6","def":{"name":"end_location","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":1,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.end_location(*args, **options) do |*yield_args|\n yield *yield_args\nend"}},{"id":"location(*args,**options)-instance-method","html_id":"location(*args,**options)-instance-method","name":"location","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/variabling/ivariable.cr#L5","def":{"name":"location","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.location(*args, **options)"}},{"id":"location(*args,**options,&)-instance-method","html_id":"location(*args,**options,&)-instance-method","name":"location","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options, &)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/variabling/ivariable.cr#L5","def":{"name":"location","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":1,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.location(*args, **options) do |*yield_args|\n yield *yield_args\nend"}},{"id":"name(*args,**options)-instance-method","html_id":"name(*args,**options)-instance-method","name":"name","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/variabling/ivariable.cr#L7","def":{"name":"name","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.name(*args, **options)"}},{"id":"name(*args,**options,&)-instance-method","html_id":"name(*args,**options,&)-instance-method","name":"name","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options, &)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/variabling/ivariable.cr#L7","def":{"name":"name","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":1,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.name(*args, **options) do |*yield_args|\n yield *yield_args\nend"}},{"id":"node:Crystal::InstanceVar-instance-method","html_id":"node:Crystal::InstanceVar-instance-method","name":"node","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Crystal::InstanceVar","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/variabling/ivariable.cr#L3","def":{"name":"node","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Crystal::InstanceVar","visibility":"Public","body":"@node"}},{"id":"to_s(*args,**options)-instance-method","html_id":"to_s(*args,**options)-instance-method","name":"to_s","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/variabling/ivariable.cr#L8","def":{"name":"to_s","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.to_s(*args, **options)"}},{"id":"to_s(*args,**options,&)-instance-method","html_id":"to_s(*args,**options,&)-instance-method","name":"to_s","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options, &)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/variabling/ivariable.cr#L8","def":{"name":"to_s","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":1,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.to_s(*args, **options) do |*yield_args|\n yield *yield_args\nend"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/AST/NodeVisitor","path":"Ameba/AST/NodeVisitor.html","kind":"class","full_name":"Ameba::AST::NodeVisitor","name":"NodeVisitor","abstract":false,"superclass":{"html_id":"ameba/Ameba/AST/BaseVisitor","kind":"class","full_name":"Ameba::AST::BaseVisitor","name":"BaseVisitor"},"ancestors":[{"html_id":"ameba/Ameba/AST/BaseVisitor","kind":"class","full_name":"Ameba::AST::BaseVisitor","name":"BaseVisitor"},{"html_id":"ameba/Crystal/Visitor","kind":"class","full_name":"Crystal::Visitor","name":"Visitor"},{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/ast/visitors/node_visitor.cr","line_number":39,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/visitors/node_visitor.cr#L39"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/AST","kind":"module","full_name":"Ameba::AST","name":"AST"},"doc":"An AST Visitor that traverses the source and allows all nodes\nto be inspected by rules.\n\n```\nvisitor = Ameba::AST::NodeVisitor.new(rule, source)\n```\n","summary":"

    An AST Visitor that traverses the source and allows all nodes to be inspected by rules.

    ","class_methods":[],"constructors":[{"id":"new(rule,source,skip=nil)-class-method","html_id":"new(rule,source,skip=nil)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"rule","doc":null,"default_value":"","external_name":"rule","restriction":""},{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"skip","doc":null,"default_value":"nil","external_name":"skip","restriction":""}],"args_string":"(rule, source, skip = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/visitors/node_visitor.cr#L42","def":{"name":"new","args":[{"name":"rule","doc":null,"default_value":"","external_name":"rule","restriction":""},{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"skip","doc":null,"default_value":"nil","external_name":"skip","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"_ = allocate\n_.initialize(rule, source, skip)\nif _.responds_to?(:finalize)\n ::GC.add_finalizer(_)\nend\n_\n"}}],"instance_methods":[{"id":"visit(node:Crystal::Alias)-instance-method","html_id":"visit(node:Crystal::Alias)-instance-method","name":"visit","doc":"A visit callback for `Crystal::Alias` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"

    A visit callback for Crystal::Alias node.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Alias"}],"args_string":"(node : Crystal::Alias)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/visitors/node_visitor.cr#L47","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Alias"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::Until)-instance-method","html_id":"visit(node:Crystal::Until)-instance-method","name":"visit","doc":"A visit callback for `Crystal::Until` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"

    A visit callback for Crystal::Until node.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Until"}],"args_string":"(node : Crystal::Until)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/visitors/node_visitor.cr#L47","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Until"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::While)-instance-method","html_id":"visit(node:Crystal::While)-instance-method","name":"visit","doc":"A visit callback for `Crystal::While` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"

    A visit callback for Crystal::While node.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::While"}],"args_string":"(node : Crystal::While)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/visitors/node_visitor.cr#L47","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::While"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::When)-instance-method","html_id":"visit(node:Crystal::When)-instance-method","name":"visit","doc":"A visit callback for `Crystal::When` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"

    A visit callback for Crystal::When node.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::When"}],"args_string":"(node : Crystal::When)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/visitors/node_visitor.cr#L47","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::When"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::Var)-instance-method","html_id":"visit(node:Crystal::Var)-instance-method","name":"visit","doc":"A visit callback for `Crystal::Var` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"

    A visit callback for Crystal::Var node.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Var"}],"args_string":"(node : Crystal::Var)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/visitors/node_visitor.cr#L47","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Var"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::Unless)-instance-method","html_id":"visit(node:Crystal::Unless)-instance-method","name":"visit","doc":"A visit callback for `Crystal::Unless` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"

    A visit callback for Crystal::Unless node.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Unless"}],"args_string":"(node : Crystal::Unless)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/visitors/node_visitor.cr#L47","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Unless"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::StringInterpolation)-instance-method","html_id":"visit(node:Crystal::StringInterpolation)-instance-method","name":"visit","doc":"A visit callback for `Crystal::StringInterpolation` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"

    A visit callback for Crystal::StringInterpolation node.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::StringInterpolation"}],"args_string":"(node : Crystal::StringInterpolation)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/visitors/node_visitor.cr#L47","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::StringInterpolation"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::NilLiteral)-instance-method","html_id":"visit(node:Crystal::NilLiteral)-instance-method","name":"visit","doc":"A visit callback for `Crystal::NilLiteral` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"

    A visit callback for Crystal::NilLiteral node.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::NilLiteral"}],"args_string":"(node : Crystal::NilLiteral)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/visitors/node_visitor.cr#L47","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::NilLiteral"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::ModuleDef)-instance-method","html_id":"visit(node:Crystal::ModuleDef)-instance-method","name":"visit","doc":"A visit callback for `Crystal::ModuleDef` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"

    A visit callback for Crystal::ModuleDef node.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ModuleDef"}],"args_string":"(node : Crystal::ModuleDef)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/visitors/node_visitor.cr#L47","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ModuleDef"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::LibDef)-instance-method","html_id":"visit(node:Crystal::LibDef)-instance-method","name":"visit","doc":"A visit callback for `Crystal::LibDef` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"

    A visit callback for Crystal::LibDef node.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::LibDef"}],"args_string":"(node : Crystal::LibDef)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/visitors/node_visitor.cr#L47","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::LibDef"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::InstanceVar)-instance-method","html_id":"visit(node:Crystal::InstanceVar)-instance-method","name":"visit","doc":"A visit callback for `Crystal::InstanceVar` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"

    A visit callback for Crystal::InstanceVar node.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::InstanceVar"}],"args_string":"(node : Crystal::InstanceVar)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/visitors/node_visitor.cr#L47","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::InstanceVar"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::If)-instance-method","html_id":"visit(node:Crystal::If)-instance-method","name":"visit","doc":"A visit callback for `Crystal::If` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"

    A visit callback for Crystal::If node.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::If"}],"args_string":"(node : Crystal::If)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/visitors/node_visitor.cr#L47","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::If"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::HashLiteral)-instance-method","html_id":"visit(node:Crystal::HashLiteral)-instance-method","name":"visit","doc":"A visit callback for `Crystal::HashLiteral` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"

    A visit callback for Crystal::HashLiteral node.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::HashLiteral"}],"args_string":"(node : Crystal::HashLiteral)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/visitors/node_visitor.cr#L47","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::HashLiteral"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::Expressions)-instance-method","html_id":"visit(node:Crystal::Expressions)-instance-method","name":"visit","doc":"A visit callback for `Crystal::Expressions` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"

    A visit callback for Crystal::Expressions node.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Expressions"}],"args_string":"(node : Crystal::Expressions)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/visitors/node_visitor.cr#L47","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Expressions"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::ExceptionHandler)-instance-method","html_id":"visit(node:Crystal::ExceptionHandler)-instance-method","name":"visit","doc":"A visit callback for `Crystal::ExceptionHandler` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"

    A visit callback for Crystal::ExceptionHandler node.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ExceptionHandler"}],"args_string":"(node : Crystal::ExceptionHandler)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/visitors/node_visitor.cr#L47","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ExceptionHandler"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::EnumDef)-instance-method","html_id":"visit(node:Crystal::EnumDef)-instance-method","name":"visit","doc":"A visit callback for `Crystal::EnumDef` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"

    A visit callback for Crystal::EnumDef node.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::EnumDef"}],"args_string":"(node : Crystal::EnumDef)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/visitors/node_visitor.cr#L47","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::EnumDef"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::Def)-instance-method","html_id":"visit(node:Crystal::Def)-instance-method","name":"visit","doc":"A visit callback for `Crystal::Def` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"

    A visit callback for Crystal::Def node.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Def"}],"args_string":"(node : Crystal::Def)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/visitors/node_visitor.cr#L47","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Def"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::ClassVar)-instance-method","html_id":"visit(node:Crystal::ClassVar)-instance-method","name":"visit","doc":"A visit callback for `Crystal::ClassVar` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"

    A visit callback for Crystal::ClassVar node.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ClassVar"}],"args_string":"(node : Crystal::ClassVar)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/visitors/node_visitor.cr#L47","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ClassVar"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::ClassDef)-instance-method","html_id":"visit(node:Crystal::ClassDef)-instance-method","name":"visit","doc":"A visit callback for `Crystal::ClassDef` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"

    A visit callback for Crystal::ClassDef node.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ClassDef"}],"args_string":"(node : Crystal::ClassDef)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/visitors/node_visitor.cr#L47","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ClassDef"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::Case)-instance-method","html_id":"visit(node:Crystal::Case)-instance-method","name":"visit","doc":"A visit callback for `Crystal::Case` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"

    A visit callback for Crystal::Case node.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Case"}],"args_string":"(node : Crystal::Case)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/visitors/node_visitor.cr#L47","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Case"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::Block)-instance-method","html_id":"visit(node:Crystal::Block)-instance-method","name":"visit","doc":"A visit callback for `Crystal::Block` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"

    A visit callback for Crystal::Block node.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Block"}],"args_string":"(node : Crystal::Block)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/visitors/node_visitor.cr#L47","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Block"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::Call)-instance-method","html_id":"visit(node:Crystal::Call)-instance-method","name":"visit","doc":"A visit callback for `Crystal::Call` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"

    A visit callback for Crystal::Call node.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Call"}],"args_string":"(node : Crystal::Call)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/visitors/node_visitor.cr#L47","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Call"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::Assign)-instance-method","html_id":"visit(node:Crystal::Assign)-instance-method","name":"visit","doc":"A visit callback for `Crystal::Assign` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"

    A visit callback for Crystal::Assign node.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Assign"}],"args_string":"(node : Crystal::Assign)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/visitors/node_visitor.cr#L47","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Assign"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::IsA)-instance-method","html_id":"visit(node:Crystal::IsA)-instance-method","name":"visit","doc":"A visit callback for `Crystal::IsA` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"

    A visit callback for Crystal::IsA node.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::IsA"}],"args_string":"(node : Crystal::IsA)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/visitors/node_visitor.cr#L47","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::IsA"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node)-instance-method","html_id":"visit(node)-instance-method","name":"visit","doc":null,"summary":null,"abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"args_string":"(node)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/visitors/node_visitor.cr#L56","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (skip = @skip)\nelse\n return true\nend\n!(skip.includes?(node.class))\n"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/AST/RedundantControlExpressionVisitor","path":"Ameba/AST/RedundantControlExpressionVisitor.html","kind":"class","full_name":"Ameba::AST::RedundantControlExpressionVisitor","name":"RedundantControlExpressionVisitor","abstract":false,"superclass":{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},"ancestors":[{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/ast/visitors/redundant_control_expression_visitor.cr","line_number":5,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/visitors/redundant_control_expression_visitor.cr#L5"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/AST","kind":"module","full_name":"Ameba::AST","name":"AST"},"doc":"A class that utilizes a logic to traverse AST nodes and\nfire a source test callback if a redundant `Crystal::ControlExpression`\nis reached.","summary":"

    A class that utilizes a logic to traverse AST nodes and fire a source test callback if a redundant Crystal::ControlExpression is reached.

    ","class_methods":[],"constructors":[{"id":"new(rule,source,node)-class-method","html_id":"new(rule,source,node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"rule","doc":null,"default_value":"","external_name":"rule","restriction":""},{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"args_string":"(rule, source, node)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/visitors/redundant_control_expression_visitor.cr#L15","def":{"name":"new","args":[{"name":"rule","doc":null,"default_value":"","external_name":"rule","restriction":""},{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"_ = allocate\n_.initialize(rule, source, node)\nif _.responds_to?(:finalize)\n ::GC.add_finalizer(_)\nend\n_\n"}}],"instance_methods":[{"id":"node:Crystal::ASTNode-instance-method","html_id":"node:Crystal::ASTNode-instance-method","name":"node","doc":"A node to run traversal on.","summary":"

    A node to run traversal on.

    ","abstract":false,"args":[],"args_string":" : Crystal::ASTNode","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/visitors/redundant_control_expression_visitor.cr#L13","def":{"name":"node","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Crystal::ASTNode","visibility":"Public","body":"@node"}},{"id":"rule:Rule::Base-instance-method","html_id":"rule:Rule::Base-instance-method","name":"rule","doc":"A corresponding rule that uses this visitor.","summary":"

    A corresponding rule that uses this visitor.

    ","abstract":false,"args":[],"args_string":" : Rule::Base","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/visitors/redundant_control_expression_visitor.cr#L7","def":{"name":"rule","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Rule::Base","visibility":"Public","body":"@rule"}},{"id":"source:Source-instance-method","html_id":"source:Source-instance-method","name":"source","doc":"A source that needs to be traversed.","summary":"

    A source that needs to be traversed.

    ","abstract":false,"args":[],"args_string":" : Source","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/visitors/redundant_control_expression_visitor.cr#L10","def":{"name":"source","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Source","visibility":"Public","body":"@source"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/AST/Reference","path":"Ameba/AST/Reference.html","kind":"class","full_name":"Ameba::AST::Reference","name":"Reference","abstract":false,"superclass":{"html_id":"ameba/Ameba/AST/Variable","kind":"class","full_name":"Ameba::AST::Variable","name":"Variable"},"ancestors":[{"html_id":"ameba/Ameba/AST/Variable","kind":"class","full_name":"Ameba::AST::Variable","name":"Variable"},{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/ast/variabling/reference.cr","line_number":7,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/variabling/reference.cr#L7"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/AST","kind":"module","full_name":"Ameba::AST","name":"AST"},"doc":"Represents a reference to the variable.\nIt behaves like a variable is used to distinguish a\nthe variable from its reference.","summary":"

    Represents a reference to the variable.

    ","class_methods":[],"constructors":[],"instance_methods":[{"id":"explicit=(explicit)-instance-method","html_id":"explicit=(explicit)-instance-method","name":"explicit=","doc":null,"summary":null,"abstract":false,"args":[{"name":"explicit","doc":null,"default_value":"","external_name":"explicit","restriction":""}],"args_string":"(explicit)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/variabling/reference.cr#L8","def":{"name":"explicit=","args":[{"name":"explicit","doc":null,"default_value":"","external_name":"explicit","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@explicit = explicit"}},{"id":"explicit?:Bool-instance-method","html_id":"explicit?:Bool-instance-method","name":"explicit?","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/variabling/reference.cr#L8","def":{"name":"explicit?","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@explicit"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/AST/Scope","path":"Ameba/AST/Scope.html","kind":"class","full_name":"Ameba::AST::Scope","name":"Scope","abstract":false,"superclass":{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},"ancestors":[{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/ast/scope.cr","line_number":6,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/scope.cr#L6"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/AST","kind":"module","full_name":"Ameba::AST","name":"AST"},"doc":"Represents a context of the local variable visibility.\nThis is where the local variables belong to.","summary":"

    Represents a context of the local variable visibility.

    ","class_methods":[],"constructors":[{"id":"new(node,outer_scope=nil)-class-method","html_id":"new(node,outer_scope=nil)-class-method","name":"new","doc":"Creates a new scope. Accepts the AST node and the outer scope.\n\n```\nscope = Scope.new(class_node, nil)\n```","summary":"

    Creates a new scope.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""},{"name":"outer_scope","doc":null,"default_value":"nil","external_name":"outer_scope","restriction":""}],"args_string":"(node, outer_scope = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/scope.cr#L39","def":{"name":"new","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""},{"name":"outer_scope","doc":null,"default_value":"nil","external_name":"outer_scope","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"_ = allocate\n_.initialize(node, outer_scope)\nif _.responds_to?(:finalize)\n ::GC.add_finalizer(_)\nend\n_\n"}}],"instance_methods":[{"id":"==(other:self)-instance-method","html_id":"==(other:self)-instance-method","name":"==","doc":"Returns `true` if this reference is the same as *other*. Invokes `same?`.","summary":"

    Returns true if this reference is the same as other.

    ","abstract":false,"args":[{"name":"other","doc":null,"default_value":"","external_name":"other","restriction":"self"}],"args_string":"(other : self)","source_link":null,"def":{"name":"==","args":[{"name":"other","doc":null,"default_value":"","external_name":"other","restriction":"self"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if node == other.node\nelse\n return false\nend\nif location == other.location\nelse\n return false\nend\ntrue\n"}},{"id":"add_argument(node)-instance-method","html_id":"add_argument(node)-instance-method","name":"add_argument","doc":"Creates a new argument in the current scope.\n\n```\nscope = Scope.new(class_node, nil)\nscope.add_argument(arg_node)\n```","summary":"

    Creates a new argument in the current scope.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"args_string":"(node)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/scope.cr#L59","def":{"name":"add_argument","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"add_variable((Crystal::Var.new(node.name)).at(node))\narguments << (Argument.new(node, variables.last))\n"}},{"id":"add_ivariable(node)-instance-method","html_id":"add_ivariable(node)-instance-method","name":"add_ivariable","doc":"Adds a new instance variable to the current scope.\n\n```\nscope = Scope.new(class_node, nil)\nscope.add_ivariable(ivar_node)\n```","summary":"

    Adds a new instance variable to the current scope.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"args_string":"(node)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/scope.cr#L70","def":{"name":"add_ivariable","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"ivariables << (InstanceVariable.new(node))"}},{"id":"add_variable(node)-instance-method","html_id":"add_variable(node)-instance-method","name":"add_variable","doc":"Creates a new variable in the current scope.\n\n```\nscope = Scope.new(class_node, nil)\nscope.add_variable(var_node)\n```","summary":"

    Creates a new variable in the current scope.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"args_string":"(node)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/scope.cr#L49","def":{"name":"add_variable","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"variables << (Variable.new(node, self))"}},{"id":"arg?(var)-instance-method","html_id":"arg?(var)-instance-method","name":"arg?","doc":"Returns true if var is an argument in current scope, false if not.","summary":"

    Returns true if var is an argument in current scope, false if not.

    ","abstract":false,"args":[{"name":"var","doc":null,"default_value":"","external_name":"var","restriction":""}],"args_string":"(var)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/scope.cr#L155","def":{"name":"arg?","args":[{"name":"var","doc":null,"default_value":"","external_name":"var","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"case current_node = node\nwhen Crystal::Def\n var.is_a?(Crystal::Arg) && (any_arg?(current_node.args, var))\nwhen Crystal::Block\n var.is_a?(Crystal::Var) && (any_arg?(current_node.args, var))\nwhen Crystal::ProcLiteral\n var.is_a?(Crystal::Var) && (any_arg?(current_node.def.args, var))\nelse\n false\nend"}},{"id":"arguments:Array(Ameba::AST::Argument)-instance-method","html_id":"arguments:Array(Ameba::AST::Argument)-instance-method","name":"arguments","doc":"Link to the arguments in current scope","summary":"

    Link to the arguments in current scope

    ","abstract":false,"args":[],"args_string":" : Array(Ameba::AST::Argument)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/scope.cr#L14","def":{"name":"arguments","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@arguments"}},{"id":"assign_variable(name,node)-instance-method","html_id":"assign_variable(name,node)-instance-method","name":"assign_variable","doc":"Creates a new assignment for the variable.\n\n```\nscope = Scope.new(class_node, nil)\nscope.assign_variable(var_name, assign_node)\n```","summary":"

    Creates a new assignment for the variable.

    ","abstract":false,"args":[{"name":"name","doc":null,"default_value":"","external_name":"name","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"args_string":"(name, node)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/scope.cr#L90","def":{"name":"assign_variable","args":[{"name":"name","doc":null,"default_value":"","external_name":"name","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"(find_variable(name)).try(&.assign(node, self))"}},{"id":"assigns_ivar?(name)-instance-method","html_id":"assigns_ivar?(name)-instance-method","name":"assigns_ivar?","doc":"Returns true instance variable assinged in this scope.","summary":"

    Returns true instance variable assinged in this scope.

    ","abstract":false,"args":[{"name":"name","doc":null,"default_value":"","external_name":"name","restriction":""}],"args_string":"(name)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/scope.cr#L119","def":{"name":"assigns_ivar?","args":[{"name":"name","doc":null,"default_value":"","external_name":"name","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"arguments.find do |arg|\n arg.name == name\nend && ivariables.find do |var|\n var.name == \"@#{name}\"\nend"}},{"id":"block?-instance-method","html_id":"block?-instance-method","name":"block?","doc":"Returns true if current scope represents a block (or proc),\nfalse if not.","summary":"

    Returns true if current scope represents a block (or proc), false if not.

    ","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/scope.cr#L96","def":{"name":"block?","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"node.is_a?(Crystal::Block) || node.is_a?(Crystal::ProcLiteral)"}},{"id":"def?-instance-method","html_id":"def?-instance-method","name":"def?","doc":"Returns true if current scope is a def, false if not.","summary":"

    Returns true if current scope is a def, false if not.

    ","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/scope.cr#L145","def":{"name":"def?","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"node.is_a?(Crystal::Def)"}},{"id":"end_location(*args,**options)-instance-method","html_id":"end_location(*args,**options)-instance-method","name":"end_location","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/scope.cr#L30","def":{"name":"end_location","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"node.end_location(*args, **options)"}},{"id":"end_location(*args,**options,&)-instance-method","html_id":"end_location(*args,**options,&)-instance-method","name":"end_location","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options, &)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/scope.cr#L30","def":{"name":"end_location","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":1,"block_arg":null,"return_type":"","visibility":"Public","body":"node.end_location(*args, **options) do |*yield_args|\n yield *yield_args\nend"}},{"id":"eql?(node)-instance-method","html_id":"eql?(node)-instance-method","name":"eql?","doc":"Returns true if the `node` represents exactly\nthe same Crystal node as `@node`.","summary":"

    Returns true if the #node represents exactly the same Crystal node as @node.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"args_string":"(node)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/scope.cr#L174","def":{"name":"eql?","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"((node == @node) && (!node.location.nil?)) && (node.location == @node.location)"}},{"id":"find_variable(name:String)-instance-method","html_id":"find_variable(name:String)-instance-method","name":"find_variable","doc":"Returns variable by its name or nil if it does not exist.\n\n```\nscope = Scope.new(class_node, nil)\nscope.find_variable(\"foo\")\n```","summary":"

    Returns variable by its name or nil if it does not exist.

    ","abstract":false,"args":[{"name":"name","doc":null,"default_value":"","external_name":"name","restriction":"String"}],"args_string":"(name : String)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/scope.cr#L80","def":{"name":"find_variable","args":[{"name":"name","doc":null,"default_value":"","external_name":"name","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"variables.find do |v|\n v.name == name\nend || outer_scope.try(&.find_variable(name))"}},{"id":"hash(hasher)-instance-method","html_id":"hash(hasher)-instance-method","name":"hash","doc":"See `Object#hash(hasher)`","summary":"

    See Object#hash(hasher)

    ","abstract":false,"args":[{"name":"hasher","doc":null,"default_value":"","external_name":"hasher","restriction":""}],"args_string":"(hasher)","source_link":null,"def":{"name":"hash","args":[{"name":"hasher","doc":null,"default_value":"","external_name":"hasher","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"hasher = node.hash(hasher)\nhasher = location.hash(hasher)\nhasher\n"}},{"id":"in_macro?-instance-method","html_id":"in_macro?-instance-method","name":"in_macro?","doc":"Returns true if current scope sits inside a macro.","summary":"

    Returns true if current scope sits inside a macro.

    ","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/scope.cr#L114","def":{"name":"in_macro?","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"node.is_a?(Crystal::Macro) || (!(!outer_scope.try(&.in_macro?)))"}},{"id":"inner_scopes:Array(Ameba::AST::Scope)-instance-method","html_id":"inner_scopes:Array(Ameba::AST::Scope)-instance-method","name":"inner_scopes","doc":"List of inner scopes","summary":"

    List of inner scopes

    ","abstract":false,"args":[],"args_string":" : Array(Ameba::AST::Scope)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/scope.cr#L23","def":{"name":"inner_scopes","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@inner_scopes"}},{"id":"ivariables:Array(Ameba::AST::InstanceVariable)-instance-method","html_id":"ivariables:Array(Ameba::AST::InstanceVariable)-instance-method","name":"ivariables","doc":"Link to the instance variables used in current scope","summary":"

    Link to the instance variables used in current scope

    ","abstract":false,"args":[],"args_string":" : Array(Ameba::AST::InstanceVariable)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/scope.cr#L17","def":{"name":"ivariables","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@ivariables"}},{"id":"location(*args,**options,&)-instance-method","html_id":"location(*args,**options,&)-instance-method","name":"location","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options, &)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/scope.cr#L29","def":{"name":"location","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":1,"block_arg":null,"return_type":"","visibility":"Public","body":"node.location(*args, **options) do |*yield_args|\n yield *yield_args\nend"}},{"id":"location(*args,**options)-instance-method","html_id":"location(*args,**options)-instance-method","name":"location","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/scope.cr#L29","def":{"name":"location","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"node.location(*args, **options)"}},{"id":"node:Crystal::ASTNode-instance-method","html_id":"node:Crystal::ASTNode-instance-method","name":"node","doc":"The actual AST node that represents a current scope.","summary":"

    The actual AST node that represents a current scope.

    ","abstract":false,"args":[],"args_string":" : Crystal::ASTNode","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/scope.cr#L26","def":{"name":"node","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Crystal::ASTNode","visibility":"Public","body":"@node"}},{"id":"outer_scope:Scope?-instance-method","html_id":"outer_scope:Scope?-instance-method","name":"outer_scope","doc":"Link to the outer scope","summary":"

    Link to the outer scope

    ","abstract":false,"args":[],"args_string":" : Scope?","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/scope.cr#L20","def":{"name":"outer_scope","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Scope | ::Nil","visibility":"Public","body":"@outer_scope"}},{"id":"references:Array(Ameba::AST::Reference)-instance-method","html_id":"references:Array(Ameba::AST::Reference)-instance-method","name":"references","doc":"Link to all variable references in currency scope","summary":"

    Link to all variable references in currency scope

    ","abstract":false,"args":[],"args_string":" : Array(Ameba::AST::Reference)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/scope.cr#L11","def":{"name":"references","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@references"}},{"id":"references?(variable:Variable)-instance-method","html_id":"references?(variable:Variable)-instance-method","name":"references?","doc":"Returns true if current scope (or any of inner scopes) references variable,\nfalse if not.","summary":"

    Returns true if current scope (or any of inner scopes) references variable, false if not.

    ","abstract":false,"args":[{"name":"variable","doc":null,"default_value":"","external_name":"variable","restriction":"Variable"}],"args_string":"(variable : Variable)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/scope.cr#L137","def":{"name":"references?","args":[{"name":"variable","doc":null,"default_value":"","external_name":"variable","restriction":"Variable"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"variable.references.any? do |reference|\n (reference.scope == self) || inner_scopes.any?(&.references?(variable))\nend || variable.used_in_macro?"}},{"id":"spawn_block?-instance-method","html_id":"spawn_block?-instance-method","name":"spawn_block?","doc":"Returns true if current scope represents a spawn block, e. g.\n\n```\nspawn do\n # ...\nend\n```","summary":"

    Returns true if current scope represents a spawn block, e.

    ","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/scope.cr#L107","def":{"name":"spawn_block?","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if node.is_a?(Crystal::Block)\nelse\n return false\nend\ncall = (node.as(Crystal::Block)).call\ncall.try(&.name) == \"spawn\"\n"}},{"id":"to_s(*args,**options)-instance-method","html_id":"to_s(*args,**options)-instance-method","name":"to_s","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/scope.cr#L28","def":{"name":"to_s","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"node.to_s(*args, **options)"}},{"id":"to_s(*args,**options,&)-instance-method","html_id":"to_s(*args,**options,&)-instance-method","name":"to_s","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options, &)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/scope.cr#L28","def":{"name":"to_s","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":1,"block_arg":null,"return_type":"","visibility":"Public","body":"node.to_s(*args, **options) do |*yield_args|\n yield *yield_args\nend"}},{"id":"top_level?-instance-method","html_id":"top_level?-instance-method","name":"top_level?","doc":"Returns true if this scope is a top level scope, false if not.","summary":"

    Returns true if this scope is a top level scope, false if not.

    ","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/scope.cr#L150","def":{"name":"top_level?","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"outer_scope.nil?"}},{"id":"type_definition?-instance-method","html_id":"type_definition?-instance-method","name":"type_definition?","doc":"Returns true if and only if current scope represents some\ntype definition, for example a class.","summary":"

    Returns true if and only if current scope represents some type definition, for example a class.

    ","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/scope.cr#L126","def":{"name":"type_definition?","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"((((node.is_a?(Crystal::ClassDef) || node.is_a?(Crystal::ModuleDef)) || node.is_a?(Crystal::LibDef)) || node.is_a?(Crystal::FunDef)) || node.is_a?(Crystal::TypeDef)) || node.is_a?(Crystal::CStructOrUnionDef)"}},{"id":"variables:Array(Ameba::AST::Variable)-instance-method","html_id":"variables:Array(Ameba::AST::Variable)-instance-method","name":"variables","doc":"Link to local variables","summary":"

    Link to local variables

    ","abstract":false,"args":[],"args_string":" : Array(Ameba::AST::Variable)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/scope.cr#L8","def":{"name":"variables","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@variables"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/AST/ScopeVisitor","path":"Ameba/AST/ScopeVisitor.html","kind":"class","full_name":"Ameba::AST::ScopeVisitor","name":"ScopeVisitor","abstract":false,"superclass":{"html_id":"ameba/Ameba/AST/BaseVisitor","kind":"class","full_name":"Ameba::AST::BaseVisitor","name":"BaseVisitor"},"ancestors":[{"html_id":"ameba/Ameba/AST/BaseVisitor","kind":"class","full_name":"Ameba::AST::BaseVisitor","name":"BaseVisitor"},{"html_id":"ameba/Crystal/Visitor","kind":"class","full_name":"Crystal::Visitor","name":"Visitor"},{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/ast/visitors/scope_visitor.cr","line_number":5,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/visitors/scope_visitor.cr#L5"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"RECORD_NODE_NAME","name":"RECORD_NODE_NAME","value":"\"record\"","doc":null,"summary":null},{"id":"SUPER_NODE_NAME","name":"SUPER_NODE_NAME","value":"\"super\"","doc":null,"summary":null}],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/AST","kind":"module","full_name":"Ameba::AST","name":"AST"},"doc":"AST Visitor that traverses the source and constructs scopes.","summary":"

    AST Visitor that traverses the source and constructs scopes.

    ","class_methods":[],"constructors":[{"id":"new(rule,source)-class-method","html_id":"new(rule,source)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"rule","doc":null,"default_value":"","external_name":"rule","restriction":""},{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"args_string":"(rule, source)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/visitors/scope_visitor.cr#L13","def":{"name":"new","args":[{"name":"rule","doc":null,"default_value":"","external_name":"rule","restriction":""},{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"_ = allocate\n_.initialize(rule, source)\nif _.responds_to?(:finalize)\n ::GC.add_finalizer(_)\nend\n_\n"}}],"instance_methods":[],"macros":[],"types":[]},{"html_id":"ameba/Ameba/AST/Util","path":"Ameba/AST/Util.html","kind":"module","full_name":"Ameba::AST::Util","name":"Util","abstract":false,"superclass":null,"ancestors":[],"locations":[{"filename":"src/ameba/ast/util.cr","line_number":2,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/util.cr#L2"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[{"html_id":"ameba/Ameba/AST/Branchable","kind":"class","full_name":"Ameba::AST::Branchable","name":"Branchable"},{"html_id":"ameba/Ameba/AST/FlowExpression","kind":"class","full_name":"Ameba::AST::FlowExpression","name":"FlowExpression"},{"html_id":"ameba/Ameba/AST/FlowExpressionVisitor","kind":"class","full_name":"Ameba::AST::FlowExpressionVisitor","name":"FlowExpressionVisitor"},{"html_id":"ameba/Ameba/Rule/Lint/EmptyExpression","kind":"struct","full_name":"Ameba::Rule::Lint::EmptyExpression","name":"EmptyExpression"},{"html_id":"ameba/Ameba/Rule/Lint/EmptyLoop","kind":"struct","full_name":"Ameba::Rule::Lint::EmptyLoop","name":"EmptyLoop"},{"html_id":"ameba/Ameba/Rule/Lint/LiteralInCondition","kind":"struct","full_name":"Ameba::Rule::Lint::LiteralInCondition","name":"LiteralInCondition"},{"html_id":"ameba/Ameba/Rule/Lint/LiteralInInterpolation","kind":"struct","full_name":"Ameba::Rule::Lint::LiteralInInterpolation","name":"LiteralInInterpolation"},{"html_id":"ameba/Ameba/Rule/Lint/RedundantStringCoercion","kind":"struct","full_name":"Ameba::Rule::Lint::RedundantStringCoercion","name":"RedundantStringCoercion"},{"html_id":"ameba/Ameba/Rule/Lint/UnreachableCode","kind":"struct","full_name":"Ameba::Rule::Lint::UnreachableCode","name":"UnreachableCode"},{"html_id":"ameba/Ameba/Rule/Style/RedundantBegin","kind":"struct","full_name":"Ameba::Rule::Style::RedundantBegin","name":"RedundantBegin"}],"namespace":{"html_id":"ameba/Ameba/AST","kind":"module","full_name":"Ameba::AST","name":"AST"},"doc":"Utility module for Ameba's rules.","summary":"

    Utility module for Ameba's rules.

    ","class_methods":[],"constructors":[],"instance_methods":[{"id":"abort?(node)-instance-method","html_id":"abort?(node)-instance-method","name":"abort?","doc":"Returns true if node represents `abort` method call.","summary":"

    Returns true if node represents abort method call.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"args_string":"(node)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/util.cr#L141","def":{"name":"abort?","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"((node.is_a?(Crystal::Call) && (node.name == \"abort\")) && node.args.size <= 2) && node.obj.nil?"}},{"id":"exit?(node)-instance-method","html_id":"exit?(node)-instance-method","name":"exit?","doc":"Returns true if node represents `exit` method call.","summary":"

    Returns true if node represents exit method call.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"args_string":"(node)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/util.cr#L135","def":{"name":"exit?","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"((node.is_a?(Crystal::Call) && (node.name == \"exit\")) && node.args.size <= 1) && node.obj.nil?"}},{"id":"flow_command?(node,in_loop)-instance-method","html_id":"flow_command?(node,in_loop)-instance-method","name":"flow_command?","doc":"Returns true if node is a flow command, false - otherwise.\nNode represents a flow command if it is a control expression,\nor special call node that interrupts execution (i.e. raise, exit, abort).","summary":"

    Returns true if node is a flow command, false - otherwise.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""},{"name":"in_loop","doc":null,"default_value":"","external_name":"in_loop","restriction":""}],"args_string":"(node, in_loop)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/util.cr#L62","def":{"name":"flow_command?","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""},{"name":"in_loop","doc":null,"default_value":"","external_name":"in_loop","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"case node\nwhen Crystal::Return\n true\nwhen Crystal::Break, Crystal::Next\n in_loop\nwhen Crystal::Call\n ((raise?(node)) || (exit?(node))) || (abort?(node))\nelse\n false\nend"}},{"id":"flow_expression?(node,in_loop=false)-instance-method","html_id":"flow_expression?(node,in_loop=false)-instance-method","name":"flow_expression?","doc":"Returns true if node is a flow expression, false if not.\nNode represents a flow expression if it is full-filled by a flow command.\n\nFor example, this node is a flow expression, because each branch contains\na flow command `return`:\n\n```\nif a > 0\n return :positive\nelsif a < 0\n return :negative\nelse\n return :zero\nend\n```\n\nThis node is a not a flow expression:\n\n```\nif a > 0\n return :positive\nend\n```\n\nThat's because not all branches return(i.e. `else` is missing).\n","summary":"

    Returns true if node is a flow expression, false if not.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""},{"name":"in_loop","doc":null,"default_value":"false","external_name":"in_loop","restriction":""}],"args_string":"(node, in_loop = false)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/util.cr#L101","def":{"name":"flow_expression?","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""},{"name":"in_loop","doc":null,"default_value":"false","external_name":"in_loop","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if flow_command?(node, in_loop)\n return true\nend\ncase node\nwhen Crystal::If, Crystal::Unless\n flow_expressions?([node.then, node.else], in_loop)\nwhen Crystal::BinaryOp\n flow_expression?(node.left, in_loop)\nwhen Crystal::Case\n flow_expressions?([node.whens, node.else].flatten, in_loop)\nwhen Crystal::ExceptionHandler\n flow_expressions?([node.else || node.body, node.rescues].flatten, in_loop)\nwhen Crystal::While, Crystal::Until\n flow_expression?(node.body, in_loop)\nwhen Crystal::Rescue, Crystal::When\n flow_expression?(node.body, in_loop)\nwhen Crystal::Expressions\n node.expressions.any? do |exp|\n flow_expression?(exp, in_loop)\n end\nelse\n false\nend\n"}},{"id":"literal?(node)-instance-method","html_id":"literal?(node)-instance-method","name":"literal?","doc":"Returns true if current `node` is a literal, false otherwise.","summary":"

    Returns true if current node is a literal, false otherwise.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"args_string":"(node)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/util.cr#L4","def":{"name":"literal?","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"case node\nwhen Crystal::NilLiteral, Crystal::BoolLiteral, Crystal::NumberLiteral, Crystal::CharLiteral, Crystal::StringLiteral, Crystal::SymbolLiteral, Crystal::RegexLiteral, Crystal::ProcLiteral, Crystal::MacroLiteral\n true\nwhen Crystal::RangeLiteral\n (literal?(node.from)) && (literal?(node.to))\nwhen Crystal::ArrayLiteral, Crystal::TupleLiteral\n node.elements.all? do |el|\n literal?(el)\n end\nwhen Crystal::HashLiteral\n node.entries.all? do |entry|\n (literal?(entry.key)) && (literal?(entry.value))\n end\nwhen Crystal::NamedTupleLiteral\n node.entries.all? do |entry|\n literal?(entry.value)\n end\nelse\n false\nend"}},{"id":"loop?(node)-instance-method","html_id":"loop?(node)-instance-method","name":"loop?","doc":"Returns true if node represents a loop.","summary":"

    Returns true if node represents a loop.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"args_string":"(node)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/util.cr#L147","def":{"name":"loop?","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"case node\nwhen Crystal::While, Crystal::Until\n true\nwhen Crystal::Call\n ((node.name == \"loop\") && (node.args.size == 0)) && node.obj.nil?\nelse\n false\nend"}},{"id":"node_source(node,code_lines)-instance-method","html_id":"node_source(node,code_lines)-instance-method","name":"node_source","doc":"Returns a source code for the current node.\nThis method uses `node.location` and `node.end_location`\nto determine and cut a piece of source of the node.","summary":"

    Returns a source code for the current node.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""},{"name":"code_lines","doc":null,"default_value":"","external_name":"code_lines","restriction":""}],"args_string":"(node, code_lines)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/util.cr#L33","def":{"name":"node_source","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""},{"name":"code_lines","doc":null,"default_value":"","external_name":"code_lines","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"loc, end_loc = node.location, node.end_location\nif loc && end_loc\nelse\n return\nend\nline, column = loc.line_number - 1, loc.column_number - 1\nend_line, end_column = end_loc.line_number - 1, end_loc.column_number - 1\nnode_lines = code_lines[line..end_line]\nfirst_line, last_line = node_lines[0]?, node_lines[-1]?\nif first_line.nil? || last_line.nil?\n return\nend\nif first_line.size < column\n return\nend\nnode_lines[0] = first_line.sub(0...column, \"\")\nif line == end_line\n end_column = end_column - column\n last_line = node_lines[0]\nend\nif last_line.size < (end_column + 1)\n return\nend\nnode_lines[-1] = last_line.sub((end_column + 1)...last_line.size, \"\")\nnode_lines\n"}},{"id":"raise?(node)-instance-method","html_id":"raise?(node)-instance-method","name":"raise?","doc":"Returns true if node represents `raise` method call.","summary":"

    Returns true if node represents raise method call.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"args_string":"(node)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/util.cr#L129","def":{"name":"raise?","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"((node.is_a?(Crystal::Call) && (node.name == \"raise\")) && (node.args.size == 1)) && node.obj.nil?"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/AST/Variable","path":"Ameba/AST/Variable.html","kind":"class","full_name":"Ameba::AST::Variable","name":"Variable","abstract":false,"superclass":{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},"ancestors":[{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/ast/variabling/variable.cr","line_number":4,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/variabling/variable.cr#L4"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[{"html_id":"ameba/Ameba/AST/Reference","kind":"class","full_name":"Ameba::AST::Reference","name":"Reference"}],"including_types":[],"namespace":{"html_id":"ameba/Ameba/AST","kind":"module","full_name":"Ameba::AST","name":"AST"},"doc":"Represents the existence of the local variable.\nHolds the var node and variable assigments.","summary":"

    Represents the existence of the local variable.

    ","class_methods":[],"constructors":[{"id":"new(node,scope)-class-method","html_id":"new(node,scope)-class-method","name":"new","doc":"Creates a new variable(in the scope).\n\n```\nVariable.new(node, scope)\n```\n","summary":"

    Creates a new variable(in the scope).

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""},{"name":"scope","doc":null,"default_value":"","external_name":"scope","restriction":""}],"args_string":"(node, scope)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/variabling/variable.cr#L31","def":{"name":"new","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""},{"name":"scope","doc":null,"default_value":"","external_name":"scope","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"_ = allocate\n_.initialize(node, scope)\nif _.responds_to?(:finalize)\n ::GC.add_finalizer(_)\nend\n_\n"}}],"instance_methods":[{"id":"assign(node,scope)-instance-method","html_id":"assign(node,scope)-instance-method","name":"assign","doc":"Assigns the variable (creates a new assignment).\nVariable may have multiple assignments.\n\n```\nvariable = Variable.new(node, scope)\nvariable.assign(node1)\nvariable.assign(node2)\nvariable.assignment.size # => 2\n```\n","summary":"

    Assigns the variable (creates a new assignment).

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""},{"name":"scope","doc":null,"default_value":"","external_name":"scope","restriction":""}],"args_string":"(node, scope)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/variabling/variable.cr#L49","def":{"name":"assign","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""},{"name":"scope","doc":null,"default_value":"","external_name":"scope","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"assignments << (Assignment.new(node, self, scope))\nupdate_assign_reference!\n"}},{"id":"assign_before_reference:Crystal::ASTNode?-instance-method","html_id":"assign_before_reference:Crystal::ASTNode?-instance-method","name":"assign_before_reference","doc":"Node of the first assignment which can be available before any reference.","summary":"

    Node of the first assignment which can be available before any reference.

    ","abstract":false,"args":[],"args_string":" : Crystal::ASTNode?","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/variabling/variable.cr#L18","def":{"name":"assign_before_reference","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Crystal::ASTNode | ::Nil","visibility":"Public","body":"@assign_before_reference"}},{"id":"assignments:Array(Ameba::AST::Assignment)-instance-method","html_id":"assignments:Array(Ameba::AST::Assignment)-instance-method","name":"assignments","doc":"List of the assigments of this variable.","summary":"

    List of the assigments of this variable.

    ","abstract":false,"args":[],"args_string":" : Array(Ameba::AST::Assignment)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/variabling/variable.cr#L6","def":{"name":"assignments","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@assignments"}},{"id":"captured_by_block?(scope=@scope)-instance-method","html_id":"captured_by_block?(scope=@scope)-instance-method","name":"captured_by_block?","doc":"Returns true if the current var is referenced in\nin the block. For example this variable is captured\nby block:\n\n```\na = 1\n3.times { |i| a = a + i }\n```\n\nAnd this variable is not captured by block.\n\n```\ni = 1\n3.times { |i| i + 1 }\n```","summary":"

    Returns true if the current var is referenced in in the block.

    ","abstract":false,"args":[{"name":"scope","doc":null,"default_value":"@scope","external_name":"scope","restriction":""}],"args_string":"(scope = @scope)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/variabling/variable.cr#L114","def":{"name":"captured_by_block?","args":[{"name":"scope","doc":null,"default_value":"@scope","external_name":"scope","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"scope.inner_scopes.each do |inner_scope|\n if inner_scope.block? && (inner_scope.references?(self))\n return true\n end\n if captured_by_block?(inner_scope)\n return true\n end\nend\nfalse\n"}},{"id":"declared_before?(node)-instance-method","html_id":"declared_before?(node)-instance-method","name":"declared_before?","doc":"Returns true if the variable is delcared before the `node`.","summary":"

    Returns true if the variable is delcared before the #node.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"args_string":"(node)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/variabling/variable.cr#L161","def":{"name":"declared_before?","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"var_location, node_location = location, node.location\nif var_location.nil? || node_location.nil?\n return\nend\n(var_location.line_number < node_location.line_number) || ((var_location.line_number == node_location.line_number) && var_location.column_number < node_location.column_number)\n"}},{"id":"end_location(*args,**options)-instance-method","html_id":"end_location(*args,**options)-instance-method","name":"end_location","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/variabling/variable.cr#L21","def":{"name":"end_location","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.end_location(*args, **options)"}},{"id":"end_location(*args,**options,&)-instance-method","html_id":"end_location(*args,**options,&)-instance-method","name":"end_location","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options, &)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/variabling/variable.cr#L21","def":{"name":"end_location","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":1,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.end_location(*args, **options) do |*yield_args|\n yield *yield_args\nend"}},{"id":"eql?(node)-instance-method","html_id":"eql?(node)-instance-method","name":"eql?","doc":"Returns true if the `node` represents exactly\nthe same Crystal node as `@node`.","summary":"

    Returns true if the #node represents exactly the same Crystal node as @node.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"args_string":"(node)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/variabling/variable.cr#L154","def":{"name":"eql?","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"(node.is_a?(Crystal::Var) && (node.name == @node.name)) && (node.location == @node.location)"}},{"id":"ignored?-instance-method","html_id":"ignored?-instance-method","name":"ignored?","doc":"Returns true if the name starts with '_', false if not.","summary":"

    Returns true if the name starts with '_', false if not.

    ","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/variabling/variable.cr#L148","def":{"name":"ignored?","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"name.starts_with?('_')"}},{"id":"location(*args,**options)-instance-method","html_id":"location(*args,**options)-instance-method","name":"location","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/variabling/variable.cr#L20","def":{"name":"location","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.location(*args, **options)"}},{"id":"location(*args,**options,&)-instance-method","html_id":"location(*args,**options,&)-instance-method","name":"location","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options, &)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/variabling/variable.cr#L20","def":{"name":"location","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":1,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.location(*args, **options) do |*yield_args|\n yield *yield_args\nend"}},{"id":"name(*args,**options)-instance-method","html_id":"name(*args,**options)-instance-method","name":"name","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/variabling/variable.cr#L22","def":{"name":"name","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.name(*args, **options)"}},{"id":"name(*args,**options,&)-instance-method","html_id":"name(*args,**options,&)-instance-method","name":"name","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options, &)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/variabling/variable.cr#L22","def":{"name":"name","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":1,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.name(*args, **options) do |*yield_args|\n yield *yield_args\nend"}},{"id":"node:Crystal::Var-instance-method","html_id":"node:Crystal::Var-instance-method","name":"node","doc":"The actual var node.","summary":"

    The actual var node.

    ","abstract":false,"args":[],"args_string":" : Crystal::Var","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/variabling/variable.cr#L12","def":{"name":"node","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Crystal::Var","visibility":"Public","body":"@node"}},{"id":"reference(node:Crystal::Var,scope:Scope)-instance-method","html_id":"reference(node:Crystal::Var,scope:Scope)-instance-method","name":"reference","doc":"Creates a reference to this variable in some scope.\n\n```\nvariable = Variable.new(node, scope)\nvariable.reference(var_node, some_scope)\n```\n","summary":"

    Creates a reference to this variable in some scope.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Var"},{"name":"scope","doc":null,"default_value":"","external_name":"scope","restriction":"Scope"}],"args_string":"(node : Crystal::Var, scope : Scope)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/variabling/variable.cr#L73","def":{"name":"reference","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Var"},{"name":"scope","doc":null,"default_value":"","external_name":"scope","restriction":"Scope"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"(Reference.new(node, scope)).tap do |reference|\n references << reference\n scope.references << reference\nend"}},{"id":"reference_assignments!-instance-method","html_id":"reference_assignments!-instance-method","name":"reference_assignments!","doc":"Reference variable's assignments.\n\n```\nvariable = Variable.new(node, scope)\nvariable.assign(assign_node)\nvariable.reference_assignments!\n```","summary":"

    Reference variable's assignments.

    ","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/variabling/variable.cr#L87","def":{"name":"reference_assignments!","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"consumed_branches = Set(Branch).new\nassignments.reverse_each do |assignment|\n if consumed_branches.includes?(assignment.branch)\n next\n end\n assignment.referenced = true\n if assignment.branch\n else\n break\n end\n consumed_branches << assignment.branch.not_nil!\nend\n"}},{"id":"referenced?-instance-method","html_id":"referenced?-instance-method","name":"referenced?","doc":"Returns true if variable has any reference.\n\n```\nvariable = Variable.new(node, scope)\nvariable.reference(var_node)\nvariable.referenced? # => true\n```","summary":"

    Returns true if variable has any reference.

    ","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/variabling/variable.cr#L62","def":{"name":"referenced?","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"references.any?"}},{"id":"references:Array(Ameba::AST::Reference)-instance-method","html_id":"references:Array(Ameba::AST::Reference)-instance-method","name":"references","doc":"List of the references of this variable.","summary":"

    List of the references of this variable.

    ","abstract":false,"args":[],"args_string":" : Array(Ameba::AST::Reference)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/variabling/variable.cr#L9","def":{"name":"references","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@references"}},{"id":"scope:Scope-instance-method","html_id":"scope:Scope-instance-method","name":"scope","doc":"Scope of this variable.","summary":"

    Scope of this variable.

    ","abstract":false,"args":[],"args_string":" : Scope","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/variabling/variable.cr#L15","def":{"name":"scope","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Scope","visibility":"Public","body":"@scope"}},{"id":"special?-instance-method","html_id":"special?-instance-method","name":"special?","doc":"Returns true if it is a special variable, i.e `$?`.","summary":"

    Returns true if it is a special variable, i.e $?.

    ","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/variabling/variable.cr#L35","def":{"name":"special?","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.special_var?"}},{"id":"target_of?(assign)-instance-method","html_id":"target_of?(assign)-instance-method","name":"target_of?","doc":"Returns true if the variable is a target (on the left) of the assignment,\nfalse otherwise.","summary":"

    Returns true if the variable is a target (on the left) of the assignment, false otherwise.

    ","abstract":false,"args":[{"name":"assign","doc":null,"default_value":"","external_name":"assign","restriction":""}],"args_string":"(assign)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/variabling/variable.cr#L136","def":{"name":"target_of?","args":[{"name":"assign","doc":null,"default_value":"","external_name":"assign","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"case assign\nwhen Crystal::Assign\n eql?(assign.target)\nwhen Crystal::OpAssign\n eql?(assign.target)\nwhen Crystal::MultiAssign\n assign.targets.any? do |t|\n eql?(t)\n end\nwhen Crystal::UninitializedVar\n eql?(assign.var)\nelse\n false\nend"}},{"id":"to_s(*args,**options)-instance-method","html_id":"to_s(*args,**options)-instance-method","name":"to_s","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/variabling/variable.cr#L23","def":{"name":"to_s","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.to_s(*args, **options)"}},{"id":"to_s(*args,**options,&)-instance-method","html_id":"to_s(*args,**options,&)-instance-method","name":"to_s","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options, &)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/variabling/variable.cr#L23","def":{"name":"to_s","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":1,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.to_s(*args, **options) do |*yield_args|\n yield *yield_args\nend"}},{"id":"used_in_macro?(scope=@scope)-instance-method","html_id":"used_in_macro?(scope=@scope)-instance-method","name":"used_in_macro?","doc":"Returns true if current variable potentially referenced in a macro,\nfalse if not.","summary":"

    Returns true if current variable potentially referenced in a macro, false if not.

    ","abstract":false,"args":[{"name":"scope","doc":null,"default_value":"@scope","external_name":"scope","restriction":""}],"args_string":"(scope = @scope)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/variabling/variable.cr#L125","def":{"name":"used_in_macro?","args":[{"name":"scope","doc":null,"default_value":"@scope","external_name":"scope","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"scope.inner_scopes.each do |inner_scope|\n if (MacroReferenceFinder.new(inner_scope.node, node.name)).references\n return true\n end\nend\nif (MacroReferenceFinder.new(scope.node, node.name)).references\n return true\nend\nif (outer_scope = scope.outer_scope) && (used_in_macro?(outer_scope))\n return true\nend\nfalse\n"}}],"macros":[],"types":[]}]},{"html_id":"ameba/Ameba/Config","path":"Ameba/Config.html","kind":"class","full_name":"Ameba::Config","name":"Config","abstract":false,"superclass":{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},"ancestors":[{"html_id":"ameba/Ameba/GlobUtils","kind":"module","full_name":"Ameba::GlobUtils","name":"GlobUtils"},{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/config.cr","line_number":15,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/config.cr#L15"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"AVAILABLE_FORMATTERS","name":"AVAILABLE_FORMATTERS","value":"{progress: Formatter::DotFormatter, todo: Formatter::TODOFormatter, flycheck: Formatter::FlycheckFormatter, silent: Formatter::BaseFormatter, disabled: Formatter::DisabledFormatter, json: Formatter::JSONFormatter}","doc":null,"summary":null},{"id":"DEFAULT_GLOBS","name":"DEFAULT_GLOBS","value":"[\"**/*.cr\", \"!lib\"] of ::String","doc":null,"summary":null},{"id":"PATH","name":"PATH","value":"\".ameba.yml\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/Ameba/GlobUtils","kind":"module","full_name":"Ameba::GlobUtils","name":"GlobUtils"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba","kind":"module","full_name":"Ameba","name":"Ameba"},"doc":"A configuration entry for `Ameba::Runner`.\n\nConfig can be loaded from configuration YAML file and adjusted.\n\n```\nconfig = Config.load\nconfig.formatter = my_formatter\n```\n\nBy default config loads `.ameba.yml` file in a current directory.\n","summary":"

    A configuration entry for Ameba::Runner.

    ","class_methods":[{"id":"formatter_names-class-method","html_id":"formatter_names-class-method","name":"formatter_names","doc":null,"summary":null,"abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/config.cr#L86","def":{"name":"formatter_names","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"AVAILABLE_FORMATTERS.keys.join(\"|\")"}},{"id":"load(path=PATH,colors=true)-class-method","html_id":"load(path=PATH,colors=true)-class-method","name":"load","doc":"Loads YAML configuration file by `path`.\n\n```\nconfig = Ameba::Config.load\n```\n","summary":"

    Loads YAML configuration file by path.

    ","abstract":false,"args":[{"name":"path","doc":null,"default_value":"PATH","external_name":"path","restriction":""},{"name":"colors","doc":null,"default_value":"true","external_name":"colors","restriction":""}],"args_string":"(path = PATH, colors = true)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/config.cr#L78","def":{"name":"load","args":[{"name":"path","doc":null,"default_value":"PATH","external_name":"path","restriction":""},{"name":"colors","doc":null,"default_value":"true","external_name":"colors","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"begin\n Colorize.enabled = colors\n content = File.exists?(path) ? File.read(path) : \"{}\"\n Config.new(YAML.parse(content))\nrescue e\n raise(\"Config file is invalid: #{e.message}\")\nend"}}],"constructors":[],"instance_methods":[{"id":"excluded:Array(String)-instance-method","html_id":"excluded:Array(String)-instance-method","name":"excluded","doc":"Represents a list of paths to exclude from globs.\nCan have wildcards.\n\n```\nconfig = Ameba::Config.load\nconfig.excluded = [\"spec\", \"src/server/*.cr\"]\n```","summary":"

    Represents a list of paths to exclude from globs.

    ","abstract":false,"args":[],"args_string":" : Array(String)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/config.cr#L56","def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String)","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String))-instance-method","html_id":"excluded=(excluded:Array(String))-instance-method","name":"excluded=","doc":"Represents a list of paths to exclude from globs.\nCan have wildcards.\n\n```\nconfig = Ameba::Config.load\nconfig.excluded = [\"spec\", \"src/server/*.cr\"]\n```","summary":"

    Represents a list of paths to exclude from globs.

    ","abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String)"}],"args_string":"(excluded : Array(String))","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/config.cr#L56","def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String)"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"formatter-instance-method","html_id":"formatter-instance-method","name":"formatter","doc":"Returns a formatter to be used while inspecting files.\nIf formatter is not set, it will return default formatter.\n\n```\nconfig = Ameba::Config.load\nconfig.formatter = custom_formatter\nconfig.formatter\n```\n","summary":"

    Returns a formatter to be used while inspecting files.

    ","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/config.cr#L114","def":{"name":"formatter","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@formatter || (@formatter = Formatter::DotFormatter.new)"}},{"id":"formatter=(formatter:Formatter::BaseFormatter?)-instance-method","html_id":"formatter=(formatter:Formatter::BaseFormatter?)-instance-method","name":"formatter=","doc":null,"summary":null,"abstract":false,"args":[{"name":"formatter","doc":null,"default_value":"","external_name":"formatter","restriction":"Formatter::BaseFormatter | ::Nil"}],"args_string":"(formatter : Formatter::BaseFormatter?)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/config.cr#L34","def":{"name":"formatter=","args":[{"name":"formatter","doc":null,"default_value":"","external_name":"formatter","restriction":"Formatter::BaseFormatter | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@formatter = formatter"}},{"id":"formatter=(name:String|Symbol)-instance-method","html_id":"formatter=(name:String|Symbol)-instance-method","name":"formatter=","doc":"Sets formatter by name.\n\n```\nconfig = Ameba::Config.load\nconfig.formatter = :progress\n```\n","summary":"

    Sets formatter by name.

    ","abstract":false,"args":[{"name":"name","doc":null,"default_value":"","external_name":"name","restriction":"String | Symbol"}],"args_string":"(name : String | Symbol)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/config.cr#L125","def":{"name":"formatter=","args":[{"name":"name","doc":null,"default_value":"","external_name":"name","restriction":"String | Symbol"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if f = AVAILABLE_FORMATTERS[name]?\n @formatter = f.new\nelse\n raise(\"Unknown formatter `#{name}`. Use one of #{Config.formatter_names}.\")\nend"}},{"id":"globs:Array(String)-instance-method","html_id":"globs:Array(String)-instance-method","name":"globs","doc":"Returns a list of paths (with wildcards) to files.\nRepresents a list of sources to be inspected.\nIf globs are not set, it will return default list of files.\n\n```\nconfig = Ameba::Config.load\nconfig.globs = [\"**/*.cr\"]\nconfig.globs\n```","summary":"

    Returns a list of paths (with wildcards) to files.

    ","abstract":false,"args":[],"args_string":" : Array(String)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/config.cr#L47","def":{"name":"globs","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String)","visibility":"Public","body":"@globs"}},{"id":"globs=(globs:Array(String))-instance-method","html_id":"globs=(globs:Array(String))-instance-method","name":"globs=","doc":"Returns a list of paths (with wildcards) to files.\nRepresents a list of sources to be inspected.\nIf globs are not set, it will return default list of files.\n\n```\nconfig = Ameba::Config.load\nconfig.globs = [\"**/*.cr\"]\nconfig.globs\n```","summary":"

    Returns a list of paths (with wildcards) to files.

    ","abstract":false,"args":[{"name":"globs","doc":null,"default_value":"","external_name":"globs","restriction":"Array(String)"}],"args_string":"(globs : Array(String))","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/config.cr#L47","def":{"name":"globs=","args":[{"name":"globs","doc":null,"default_value":"","external_name":"globs","restriction":"Array(String)"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@globs = globs"}},{"id":"rules:Array(Rule::Base)-instance-method","html_id":"rules:Array(Rule::Base)-instance-method","name":"rules","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(Rule::Base)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/config.cr#L35","def":{"name":"rules","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(Rule::Base)","visibility":"Public","body":"@rules"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/config.cr#L36","def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/config.cr#L36","def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"sources-instance-method","html_id":"sources-instance-method","name":"sources","doc":"Returns a list of sources matching globs and excluded sections.\n\n```\nconfig = Ameba::Config.load\nconfig.sources # => list of default sources\nconfig.globs = [\"**/*.cr\"]\nconfig.excluded = [\"spec\"]\nconfig.sources # => list of sources pointing to files found by the wildcards\n```\n","summary":"

    Returns a list of sources matching globs and excluded sections.

    ","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/config.cr#L100","def":{"name":"sources","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"((find_files_by_globs(globs)) - (find_files_by_globs(excluded))).map do |path|\n Source.new(File.read(path), path)\nend"}},{"id":"update_rule(name,enabled=true,excluded=nil)-instance-method","html_id":"update_rule(name,enabled=true,excluded=nil)-instance-method","name":"update_rule","doc":"Updates rule properties.\n\n```\nconfig = Ameba::Config.load\nconfig.update_rule \"MyRuleName\", enabled: false\n```\n","summary":"

    Updates rule properties.

    ","abstract":false,"args":[{"name":"name","doc":null,"default_value":"","external_name":"name","restriction":""},{"name":"enabled","doc":null,"default_value":"true","external_name":"enabled","restriction":""},{"name":"excluded","doc":null,"default_value":"nil","external_name":"excluded","restriction":""}],"args_string":"(name, enabled = true, excluded = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/config.cr#L140","def":{"name":"update_rule","args":[{"name":"name","doc":null,"default_value":"","external_name":"name","restriction":""},{"name":"enabled","doc":null,"default_value":"true","external_name":"enabled","restriction":""},{"name":"excluded","doc":null,"default_value":"nil","external_name":"excluded","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"index = @rules.index do |r|\n r.name == name\nend\nif index\nelse\n raise(ArgumentError.new(\"Rule `#{name}` does not exist\"))\nend\nrule = @rules[index]\nrule.enabled = enabled\nrule.excluded = excluded\n@rules[index] = rule\n"}},{"id":"update_rules(names,**args)-instance-method","html_id":"update_rules(names,**args)-instance-method","name":"update_rules","doc":"Updates rules properties.\n\n```\nconfig = Ameba::Config.load\nconfig.update_rules %w(Rule1 Rule2), enabled: true\n```\n\nalso it allows to update groups of rules:\n\n```\nconfig.update_rules %w(Group1 Group2), enabled: true\n```\n","summary":"

    Updates rules properties.

    ","abstract":false,"args":[{"name":"names","doc":null,"default_value":"","external_name":"names","restriction":""}],"args_string":"(names, **args)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/config.cr#L163","def":{"name":"update_rules","args":[{"name":"names","doc":null,"default_value":"","external_name":"names","restriction":""}],"double_splat":{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""},"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"names.try(&.each do |name|\n if group = @rule_groups[name]?\n group.each do |rule|\n update_rule(rule.name, **args)\n end\n else\n update_rule(name, **args)\n end\nend)"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Formatter","path":"Ameba/Formatter.html","kind":"module","full_name":"Ameba::Formatter","name":"Formatter","abstract":false,"superclass":null,"ancestors":[],"locations":[{"filename":"src/ameba/formatter/base_formatter.cr","line_number":4,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/formatter/base_formatter.cr#L4"},{"filename":"src/ameba/formatter/disabled_formatter.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/formatter/disabled_formatter.cr#L1"},{"filename":"src/ameba/formatter/dot_formatter.cr","line_number":3,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/formatter/dot_formatter.cr#L3"},{"filename":"src/ameba/formatter/explain_formatter.cr","line_number":3,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/formatter/explain_formatter.cr#L3"},{"filename":"src/ameba/formatter/flycheck_formatter.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/formatter/flycheck_formatter.cr#L1"},{"filename":"src/ameba/formatter/json_formatter.cr","line_number":3,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/formatter/json_formatter.cr#L3"},{"filename":"src/ameba/formatter/todo_formatter.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/formatter/todo_formatter.cr#L1"},{"filename":"src/ameba/formatter/util.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/formatter/util.cr#L1"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba","kind":"module","full_name":"Ameba","name":"Ameba"},"doc":"A module that utilizes Ameba's formatters.","summary":"

    A module that utilizes Ameba's formatters.

    ","class_methods":[],"constructors":[],"instance_methods":[],"macros":[],"types":[{"html_id":"ameba/Ameba/Formatter/BaseFormatter","path":"Ameba/Formatter/BaseFormatter.html","kind":"class","full_name":"Ameba::Formatter::BaseFormatter","name":"BaseFormatter","abstract":false,"superclass":{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},"ancestors":[{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/formatter/base_formatter.cr","line_number":8,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/formatter/base_formatter.cr#L8"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[{"html_id":"ameba/Ameba/Formatter/DisabledFormatter","kind":"class","full_name":"Ameba::Formatter::DisabledFormatter","name":"DisabledFormatter"},{"html_id":"ameba/Ameba/Formatter/DotFormatter","kind":"class","full_name":"Ameba::Formatter::DotFormatter","name":"DotFormatter"},{"html_id":"ameba/Ameba/Formatter/FlycheckFormatter","kind":"class","full_name":"Ameba::Formatter::FlycheckFormatter","name":"FlycheckFormatter"},{"html_id":"ameba/Ameba/Formatter/JSONFormatter","kind":"class","full_name":"Ameba::Formatter::JSONFormatter","name":"JSONFormatter"}],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Formatter","kind":"module","full_name":"Ameba::Formatter","name":"Formatter"},"doc":"A base formatter for all formatters. It uses `output` IO\nto report results and also implements stub methods for\ncallbacks in `Ameba::Runner#run` method.","summary":"

    A base formatter for all formatters.

    ","class_methods":[],"constructors":[{"id":"new(output=STDOUT)-class-method","html_id":"new(output=STDOUT)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"output","doc":null,"default_value":"STDOUT","external_name":"output","restriction":""}],"args_string":"(output = STDOUT)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/formatter/base_formatter.cr#L13","def":{"name":"new","args":[{"name":"output","doc":null,"default_value":"STDOUT","external_name":"output","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"_ = allocate\n_.initialize(output)\nif _.responds_to?(:finalize)\n ::GC.add_finalizer(_)\nend\n_\n"}}],"instance_methods":[{"id":"config:Hash(Symbol,Bool|String)-instance-method","html_id":"config:Hash(Symbol,Bool|String)-instance-method","name":"config","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Hash(Symbol, Bool | String)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/formatter/base_formatter.cr#L11","def":{"name":"config","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@config"}},{"id":"finished(sources)-instance-method","html_id":"finished(sources)-instance-method","name":"finished","doc":"Callback that indicates when inspection is finished.\nA list of inspected sources is passed as an argument.","summary":"

    Callback that indicates when inspection is finished.

    ","abstract":false,"args":[{"name":"sources","doc":null,"default_value":"","external_name":"sources","restriction":""}],"args_string":"(sources)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/formatter/base_formatter.cr#L30","def":{"name":"finished","args":[{"name":"sources","doc":null,"default_value":"","external_name":"sources","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":""}},{"id":"output:IO::FileDescriptor|IO::Memory-instance-method","html_id":"output:IO::FileDescriptor|IO::Memory-instance-method","name":"output","doc":"TODO: allow other IOs","summary":"

    TODO allow other IOs

    ","abstract":false,"args":[],"args_string":" : IO::FileDescriptor | IO::Memory","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/formatter/base_formatter.cr#L10","def":{"name":"output","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"IO::FileDescriptor | IO::Memory","visibility":"Public","body":"@output"}},{"id":"source_finished(source:Source)-instance-method","html_id":"source_finished(source:Source)-instance-method","name":"source_finished","doc":"Callback that indicates when source inspection is finished.\nA corresponding source is passed as an argument.","summary":"

    Callback that indicates when source inspection is finished.

    ","abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":"Source"}],"args_string":"(source : Source)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/formatter/base_formatter.cr#L22","def":{"name":"source_finished","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":"Source"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":""}},{"id":"source_started(source:Source)-instance-method","html_id":"source_started(source:Source)-instance-method","name":"source_started","doc":"Callback that indicates when source inspection is finished.\nA corresponding source is passed as an argument.","summary":"

    Callback that indicates when source inspection is finished.

    ","abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":"Source"}],"args_string":"(source : Source)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/formatter/base_formatter.cr#L26","def":{"name":"source_started","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":"Source"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":""}},{"id":"started(sources)-instance-method","html_id":"started(sources)-instance-method","name":"started","doc":"Callback that indicates when inspecting is started.\nA list of sources to inspect is passed as an argument.","summary":"

    Callback that indicates when inspecting is started.

    ","abstract":false,"args":[{"name":"sources","doc":null,"default_value":"","external_name":"sources","restriction":""}],"args_string":"(sources)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/formatter/base_formatter.cr#L18","def":{"name":"started","args":[{"name":"sources","doc":null,"default_value":"","external_name":"sources","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":""}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Formatter/DisabledFormatter","path":"Ameba/Formatter/DisabledFormatter.html","kind":"class","full_name":"Ameba::Formatter::DisabledFormatter","name":"DisabledFormatter","abstract":false,"superclass":{"html_id":"ameba/Ameba/Formatter/BaseFormatter","kind":"class","full_name":"Ameba::Formatter::BaseFormatter","name":"BaseFormatter"},"ancestors":[{"html_id":"ameba/Ameba/Formatter/BaseFormatter","kind":"class","full_name":"Ameba::Formatter::BaseFormatter","name":"BaseFormatter"},{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/formatter/disabled_formatter.cr","line_number":3,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/formatter/disabled_formatter.cr#L3"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Formatter","kind":"module","full_name":"Ameba::Formatter","name":"Formatter"},"doc":"A formatter that shows all disabled lines by inline directives.","summary":"

    A formatter that shows all disabled lines by inline directives.

    ","class_methods":[],"constructors":[],"instance_methods":[{"id":"finished(sources)-instance-method","html_id":"finished(sources)-instance-method","name":"finished","doc":"Callback that indicates when inspection is finished.\nA list of inspected sources is passed as an argument.","summary":"

    Callback that indicates when inspection is finished.

    ","abstract":false,"args":[{"name":"sources","doc":null,"default_value":"","external_name":"sources","restriction":""}],"args_string":"(sources)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/formatter/disabled_formatter.cr#L4","def":{"name":"finished","args":[{"name":"sources","doc":null,"default_value":"","external_name":"sources","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"output << \"Disabled rules using inline directives: \\n\\n\"\nsources.each do |source|\n source.issues.select(&.disabled?).each do |e|\n if loc = e.location\n output << (\"#{source.path}:#{loc.line_number}\".colorize(:cyan))\n output << \" #{e.rule.name}\\n\"\n end\n end\nend\n"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Formatter/DotFormatter","path":"Ameba/Formatter/DotFormatter.html","kind":"class","full_name":"Ameba::Formatter::DotFormatter","name":"DotFormatter","abstract":false,"superclass":{"html_id":"ameba/Ameba/Formatter/BaseFormatter","kind":"class","full_name":"Ameba::Formatter::BaseFormatter","name":"BaseFormatter"},"ancestors":[{"html_id":"ameba/Ameba/Formatter/Util","kind":"module","full_name":"Ameba::Formatter::Util","name":"Util"},{"html_id":"ameba/Ameba/Formatter/BaseFormatter","kind":"class","full_name":"Ameba::Formatter::BaseFormatter","name":"BaseFormatter"},{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/formatter/dot_formatter.cr","line_number":6,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/formatter/dot_formatter.cr#L6"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[{"html_id":"ameba/Ameba/Formatter/Util","kind":"module","full_name":"Ameba::Formatter::Util","name":"Util"}],"extended_modules":[],"subclasses":[{"html_id":"ameba/Ameba/Formatter/TODOFormatter","kind":"class","full_name":"Ameba::Formatter::TODOFormatter","name":"TODOFormatter"}],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Formatter","kind":"module","full_name":"Ameba::Formatter","name":"Formatter"},"doc":"A formatter that shows a progress of inspection in a terminal using dots.\nIt is similar to Crystal's dot formatter for specs.","summary":"

    A formatter that shows a progress of inspection in a terminal using dots.

    ","class_methods":[],"constructors":[],"instance_methods":[{"id":"finished(sources)-instance-method","html_id":"finished(sources)-instance-method","name":"finished","doc":"Reports a message when inspection is finished.","summary":"

    Reports a message when inspection is finished.

    ","abstract":false,"args":[{"name":"sources","doc":null,"default_value":"","external_name":"sources","restriction":""}],"args_string":"(sources)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/formatter/dot_formatter.cr#L26","def":{"name":"finished","args":[{"name":"sources","doc":null,"default_value":"","external_name":"sources","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"output.flush\noutput << \"\\n\\n\"\nshow_affected_code = !config[:without_affected_code]?\nfailed_sources = sources.reject(&.valid?)\nfailed_sources.each do |source|\n source.issues.each do |issue|\n if issue.disabled?\n next\n end\n if ( location = issue.location).nil?\n next\n end\n output << (\"#{location}\\n\".colorize(:cyan))\n output << (\"[#{issue.rule.severity.symbol}] #{issue.rule.name}: #{issue.message}\\n\".colorize(:red))\n if show_affected_code && (code = affected_code(source, location))\n output << (code.colorize(:default))\n end\n output << \"\\n\"\n end\nend\noutput << (finished_in_message(@started_at, Time.utc))\noutput << (final_message(sources, failed_sources))\n"}},{"id":"source_finished(source:Source)-instance-method","html_id":"source_finished(source:Source)-instance-method","name":"source_finished","doc":"Reports a result of the inspection of a corresponding source.","summary":"

    Reports a result of the inspection of a corresponding source.

    ","abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":"Source"}],"args_string":"(source : Source)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/formatter/dot_formatter.cr#L20","def":{"name":"source_finished","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":"Source"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"sym = source.valid? ? \".\".colorize(:green) : \"F\".colorize(:red)\n@mutex.synchronize do\n output << sym\nend\n"}},{"id":"started(sources)-instance-method","html_id":"started(sources)-instance-method","name":"started","doc":"Reports a message when inspection is started.","summary":"

    Reports a message when inspection is started.

    ","abstract":false,"args":[{"name":"sources","doc":null,"default_value":"","external_name":"sources","restriction":""}],"args_string":"(sources)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/formatter/dot_formatter.cr#L13","def":{"name":"started","args":[{"name":"sources","doc":null,"default_value":"","external_name":"sources","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@started_at = Time.utc\noutput << (started_message(sources.size))\n"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Formatter/ExplainFormatter","path":"Ameba/Formatter/ExplainFormatter.html","kind":"class","full_name":"Ameba::Formatter::ExplainFormatter","name":"ExplainFormatter","abstract":false,"superclass":{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},"ancestors":[{"html_id":"ameba/Ameba/Formatter/Util","kind":"module","full_name":"Ameba::Formatter::Util","name":"Util"},{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/formatter/explain_formatter.cr","line_number":6,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/formatter/explain_formatter.cr#L6"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"HEADING","name":"HEADING","value":"\"## \"","doc":null,"summary":null},{"id":"LINE_BREAK","name":"LINE_BREAK","value":"\"\\n\"","doc":null,"summary":null},{"id":"PREFIX","name":"PREFIX","value":"\" \"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/Ameba/Formatter/Util","kind":"module","full_name":"Ameba::Formatter::Util","name":"Util"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Formatter","kind":"module","full_name":"Ameba::Formatter","name":"Formatter"},"doc":"A formatter that shows the detailed explanation of the issue at\na specific location.","summary":"

    A formatter that shows the detailed explanation of the issue at a specific location.

    ","class_methods":[],"constructors":[{"id":"new(output,loc)-class-method","html_id":"new(output,loc)-class-method","name":"new","doc":"Creates a new instance of ExplainFormatter.\nAccepts *output* which indicates the io where the explanation will be wrtitten to.\nSecond argument is *location* which indicates the location to explain.\n\n```\nExplainFormatter.new output,\n {file: path, line: line_number, column: column_number}\n```\n","summary":"

    Creates a new instance of ExplainFormatter.

    ","abstract":false,"args":[{"name":"output","doc":null,"default_value":"","external_name":"output","restriction":""},{"name":"loc","doc":null,"default_value":"","external_name":"loc","restriction":""}],"args_string":"(output, loc)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/formatter/explain_formatter.cr#L25","def":{"name":"new","args":[{"name":"output","doc":null,"default_value":"","external_name":"output","restriction":""},{"name":"loc","doc":null,"default_value":"","external_name":"loc","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"_ = allocate\n_.initialize(output, loc)\nif _.responds_to?(:finalize)\n ::GC.add_finalizer(_)\nend\n_\n"}}],"instance_methods":[{"id":"finished(sources)-instance-method","html_id":"finished(sources)-instance-method","name":"finished","doc":"Reports the explainations at the *@location*.","summary":"

    Reports the explainations at the @location.

    ","abstract":false,"args":[{"name":"sources","doc":null,"default_value":"","external_name":"sources","restriction":""}],"args_string":"(sources)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/formatter/explain_formatter.cr#L30","def":{"name":"finished","args":[{"name":"sources","doc":null,"default_value":"","external_name":"sources","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"source = sources.find do |s|\n s.path == @location.filename\nend\nif source\nelse\n return\nend\nsource.issues.each do |issue|\n if ((location = issue.location) && (location.line_number == @location.line_number)) && (location.column_number == @location.column_number)\n explain(source, issue)\n end\nend\n"}},{"id":"location:Crystal::Location-instance-method","html_id":"location:Crystal::Location-instance-method","name":"location","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Crystal::Location","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/formatter/explain_formatter.cr#L14","def":{"name":"location","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Crystal::Location","visibility":"Public","body":"@location"}},{"id":"output:IO::FileDescriptor|IO::Memory-instance-method","html_id":"output:IO::FileDescriptor|IO::Memory-instance-method","name":"output","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : IO::FileDescriptor | IO::Memory","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/formatter/explain_formatter.cr#L13","def":{"name":"output","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"IO::FileDescriptor | IO::Memory","visibility":"Public","body":"@output"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Formatter/FlycheckFormatter","path":"Ameba/Formatter/FlycheckFormatter.html","kind":"class","full_name":"Ameba::Formatter::FlycheckFormatter","name":"FlycheckFormatter","abstract":false,"superclass":{"html_id":"ameba/Ameba/Formatter/BaseFormatter","kind":"class","full_name":"Ameba::Formatter::BaseFormatter","name":"BaseFormatter"},"ancestors":[{"html_id":"ameba/Ameba/Formatter/BaseFormatter","kind":"class","full_name":"Ameba::Formatter::BaseFormatter","name":"BaseFormatter"},{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/formatter/flycheck_formatter.cr","line_number":2,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/formatter/flycheck_formatter.cr#L2"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Formatter","kind":"module","full_name":"Ameba::Formatter","name":"Formatter"},"doc":null,"summary":null,"class_methods":[],"constructors":[],"instance_methods":[{"id":"source_finished(source:Source)-instance-method","html_id":"source_finished(source:Source)-instance-method","name":"source_finished","doc":"Callback that indicates when source inspection is finished.\nA corresponding source is passed as an argument.","summary":"

    Callback that indicates when source inspection is finished.

    ","abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":"Source"}],"args_string":"(source : Source)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/formatter/flycheck_formatter.cr#L5","def":{"name":"source_finished","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":"Source"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"source.issues.each do |e|\n if e.disabled?\n next\n end\n if loc = e.location\n @mutex.synchronize do\n output.printf(\"%s:%d:%d: %s: [%s] %s\\n\", source.path, loc.line_number, loc.column_number, e.rule.severity.symbol, e.rule.name, e.message.gsub(\"\\n\", \" \"))\n end\n end\nend"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Formatter/JSONFormatter","path":"Ameba/Formatter/JSONFormatter.html","kind":"class","full_name":"Ameba::Formatter::JSONFormatter","name":"JSONFormatter","abstract":false,"superclass":{"html_id":"ameba/Ameba/Formatter/BaseFormatter","kind":"class","full_name":"Ameba::Formatter::BaseFormatter","name":"BaseFormatter"},"ancestors":[{"html_id":"ameba/Ameba/Formatter/BaseFormatter","kind":"class","full_name":"Ameba::Formatter::BaseFormatter","name":"BaseFormatter"},{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/formatter/json_formatter.cr","line_number":66,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/formatter/json_formatter.cr#L66"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Formatter","kind":"module","full_name":"Ameba::Formatter","name":"Formatter"},"doc":"A formatter that produces the result in a json format.\n\nExample:\n\n```\n{\n \"metadata\": {\n \"ameba_version\": \"x.x.x\",\n \"crystal_version\": \"x.x.x\",\n },\n \"sources\": [\n {\n \"issues\": [\n {\n \"location\": {\n \"column\": 7,\n \"line\": 17,\n },\n \"end_location\": {\n \"column\": 20,\n \"line\": 17,\n },\n \"message\": \"Useless assignment to variable `a`\",\n \"rule_name\": \"UselessAssign\",\n \"severity\": \"Convention\",\n },\n {\n \"location\": {\n \"column\": 7,\n \"line\": 18,\n },\n \"end_location\": {\n \"column\": 8,\n \"line\": 18,\n },\n \"message\": \"Useless assignment to variable `a`\",\n \"rule_name\": \"UselessAssign\",\n },\n {\n \"location\": {\n \"column\": 7,\n \"line\": 19,\n },\n \"end_location\": {\n \"column\": 9,\n \"line\": 19,\n },\n \"message\": \"Useless assignment to variable `a`\",\n \"rule_name\": \"UselessAssign\",\n \"severity\": \"Convention\",\n },\n ],\n \"path\": \"src/ameba/formatter/json_formatter.cr\",\n },\n ],\n \"summary\": {\n \"issues_count\": 3,\n \"target_sources_count\": 1,\n },\n}\n```\n","summary":"

    A formatter that produces the result in a json format.

    ","class_methods":[],"constructors":[{"id":"new(output=STDOUT)-class-method","html_id":"new(output=STDOUT)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"output","doc":null,"default_value":"STDOUT","external_name":"output","restriction":""}],"args_string":"(output = STDOUT)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/formatter/json_formatter.cr#L67","def":{"name":"new","args":[{"name":"output","doc":null,"default_value":"STDOUT","external_name":"output","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"_ = allocate\n_.initialize(output)\nif _.responds_to?(:finalize)\n ::GC.add_finalizer(_)\nend\n_\n"}}],"instance_methods":[{"id":"finished(sources)-instance-method","html_id":"finished(sources)-instance-method","name":"finished","doc":"Callback that indicates when inspection is finished.\nA list of inspected sources is passed as an argument.","summary":"

    Callback that indicates when inspection is finished.

    ","abstract":false,"args":[{"name":"sources","doc":null,"default_value":"","external_name":"sources","restriction":""}],"args_string":"(sources)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/formatter/json_formatter.cr#L87","def":{"name":"finished","args":[{"name":"sources","doc":null,"default_value":"","external_name":"sources","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@result.to_json(@output)"}},{"id":"source_finished(source:Source)-instance-method","html_id":"source_finished(source:Source)-instance-method","name":"source_finished","doc":"Callback that indicates when source inspection is finished.\nA corresponding source is passed as an argument.","summary":"

    Callback that indicates when source inspection is finished.

    ","abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":"Source"}],"args_string":"(source : Source)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/formatter/json_formatter.cr#L75","def":{"name":"source_finished","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":"Source"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"json_source = AsJSON::Source.new(source.path)\nsource.issues.each do |e|\n if e.disabled?\n next\n end\n json_source.issues << (AsJSON::Issue.new(e.rule.name, e.rule.severity.to_s, e.location, e.end_location, e.message))\n __temp_28 = @result.summary\n __temp_28.issues_count = __temp_28.issues_count + 1\nend\n@result.sources << json_source\n"}},{"id":"started(sources)-instance-method","html_id":"started(sources)-instance-method","name":"started","doc":"Callback that indicates when inspecting is started.\nA list of sources to inspect is passed as an argument.","summary":"

    Callback that indicates when inspecting is started.

    ","abstract":false,"args":[{"name":"sources","doc":null,"default_value":"","external_name":"sources","restriction":""}],"args_string":"(sources)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/formatter/json_formatter.cr#L71","def":{"name":"started","args":[{"name":"sources","doc":null,"default_value":"","external_name":"sources","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@result.summary.target_sources_count = sources.size"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Formatter/TODOFormatter","path":"Ameba/Formatter/TODOFormatter.html","kind":"class","full_name":"Ameba::Formatter::TODOFormatter","name":"TODOFormatter","abstract":false,"superclass":{"html_id":"ameba/Ameba/Formatter/DotFormatter","kind":"class","full_name":"Ameba::Formatter::DotFormatter","name":"DotFormatter"},"ancestors":[{"html_id":"ameba/Ameba/Formatter/DotFormatter","kind":"class","full_name":"Ameba::Formatter::DotFormatter","name":"DotFormatter"},{"html_id":"ameba/Ameba/Formatter/Util","kind":"module","full_name":"Ameba::Formatter::Util","name":"Util"},{"html_id":"ameba/Ameba/Formatter/BaseFormatter","kind":"class","full_name":"Ameba::Formatter::BaseFormatter","name":"BaseFormatter"},{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/formatter/todo_formatter.cr","line_number":5,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/formatter/todo_formatter.cr#L5"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Formatter","kind":"module","full_name":"Ameba::Formatter","name":"Formatter"},"doc":"A formatter that creates a todo config.\nBasically, it takes all issues reported and disables corresponding rules\nor excludes failed sources from these rules.","summary":"

    A formatter that creates a todo config.

    ","class_methods":[],"constructors":[{"id":"new(output=STDOUT)-class-method","html_id":"new(output=STDOUT)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"output","doc":null,"default_value":"STDOUT","external_name":"output","restriction":""}],"args_string":"(output = STDOUT)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/formatter/todo_formatter.cr#L6","def":{"name":"new","args":[{"name":"output","doc":null,"default_value":"STDOUT","external_name":"output","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"_ = allocate\n_.initialize(output)\nif _.responds_to?(:finalize)\n ::GC.add_finalizer(_)\nend\n_\n"}}],"instance_methods":[{"id":"finished(sources)-instance-method","html_id":"finished(sources)-instance-method","name":"finished","doc":"Reports a message when inspection is finished.","summary":"

    Reports a message when inspection is finished.

    ","abstract":false,"args":[{"name":"sources","doc":null,"default_value":"","external_name":"sources","restriction":""}],"args_string":"(sources)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/formatter/todo_formatter.cr#L9","def":{"name":"finished","args":[{"name":"sources","doc":null,"default_value":"","external_name":"sources","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"super(sources)\nissues = sources.map(&.issues).flatten\nif issues.any? do |issue|\n !issue.disabled?\nend\nelse\n @output << \"No issues found. File is not generated.\\n\"\n return\nend\nif issues.any? do |issue|\n issue.syntax?\nend\n @output << \"Unable to generate TODO file. Please fix syntax issues.\\n\"\n return\nend\nfile = generate_todo_config(issues)\n@output << \"Created #{file.path}\\n\"\nfile\n"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Formatter/Util","path":"Ameba/Formatter/Util.html","kind":"module","full_name":"Ameba::Formatter::Util","name":"Util","abstract":false,"superclass":null,"ancestors":[],"locations":[{"filename":"src/ameba/formatter/util.cr","line_number":2,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/formatter/util.cr#L2"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[{"html_id":"ameba/Ameba/Formatter/DotFormatter","kind":"class","full_name":"Ameba::Formatter::DotFormatter","name":"DotFormatter"},{"html_id":"ameba/Ameba/Formatter/ExplainFormatter","kind":"class","full_name":"Ameba::Formatter::ExplainFormatter","name":"ExplainFormatter"}],"namespace":{"html_id":"ameba/Ameba/Formatter","kind":"module","full_name":"Ameba::Formatter","name":"Formatter"},"doc":null,"summary":null,"class_methods":[],"constructors":[],"instance_methods":[{"id":"affected_code(source,location,max_length=100,placeholder="...",prompt=">")-instance-method","html_id":"affected_code(source,location,max_length=100,placeholder="...",prompt=">")-instance-method","name":"affected_code","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"location","doc":null,"default_value":"","external_name":"location","restriction":""},{"name":"max_length","doc":null,"default_value":"100","external_name":"max_length","restriction":""},{"name":"placeholder","doc":null,"default_value":"\" ...\"","external_name":"placeholder","restriction":""},{"name":"prompt","doc":null,"default_value":"\"> \"","external_name":"prompt","restriction":""}],"args_string":"(source, location, max_length = 100, placeholder = " ...", prompt = "> ")","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/formatter/util.cr#L3","def":{"name":"affected_code","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"location","doc":null,"default_value":"","external_name":"location","restriction":""},{"name":"max_length","doc":null,"default_value":"100","external_name":"max_length","restriction":""},{"name":"placeholder","doc":null,"default_value":"\" ...\"","external_name":"placeholder","restriction":""},{"name":"prompt","doc":null,"default_value":"\"> \"","external_name":"prompt","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"line, column = location.line_number, location.column_number\naffected_line = source.lines[line - 1]?\nif affected_line.nil? || affected_line.strip.empty?\n return\nend\nif affected_line.size > max_length && column < max_length\n affected_line = affected_line[0, (max_length - placeholder.size) - 1] + placeholder\nend\nstripped = affected_line.lstrip\nposition = (column - (affected_line.size - stripped.size)) + prompt.size\nString.build do |str|\n ((str << prompt) << stripped) << \"\\n\"\n str << (\" \" * (position - 1))\n str << (\"^\".colorize(:yellow))\nend\n"}}],"macros":[],"types":[]}]},{"html_id":"ameba/Ameba/GlobUtils","path":"Ameba/GlobUtils.html","kind":"module","full_name":"Ameba::GlobUtils","name":"GlobUtils","abstract":false,"superclass":null,"ancestors":[],"locations":[{"filename":"src/ameba/glob_utils.cr","line_number":3,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/glob_utils.cr#L3"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[{"html_id":"ameba/Ameba/Config","kind":"class","full_name":"Ameba::Config","name":"Config"}],"namespace":{"html_id":"ameba/Ameba","kind":"module","full_name":"Ameba","name":"Ameba"},"doc":"Helper module that is utilizes helpers for working with globs.","summary":"

    Helper module that is utilizes helpers for working with globs.

    ","class_methods":[],"constructors":[],"instance_methods":[{"id":"expand(globs)-instance-method","html_id":"expand(globs)-instance-method","name":"expand","doc":"Expands globs. Globs can point to files or even directories.\n\n```\nexpand([\"spec/*.cr\", \"src\"]) # => all files in src folder + first level specs\n```\n","summary":"

    Expands globs.

    ","abstract":false,"args":[{"name":"globs","doc":null,"default_value":"","external_name":"globs","restriction":""}],"args_string":"(globs)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/glob_utils.cr#L24","def":{"name":"expand","args":[{"name":"globs","doc":null,"default_value":"","external_name":"globs","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"globs.map do |glob|\n if File.directory?(glob)\n glob = glob + \"/**/*.cr\"\n end\n Dir[glob]\nend.flatten.uniq!"}},{"id":"find_files_by_globs(globs)-instance-method","html_id":"find_files_by_globs(globs)-instance-method","name":"find_files_by_globs","doc":"Returns all files that match specified globs.\nGlobs can have wildcards or be rejected:\n\n```\nfind_files_by_globs([\"**/*.cr\", \"!lib\"])\n```\n","summary":"

    Returns all files that match specified globs.

    ","abstract":false,"args":[{"name":"globs","doc":null,"default_value":"","external_name":"globs","restriction":""}],"args_string":"(globs)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/glob_utils.cr#L11","def":{"name":"find_files_by_globs","args":[{"name":"globs","doc":null,"default_value":"","external_name":"globs","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"rejected = rejected_globs(globs)\nselected = globs - rejected\n(expand(selected)) - (expand(rejected.map! do |p|\n p[1..-1]\nend))\n"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/InlineComments","path":"Ameba/InlineComments.html","kind":"module","full_name":"Ameba::InlineComments","name":"InlineComments","abstract":false,"superclass":null,"ancestors":[],"locations":[{"filename":"src/ameba/inline_comments.cr","line_number":3,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/inline_comments.cr#L3"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"COMMENT_DIRECTIVE_REGEX","name":"COMMENT_DIRECTIVE_REGEX","value":"/# ameba:(?\\w+) (?\\w+(?:\\/\\w+)?(?:,? \\w+(?:\\/\\w+)?)*)/","doc":null,"summary":null}],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[{"html_id":"ameba/Ameba/Source","kind":"class","full_name":"Ameba::Source","name":"Source"}],"namespace":{"html_id":"ameba/Ameba","kind":"module","full_name":"Ameba","name":"Ameba"},"doc":"A module that utilizes inline comments parsing and processing logic.","summary":"

    A module that utilizes inline comments parsing and processing logic.

    ","class_methods":[],"constructors":[],"instance_methods":[{"id":"comment?(line_number:Int32)-instance-method","html_id":"comment?(line_number:Int32)-instance-method","name":"comment?","doc":"Returns true if the line at the given `line_number` is a comment.","summary":"

    Returns true if the line at the given line_number is a comment.

    ","abstract":false,"args":[{"name":"line_number","doc":null,"default_value":"","external_name":"line_number","restriction":"Int32"}],"args_string":"(line_number : Int32)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/inline_comments.cr#L80","def":{"name":"comment?","args":[{"name":"line_number","doc":null,"default_value":"","external_name":"line_number","restriction":"Int32"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if line = lines[line_number]?\n comment?(line)\nend"}},{"id":"location_disabled?(location,rule)-instance-method","html_id":"location_disabled?(location,rule)-instance-method","name":"location_disabled?","doc":"Returns true if current location is disabled for a particular rule,\nfalse otherwise.\n\nLocation is disabled in two cases:\n 1. The line of the location ends with a comment directive.\n 2. The line above the location is a comment directive.\n\nFor example, here are two examples of disabled location:\n\n```\n# ameba:disable Style/LargeNumbers\nTime.epoch(1483859302)\n\nTime.epoch(1483859302) # ameba:disable Style/LargeNumbers\n```\n\nBut here are examples which are not considered as disabled location:\n\n```\n# ameba:disable Style/LargeNumbers\n#\nTime.epoch(1483859302)\n\nif use_epoch? # ameba:disable Style/LargeNumbers\n Time.epoch(1483859302)\nend\n```\n","summary":"

    Returns true if current location is disabled for a particular rule, false otherwise.

    ","abstract":false,"args":[{"name":"location","doc":null,"default_value":"","external_name":"location","restriction":""},{"name":"rule","doc":null,"default_value":"","external_name":"rule","restriction":""}],"args_string":"(location, rule)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/inline_comments.cr#L40","def":{"name":"location_disabled?","args":[{"name":"location","doc":null,"default_value":"","external_name":"location","restriction":""},{"name":"rule","doc":null,"default_value":"","external_name":"rule","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if Rule::SPECIAL.includes?(rule.name)\n return false\nend\nif line_number = location.try do |__arg0|\n __arg0.line_number.try(&.-(1))\nend\nelse\n return false\nend\nif line = lines[line_number]?\nelse\n return false\nend\n(line_disabled?(line, rule)) || (((line_number > 0 && (prev_line = lines[line_number - 1])) && (comment?(prev_line))) && (line_disabled?(prev_line, rule)))\n"}},{"id":"parse_inline_directive(line)-instance-method","html_id":"parse_inline_directive(line)-instance-method","name":"parse_inline_directive","doc":"Parses inline comment directive. Returns a tuple that consists of\nan action and parsed rules if directive found, nil otherwise.\n\n```\nline = \"# ameba:disable Rule1, Rule2\"\ndirective = parse_inline_directive(line)\ndirective[:action] # => \"disable\"\ndirective[:rules] # => [\"Rule1\", \"Rule2\"]\n```\n\nIt ignores the directive if it is commented out.\n\n```\nline = \"# # ameba:disable Rule1, Rule2\"\nparse_inline_directive(line) # => nil\n```\n","summary":"

    Parses inline comment directive.

    ","abstract":false,"args":[{"name":"line","doc":null,"default_value":"","external_name":"line","restriction":""}],"args_string":"(line)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/inline_comments.cr#L69","def":{"name":"parse_inline_directive","args":[{"name":"line","doc":null,"default_value":"","external_name":"line","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if directive = COMMENT_DIRECTIVE_REGEX.match(line)\n if commented_out?(line.gsub(directive[0], \"\"))\n return\n end\n {action: directive[\"action\"], rules: directive[\"rules\"].split(/[\\s,]/, remove_empty: true)}\nend"}}],"macros":[],"types":[{"html_id":"ameba/Ameba/InlineComments/Action","path":"Ameba/InlineComments/Action.html","kind":"enum","full_name":"Ameba::InlineComments::Action","name":"Action","abstract":false,"superclass":null,"ancestors":[{"html_id":"ameba/Enum","kind":"struct","full_name":"Enum","name":"Enum"},{"html_id":"ameba/Comparable","kind":"module","full_name":"Comparable","name":"Comparable"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/inline_comments.cr","line_number":7,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/inline_comments.cr#L7"}],"repository_name":"ameba","program":false,"enum":true,"alias":false,"aliased":"","const":false,"constants":[{"id":"Disable","name":"Disable","value":"0","doc":null,"summary":null},{"id":"Enable","name":"Enable","value":"1","doc":null,"summary":null}],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/InlineComments","kind":"module","full_name":"Ameba::InlineComments","name":"InlineComments"},"doc":"Available actions in the inline comments","summary":"

    Available actions in the inline comments

    ","class_methods":[],"constructors":[],"instance_methods":[{"id":"disable?-instance-method","html_id":"disable?-instance-method","name":"disable?","doc":null,"summary":null,"abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/inline_comments.cr#L8","def":{"name":"disable?","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"self == Disable"}},{"id":"enable?-instance-method","html_id":"enable?-instance-method","name":"enable?","doc":null,"summary":null,"abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/inline_comments.cr#L9","def":{"name":"enable?","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"self == Enable"}}],"macros":[],"types":[]}]},{"html_id":"ameba/Ameba/Issue","path":"Ameba/Issue.html","kind":"struct","full_name":"Ameba::Issue","name":"Issue","abstract":false,"superclass":{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},"ancestors":[{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/issue.cr","line_number":3,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/issue.cr#L3"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba","kind":"module","full_name":"Ameba","name":"Ameba"},"doc":"Represents an issue reported by Ameba.","summary":"

    Represents an issue reported by Ameba.

    ","class_methods":[],"constructors":[{"id":"new(rule:Rule::Base,location:Crystal::Location?,end_location:Crystal::Location?,message:String,status:Symbol?)-class-method","html_id":"new(rule:Rule::Base,location:Crystal::Location?,end_location:Crystal::Location?,message:String,status:Symbol?)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"rule","doc":null,"default_value":"","external_name":"rule","restriction":"Rule::Base"},{"name":"location","doc":null,"default_value":"","external_name":"location","restriction":"Crystal::Location | ::Nil"},{"name":"end_location","doc":null,"default_value":"","external_name":"end_location","restriction":"Crystal::Location | ::Nil"},{"name":"message","doc":null,"default_value":"","external_name":"message","restriction":"String"},{"name":"status","doc":null,"default_value":"","external_name":"status","restriction":"Symbol | ::Nil"}],"args_string":"(rule : Rule::Base, location : Crystal::Location?, end_location : Crystal::Location?, message : String, status : Symbol?)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/issue.cr#L3","def":{"name":"new","args":[{"name":"rule","doc":null,"default_value":"","external_name":"rule","restriction":"Rule::Base"},{"name":"location","doc":null,"default_value":"","external_name":"location","restriction":"Crystal::Location | ::Nil"},{"name":"end_location","doc":null,"default_value":"","external_name":"end_location","restriction":"Crystal::Location | ::Nil"},{"name":"message","doc":null,"default_value":"","external_name":"message","restriction":"String"},{"name":"status","doc":null,"default_value":"","external_name":"status","restriction":"Symbol | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"_ = allocate\n_.initialize(rule, location, end_location, message, status)\nif _.responds_to?(:finalize)\n ::GC.add_finalizer(_)\nend\n_\n"}}],"instance_methods":[{"id":"clone-instance-method","html_id":"clone-instance-method","name":"clone","doc":null,"summary":null,"abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/issue.cr#L3","def":{"name":"clone","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"self.class.new(@rule.clone, @location.clone, @end_location.clone, @message.clone, @status.clone)"}},{"id":"copy_with(rule_rule=@rule,location_location=@location,end_location_end_location=@end_location,message_message=@message,status_status=@status)-instance-method","html_id":"copy_with(rule_rule=@rule,location_location=@location,end_location_end_location=@end_location,message_message=@message,status_status=@status)-instance-method","name":"copy_with","doc":null,"summary":null,"abstract":false,"args":[{"name":"_rule","doc":null,"default_value":"@rule","external_name":"rule","restriction":""},{"name":"_location","doc":null,"default_value":"@location","external_name":"location","restriction":""},{"name":"_end_location","doc":null,"default_value":"@end_location","external_name":"end_location","restriction":""},{"name":"_message","doc":null,"default_value":"@message","external_name":"message","restriction":""},{"name":"_status","doc":null,"default_value":"@status","external_name":"status","restriction":""}],"args_string":"(rule _rule = @rule, location _location = @location, end_location _end_location = @end_location, message _message = @message, status _status = @status)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/issue.cr#L3","def":{"name":"copy_with","args":[{"name":"_rule","doc":null,"default_value":"@rule","external_name":"rule","restriction":""},{"name":"_location","doc":null,"default_value":"@location","external_name":"location","restriction":""},{"name":"_end_location","doc":null,"default_value":"@end_location","external_name":"end_location","restriction":""},{"name":"_message","doc":null,"default_value":"@message","external_name":"message","restriction":""},{"name":"_status","doc":null,"default_value":"@status","external_name":"status","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"self.class.new(_rule, _location, _end_location, _message, _status)"}},{"id":"disabled?-instance-method","html_id":"disabled?-instance-method","name":"disabled?","doc":null,"summary":null,"abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/issue.cr#L18","def":{"name":"disabled?","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"status == (:disabled)"}},{"id":"end_location:Crystal::Location?-instance-method","html_id":"end_location:Crystal::Location?-instance-method","name":"end_location","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Crystal::Location?","source_link":null,"def":{"name":"end_location","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Crystal::Location | ::Nil","visibility":"Public","body":"@end_location"}},{"id":"location:Crystal::Location?-instance-method","html_id":"location:Crystal::Location?-instance-method","name":"location","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Crystal::Location?","source_link":null,"def":{"name":"location","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Crystal::Location | ::Nil","visibility":"Public","body":"@location"}},{"id":"message:String-instance-method","html_id":"message:String-instance-method","name":"message","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"message","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@message"}},{"id":"rule:Rule::Base-instance-method","html_id":"rule:Rule::Base-instance-method","name":"rule","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Rule::Base","source_link":null,"def":{"name":"rule","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Rule::Base","visibility":"Public","body":"@rule"}},{"id":"status:Symbol?-instance-method","html_id":"status:Symbol?-instance-method","name":"status","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Symbol?","source_link":null,"def":{"name":"status","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Symbol | ::Nil","visibility":"Public","body":"@status"}},{"id":"syntax?-instance-method","html_id":"syntax?-instance-method","name":"syntax?","doc":null,"summary":null,"abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/issue.cr#L22","def":{"name":"syntax?","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"rule.is_a?(Rule::Lint::Syntax)"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Reportable","path":"Ameba/Reportable.html","kind":"module","full_name":"Ameba::Reportable","name":"Reportable","abstract":false,"superclass":null,"ancestors":[],"locations":[{"filename":"src/ameba/reportable.cr","line_number":3,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/reportable.cr#L3"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[{"html_id":"ameba/Ameba/Source","kind":"class","full_name":"Ameba::Source","name":"Source"}],"namespace":{"html_id":"ameba/Ameba","kind":"module","full_name":"Ameba","name":"Ameba"},"doc":"Represents a module used to report issues.","summary":"

    Represents a module used to report issues.

    ","class_methods":[],"constructors":[],"instance_methods":[{"id":"add_issue(rule,location:Crystal::Location?,end_location:Crystal::Location?,message,status=nil)-instance-method","html_id":"add_issue(rule,location:Crystal::Location?,end_location:Crystal::Location?,message,status=nil)-instance-method","name":"add_issue","doc":"Adds a new issue to the list of issues.","summary":"

    Adds a new issue to the list of issues.

    ","abstract":false,"args":[{"name":"rule","doc":null,"default_value":"","external_name":"rule","restriction":""},{"name":"location","doc":null,"default_value":"","external_name":"location","restriction":"Crystal::Location | ::Nil"},{"name":"end_location","doc":null,"default_value":"","external_name":"end_location","restriction":"Crystal::Location | ::Nil"},{"name":"message","doc":null,"default_value":"","external_name":"message","restriction":""},{"name":"status","doc":null,"default_value":"nil","external_name":"status","restriction":""}],"args_string":"(rule, location : Crystal::Location?, end_location : Crystal::Location?, message, status = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/reportable.cr#L8","def":{"name":"add_issue","args":[{"name":"rule","doc":null,"default_value":"","external_name":"rule","restriction":""},{"name":"location","doc":null,"default_value":"","external_name":"location","restriction":"Crystal::Location | ::Nil"},{"name":"end_location","doc":null,"default_value":"","external_name":"end_location","restriction":"Crystal::Location | ::Nil"},{"name":"message","doc":null,"default_value":"","external_name":"message","restriction":""},{"name":"status","doc":null,"default_value":"nil","external_name":"status","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if location_disabled?(location, rule)\n status || (status = :disabled)\nend\nissues << (Issue.new(rule, location, end_location, message, status))\n"}},{"id":"add_issue(rule,location:Tuple(Int32,Int32),end_location:Tuple(Int32,Int32),message,**args)-instance-method","html_id":"add_issue(rule,location:Tuple(Int32,Int32),end_location:Tuple(Int32,Int32),message,**args)-instance-method","name":"add_issue","doc":"Adds a new issue for *location* and *end_location* defined by line and column numbers.","summary":"

    Adds a new issue for location and end_location defined by line and column numbers.

    ","abstract":false,"args":[{"name":"rule","doc":null,"default_value":"","external_name":"rule","restriction":""},{"name":"location","doc":null,"default_value":"","external_name":"location","restriction":"Tuple(Int32, Int32)"},{"name":"end_location","doc":null,"default_value":"","external_name":"end_location","restriction":"Tuple(Int32, Int32)"},{"name":"message","doc":null,"default_value":"","external_name":"message","restriction":""}],"args_string":"(rule, location : Tuple(Int32, Int32), end_location : Tuple(Int32, Int32), message, **args)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/reportable.cr#L30","def":{"name":"add_issue","args":[{"name":"rule","doc":null,"default_value":"","external_name":"rule","restriction":""},{"name":"location","doc":null,"default_value":"","external_name":"location","restriction":"Tuple(Int32, Int32)"},{"name":"end_location","doc":null,"default_value":"","external_name":"end_location","restriction":"Tuple(Int32, Int32)"},{"name":"message","doc":null,"default_value":"","external_name":"message","restriction":""}],"double_splat":{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""},"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"location = Crystal::Location.new(path, *location)\nend_location = Crystal::Location.new(path, *end_location)\nadd_issue(rule, location, end_location, message, **args)\n"}},{"id":"add_issue(rule,location:Tuple(Int32,Int32),message,**args)-instance-method","html_id":"add_issue(rule,location:Tuple(Int32,Int32),message,**args)-instance-method","name":"add_issue","doc":"Adds a new issue for *location* defined by line and column numbers.","summary":"

    Adds a new issue for location defined by line and column numbers.

    ","abstract":false,"args":[{"name":"rule","doc":null,"default_value":"","external_name":"rule","restriction":""},{"name":"location","doc":null,"default_value":"","external_name":"location","restriction":"Tuple(Int32, Int32)"},{"name":"message","doc":null,"default_value":"","external_name":"message","restriction":""}],"args_string":"(rule, location : Tuple(Int32, Int32), message, **args)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/reportable.cr#L24","def":{"name":"add_issue","args":[{"name":"rule","doc":null,"default_value":"","external_name":"rule","restriction":""},{"name":"location","doc":null,"default_value":"","external_name":"location","restriction":"Tuple(Int32, Int32)"},{"name":"message","doc":null,"default_value":"","external_name":"message","restriction":""}],"double_splat":{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""},"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"location = Crystal::Location.new(path, *location)\nadd_issue(rule, location, nil, message, **args)\n"}},{"id":"add_issue(rule,node:Crystal::ASTNode,message,**args)-instance-method","html_id":"add_issue(rule,node:Crystal::ASTNode,message,**args)-instance-method","name":"add_issue","doc":"Adds a new issue for AST *node*.","summary":"

    Adds a new issue for AST node.

    ","abstract":false,"args":[{"name":"rule","doc":null,"default_value":"","external_name":"rule","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ASTNode"},{"name":"message","doc":null,"default_value":"","external_name":"message","restriction":""}],"args_string":"(rule, node : Crystal::ASTNode, message, **args)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/reportable.cr#L14","def":{"name":"add_issue","args":[{"name":"rule","doc":null,"default_value":"","external_name":"rule","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ASTNode"},{"name":"message","doc":null,"default_value":"","external_name":"message","restriction":""}],"double_splat":{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""},"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"add_issue(rule, node.location, node.end_location, message, **args)"}},{"id":"add_issue(rule,token:Crystal::Token,message,**args)-instance-method","html_id":"add_issue(rule,token:Crystal::Token,message,**args)-instance-method","name":"add_issue","doc":"Adds a new issue for Crystal *token*.","summary":"

    Adds a new issue for Crystal token.

    ","abstract":false,"args":[{"name":"rule","doc":null,"default_value":"","external_name":"rule","restriction":""},{"name":"token","doc":null,"default_value":"","external_name":"token","restriction":"Crystal::Token"},{"name":"message","doc":null,"default_value":"","external_name":"message","restriction":""}],"args_string":"(rule, token : Crystal::Token, message, **args)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/reportable.cr#L19","def":{"name":"add_issue","args":[{"name":"rule","doc":null,"default_value":"","external_name":"rule","restriction":""},{"name":"token","doc":null,"default_value":"","external_name":"token","restriction":"Crystal::Token"},{"name":"message","doc":null,"default_value":"","external_name":"message","restriction":""}],"double_splat":{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""},"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"add_issue(rule, token.location, nil, message, **args)"}},{"id":"issues-instance-method","html_id":"issues-instance-method","name":"issues","doc":"List of reported issues.","summary":"

    List of reported issues.

    ","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/reportable.cr#L5","def":{"name":"issues","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@issues"}},{"id":"valid?-instance-method","html_id":"valid?-instance-method","name":"valid?","doc":"Returns true if the list of not disabled issues is empty, false otherwise.","summary":"

    Returns true if the list of not disabled issues is empty, false otherwise.

    ","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/reportable.cr#L37","def":{"name":"valid?","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"issues.reject(&.disabled?).empty?"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule","path":"Ameba/Rule.html","kind":"module","full_name":"Ameba::Rule","name":"Rule","abstract":false,"superclass":null,"ancestors":[],"locations":[{"filename":"src/ameba/rule/base.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/base.cr#L1"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"SPECIAL","name":"SPECIAL","value":"[Lint::Syntax.rule_name, Lint::UnneededDisableDirective.rule_name]","doc":"List of names of the special rules, which\nbehave differently than usual rules.","summary":"

    List of names of the special rules, which behave differently than usual rules.

    "}],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba","kind":"module","full_name":"Ameba","name":"Ameba"},"doc":null,"summary":null,"class_methods":[{"id":"rules-class-method","html_id":"rules-class-method","name":"rules","doc":"Returns a list of all available rules.\n\n```\nAmeba::Rule.rules # => [Rule1, Rule2, ....]\n```\n","summary":"

    Returns a list of all available rules.

    ","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/base.cr#L194","def":{"name":"rules","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"Base.subclasses"}}],"constructors":[],"instance_methods":[],"macros":[],"types":[{"html_id":"ameba/Ameba/Rule/Base","path":"Ameba/Rule/Base.html","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base","abstract":true,"superclass":{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},"ancestors":[{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/base.cr","line_number":30,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/base.cr#L30"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"}],"extended_modules":[],"subclasses":[{"html_id":"ameba/Ameba/Rule/Layout/LineLength","kind":"struct","full_name":"Ameba::Rule::Layout::LineLength","name":"LineLength"},{"html_id":"ameba/Ameba/Rule/Layout/TrailingBlankLines","kind":"struct","full_name":"Ameba::Rule::Layout::TrailingBlankLines","name":"TrailingBlankLines"},{"html_id":"ameba/Ameba/Rule/Layout/TrailingWhitespace","kind":"struct","full_name":"Ameba::Rule::Layout::TrailingWhitespace","name":"TrailingWhitespace"},{"html_id":"ameba/Ameba/Rule/Lint/BadDirective","kind":"struct","full_name":"Ameba::Rule::Lint::BadDirective","name":"BadDirective"},{"html_id":"ameba/Ameba/Rule/Lint/ComparisonToBoolean","kind":"struct","full_name":"Ameba::Rule::Lint::ComparisonToBoolean","name":"ComparisonToBoolean"},{"html_id":"ameba/Ameba/Rule/Lint/DebuggerStatement","kind":"struct","full_name":"Ameba::Rule::Lint::DebuggerStatement","name":"DebuggerStatement"},{"html_id":"ameba/Ameba/Rule/Lint/EmptyEnsure","kind":"struct","full_name":"Ameba::Rule::Lint::EmptyEnsure","name":"EmptyEnsure"},{"html_id":"ameba/Ameba/Rule/Lint/EmptyExpression","kind":"struct","full_name":"Ameba::Rule::Lint::EmptyExpression","name":"EmptyExpression"},{"html_id":"ameba/Ameba/Rule/Lint/EmptyLoop","kind":"struct","full_name":"Ameba::Rule::Lint::EmptyLoop","name":"EmptyLoop"},{"html_id":"ameba/Ameba/Rule/Lint/HashDuplicatedKey","kind":"struct","full_name":"Ameba::Rule::Lint::HashDuplicatedKey","name":"HashDuplicatedKey"},{"html_id":"ameba/Ameba/Rule/Lint/LiteralInCondition","kind":"struct","full_name":"Ameba::Rule::Lint::LiteralInCondition","name":"LiteralInCondition"},{"html_id":"ameba/Ameba/Rule/Lint/LiteralInInterpolation","kind":"struct","full_name":"Ameba::Rule::Lint::LiteralInInterpolation","name":"LiteralInInterpolation"},{"html_id":"ameba/Ameba/Rule/Lint/PercentArrays","kind":"struct","full_name":"Ameba::Rule::Lint::PercentArrays","name":"PercentArrays"},{"html_id":"ameba/Ameba/Rule/Lint/RandZero","kind":"struct","full_name":"Ameba::Rule::Lint::RandZero","name":"RandZero"},{"html_id":"ameba/Ameba/Rule/Lint/RedundantStringCoercion","kind":"struct","full_name":"Ameba::Rule::Lint::RedundantStringCoercion","name":"RedundantStringCoercion"},{"html_id":"ameba/Ameba/Rule/Lint/RedundantWithIndex","kind":"struct","full_name":"Ameba::Rule::Lint::RedundantWithIndex","name":"RedundantWithIndex"},{"html_id":"ameba/Ameba/Rule/Lint/RedundantWithObject","kind":"struct","full_name":"Ameba::Rule::Lint::RedundantWithObject","name":"RedundantWithObject"},{"html_id":"ameba/Ameba/Rule/Lint/ShadowedArgument","kind":"struct","full_name":"Ameba::Rule::Lint::ShadowedArgument","name":"ShadowedArgument"},{"html_id":"ameba/Ameba/Rule/Lint/ShadowedException","kind":"struct","full_name":"Ameba::Rule::Lint::ShadowedException","name":"ShadowedException"},{"html_id":"ameba/Ameba/Rule/Lint/ShadowingOuterLocalVar","kind":"struct","full_name":"Ameba::Rule::Lint::ShadowingOuterLocalVar","name":"ShadowingOuterLocalVar"},{"html_id":"ameba/Ameba/Rule/Lint/SharedVarInFiber","kind":"struct","full_name":"Ameba::Rule::Lint::SharedVarInFiber","name":"SharedVarInFiber"},{"html_id":"ameba/Ameba/Rule/Lint/Syntax","kind":"struct","full_name":"Ameba::Rule::Lint::Syntax","name":"Syntax"},{"html_id":"ameba/Ameba/Rule/Lint/UnneededDisableDirective","kind":"struct","full_name":"Ameba::Rule::Lint::UnneededDisableDirective","name":"UnneededDisableDirective"},{"html_id":"ameba/Ameba/Rule/Lint/UnreachableCode","kind":"struct","full_name":"Ameba::Rule::Lint::UnreachableCode","name":"UnreachableCode"},{"html_id":"ameba/Ameba/Rule/Lint/UnusedArgument","kind":"struct","full_name":"Ameba::Rule::Lint::UnusedArgument","name":"UnusedArgument"},{"html_id":"ameba/Ameba/Rule/Lint/UselessAssign","kind":"struct","full_name":"Ameba::Rule::Lint::UselessAssign","name":"UselessAssign"},{"html_id":"ameba/Ameba/Rule/Lint/UselessConditionInWhen","kind":"struct","full_name":"Ameba::Rule::Lint::UselessConditionInWhen","name":"UselessConditionInWhen"},{"html_id":"ameba/Ameba/Rule/Metrics/CyclomaticComplexity","kind":"struct","full_name":"Ameba::Rule::Metrics::CyclomaticComplexity","name":"CyclomaticComplexity"},{"html_id":"ameba/Ameba/Rule/Performance/AnyAfterFilter","kind":"struct","full_name":"Ameba::Rule::Performance::AnyAfterFilter","name":"AnyAfterFilter"},{"html_id":"ameba/Ameba/Rule/Performance/FirstLastAfterFilter","kind":"struct","full_name":"Ameba::Rule::Performance::FirstLastAfterFilter","name":"FirstLastAfterFilter"},{"html_id":"ameba/Ameba/Rule/Performance/SizeAfterFilter","kind":"struct","full_name":"Ameba::Rule::Performance::SizeAfterFilter","name":"SizeAfterFilter"},{"html_id":"ameba/Ameba/Rule/Style/ConstantNames","kind":"struct","full_name":"Ameba::Rule::Style::ConstantNames","name":"ConstantNames"},{"html_id":"ameba/Ameba/Rule/Style/IsANil","kind":"struct","full_name":"Ameba::Rule::Style::IsANil","name":"IsANil"},{"html_id":"ameba/Ameba/Rule/Style/LargeNumbers","kind":"struct","full_name":"Ameba::Rule::Style::LargeNumbers","name":"LargeNumbers"},{"html_id":"ameba/Ameba/Rule/Style/MethodNames","kind":"struct","full_name":"Ameba::Rule::Style::MethodNames","name":"MethodNames"},{"html_id":"ameba/Ameba/Rule/Style/NegatedConditionsInUnless","kind":"struct","full_name":"Ameba::Rule::Style::NegatedConditionsInUnless","name":"NegatedConditionsInUnless"},{"html_id":"ameba/Ameba/Rule/Style/PredicateName","kind":"struct","full_name":"Ameba::Rule::Style::PredicateName","name":"PredicateName"},{"html_id":"ameba/Ameba/Rule/Style/RedundantBegin","kind":"struct","full_name":"Ameba::Rule::Style::RedundantBegin","name":"RedundantBegin"},{"html_id":"ameba/Ameba/Rule/Style/RedundantNext","kind":"struct","full_name":"Ameba::Rule::Style::RedundantNext","name":"RedundantNext"},{"html_id":"ameba/Ameba/Rule/Style/RedundantReturn","kind":"struct","full_name":"Ameba::Rule::Style::RedundantReturn","name":"RedundantReturn"},{"html_id":"ameba/Ameba/Rule/Style/TypeNames","kind":"struct","full_name":"Ameba::Rule::Style::TypeNames","name":"TypeNames"},{"html_id":"ameba/Ameba/Rule/Style/UnlessElse","kind":"struct","full_name":"Ameba::Rule::Style::UnlessElse","name":"UnlessElse"},{"html_id":"ameba/Ameba/Rule/Style/VariableNames","kind":"struct","full_name":"Ameba::Rule::Style::VariableNames","name":"VariableNames"},{"html_id":"ameba/Ameba/Rule/Style/WhileTrue","kind":"struct","full_name":"Ameba::Rule::Style::WhileTrue","name":"WhileTrue"}],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule","kind":"module","full_name":"Ameba::Rule","name":"Rule"},"doc":"Represents a base of all rules. In other words, all rules\ninherits from this struct:\n\n```\nstruct MyRule < Ameba::Rule::Base\n def test(source)\n if invalid?(source)\n issue_for line, column, \"Something wrong.\"\n end\n end\n\n private def invalid?(source)\n # ...\n end\nend\n```\n\nEnforces rules to implement an abstract `#test` method which\nis designed to test the source passed in. If source has issues\nthat are tested by this rule, it should add an issue.\n","summary":"

    Represents a base of all rules.

    ","class_methods":[{"id":"parsed_doc-class-method","html_id":"parsed_doc-class-method","name":"parsed_doc","doc":"Returns documentation for this rule if any.\n\n```\nmodule Ameba\n # This is a test rule.\n # Does nothing.\n struct MyRule < Ameba::Rule::Base\n def test(source)\n end\n end\nend\n\nMyRule.parsed_doc # => \"This is a test rule.\\nDoes nothing.\"\n```","summary":"

    Returns documentation for this rule if any.

    ","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/base.cr#L157","def":{"name":"parsed_doc","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"source = File.read(path_to_source_file)\nnodes = (Crystal::Parser.new(source)).tap(&.wants_doc = true).parse\ntype_name = (rule_name.split(\"/\")).last?\n(DocFinder.new(nodes, type_name)).doc\n"}}],"constructors":[{"id":"new-class-method","html_id":"new-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/base.cr#L30","def":{"name":"new","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"x = allocate\nif x.responds_to?(:finalize)\n ::GC.add_finalizer(x)\nend\nx\n"}}],"instance_methods":[{"id":"==(other)-instance-method","html_id":"==(other)-instance-method","name":"==","doc":"Returns `true` if this struct is equal to *other*.\n\nBoth structs's instance vars are compared to each other. Thus, two\nstructs are considered equal if each of their instance variables are\nequal. Subclasses should override this method to provide specific\nequality semantics.\n\n```\nstruct Point\n def initialize(@x : Int32, @y : Int32)\n end\nend\n\np1 = Point.new 1, 2\np2 = Point.new 1, 2\np3 = Point.new 3, 4\n\np1 == p2 # => true\np1 == p3 # => false\n```","summary":"

    Returns true if this struct is equal to other.

    ","abstract":false,"args":[{"name":"other","doc":null,"default_value":"","external_name":"other","restriction":""}],"args_string":"(other)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/base.cr#L113","def":{"name":"==","args":[{"name":"other","doc":null,"default_value":"","external_name":"other","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"name == other.try(&.name)"}},{"id":"catch(source:Source)-instance-method","html_id":"catch(source:Source)-instance-method","name":"catch","doc":"A convenient addition to `#test` method that does the same\nbut returns a passed in `source` as an addition.\n\n```\nsource = MyRule.new.catch(source)\nsource.valid?\n```\n","summary":"

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

    ","abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":"Source"}],"args_string":"(source : Source)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/base.cr#L54","def":{"name":"catch","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":"Source"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"source.tap do |s|\n test(s)\nend"}},{"id":"excluded?(source)-instance-method","html_id":"excluded?(source)-instance-method","name":"excluded?","doc":"Checks whether the source is excluded from this rule.\nIt searches for a path in `excluded` property which matches\nthe one of the given source.\n\n```\nmy_rule.excluded?(source) # => true or false\n```\n","summary":"

    Checks whether the source is excluded from this rule.

    ","abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"args_string":"(source)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/base.cr#L95","def":{"name":"excluded?","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"excluded.try(&.any? do |path|\n (source.matches_path?(path)) || (Dir.glob(path)).any? do |glob|\n source.matches_path?(glob)\n end\nend)"}},{"id":"group-instance-method","html_id":"group-instance-method","name":"group","doc":"Returns a group this rule belong to.\n\n```\nstruct MyGroup::MyRule < Ameba::Rule::Base\n # ...\nend\n\nMyGroup::MyRule.new.group # => \"MyGroup\"\n```\n","summary":"

    Returns a group this rule belong to.

    ","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/base.cr#L83","def":{"name":"group","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"({{ @type }}).group_name"}},{"id":"hash-instance-method","html_id":"hash-instance-method","name":"hash","doc":"Generates an `UInt64` hash value for this object.\n\nThis method must have the property that `a == b` implies `a.hash == b.hash`.\n\nThe hash value is used along with `==` by the `Hash` class to determine if two objects\nreference the same hash key.\n\nSubclasses must not override this method. Instead, they must define `hash(hasher)`,\nthough usually the macro `def_hash` can be used to generate this method.","summary":"

    Generates an UInt64 hash value for this object.

    ","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/base.cr#L117","def":{"name":"hash","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"name.hash"}},{"id":"name-instance-method","html_id":"name-instance-method","name":"name","doc":"Returns a name of this rule, which is basically a class name.\n\n```\nstruct MyRule < Ameba::Rule::Base\n def test(source)\n end\nend\n\nMyRule.new.name # => \"MyRule\"\n```\n","summary":"

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

    ","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/base.cr#L69","def":{"name":"name","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"({{ @type }}).rule_name"}},{"id":"special?-instance-method","html_id":"special?-instance-method","name":"special?","doc":"Returns true if this rule is special and behaves differently than\nusual rules.\n\n```\nmy_rule.special? # => true or false\n```\n","summary":"

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

    ","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/base.cr#L109","def":{"name":"special?","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"SPECIAL.includes?(name)"}},{"id":"test(source:Source,node:Crystal::ASTNode,*opts)-instance-method","html_id":"test(source:Source,node:Crystal::ASTNode,*opts)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":"Source"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ASTNode"},{"name":"opts","doc":null,"default_value":"","external_name":"opts","restriction":""}],"args_string":"(source : Source, node : Crystal::ASTNode, *opts)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/base.cr#L42","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":"Source"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ASTNode"},{"name":"opts","doc":null,"default_value":"","external_name":"opts","restriction":""}],"double_splat":null,"splat_index":2,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":""}},{"id":"test(source:Source)-instance-method","html_id":"test(source:Source)-instance-method","name":"test","doc":"This method is designed to test the source passed in. If source has issues\nthat are tested by this rule, it should add an issue.\n\nBe default it uses a node visitor to traverse all the nodes in the source.\nMust be overriten for other type of rules.","summary":"

    This method is designed to test the source passed in.

    ","abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":"Source"}],"args_string":"(source : Source)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/base.cr#L38","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":"Source"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"AST::NodeVisitor.new(self, source)"}}],"macros":[{"id":"issue_for(*args)-macro","html_id":"issue_for(*args)-macro","name":"issue_for","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/base.cr#L121","def":{"name":"issue_for","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":null,"splat_index":0,"block_arg":null,"visibility":"Public","body":" source.add_issue self, \n{{ *args }}\n\n \n"}}],"types":[]},{"html_id":"ameba/Ameba/Rule/Layout","path":"Ameba/Rule/Layout.html","kind":"module","full_name":"Ameba::Rule::Layout","name":"Layout","abstract":false,"superclass":null,"ancestors":[],"locations":[{"filename":"src/ameba/rule/layout/line_length.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/layout/line_length.cr#L1"},{"filename":"src/ameba/rule/layout/trailing_blank_lines.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/layout/trailing_blank_lines.cr#L1"},{"filename":"src/ameba/rule/layout/trailing_whitespace.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/layout/trailing_whitespace.cr#L1"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule","kind":"module","full_name":"Ameba::Rule","name":"Rule"},"doc":null,"summary":null,"class_methods":[],"constructors":[],"instance_methods":[],"macros":[],"types":[{"html_id":"ameba/Ameba/Rule/Layout/LineLength","path":"Ameba/Rule/Layout/LineLength.html","kind":"struct","full_name":"Ameba::Rule::Layout::LineLength","name":"LineLength","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/layout/line_length.cr","line_number":12,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/layout/line_length.cr#L12"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Line too long\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Layout","kind":"module","full_name":"Ameba::Rule::Layout","name":"Layout"},"doc":"A rule that disallows lines longer than `max_length` number of symbols.\n\nYAML configuration example:\n\n```\nLayout/LineLength:\n Enabled: true\n MaxLength: 100\n```\n","summary":"

    A rule that disallows lines longer than #max_length number of symbols.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows lines longer than `max_length` number of symbols.\n\nYAML configuration example:\n\n```\nLayout/LineLength:\n Enabled: true\n MaxLength: 100\n```\n","summary":"

    A rule that disallows lines longer than #max_length number of symbols.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/layout/line_length.cr#L12","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Bool","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled:Bool)-instance-method","html_id":"enabled=(enabled:Bool)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":"Bool"}],"args_string":"(enabled : Bool)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":"Bool"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"max_length:Int32-instance-method","html_id":"max_length:Int32-instance-method","name":"max_length","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Int32","source_link":null,"def":{"name":"max_length","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Int32","visibility":"Public","body":"@max_length"}},{"id":"max_length=(max_length:Int32)-instance-method","html_id":"max_length=(max_length:Int32)-instance-method","name":"max_length=","doc":null,"summary":null,"abstract":false,"args":[{"name":"max_length","doc":null,"default_value":"","external_name":"max_length","restriction":"Int32"}],"args_string":"(max_length : Int32)","source_link":null,"def":{"name":"max_length=","args":[{"name":"max_length","doc":null,"default_value":"","external_name":"max_length","restriction":"Int32"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@max_length = max_length"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source)-instance-method","html_id":"test(source)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"args_string":"(source)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/layout/line_length.cr#L21","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"source.lines.each_with_index do |line, index|\n if line.size > max_length\n else\n next\n end\n issue_for({index + 1, max_length + 1}, MSG)\nend"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Layout/TrailingBlankLines","path":"Ameba/Rule/Layout/TrailingBlankLines.html","kind":"struct","full_name":"Ameba::Rule::Layout::TrailingBlankLines","name":"TrailingBlankLines","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/layout/trailing_blank_lines.cr","line_number":11,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/layout/trailing_blank_lines.cr#L11"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Excessive trailing newline detected\"","doc":null,"summary":null},{"id":"MSG_FINAL_NEWLINE","name":"MSG_FINAL_NEWLINE","value":"\"Trailing newline missing\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Layout","kind":"module","full_name":"Ameba::Rule::Layout","name":"Layout"},"doc":"A rule that disallows trailing blank lines at the end of the source file.\n\nYAML configuration example:\n\n```\nLayout/TrailingBlankLines:\n Enabled: true\n```\n","summary":"

    A rule that disallows trailing blank lines at the end of the source file.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows trailing blank lines at the end of the source file.\n\nYAML configuration example:\n\n```\nLayout/TrailingBlankLines:\n Enabled: true\n```\n","summary":"

    A rule that disallows trailing blank lines at the end of the source file.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/layout/trailing_blank_lines.cr#L11","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source)-instance-method","html_id":"test(source)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"args_string":"(source)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/layout/trailing_blank_lines.cr#L19","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"source_lines = source.lines\nif source_lines.empty?\n return\nend\nlast_source_line = source_lines.last\nsource_lines_size = source_lines.size\nif (source_lines_size == 1) && last_source_line.empty?\n return\nend\nlast_line_not_empty = !last_source_line.empty?\nif source_lines_size >= 1 && ((source_lines.last(2)).join.strip.empty? || last_line_not_empty)\n issue_for({source_lines_size - 1, 1}, last_line_not_empty ? MSG_FINAL_NEWLINE : MSG)\nend\n"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Layout/TrailingWhitespace","path":"Ameba/Rule/Layout/TrailingWhitespace.html","kind":"struct","full_name":"Ameba::Rule::Layout::TrailingWhitespace","name":"TrailingWhitespace","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/layout/trailing_whitespace.cr","line_number":11,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/layout/trailing_whitespace.cr#L11"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Trailing whitespace detected\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Layout","kind":"module","full_name":"Ameba::Rule::Layout","name":"Layout"},"doc":"A rule that disallows trailing whitespaces.\n\nYAML configuration example:\n\n```\nLayout/TrailingWhitespace:\n Enabled: true\n```\n","summary":"

    A rule that disallows trailing whitespaces.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows trailing whitespaces.\n\nYAML configuration example:\n\n```\nLayout/TrailingWhitespace:\n Enabled: true\n```\n","summary":"

    A rule that disallows trailing whitespaces.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/layout/trailing_whitespace.cr#L11","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source)-instance-method","html_id":"test(source)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"args_string":"(source)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/layout/trailing_whitespace.cr#L18","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"source.lines.each_with_index do |line, index|\n if line =~ (/\\s$/)\n else\n next\n end\n issue_for({index + 1, line.size}, MSG)\nend"}}],"macros":[],"types":[]}]},{"html_id":"ameba/Ameba/Rule/Lint","path":"Ameba/Rule/Lint.html","kind":"module","full_name":"Ameba::Rule::Lint","name":"Lint","abstract":false,"superclass":null,"ancestors":[],"locations":[{"filename":"src/ameba/rule/lint/bad_directive.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/bad_directive.cr#L1"},{"filename":"src/ameba/rule/lint/comparison_to_boolean.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/comparison_to_boolean.cr#L1"},{"filename":"src/ameba/rule/lint/debugger_statement.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/debugger_statement.cr#L1"},{"filename":"src/ameba/rule/lint/empty_ensure.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/empty_ensure.cr#L1"},{"filename":"src/ameba/rule/lint/empty_expression.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/empty_expression.cr#L1"},{"filename":"src/ameba/rule/lint/empty_loop.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/empty_loop.cr#L1"},{"filename":"src/ameba/rule/lint/hash_duplicated_key.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/hash_duplicated_key.cr#L1"},{"filename":"src/ameba/rule/lint/literal_in_condition.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/literal_in_condition.cr#L1"},{"filename":"src/ameba/rule/lint/literal_in_interpolation.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/literal_in_interpolation.cr#L1"},{"filename":"src/ameba/rule/lint/percent_array.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/percent_array.cr#L1"},{"filename":"src/ameba/rule/lint/rand_zero.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/rand_zero.cr#L1"},{"filename":"src/ameba/rule/lint/redundant_string_coercion.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/redundant_string_coercion.cr#L1"},{"filename":"src/ameba/rule/lint/redundant_with_index.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/redundant_with_index.cr#L1"},{"filename":"src/ameba/rule/lint/redundant_with_object.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/redundant_with_object.cr#L1"},{"filename":"src/ameba/rule/lint/shadowed_argument.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/shadowed_argument.cr#L1"},{"filename":"src/ameba/rule/lint/shadowed_exception.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/shadowed_exception.cr#L1"},{"filename":"src/ameba/rule/lint/shadowing_local_outer_var.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/shadowing_local_outer_var.cr#L1"},{"filename":"src/ameba/rule/lint/shared_var_in_fiber.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/shared_var_in_fiber.cr#L1"},{"filename":"src/ameba/rule/lint/syntax.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/syntax.cr#L1"},{"filename":"src/ameba/rule/lint/unneeded_disable_directive.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/unneeded_disable_directive.cr#L1"},{"filename":"src/ameba/rule/lint/unreachable_code.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/unreachable_code.cr#L1"},{"filename":"src/ameba/rule/lint/unused_argument.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/unused_argument.cr#L1"},{"filename":"src/ameba/rule/lint/useless_assign.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/useless_assign.cr#L1"},{"filename":"src/ameba/rule/lint/useless_condition_in_when.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/useless_condition_in_when.cr#L1"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule","kind":"module","full_name":"Ameba::Rule","name":"Rule"},"doc":null,"summary":null,"class_methods":[],"constructors":[],"instance_methods":[],"macros":[],"types":[{"html_id":"ameba/Ameba/Rule/Lint/BadDirective","path":"Ameba/Rule/Lint/BadDirective.html","kind":"struct","full_name":"Ameba::Rule::Lint::BadDirective","name":"BadDirective","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/lint/bad_directive.cr","line_number":21,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/bad_directive.cr#L21"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"ALL_GROUP_NAMES","name":"ALL_GROUP_NAMES","value":"Rule.rules.map(&.group_name).uniq!","doc":null,"summary":null},{"id":"ALL_RULE_NAMES","name":"ALL_RULE_NAMES","value":"Rule.rules.map(&.rule_name)","doc":null,"summary":null},{"id":"AVAILABLE_ACTIONS","name":"AVAILABLE_ACTIONS","value":"InlineComments::Action.names.map(&.downcase)","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Lint","kind":"module","full_name":"Ameba::Rule::Lint","name":"Lint"},"doc":"A rule that reports incorrect comment directives for Ameba.\n\nFor example, the user can mistakenly add a directive\nto disable a rule that even doesn't exist:\n\n```\n# ameba:disable BadRuleName\ndef foo\n :bar\nend\n```\n\nYAML configuration example:\n\n```\nLint/BadDirective:\n Enabled: true\n```\n","summary":"

    A rule that reports incorrect comment directives for Ameba.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that reports incorrect comment directives for Ameba.\n\nFor example, the user can mistakenly add a directive\nto disable a rule that even doesn't exist:\n\n```\n# ameba:disable BadRuleName\ndef foo\n :bar\nend\n```\n\nYAML configuration example:\n\n```\nLint/BadDirective:\n Enabled: true\n```\n","summary":"

    A rule that reports incorrect comment directives for Ameba.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/bad_directive.cr#L21","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source)-instance-method","html_id":"test(source)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"args_string":"(source)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/bad_directive.cr#L30","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"(Tokenizer.new(source)).run do |token|\n if token.type == (:COMMENT)\n else\n next\n end\n if directive = source.parse_inline_directive(token.value.to_s)\n else\n next\n end\n check_action(source, token, directive[:action])\n check_rules(source, token, directive[:rules])\nend"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Lint/ComparisonToBoolean","path":"Ameba/Rule/Lint/ComparisonToBoolean.html","kind":"struct","full_name":"Ameba::Rule::Lint::ComparisonToBoolean","name":"ComparisonToBoolean","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/lint/comparison_to_boolean.cr","line_number":23,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/comparison_to_boolean.cr#L23"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Comparison to a boolean is pointless\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Lint","kind":"module","full_name":"Ameba::Rule::Lint","name":"Lint"},"doc":"A rule that disallows comparison to booleans.\n\nFor example, these are considered invalid:\n\n```\nfoo == true\nbar != false\nfalse === baz\n```\n\nThis is because these expressions evaluate to `true` or `false`, so you\ncould get the same result by using either the variable directly,\nor negating the variable.\n\nYAML configuration example:\n\n```\nLint/ComparisonToBoolean:\n Enabled: true\n```\n","summary":"

    A rule that disallows comparison to booleans.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows comparison to booleans.\n\nFor example, these are considered invalid:\n\n```\nfoo == true\nbar != false\nfalse === baz\n```\n\nThis is because these expressions evaluate to `true` or `false`, so you\ncould get the same result by using either the variable directly,\nor negating the variable.\n\nYAML configuration example:\n\n```\nLint/ComparisonToBoolean:\n Enabled: true\n```\n","summary":"

    A rule that disallows comparison to booleans.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/comparison_to_boolean.cr#L23","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Bool","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled:Bool)-instance-method","html_id":"enabled=(enabled:Bool)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":"Bool"}],"args_string":"(enabled : Bool)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":"Bool"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node:Crystal::Call)-instance-method","html_id":"test(source,node:Crystal::Call)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Call"}],"args_string":"(source, node : Crystal::Call)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/comparison_to_boolean.cr#L31","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Call"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"comparison = ([\"==\", \"!=\", \"===\"] of ::String).includes?(node.name)\nto_boolean = node.args.first?.try do |__arg0|\n __arg0.is_a?(Crystal::BoolLiteral)\nend || node.obj.is_a?(Crystal::BoolLiteral)\nif comparison && to_boolean\nelse\n return\nend\nissue_for(node, MSG)\n"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Lint/DebuggerStatement","path":"Ameba/Rule/Lint/DebuggerStatement.html","kind":"struct","full_name":"Ameba::Rule::Lint::DebuggerStatement","name":"DebuggerStatement","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/lint/debugger_statement.cr","line_number":14,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/debugger_statement.cr#L14"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Possible forgotten debugger statement detected\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Lint","kind":"module","full_name":"Ameba::Rule::Lint","name":"Lint"},"doc":"A rule that disallows calls to debugger.\n\nThis is because we don't want debugger breakpoints accidentally being\ncommitted into our codebase.\n\nYAML configuration example:\n\n```\nLint/DebuggerStatement:\n Enabled: true\n```\n","summary":"

    A rule that disallows calls to debugger.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows calls to debugger.\n\nThis is because we don't want debugger breakpoints accidentally being\ncommitted into our codebase.\n\nYAML configuration example:\n\n```\nLint/DebuggerStatement:\n Enabled: true\n```\n","summary":"

    A rule that disallows calls to debugger.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/debugger_statement.cr#L14","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node:Crystal::Call)-instance-method","html_id":"test(source,node:Crystal::Call)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Call"}],"args_string":"(source, node : Crystal::Call)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/debugger_statement.cr#L21","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Call"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if ((node.name == \"debugger\") && node.args.empty?) && node.obj.nil?\nelse\n return\nend\nissue_for(node, MSG)\n"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Lint/EmptyEnsure","path":"Ameba/Rule/Lint/EmptyEnsure.html","kind":"struct","full_name":"Ameba::Rule::Lint::EmptyEnsure","name":"EmptyEnsure","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/lint/empty_ensure.cr","line_number":42,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/empty_ensure.cr#L42"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Empty `ensure` block detected\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Lint","kind":"module","full_name":"Ameba::Rule::Lint","name":"Lint"},"doc":"A rule that disallows empty ensure statement.\n\nFor example, this is considered invalid:\n\n```\ndef some_method\n do_some_stuff\nensure\nend\n\nbegin\n do_some_stuff\nensure\nend\n```\n\nAnd it should be written as this:\n\n\n```\ndef some_method\n do_some_stuff\nensure\n do_something_else\nend\n\nbegin\n do_some_stuff\nensure\n do_something_else\nend\n```\n\nYAML configuration example:\n\n```\nLint/EmptyEnsure\n Enabled: true\n```\n","summary":"

    A rule that disallows empty ensure statement.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows empty ensure statement.\n\nFor example, this is considered invalid:\n\n```\ndef some_method\n do_some_stuff\nensure\nend\n\nbegin\n do_some_stuff\nensure\nend\n```\n\nAnd it should be written as this:\n\n\n```\ndef some_method\n do_some_stuff\nensure\n do_something_else\nend\n\nbegin\n do_some_stuff\nensure\n do_something_else\nend\n```\n\nYAML configuration example:\n\n```\nLint/EmptyEnsure\n Enabled: true\n```\n","summary":"

    A rule that disallows empty ensure statement.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/empty_ensure.cr#L42","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node:Crystal::ExceptionHandler)-instance-method","html_id":"test(source,node:Crystal::ExceptionHandler)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ExceptionHandler"}],"args_string":"(source, node : Crystal::ExceptionHandler)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/empty_ensure.cr#L49","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ExceptionHandler"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"node_ensure = node.ensure\nif node_ensure.nil? || (!node_ensure.nop?)\n return\nend\nissue_for(node, MSG)\n"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Lint/EmptyExpression","path":"Ameba/Rule/Lint/EmptyExpression.html","kind":"struct","full_name":"Ameba::Rule::Lint::EmptyExpression","name":"EmptyExpression","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/Ameba/AST/Util","kind":"module","full_name":"Ameba::AST::Util","name":"Util"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/lint/empty_expression.cr","line_number":31,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/empty_expression.cr#L31"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Avoid empty expression %s\"","doc":null,"summary":null},{"id":"MSG_EXRS","name":"MSG_EXRS","value":"\"Avoid empty expressions\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/Ameba/AST/Util","kind":"module","full_name":"Ameba::AST::Util","name":"Util"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Lint","kind":"module","full_name":"Ameba::Rule::Lint","name":"Lint"},"doc":"A rule that disallows empty expressions.\n\nThis is considered invalid:\n\n```\nfoo = ()\n\nif ()\n bar\nend\n```\n\nAnd this is valid:\n\n```\nfoo = (some_expression)\n\nif (some_expression)\n bar\nend\n```\n\nYAML configuration example:\n\n```\nLint/EmptyExpression:\n Enabled: true\n```\n","summary":"

    A rule that disallows empty expressions.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows empty expressions.\n\nThis is considered invalid:\n\n```\nfoo = ()\n\nif ()\n bar\nend\n```\n\nAnd this is valid:\n\n```\nfoo = (some_expression)\n\nif (some_expression)\n bar\nend\n```\n\nYAML configuration example:\n\n```\nLint/EmptyExpression:\n Enabled: true\n```\n","summary":"

    A rule that disallows empty expressions.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/empty_expression.cr#L31","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Bool","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled:Bool)-instance-method","html_id":"enabled=(enabled:Bool)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":"Bool"}],"args_string":"(enabled : Bool)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":"Bool"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node:Crystal::NilLiteral)-instance-method","html_id":"test(source,node:Crystal::NilLiteral)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::NilLiteral"}],"args_string":"(source, node : Crystal::NilLiteral)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/empty_expression.cr#L42","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::NilLiteral"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"exp = (node_source(node, source.lines)).try(&.join)\nif exp.nil? || (exp == \"nil\")\n return\nend\nissue_for(node, MSG % exp)\n"}},{"id":"test(source,node:Crystal::Expressions)-instance-method","html_id":"test(source,node:Crystal::Expressions)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Expressions"}],"args_string":"(source, node : Crystal::Expressions)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/empty_expression.cr#L50","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Expressions"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (node.expressions.size == 1) && node.expressions.first.nop?\n issue_for(node, MSG_EXRS)\nend"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Lint/EmptyLoop","path":"Ameba/Rule/Lint/EmptyLoop.html","kind":"struct","full_name":"Ameba::Rule::Lint::EmptyLoop","name":"EmptyLoop","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/Ameba/AST/Util","kind":"module","full_name":"Ameba::AST::Util","name":"Util"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/lint/empty_loop.cr","line_number":40,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/empty_loop.cr#L40"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Empty loop detected\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/Ameba/AST/Util","kind":"module","full_name":"Ameba::AST::Util","name":"Util"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Lint","kind":"module","full_name":"Ameba::Rule::Lint","name":"Lint"},"doc":"A rule that disallows empty loops.\n\nThis is considered invalid:\n\n```\nwhile false\nend\n\nuntil 10\nend\n\nloop do\n # nothing here\nend\n```\n\nAnd this is valid:\n\n```\na = 1\nwhile a < 10\n a += 1\nend\n\nuntil socket_opened?\nend\n\nloop do\n do_something_here\nend\n```\n\nYAML configuration example:\n\n```\nLint/EmptyLoop:\n Enabled: true\n```","summary":"

    A rule that disallows empty loops.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows empty loops.\n\nThis is considered invalid:\n\n```\nwhile false\nend\n\nuntil 10\nend\n\nloop do\n # nothing here\nend\n```\n\nAnd this is valid:\n\n```\na = 1\nwhile a < 10\n a += 1\nend\n\nuntil socket_opened?\nend\n\nloop do\n do_something_here\nend\n```\n\nYAML configuration example:\n\n```\nLint/EmptyLoop:\n Enabled: true\n```","summary":"

    A rule that disallows empty loops.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/empty_loop.cr#L40","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node:Crystal::Call)-instance-method","html_id":"test(source,node:Crystal::Call)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Call"}],"args_string":"(source, node : Crystal::Call)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/empty_loop.cr#L49","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Call"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if loop?(node)\nelse\n return\nend\ncheck_node(source, node, node.block)\n"}},{"id":"test(source,node:Crystal::While)-instance-method","html_id":"test(source,node:Crystal::While)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::While"}],"args_string":"(source, node : Crystal::While)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/empty_loop.cr#L55","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::While"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if literal?(node.cond)\n check_node(source, node, node.body)\nend"}},{"id":"test(source,node:Crystal::Until)-instance-method","html_id":"test(source,node:Crystal::Until)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Until"}],"args_string":"(source, node : Crystal::Until)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/empty_loop.cr#L59","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Until"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if literal?(node.cond)\n check_node(source, node, node.body)\nend"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Lint/HashDuplicatedKey","path":"Ameba/Rule/Lint/HashDuplicatedKey.html","kind":"struct","full_name":"Ameba::Rule::Lint::HashDuplicatedKey","name":"HashDuplicatedKey","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/lint/hash_duplicated_key.cr","line_number":23,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/hash_duplicated_key.cr#L23"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Duplicated keys in hash literal: %s\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Lint","kind":"module","full_name":"Ameba::Rule::Lint","name":"Lint"},"doc":"A rule that disallows duplicated keys in hash literals.\n\nThis is considered invalid:\n\n```\nh = {\"foo\" => 1, \"bar\" => 2, \"foo\" => 3}\n```\n\nAnd it has to written as this instead:\n\n```\nh = {\"foo\" => 1, \"bar\" => 2}\n```\n\nYAML configuration example:\n\n```\nLint/HashDuplicatedKey:\n Enabled: true\n```\n","summary":"

    A rule that disallows duplicated keys in hash literals.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows duplicated keys in hash literals.\n\nThis is considered invalid:\n\n```\nh = {\"foo\" => 1, \"bar\" => 2, \"foo\" => 3}\n```\n\nAnd it has to written as this instead:\n\n```\nh = {\"foo\" => 1, \"bar\" => 2}\n```\n\nYAML configuration example:\n\n```\nLint/HashDuplicatedKey:\n Enabled: true\n```\n","summary":"

    A rule that disallows duplicated keys in hash literals.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/hash_duplicated_key.cr#L23","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node:Crystal::HashLiteral)-instance-method","html_id":"test(source,node:Crystal::HashLiteral)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::HashLiteral"}],"args_string":"(source, node : Crystal::HashLiteral)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/hash_duplicated_key.cr#L30","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::HashLiteral"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (keys = duplicated_keys(node.entries)).any?\nelse\n return\nend\nissue_for(node, MSG % (keys.join(\", \")))\n"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Lint/LiteralInCondition","path":"Ameba/Rule/Lint/LiteralInCondition.html","kind":"struct","full_name":"Ameba::Rule::Lint::LiteralInCondition","name":"LiteralInCondition","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/Ameba/AST/Util","kind":"module","full_name":"Ameba::AST::Util","name":"Util"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/lint/literal_in_condition.cr","line_number":23,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/literal_in_condition.cr#L23"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Literal value found in conditional\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/Ameba/AST/Util","kind":"module","full_name":"Ameba::AST::Util","name":"Util"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Lint","kind":"module","full_name":"Ameba::Rule::Lint","name":"Lint"},"doc":"A rule that disallows useless conditional statements that contain a literal\nin place of a variable or predicate function.\n\nThis is because a conditional construct with a literal predicate will\nalways result in the same behaviour at run time, meaning it can be\nreplaced with either the body of the construct, or deleted entirely.\n\nThis is considered invalid:\n```\nif \"something\"\n :ok\nend\n```\n\nYAML configuration example:\n\n```\nLint/LiteralInCondition:\n Enabled: true\n```\n","summary":"

    A rule that disallows useless conditional statements that contain a literal in place of a variable or predicate function.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows useless conditional statements that contain a literal\nin place of a variable or predicate function.\n\nThis is because a conditional construct with a literal predicate will\nalways result in the same behaviour at run time, meaning it can be\nreplaced with either the body of the construct, or deleted entirely.\n\nThis is considered invalid:\n```\nif \"something\"\n :ok\nend\n```\n\nYAML configuration example:\n\n```\nLint/LiteralInCondition:\n Enabled: true\n```\n","summary":"

    A rule that disallows useless conditional statements that contain a literal in place of a variable or predicate function.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/literal_in_condition.cr#L23","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"check_node(source,node)-instance-method","html_id":"check_node(source,node)-instance-method","name":"check_node","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"args_string":"(source, node)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/literal_in_condition.cr#L33","def":{"name":"check_node","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if literal?(node.cond)\nelse\n return\nend\nissue_for(node, MSG)\n"}},{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node:Crystal::If)-instance-method","html_id":"test(source,node:Crystal::If)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::If"}],"args_string":"(source, node : Crystal::If)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/literal_in_condition.cr#L38","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::If"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"check_node(source, node)"}},{"id":"test(source,node:Crystal::Unless)-instance-method","html_id":"test(source,node:Crystal::Unless)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Unless"}],"args_string":"(source, node : Crystal::Unless)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/literal_in_condition.cr#L42","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Unless"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"check_node(source, node)"}},{"id":"test(source,node:Crystal::Case)-instance-method","html_id":"test(source,node:Crystal::Case)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Case"}],"args_string":"(source, node : Crystal::Case)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/literal_in_condition.cr#L46","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Case"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"check_node(source, node)"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Lint/LiteralInInterpolation","path":"Ameba/Rule/Lint/LiteralInInterpolation.html","kind":"struct","full_name":"Ameba::Rule::Lint::LiteralInInterpolation","name":"LiteralInInterpolation","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/Ameba/AST/Util","kind":"module","full_name":"Ameba::AST::Util","name":"Util"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/lint/literal_in_interpolation.cr","line_number":19,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/literal_in_interpolation.cr#L19"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Literal value found in interpolation\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/Ameba/AST/Util","kind":"module","full_name":"Ameba::AST::Util","name":"Util"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Lint","kind":"module","full_name":"Ameba::Rule::Lint","name":"Lint"},"doc":"A rule that disallows useless string interpolations\nthat contain a literal value instead of a variable or function.\n\nFor example:\n\n```\n\"Hello, #{:Ary}\"\n\"There are #{4} cats\"\n```\n\nYAML configuration example:\n\n```\nLint/LiteralInInterpolation\n Enabled: true\n```\n","summary":"

    A rule that disallows useless string interpolations that contain a literal value instead of a variable or function.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows useless string interpolations\nthat contain a literal value instead of a variable or function.\n\nFor example:\n\n```\n\"Hello, #{:Ary}\"\n\"There are #{4} cats\"\n```\n\nYAML configuration example:\n\n```\nLint/LiteralInInterpolation\n Enabled: true\n```\n","summary":"

    A rule that disallows useless string interpolations that contain a literal value instead of a variable or function.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/literal_in_interpolation.cr#L19","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node:Crystal::StringInterpolation)-instance-method","html_id":"test(source,node:Crystal::StringInterpolation)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::StringInterpolation"}],"args_string":"(source, node : Crystal::StringInterpolation)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/literal_in_interpolation.cr#L28","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::StringInterpolation"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"node.expressions.select do |e|\n (!e.is_a?(Crystal::StringLiteral)) && (literal?(e))\nend.each do |n|\n issue_for(n, MSG)\nend"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Lint/PercentArrays","path":"Ameba/Rule/Lint/PercentArrays.html","kind":"struct","full_name":"Ameba::Rule::Lint::PercentArrays","name":"PercentArrays","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/lint/percent_array.cr","line_number":27,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/percent_array.cr#L27"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Symbols `%s` may be unwanted in %s array literals\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Lint","kind":"module","full_name":"Ameba::Rule::Lint","name":"Lint"},"doc":"A rule that disallows some unwanted symbols in percent array literals.\n\nFor example, this is usually written by mistake:\n\n```\n%i(:one, :two)\n%w(\"one\", \"two\")\n```\n\nAnd the expected example is:\n\n```\n%i(one two)\n%w(one two)\n```\n\nYAML configuration example:\n\n```\nLint/PercentArrays:\n Enabled: true\n StringArrayUnwantedSymbols: ',\"'\n SymbolArrayUnwantedSymbols: ',:'\n```\n","summary":"

    A rule that disallows some unwanted symbols in percent array literals.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows some unwanted symbols in percent array literals.\n\nFor example, this is usually written by mistake:\n\n```\n%i(:one, :two)\n%w(\"one\", \"two\")\n```\n\nAnd the expected example is:\n\n```\n%i(one two)\n%w(one two)\n```\n\nYAML configuration example:\n\n```\nLint/PercentArrays:\n Enabled: true\n StringArrayUnwantedSymbols: ',\"'\n SymbolArrayUnwantedSymbols: ',:'\n```\n","summary":"

    A rule that disallows some unwanted symbols in percent array literals.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/percent_array.cr#L27","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"string_array_unwanted_symbols:String-instance-method","html_id":"string_array_unwanted_symbols:String-instance-method","name":"string_array_unwanted_symbols","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"string_array_unwanted_symbols","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@string_array_unwanted_symbols"}},{"id":"string_array_unwanted_symbols=(string_array_unwanted_symbols:String)-instance-method","html_id":"string_array_unwanted_symbols=(string_array_unwanted_symbols:String)-instance-method","name":"string_array_unwanted_symbols=","doc":null,"summary":null,"abstract":false,"args":[{"name":"string_array_unwanted_symbols","doc":null,"default_value":"","external_name":"string_array_unwanted_symbols","restriction":"String"}],"args_string":"(string_array_unwanted_symbols : String)","source_link":null,"def":{"name":"string_array_unwanted_symbols=","args":[{"name":"string_array_unwanted_symbols","doc":null,"default_value":"","external_name":"string_array_unwanted_symbols","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@string_array_unwanted_symbols = string_array_unwanted_symbols"}},{"id":"symbol_array_unwanted_symbols:String-instance-method","html_id":"symbol_array_unwanted_symbols:String-instance-method","name":"symbol_array_unwanted_symbols","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"symbol_array_unwanted_symbols","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@symbol_array_unwanted_symbols"}},{"id":"symbol_array_unwanted_symbols=(symbol_array_unwanted_symbols:String)-instance-method","html_id":"symbol_array_unwanted_symbols=(symbol_array_unwanted_symbols:String)-instance-method","name":"symbol_array_unwanted_symbols=","doc":null,"summary":null,"abstract":false,"args":[{"name":"symbol_array_unwanted_symbols","doc":null,"default_value":"","external_name":"symbol_array_unwanted_symbols","restriction":"String"}],"args_string":"(symbol_array_unwanted_symbols : String)","source_link":null,"def":{"name":"symbol_array_unwanted_symbols=","args":[{"name":"symbol_array_unwanted_symbols","doc":null,"default_value":"","external_name":"symbol_array_unwanted_symbols","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@symbol_array_unwanted_symbols = symbol_array_unwanted_symbols"}},{"id":"test(source)-instance-method","html_id":"test(source)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"args_string":"(source)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/percent_array.cr#L36","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"issue = start_token = nil\n(Tokenizer.new(source)).run do |token|\n case token.type\n when :STRING_ARRAY_START, :SYMBOL_ARRAY_START\n start_token = token.dup\n when :STRING\n if start_token && issue.nil?\n issue = array_entry_invalid?(token.value, start_token.not_nil!.raw)\n end\n when :STRING_ARRAY_END, :SYMBOL_ARRAY_END\n if issue\n issue_for(start_token.not_nil!, issue.not_nil!)\n end\n issue = start_token = nil\n else\n end\nend\n"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Lint/RandZero","path":"Ameba/Rule/Lint/RandZero.html","kind":"struct","full_name":"Ameba::Rule::Lint::RandZero","name":"RandZero","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/lint/rand_zero.cr","line_number":26,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/rand_zero.cr#L26"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"%s always returns 0\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Lint","kind":"module","full_name":"Ameba::Rule::Lint","name":"Lint"},"doc":"A rule that disallows `rand(0)` and `rand(1)` calls.\nSuch calls always return `0`.\n\nFor example:\n\n```\nrand(1)\n```\n\nShould be written as:\n\n```\nrand\n# or\nrand(2)\n```\n\nYAML configuration example:\n\n```\nLint/RandZero:\n Enabled: true\n```\n","summary":"

    A rule that disallows rand(0) and rand(1) calls.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows `rand(0)` and `rand(1)` calls.\nSuch calls always return `0`.\n\nFor example:\n\n```\nrand(1)\n```\n\nShould be written as:\n\n```\nrand\n# or\nrand(2)\n```\n\nYAML configuration example:\n\n```\nLint/RandZero:\n Enabled: true\n```\n","summary":"

    A rule that disallows rand(0) and rand(1) calls.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/rand_zero.cr#L26","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node:Crystal::Call)-instance-method","html_id":"test(source,node:Crystal::Call)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Call"}],"args_string":"(source, node : Crystal::Call)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/rand_zero.cr#L33","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Call"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (((((node.name == \"rand\") && (node.args.size == 1)) && (arg = node.args.first)) && (arg.is_a?(Crystal::NumberLiteral))) && (value = arg.value)) && ((value == \"0\") || (value == \"1\"))\nelse\n return\nend\nissue_for(node, MSG % node)\n"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Lint/RedundantStringCoercion","path":"Ameba/Rule/Lint/RedundantStringCoercion.html","kind":"struct","full_name":"Ameba::Rule::Lint::RedundantStringCoercion","name":"RedundantStringCoercion","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/Ameba/AST/Util","kind":"module","full_name":"Ameba::AST::Util","name":"Util"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/lint/redundant_string_coercion.cr","line_number":24,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/redundant_string_coercion.cr#L24"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Redundant use of `Object#to_s` in interpolation\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/Ameba/AST/Util","kind":"module","full_name":"Ameba::AST::Util","name":"Util"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Lint","kind":"module","full_name":"Ameba::Rule::Lint","name":"Lint"},"doc":"A rule that disallows string conversion in string interpolation,\nwhich is redundant.\n\nFor example, this is considered invalid:\n\n```\n\"Hello, #{name.to_s}\"\n```\n\nAnd this is valid:\n\n```\n\"Hello, #{name}\"\n```\n\nYAML configuration example:\n\n```\nLint/RedundantStringCoersion\n Enabled: true\n```\n","summary":"

    A rule that disallows string conversion in string interpolation, which is redundant.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows string conversion in string interpolation,\nwhich is redundant.\n\nFor example, this is considered invalid:\n\n```\n\"Hello, #{name.to_s}\"\n```\n\nAnd this is valid:\n\n```\n\"Hello, #{name}\"\n```\n\nYAML configuration example:\n\n```\nLint/RedundantStringCoersion\n Enabled: true\n```\n","summary":"

    A rule that disallows string conversion in string interpolation, which is redundant.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/redundant_string_coercion.cr#L24","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node:Crystal::StringInterpolation)-instance-method","html_id":"test(source,node:Crystal::StringInterpolation)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::StringInterpolation"}],"args_string":"(source, node : Crystal::StringInterpolation)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/redundant_string_coercion.cr#L33","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::StringInterpolation"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"(string_coercion_nodes(node)).each do |n|\n issue_for(n.name_location, n.end_location, MSG)\nend"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Lint/RedundantWithIndex","path":"Ameba/Rule/Lint/RedundantWithIndex.html","kind":"struct","full_name":"Ameba::Rule::Lint::RedundantWithIndex","name":"RedundantWithIndex","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/lint/redundant_with_index.cr","line_number":30,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/redundant_with_index.cr#L30"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Lint","kind":"module","full_name":"Ameba::Rule::Lint","name":"Lint"},"doc":"A rule that disallows redundant `with_index` calls.\n\nFor example, this is considered invalid:\n```\ncollection.each.with_index do |e|\n # ...\nend\n\ncollection.each_with_index do |e, _|\n # ...\nend\n```\n\nand it should be written as follows:\n\n```\ncollection.each do |e|\n # ...\nend\n```\n\nYAML configuration example:\n\n```\nLint/RedundantWithIndex:\n Enabled: true\n```\n","summary":"

    A rule that disallows redundant with_index calls.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows redundant `with_index` calls.\n\nFor example, this is considered invalid:\n```\ncollection.each.with_index do |e|\n # ...\nend\n\ncollection.each_with_index do |e, _|\n # ...\nend\n```\n\nand it should be written as follows:\n\n```\ncollection.each do |e|\n # ...\nend\n```\n\nYAML configuration example:\n\n```\nLint/RedundantWithIndex:\n Enabled: true\n```\n","summary":"

    A rule that disallows redundant with_index calls.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/redundant_with_index.cr#L30","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node:Crystal::Call)-instance-method","html_id":"test(source,node:Crystal::Call)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Call"}],"args_string":"(source, node : Crystal::Call)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/redundant_with_index.cr#L35","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Call"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"args, block = node.args, node.block\nif (args.size > 1 || block.nil?) || (with_index_arg?(block.not_nil!))\n return\nend\ncase node.name\nwhen \"with_index\"\n report(source, node, \"Remove redundant with_index\")\nwhen \"each_with_index\"\n report(source, node, \"Use each instead of each_with_index\")\nelse\nend\n"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Lint/RedundantWithObject","path":"Ameba/Rule/Lint/RedundantWithObject.html","kind":"struct","full_name":"Ameba::Rule::Lint::RedundantWithObject","name":"RedundantWithObject","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/lint/redundant_with_object.cr","line_number":31,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/redundant_with_object.cr#L31"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Lint","kind":"module","full_name":"Ameba::Rule::Lint","name":"Lint"},"doc":"A rule that disallows redundant `each_with_object` calls.\n\nFor example, this is considered invalid:\n\n```\ncollection.each_with_object(0) do |e|\n # ...\nend\n\ncollection.each_with_object(0) do |e, _|\n # ...\nend\n```\n\nand it should be written as follows:\n\n```\ncollection.each do |e|\n # ...\nend\n```\n\nYAML configuration example:\n\n```\nLint/RedundantWithObject:\n Enabled: true\n```\n","summary":"

    A rule that disallows redundant each_with_object calls.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows redundant `each_with_object` calls.\n\nFor example, this is considered invalid:\n\n```\ncollection.each_with_object(0) do |e|\n # ...\nend\n\ncollection.each_with_object(0) do |e, _|\n # ...\nend\n```\n\nand it should be written as follows:\n\n```\ncollection.each do |e|\n # ...\nend\n```\n\nYAML configuration example:\n\n```\nLint/RedundantWithObject:\n Enabled: true\n```\n","summary":"

    A rule that disallows redundant each_with_object calls.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/redundant_with_object.cr#L31","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node:Crystal::Call)-instance-method","html_id":"test(source,node:Crystal::Call)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Call"}],"args_string":"(source, node : Crystal::Call)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/redundant_with_object.cr#L36","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Call"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (((node.name != \"each_with_object\") || (node.args.size != 1)) || node.block.nil?) || (with_index_arg?(node.block.not_nil!))\n return\nend\nissue_for(node.name_location, node.name_end_location, \"Use each instead of each_with_object\")\n"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Lint/ShadowedArgument","path":"Ameba/Rule/Lint/ShadowedArgument.html","kind":"struct","full_name":"Ameba::Rule::Lint::ShadowedArgument","name":"ShadowedArgument","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/lint/shadowed_argument.cr","line_number":39,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/shadowed_argument.cr#L39"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Argument `%s` is assigned before it is used\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Lint","kind":"module","full_name":"Ameba::Rule::Lint","name":"Lint"},"doc":"A rule that disallows shadowed arguments.\n\nFor example, this is considered invalid:\n\n```\ndo_something do |foo|\n foo = 1 # shadows block argument\n foo\nend\n\ndef do_something(foo)\n foo = 1 # shadows method argument\n foo\nend\n```\n\nand it should be written as follows:\n\n```\ndo_something do |foo|\n foo = foo + 42\n foo\nend\n\ndef do_something(foo)\n foo = foo + 42\n foo\nend\n```\n\nYAML configuration example:\n\n```\nLint/ShadowedArgument:\n Enabled: true\n```\n","summary":"

    A rule that disallows shadowed arguments.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows shadowed arguments.\n\nFor example, this is considered invalid:\n\n```\ndo_something do |foo|\n foo = 1 # shadows block argument\n foo\nend\n\ndef do_something(foo)\n foo = 1 # shadows method argument\n foo\nend\n```\n\nand it should be written as follows:\n\n```\ndo_something do |foo|\n foo = foo + 42\n foo\nend\n\ndef do_something(foo)\n foo = foo + 42\n foo\nend\n```\n\nYAML configuration example:\n\n```\nLint/ShadowedArgument:\n Enabled: true\n```\n","summary":"

    A rule that disallows shadowed arguments.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/shadowed_argument.cr#L39","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node,scope:AST::Scope)-instance-method","html_id":"test(source,node,scope:AST::Scope)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""},{"name":"scope","doc":null,"default_value":"","external_name":"scope","restriction":"AST::Scope"}],"args_string":"(source, node, scope : AST::Scope)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/shadowed_argument.cr#L50","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""},{"name":"scope","doc":null,"default_value":"","external_name":"scope","restriction":"AST::Scope"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"scope.arguments.each do |arg|\n if assign = arg.variable.assign_before_reference\n else\n next\n end\n issue_for(assign, MSG % arg.name)\nend"}},{"id":"test(source)-instance-method","html_id":"test(source)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"args_string":"(source)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/shadowed_argument.cr#L46","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"AST::ScopeVisitor.new(self, source)"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Lint/ShadowedException","path":"Ameba/Rule/Lint/ShadowedException.html","kind":"struct","full_name":"Ameba::Rule::Lint::ShadowedException","name":"ShadowedException","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/lint/shadowed_exception.cr","line_number":37,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/shadowed_exception.cr#L37"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Exception handler has shadowed exceptions: %s\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Lint","kind":"module","full_name":"Ameba::Rule::Lint","name":"Lint"},"doc":"A rule that disallows a rescued exception that get shadowed by a\nless specific exception being rescued before a more specific\nexception is rescued.\n\nFor example, this is invalid:\n\n```\nbegin\n do_something\nrescue Exception\n handle_exception\nrescue ArgumentError\n handle_argument_error_exception\nend\n```\n\nAnd it has to be written as follows:\n\n```\nbegin\n do_something\nrescue ArgumentError\n handle_argument_error_exception\nrescue Exception\n handle_exception\nend\n```\n\nYAML configuration example:\n\n```\nLint/ShadowedException:\n Enabled: true\n```\n","summary":"

    A rule that disallows a rescued exception that get shadowed by a less specific exception being rescued before a more specific exception is rescued.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows a rescued exception that get shadowed by a\nless specific exception being rescued before a more specific\nexception is rescued.\n\nFor example, this is invalid:\n\n```\nbegin\n do_something\nrescue Exception\n handle_exception\nrescue ArgumentError\n handle_argument_error_exception\nend\n```\n\nAnd it has to be written as follows:\n\n```\nbegin\n do_something\nrescue ArgumentError\n handle_argument_error_exception\nrescue Exception\n handle_exception\nend\n```\n\nYAML configuration example:\n\n```\nLint/ShadowedException:\n Enabled: true\n```\n","summary":"

    A rule that disallows a rescued exception that get shadowed by a less specific exception being rescued before a more specific exception is rescued.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/shadowed_exception.cr#L37","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node:Crystal::ExceptionHandler)-instance-method","html_id":"test(source,node:Crystal::ExceptionHandler)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ExceptionHandler"}],"args_string":"(source, node : Crystal::ExceptionHandler)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/shadowed_exception.cr#L44","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ExceptionHandler"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if excs = node.rescues\nelse\n return\nend\nif (excs = shadowed(excs.map(&.types))).any?\n issue_for(node, MSG % (excs.join(\", \")))\nend\n"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Lint/ShadowingOuterLocalVar","path":"Ameba/Rule/Lint/ShadowingOuterLocalVar.html","kind":"struct","full_name":"Ameba::Rule::Lint::ShadowingOuterLocalVar","name":"ShadowingOuterLocalVar","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/lint/shadowing_local_outer_var.cr","line_number":34,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/shadowing_local_outer_var.cr#L34"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Shadowing outer local variable `%s`\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Lint","kind":"module","full_name":"Ameba::Rule::Lint","name":"Lint"},"doc":"A rule that disallows the usage of the same name as outer local variables\nfor block or proc arguments.\n\nFor example, this is considered incorrect:\n\n```\ndef some_method\n foo = 1\n\n 3.times do |foo| # shadowing outer `foo`\n end\nend\n```\n\nand should be written as:\n\n```\ndef some_method\n foo = 1\n\n 3.times do |bar|\n end\nend\n```\n\nYAML configuration example:\n\n```\nLint/ShadowingOuterLocalVar:\n Enabled: true\n```\n","summary":"

    A rule that disallows the usage of the same name as outer local variables for block or proc arguments.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows the usage of the same name as outer local variables\nfor block or proc arguments.\n\nFor example, this is considered incorrect:\n\n```\ndef some_method\n foo = 1\n\n 3.times do |foo| # shadowing outer `foo`\n end\nend\n```\n\nand should be written as:\n\n```\ndef some_method\n foo = 1\n\n 3.times do |bar|\n end\nend\n```\n\nYAML configuration example:\n\n```\nLint/ShadowingOuterLocalVar:\n Enabled: true\n```\n","summary":"

    A rule that disallows the usage of the same name as outer local variables for block or proc arguments.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/shadowing_local_outer_var.cr#L34","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node:Crystal::ProcLiteral,scope:AST::Scope)-instance-method","html_id":"test(source,node:Crystal::ProcLiteral,scope:AST::Scope)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ProcLiteral"},{"name":"scope","doc":null,"default_value":"","external_name":"scope","restriction":"AST::Scope"}],"args_string":"(source, node : Crystal::ProcLiteral, scope : AST::Scope)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/shadowing_local_outer_var.cr#L46","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ProcLiteral"},{"name":"scope","doc":null,"default_value":"","external_name":"scope","restriction":"AST::Scope"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"find_shadowing(source, scope)"}},{"id":"test(source,node:Crystal::Block,scope:AST::Scope)-instance-method","html_id":"test(source,node:Crystal::Block,scope:AST::Scope)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Block"},{"name":"scope","doc":null,"default_value":"","external_name":"scope","restriction":"AST::Scope"}],"args_string":"(source, node : Crystal::Block, scope : AST::Scope)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/shadowing_local_outer_var.cr#L50","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Block"},{"name":"scope","doc":null,"default_value":"","external_name":"scope","restriction":"AST::Scope"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"find_shadowing(source, scope)"}},{"id":"test(source)-instance-method","html_id":"test(source)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"args_string":"(source)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/shadowing_local_outer_var.cr#L42","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"AST::ScopeVisitor.new(self, source)"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Lint/SharedVarInFiber","path":"Ameba/Rule/Lint/SharedVarInFiber.html","kind":"struct","full_name":"Ameba::Rule::Lint::SharedVarInFiber","name":"SharedVarInFiber","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/lint/shared_var_in_fiber.cr","line_number":53,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/shared_var_in_fiber.cr#L53"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Shared variable `%s` is used in fiber\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Lint","kind":"module","full_name":"Ameba::Rule::Lint","name":"Lint"},"doc":"A rule that disallows using shared variables in fibers,\nwhich are mutated during iterations.\n\nIn most cases it leads to unexpected behaviour and is undesired.\n\nFor example, having this example:\n\n```\nn = 0\nchannel = Channel(Int32).new\n\nwhile n < 3\n n = n + 1\n spawn { channel.send n }\nend\n\n3.times { puts channel.receive } # => # 3, 3, 3\n```\n\nThe problem is there is only one shared between fibers variable `n`\nand when `channel.receive` is executed its value is `3`.\n\nTo solve this, the code above needs to be rewritten to the following:\n\n```\nn = 0\nchannel = Channel(Int32).new\n\nwhile n < 3\n n = n + 1\n m = n\n spawn do { channel.send m }\nend\n\n3.times { puts channel.receive } # => # 1, 2, 3\n```\n\nThis rule is able to find the shared variables between fibers, which are mutated\nduring iterations. So it reports the issue on the first sample and passes on\nthe second one.\n\nThere are also other technics to solve the problem above which are\n[officially documented](https://crystal-lang.org/reference/guides/concurrency.html)\n\nYAML configuration example:\n\n```\nLint/SharedVarInFiber:\n Enabled: true\n```\n","summary":"

    A rule that disallows using shared variables in fibers, which are mutated during iterations.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows using shared variables in fibers,\nwhich are mutated during iterations.\n\nIn most cases it leads to unexpected behaviour and is undesired.\n\nFor example, having this example:\n\n```\nn = 0\nchannel = Channel(Int32).new\n\nwhile n < 3\n n = n + 1\n spawn { channel.send n }\nend\n\n3.times { puts channel.receive } # => # 3, 3, 3\n```\n\nThe problem is there is only one shared between fibers variable `n`\nand when `channel.receive` is executed its value is `3`.\n\nTo solve this, the code above needs to be rewritten to the following:\n\n```\nn = 0\nchannel = Channel(Int32).new\n\nwhile n < 3\n n = n + 1\n m = n\n spawn do { channel.send m }\nend\n\n3.times { puts channel.receive } # => # 1, 2, 3\n```\n\nThis rule is able to find the shared variables between fibers, which are mutated\nduring iterations. So it reports the issue on the first sample and passes on\nthe second one.\n\nThere are also other technics to solve the problem above which are\n[officially documented](https://crystal-lang.org/reference/guides/concurrency.html)\n\nYAML configuration example:\n\n```\nLint/SharedVarInFiber:\n Enabled: true\n```\n","summary":"

    A rule that disallows using shared variables in fibers, which are mutated during iterations.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/shared_var_in_fiber.cr#L53","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node,scope:AST::Scope)-instance-method","html_id":"test(source,node,scope:AST::Scope)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""},{"name":"scope","doc":null,"default_value":"","external_name":"scope","restriction":"AST::Scope"}],"args_string":"(source, node, scope : AST::Scope)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/shared_var_in_fiber.cr#L64","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""},{"name":"scope","doc":null,"default_value":"","external_name":"scope","restriction":"AST::Scope"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if scope.spawn_block?\nelse\n return\nend\nscope.references.each do |ref|\n if ( variable = scope.find_variable(ref.name)).nil?\n next\n end\n if (variable.scope == scope) || (!(mutated_in_loop?(variable)))\n next\n end\n issue_for(ref.node, MSG % variable.name)\nend\n"}},{"id":"test(source)-instance-method","html_id":"test(source)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"args_string":"(source)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/shared_var_in_fiber.cr#L60","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"AST::ScopeVisitor.new(self, source)"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Lint/Syntax","path":"Ameba/Rule/Lint/Syntax.html","kind":"struct","full_name":"Ameba::Rule::Lint::Syntax","name":"Syntax","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/lint/syntax.cr","line_number":22,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/syntax.cr#L22"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Lint","kind":"module","full_name":"Ameba::Rule::Lint","name":"Lint"},"doc":"A rule that reports invalid Crystal syntax.\n\nFor example, this syntax is invalid:\n\n```\ndef hello\n do_something\nrescue Exception => e\nend\n```\n\nAnd should be properly written:\n\n```\ndef hello\n do_something\nrescue e : Exception\nend\n```\n","summary":"

    A rule that reports invalid Crystal syntax.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that reports invalid Crystal syntax.\n\nFor example, this syntax is invalid:\n\n```\ndef hello\n do_something\nrescue Exception => e\nend\n```\n\nAnd should be properly written:\n\n```\ndef hello\n do_something\nrescue e : Exception\nend\n```\n","summary":"

    A rule that reports invalid Crystal syntax.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/syntax.cr#L22","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Ameba::Severity","visibility":"Public","body":"@severity"}},{"id":"severity=(severity:Ameba::Severity)-instance-method","html_id":"severity=(severity:Ameba::Severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":"Ameba::Severity"}],"args_string":"(severity : Ameba::Severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":"Ameba::Severity"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source)-instance-method","html_id":"test(source)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"args_string":"(source)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/syntax.cr#L28","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"begin\n source.ast\nrescue e : Crystal::SyntaxException\n issue_for({e.line_number, e.column_number}, e.message.to_s)\nend"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Lint/UnneededDisableDirective","path":"Ameba/Rule/Lint/UnneededDisableDirective.html","kind":"struct","full_name":"Ameba::Rule::Lint::UnneededDisableDirective","name":"UnneededDisableDirective","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/lint/unneeded_disable_directive.cr","line_number":28,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/unneeded_disable_directive.cr#L28"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Unnecessary disabling of %s\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Lint","kind":"module","full_name":"Ameba::Rule::Lint","name":"Lint"},"doc":"A rule that reports unneeded disable directives.\nFor example, this is considered invalid:\n\n```\n# ameba:disable Style/PredicateName\ndef comment?\n do_something\nend\n```\n\nas the predicate name is correct and the comment directive does not\nhave any effect, the snippet should be written as the following:\n\n```\ndef comment?\n do_something\nend\n```\n\nYAML configuration example:\n\n```\nLint/UnneededDisableDirective\n Enabled: true\n```\n","summary":"

    A rule that reports unneeded disable directives.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that reports unneeded disable directives.\nFor example, this is considered invalid:\n\n```\n# ameba:disable Style/PredicateName\ndef comment?\n do_something\nend\n```\n\nas the predicate name is correct and the comment directive does not\nhave any effect, the snippet should be written as the following:\n\n```\ndef comment?\n do_something\nend\n```\n\nYAML configuration example:\n\n```\nLint/UnneededDisableDirective\n Enabled: true\n```\n","summary":"

    A rule that reports unneeded disable directives.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/unneeded_disable_directive.cr#L28","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source)-instance-method","html_id":"test(source)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"args_string":"(source)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/unneeded_disable_directive.cr#L35","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"(Tokenizer.new(source)).run do |token|\n if token.type == (:COMMENT)\n else\n next\n end\n if directive = source.parse_inline_directive(token.value.to_s)\n else\n next\n end\n if names = unneeded_disables(source, directive, token.location)\n else\n next\n end\n if names.any?\n else\n next\n end\n issue_for(token, MSG % (names.join(\", \")))\nend"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Lint/UnreachableCode","path":"Ameba/Rule/Lint/UnreachableCode.html","kind":"struct","full_name":"Ameba::Rule::Lint::UnreachableCode","name":"UnreachableCode","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/Ameba/AST/Util","kind":"module","full_name":"Ameba::AST::Util","name":"Util"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/lint/unreachable_code.cr","line_number":45,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/unreachable_code.cr#L45"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Unreachable code detected\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/Ameba/AST/Util","kind":"module","full_name":"Ameba::AST::Util","name":"Util"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Lint","kind":"module","full_name":"Ameba::Rule::Lint","name":"Lint"},"doc":"A rule that reports unreachable code.\n\nFor example, this is considered invalid:\n\n```\ndef method(a)\n return 42\n a + 1\nend\n```\n\n```\na = 1\nloop do\n break\n a += 1\nend\n```\n\nAnd has to be written as the following:\n\n```\ndef method(a)\n return 42 if a == 0\n a + 1\nend\n```\n\n```\na = 1\nloop do\n break a > 3\n a += 1\nend\n```\n\nYAML configuration example:\n\n```\nLint/UnreachableCode:\n Enabled: true\n```\n","summary":"

    A rule that reports unreachable code.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that reports unreachable code.\n\nFor example, this is considered invalid:\n\n```\ndef method(a)\n return 42\n a + 1\nend\n```\n\n```\na = 1\nloop do\n break\n a += 1\nend\n```\n\nAnd has to be written as the following:\n\n```\ndef method(a)\n return 42 if a == 0\n a + 1\nend\n```\n\n```\na = 1\nloop do\n break a > 3\n a += 1\nend\n```\n\nYAML configuration example:\n\n```\nLint/UnreachableCode:\n Enabled: true\n```\n","summary":"

    A rule that reports unreachable code.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/unreachable_code.cr#L45","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node,flow_expression:AST::FlowExpression)-instance-method","html_id":"test(source,node,flow_expression:AST::FlowExpression)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""},{"name":"flow_expression","doc":null,"default_value":"","external_name":"flow_expression","restriction":"AST::FlowExpression"}],"args_string":"(source, node, flow_expression : AST::FlowExpression)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/unreachable_code.cr#L58","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""},{"name":"flow_expression","doc":null,"default_value":"","external_name":"flow_expression","restriction":"AST::FlowExpression"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if unreachable_node = flow_expression.unreachable_nodes.first?\n issue_for(unreachable_node, MSG)\nend"}},{"id":"test(source)-instance-method","html_id":"test(source)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"args_string":"(source)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/unreachable_code.cr#L54","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"AST::FlowExpressionVisitor.new(self, source)"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Lint/UnusedArgument","path":"Ameba/Rule/Lint/UnusedArgument.html","kind":"struct","full_name":"Ameba::Rule::Lint::UnusedArgument","name":"UnusedArgument","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/lint/unused_argument.cr","line_number":28,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/unused_argument.cr#L28"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Unused argument `%s`. If it's necessary, use `%s` as an argument name to indicate that it won't be used.\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Lint","kind":"module","full_name":"Ameba::Rule::Lint","name":"Lint"},"doc":"A rule that reports unused arguments.\nFor example, this is considered invalid:\n\n```\ndef method(a, b, c)\n a + b\nend\n```\nand should be written as:\n\n```\ndef method(a, b)\n a + b\nend\n```\n\nYAML configuration example:\n\n```\nLint/UnusedArgument:\n Enabled: true\n IgnoreDefs: true\n IgnoreBlocks: false\n IgnoreProcs: false\n```\n","summary":"

    A rule that reports unused arguments.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that reports unused arguments.\nFor example, this is considered invalid:\n\n```\ndef method(a, b, c)\n a + b\nend\n```\nand should be written as:\n\n```\ndef method(a, b)\n a + b\nend\n```\n\nYAML configuration example:\n\n```\nLint/UnusedArgument:\n Enabled: true\n IgnoreDefs: true\n IgnoreBlocks: false\n IgnoreProcs: false\n```\n","summary":"

    A rule that reports unused arguments.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/unused_argument.cr#L28","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"ignore_blocks:Bool-instance-method","html_id":"ignore_blocks:Bool-instance-method","name":"ignore_blocks","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"ignore_blocks","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Bool","visibility":"Public","body":"@ignore_blocks"}},{"id":"ignore_blocks=(ignore_blocks:Bool)-instance-method","html_id":"ignore_blocks=(ignore_blocks:Bool)-instance-method","name":"ignore_blocks=","doc":null,"summary":null,"abstract":false,"args":[{"name":"ignore_blocks","doc":null,"default_value":"","external_name":"ignore_blocks","restriction":"Bool"}],"args_string":"(ignore_blocks : Bool)","source_link":null,"def":{"name":"ignore_blocks=","args":[{"name":"ignore_blocks","doc":null,"default_value":"","external_name":"ignore_blocks","restriction":"Bool"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@ignore_blocks = ignore_blocks"}},{"id":"ignore_defs:Bool-instance-method","html_id":"ignore_defs:Bool-instance-method","name":"ignore_defs","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"ignore_defs","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Bool","visibility":"Public","body":"@ignore_defs"}},{"id":"ignore_defs=(ignore_defs:Bool)-instance-method","html_id":"ignore_defs=(ignore_defs:Bool)-instance-method","name":"ignore_defs=","doc":null,"summary":null,"abstract":false,"args":[{"name":"ignore_defs","doc":null,"default_value":"","external_name":"ignore_defs","restriction":"Bool"}],"args_string":"(ignore_defs : Bool)","source_link":null,"def":{"name":"ignore_defs=","args":[{"name":"ignore_defs","doc":null,"default_value":"","external_name":"ignore_defs","restriction":"Bool"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@ignore_defs = ignore_defs"}},{"id":"ignore_procs:Bool-instance-method","html_id":"ignore_procs:Bool-instance-method","name":"ignore_procs","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"ignore_procs","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Bool","visibility":"Public","body":"@ignore_procs"}},{"id":"ignore_procs=(ignore_procs:Bool)-instance-method","html_id":"ignore_procs=(ignore_procs:Bool)-instance-method","name":"ignore_procs=","doc":null,"summary":null,"abstract":false,"args":[{"name":"ignore_procs","doc":null,"default_value":"","external_name":"ignore_procs","restriction":"Bool"}],"args_string":"(ignore_procs : Bool)","source_link":null,"def":{"name":"ignore_procs=","args":[{"name":"ignore_procs","doc":null,"default_value":"","external_name":"ignore_procs","restriction":"Bool"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@ignore_procs = ignore_procs"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node:Crystal::ProcLiteral,scope:AST::Scope)-instance-method","html_id":"test(source,node:Crystal::ProcLiteral,scope:AST::Scope)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ProcLiteral"},{"name":"scope","doc":null,"default_value":"","external_name":"scope","restriction":"AST::Scope"}],"args_string":"(source, node : Crystal::ProcLiteral, scope : AST::Scope)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/unused_argument.cr#L44","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ProcLiteral"},{"name":"scope","doc":null,"default_value":"","external_name":"scope","restriction":"AST::Scope"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"ignore_procs || (find_unused_arguments(source, scope))"}},{"id":"test(source,node:Crystal::Block,scope:AST::Scope)-instance-method","html_id":"test(source,node:Crystal::Block,scope:AST::Scope)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Block"},{"name":"scope","doc":null,"default_value":"","external_name":"scope","restriction":"AST::Scope"}],"args_string":"(source, node : Crystal::Block, scope : AST::Scope)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/unused_argument.cr#L48","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Block"},{"name":"scope","doc":null,"default_value":"","external_name":"scope","restriction":"AST::Scope"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"ignore_blocks || (find_unused_arguments(source, scope))"}},{"id":"test(source,node:Crystal::Def,scope:AST::Scope)-instance-method","html_id":"test(source,node:Crystal::Def,scope:AST::Scope)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Def"},{"name":"scope","doc":null,"default_value":"","external_name":"scope","restriction":"AST::Scope"}],"args_string":"(source, node : Crystal::Def, scope : AST::Scope)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/unused_argument.cr#L52","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Def"},{"name":"scope","doc":null,"default_value":"","external_name":"scope","restriction":"AST::Scope"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"ignore_defs || (find_unused_arguments(source, scope))"}},{"id":"test(source)-instance-method","html_id":"test(source)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"args_string":"(source)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/unused_argument.cr#L40","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"AST::ScopeVisitor.new(self, source)"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Lint/UselessAssign","path":"Ameba/Rule/Lint/UselessAssign.html","kind":"struct","full_name":"Ameba::Rule::Lint::UselessAssign","name":"UselessAssign","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/lint/useless_assign.cr","line_number":29,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/useless_assign.cr#L29"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Useless assignment to variable `%s`\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Lint","kind":"module","full_name":"Ameba::Rule::Lint","name":"Lint"},"doc":"A rule that disallows useless assignments.\n\nFor example, this is considered invalid:\n\n```\ndef method\n var = 1\n do_something\nend\n```\n\nAnd has to be written as the following:\n\n```\ndef method\n var = 1\n do_something(var)\nend\n```\n\nYAML configuration example:\n\n```\nLint/UselessAssign:\n Enabled: true\n```\n","summary":"

    A rule that disallows useless assignments.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows useless assignments.\n\nFor example, this is considered invalid:\n\n```\ndef method\n var = 1\n do_something\nend\n```\n\nAnd has to be written as the following:\n\n```\ndef method\n var = 1\n do_something(var)\nend\n```\n\nYAML configuration example:\n\n```\nLint/UselessAssign:\n Enabled: true\n```\n","summary":"

    A rule that disallows useless assignments.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/useless_assign.cr#L29","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node,scope:AST::Scope)-instance-method","html_id":"test(source,node,scope:AST::Scope)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""},{"name":"scope","doc":null,"default_value":"","external_name":"scope","restriction":"AST::Scope"}],"args_string":"(source, node, scope : AST::Scope)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/useless_assign.cr#L40","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""},{"name":"scope","doc":null,"default_value":"","external_name":"scope","restriction":"AST::Scope"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"scope.variables.each do |var|\n if (var.captured_by_block? || var.used_in_macro?) || var.ignored?\n next\n end\n var.assignments.each do |assign|\n if assign.referenced? || assign.transformed?\n next\n end\n issue_for(assign.target_node, MSG % var.name)\n end\nend"}},{"id":"test(source)-instance-method","html_id":"test(source)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"args_string":"(source)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/useless_assign.cr#L36","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"AST::ScopeVisitor.new(self, source)"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Lint/UselessConditionInWhen","path":"Ameba/Rule/Lint/UselessConditionInWhen.html","kind":"struct","full_name":"Ameba::Rule::Lint::UselessConditionInWhen","name":"UselessConditionInWhen","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/lint/useless_condition_in_when.cr","line_number":34,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/useless_condition_in_when.cr#L34"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Useless condition in when detected\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Lint","kind":"module","full_name":"Ameba::Rule::Lint","name":"Lint"},"doc":"A rule that disallows useless conditions in when clause\nwhere it is guaranteed to always return the same result.\n\nFor example, this is considered invalid:\n\n```\ncase\nwhen utc?\n io << \" UTC\"\nwhen local?\n Format.new(\" %:z\").format(self, io) if local?\nend\n```\n\nAnd has to be written as the following:\n\n```\ncase\nwhen utc?\n io << \" UTC\"\nwhen local?\n Format.new(\" %:z\").format(self, io)\nend\n```\n\nYAML configuration example:\n\n```\nLint/UselessConditionInWhen:\n Enabled: true\n```\n","summary":"

    A rule that disallows useless conditions in when clause where it is guaranteed to always return the same result.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows useless conditions in when clause\nwhere it is guaranteed to always return the same result.\n\nFor example, this is considered invalid:\n\n```\ncase\nwhen utc?\n io << \" UTC\"\nwhen local?\n Format.new(\" %:z\").format(self, io) if local?\nend\n```\n\nAnd has to be written as the following:\n\n```\ncase\nwhen utc?\n io << \" UTC\"\nwhen local?\n Format.new(\" %:z\").format(self, io)\nend\n```\n\nYAML configuration example:\n\n```\nLint/UselessConditionInWhen:\n Enabled: true\n```\n","summary":"

    A rule that disallows useless conditions in when clause where it is guaranteed to always return the same result.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/useless_condition_in_when.cr#L34","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node:Crystal::When)-instance-method","html_id":"test(source,node:Crystal::When)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::When"}],"args_string":"(source, node : Crystal::When)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/useless_condition_in_when.cr#L54","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::When"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"ConditionInWhenVisitor.new(self, source, node)"}}],"macros":[],"types":[]}]},{"html_id":"ameba/Ameba/Rule/Metrics","path":"Ameba/Rule/Metrics.html","kind":"module","full_name":"Ameba::Rule::Metrics","name":"Metrics","abstract":false,"superclass":null,"ancestors":[],"locations":[{"filename":"src/ameba/rule/metrics/cyclomatic_complexity.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/metrics/cyclomatic_complexity.cr#L1"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule","kind":"module","full_name":"Ameba::Rule","name":"Rule"},"doc":null,"summary":null,"class_methods":[],"constructors":[],"instance_methods":[],"macros":[],"types":[{"html_id":"ameba/Ameba/Rule/Metrics/CyclomaticComplexity","path":"Ameba/Rule/Metrics/CyclomaticComplexity.html","kind":"struct","full_name":"Ameba::Rule::Metrics::CyclomaticComplexity","name":"CyclomaticComplexity","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/metrics/cyclomatic_complexity.cr","line_number":12,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/metrics/cyclomatic_complexity.cr#L12"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Cyclomatic complexity too high [%d/%d]\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Metrics","kind":"module","full_name":"Ameba::Rule::Metrics","name":"Metrics"},"doc":"A rule that disallows methods with a cyclomatic complexity higher than `MaxComplexity`\n\nYAML configuration example:\n\n```\nMetrics/CyclomaticComplexity:\n Enabled: true\n MaxComplexity: 10\n```\n","summary":"

    A rule that disallows methods with a cyclomatic complexity higher than MaxComplexity

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows methods with a cyclomatic complexity higher than `MaxComplexity`\n\nYAML configuration example:\n\n```\nMetrics/CyclomaticComplexity:\n Enabled: true\n MaxComplexity: 10\n```\n","summary":"

    A rule that disallows methods with a cyclomatic complexity higher than MaxComplexity

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/metrics/cyclomatic_complexity.cr#L12","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"max_complexity:Int32-instance-method","html_id":"max_complexity:Int32-instance-method","name":"max_complexity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Int32","source_link":null,"def":{"name":"max_complexity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Int32","visibility":"Public","body":"@max_complexity"}},{"id":"max_complexity=(max_complexity:Int32)-instance-method","html_id":"max_complexity=(max_complexity:Int32)-instance-method","name":"max_complexity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"max_complexity","doc":null,"default_value":"","external_name":"max_complexity","restriction":"Int32"}],"args_string":"(max_complexity : Int32)","source_link":null,"def":{"name":"max_complexity=","args":[{"name":"max_complexity","doc":null,"default_value":"","external_name":"max_complexity","restriction":"Int32"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@max_complexity = max_complexity"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node:Crystal::Def)-instance-method","html_id":"test(source,node:Crystal::Def)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Def"}],"args_string":"(source, node : Crystal::Def)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/metrics/cyclomatic_complexity.cr#L20","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Def"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"complexity = (AST::CountingVisitor.new(node)).count\nif complexity > max_complexity && (location = node.name_location)\n issue_for(location, def_name_end_location(node), MSG % {complexity, max_complexity})\nend\n"}}],"macros":[],"types":[]}]},{"html_id":"ameba/Ameba/Rule/Performance","path":"Ameba/Rule/Performance.html","kind":"module","full_name":"Ameba::Rule::Performance","name":"Performance","abstract":false,"superclass":null,"ancestors":[],"locations":[{"filename":"src/ameba/rule/performance/any_after_filter.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/performance/any_after_filter.cr#L1"},{"filename":"src/ameba/rule/performance/first_last_after_filter.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/performance/first_last_after_filter.cr#L1"},{"filename":"src/ameba/rule/performance/size_after_filter.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/performance/size_after_filter.cr#L1"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule","kind":"module","full_name":"Ameba::Rule","name":"Rule"},"doc":null,"summary":null,"class_methods":[],"constructors":[],"instance_methods":[],"macros":[],"types":[{"html_id":"ameba/Ameba/Rule/Performance/AnyAfterFilter","path":"Ameba/Rule/Performance/AnyAfterFilter.html","kind":"struct","full_name":"Ameba::Rule::Performance::AnyAfterFilter","name":"AnyAfterFilter","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/performance/any_after_filter.cr","line_number":28,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/performance/any_after_filter.cr#L28"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"ANY_NAME","name":"ANY_NAME","value":"\"any?\"","doc":null,"summary":null},{"id":"MSG","name":"MSG","value":"\"Use `#{ANY_NAME} {...}` instead of `%s {...}.#{ANY_NAME}`\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Performance","kind":"module","full_name":"Ameba::Rule::Performance","name":"Performance"},"doc":"This rule is used to identify usage of `any?` calls that follow filters.\n\nFor example, this is considered invalid:\n\n```\n[1, 2, 3].select { |e| e > 2 }.any?\n[1, 2, 3].reject { |e| e >= 2 }.any?\n```\n\nAnd it should be written as this:\n\n```\n[1, 2, 3].any? { |e| e > 2 }\n[1, 2, 3].any? { |e| e < 2 }\n```\n\nYAML configuration example:\n\n```\nPerformance/AnyAfterFilter:\n Enabled: true\n FilterNames:\n - select\n - reject\n```\n","summary":"

    This rule is used to identify usage of any? calls that follow filters.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"This rule is used to identify usage of `any?` calls that follow filters.\n\nFor example, this is considered invalid:\n\n```\n[1, 2, 3].select { |e| e > 2 }.any?\n[1, 2, 3].reject { |e| e >= 2 }.any?\n```\n\nAnd it should be written as this:\n\n```\n[1, 2, 3].any? { |e| e > 2 }\n[1, 2, 3].any? { |e| e < 2 }\n```\n\nYAML configuration example:\n\n```\nPerformance/AnyAfterFilter:\n Enabled: true\n FilterNames:\n - select\n - reject\n```\n","summary":"

    This rule is used to identify usage of any? calls that follow filters.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/performance/any_after_filter.cr#L28","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"filter_names:Array(String)-instance-method","html_id":"filter_names:Array(String)-instance-method","name":"filter_names","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)","source_link":null,"def":{"name":"filter_names","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String)","visibility":"Public","body":"@filter_names"}},{"id":"filter_names=(filter_names:Array(String))-instance-method","html_id":"filter_names=(filter_names:Array(String))-instance-method","name":"filter_names=","doc":null,"summary":null,"abstract":false,"args":[{"name":"filter_names","doc":null,"default_value":"","external_name":"filter_names","restriction":"Array(String)"}],"args_string":"(filter_names : Array(String))","source_link":null,"def":{"name":"filter_names=","args":[{"name":"filter_names","doc":null,"default_value":"","external_name":"filter_names","restriction":"Array(String)"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@filter_names = filter_names"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node:Crystal::Call)-instance-method","html_id":"test(source,node:Crystal::Call)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Call"}],"args_string":"(source, node : Crystal::Call)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/performance/any_after_filter.cr#L37","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Call"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (node.name == ANY_NAME) && (obj = node.obj)\nelse\n return\nend\nif ((node.block.nil? && obj.is_a?(Crystal::Call)) && (filter_names.includes?(obj.name))) && (!obj.block.nil?)\n issue_for(obj.name_location, node.name_end_location, MSG % obj.name)\nend\n"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Performance/FirstLastAfterFilter","path":"Ameba/Rule/Performance/FirstLastAfterFilter.html","kind":"struct","full_name":"Ameba::Rule::Performance::FirstLastAfterFilter","name":"FirstLastAfterFilter","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/performance/first_last_after_filter.cr","line_number":27,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/performance/first_last_after_filter.cr#L27"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"CALL_NAMES","name":"CALL_NAMES","value":"[\"first\", \"last\", \"first?\", \"last?\"] of ::String","doc":null,"summary":null},{"id":"MSG","name":"MSG","value":"\"Use `find {...}` instead of `%s {...}.%s`\"","doc":null,"summary":null},{"id":"MSG_REVERSE","name":"MSG_REVERSE","value":"\"Use `reverse_each.find {...}` instead of `%s {...}.%s`\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Performance","kind":"module","full_name":"Ameba::Rule::Performance","name":"Performance"},"doc":"This rule is used to identify usage of `first/last/first?/last?` calls that follow filters.\n\nFor example, this is considered inefficient:\n\n```\n[-1, 0, 1, 2].select { |e| e > 0 }.first?\n[-1, 0, 1, 2].select { |e| e > 0 }.last?\n```\n\nAnd can be written as this:\n\n```\n[-1, 0, 1, 2].find { |e| e > 0 }\n[-1, 0, 1, 2].reverse_each.find { |e| e > 0 }\n```\n\nYAML configuration example:\n\n```\nPerformance/FirstLastAfterFilter\n Enabled: true\n FilterNames:\n - select\n```\n","summary":"

    This rule is used to identify usage of first/last/first?/last? calls that follow filters.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"This rule is used to identify usage of `first/last/first?/last?` calls that follow filters.\n\nFor example, this is considered inefficient:\n\n```\n[-1, 0, 1, 2].select { |e| e > 0 }.first?\n[-1, 0, 1, 2].select { |e| e > 0 }.last?\n```\n\nAnd can be written as this:\n\n```\n[-1, 0, 1, 2].find { |e| e > 0 }\n[-1, 0, 1, 2].reverse_each.find { |e| e > 0 }\n```\n\nYAML configuration example:\n\n```\nPerformance/FirstLastAfterFilter\n Enabled: true\n FilterNames:\n - select\n```\n","summary":"

    This rule is used to identify usage of first/last/first?/last? calls that follow filters.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/performance/first_last_after_filter.cr#L27","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"filter_names:Array(String)-instance-method","html_id":"filter_names:Array(String)-instance-method","name":"filter_names","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)","source_link":null,"def":{"name":"filter_names","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String)","visibility":"Public","body":"@filter_names"}},{"id":"filter_names=(filter_names:Array(String))-instance-method","html_id":"filter_names=(filter_names:Array(String))-instance-method","name":"filter_names=","doc":null,"summary":null,"abstract":false,"args":[{"name":"filter_names","doc":null,"default_value":"","external_name":"filter_names","restriction":"Array(String)"}],"args_string":"(filter_names : Array(String))","source_link":null,"def":{"name":"filter_names=","args":[{"name":"filter_names","doc":null,"default_value":"","external_name":"filter_names","restriction":"Array(String)"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@filter_names = filter_names"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node:Crystal::Call)-instance-method","html_id":"test(source,node:Crystal::Call)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Call"}],"args_string":"(source, node : Crystal::Call)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/performance/first_last_after_filter.cr#L46","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Call"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (CALL_NAMES.includes?(node.name)) && (obj = node.obj)\nelse\n return\nend\nif node.args.any?\n return\nend\nif ((node.block.nil? && obj.is_a?(Crystal::Call)) && (filter_names.includes?(obj.name))) && (!obj.block.nil?)\n message = node.name.includes?(CALL_NAMES.first) ? MSG : MSG_REVERSE\n issue_for(obj.name_location, node.name_end_location, message % {obj.name, node.name})\nend\n"}},{"id":"test(source)-instance-method","html_id":"test(source)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"args_string":"(source)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/performance/first_last_after_filter.cr#L37","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"AST::NodeVisitor.new(self, source, skip: [Crystal::Macro, Crystal::MacroExpression, Crystal::MacroIf, Crystal::MacroFor])"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Performance/SizeAfterFilter","path":"Ameba/Rule/Performance/SizeAfterFilter.html","kind":"struct","full_name":"Ameba::Rule::Performance::SizeAfterFilter","name":"SizeAfterFilter","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/performance/size_after_filter.cr","line_number":34,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/performance/size_after_filter.cr#L34"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Use `count {...}` instead of `%s {...}.#{SIZE_NAME}`.\"","doc":null,"summary":null},{"id":"SIZE_NAME","name":"SIZE_NAME","value":"\"size\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Performance","kind":"module","full_name":"Ameba::Rule::Performance","name":"Performance"},"doc":"This rule is used to identify usage of `size` calls that follow filter.\n\nFor example, this is considered invalid:\n\n```\n[1, 2, 3].select { |e| e > 2 }.size\n[1, 2, 3].reject { |e| e < 2 }.size\n[1, 2, 3].select(&.< 2).size\n[0, 1, 2].select(&.zero?).size\n[0, 1, 2].reject(&.zero?).size\n```\n\nAnd it should be written as this:\n\n```\n[1, 2, 3].count { |e| e > 2 }\n[1, 2, 3].count { |e| e >= 2 }\n[1, 2, 3].count(&.< 2)\n[0, 1, 2].count(&.zero?)\n[0, 1, 2].count(&.!= 0)\n```\n\nYAML configuration example:\n\n```\nPerformance/SizeAfterFilter:\n Enabled: true\n FilterNames:\n - select\n - reject\n```\n","summary":"

    This rule is used to identify usage of size calls that follow filter.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"This rule is used to identify usage of `size` calls that follow filter.\n\nFor example, this is considered invalid:\n\n```\n[1, 2, 3].select { |e| e > 2 }.size\n[1, 2, 3].reject { |e| e < 2 }.size\n[1, 2, 3].select(&.< 2).size\n[0, 1, 2].select(&.zero?).size\n[0, 1, 2].reject(&.zero?).size\n```\n\nAnd it should be written as this:\n\n```\n[1, 2, 3].count { |e| e > 2 }\n[1, 2, 3].count { |e| e >= 2 }\n[1, 2, 3].count(&.< 2)\n[0, 1, 2].count(&.zero?)\n[0, 1, 2].count(&.!= 0)\n```\n\nYAML configuration example:\n\n```\nPerformance/SizeAfterFilter:\n Enabled: true\n FilterNames:\n - select\n - reject\n```\n","summary":"

    This rule is used to identify usage of size calls that follow filter.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/performance/size_after_filter.cr#L34","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"filter_names:Array(String)-instance-method","html_id":"filter_names:Array(String)-instance-method","name":"filter_names","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)","source_link":null,"def":{"name":"filter_names","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String)","visibility":"Public","body":"@filter_names"}},{"id":"filter_names=(filter_names:Array(String))-instance-method","html_id":"filter_names=(filter_names:Array(String))-instance-method","name":"filter_names=","doc":null,"summary":null,"abstract":false,"args":[{"name":"filter_names","doc":null,"default_value":"","external_name":"filter_names","restriction":"Array(String)"}],"args_string":"(filter_names : Array(String))","source_link":null,"def":{"name":"filter_names=","args":[{"name":"filter_names","doc":null,"default_value":"","external_name":"filter_names","restriction":"Array(String)"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@filter_names = filter_names"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node:Crystal::Call)-instance-method","html_id":"test(source,node:Crystal::Call)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Call"}],"args_string":"(source, node : Crystal::Call)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/performance/size_after_filter.cr#L52","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Call"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (node.name == SIZE_NAME) && (obj = node.obj)\nelse\n return\nend\nif (obj.is_a?(Crystal::Call) && (filter_names.includes?(obj.name))) && (!obj.block.nil?)\n issue_for(obj.name_location, node.name_end_location, MSG % obj.name)\nend\n"}},{"id":"test(source)-instance-method","html_id":"test(source)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"args_string":"(source)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/performance/size_after_filter.cr#L43","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"AST::NodeVisitor.new(self, source, skip: [Crystal::Macro, Crystal::MacroExpression, Crystal::MacroIf, Crystal::MacroFor])"}}],"macros":[],"types":[]}]},{"html_id":"ameba/Ameba/Rule/Style","path":"Ameba/Rule/Style.html","kind":"module","full_name":"Ameba::Rule::Style","name":"Style","abstract":false,"superclass":null,"ancestors":[],"locations":[{"filename":"src/ameba/rule/style/constant_names.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/style/constant_names.cr#L1"},{"filename":"src/ameba/rule/style/is_a_nil.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/style/is_a_nil.cr#L1"},{"filename":"src/ameba/rule/style/large_numbers.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/style/large_numbers.cr#L1"},{"filename":"src/ameba/rule/style/method_names.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/style/method_names.cr#L1"},{"filename":"src/ameba/rule/style/negated_conditions_in_unless.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/style/negated_conditions_in_unless.cr#L1"},{"filename":"src/ameba/rule/style/predicate_name.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/style/predicate_name.cr#L1"},{"filename":"src/ameba/rule/style/redundant_begin.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/style/redundant_begin.cr#L1"},{"filename":"src/ameba/rule/style/redundant_next.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/style/redundant_next.cr#L1"},{"filename":"src/ameba/rule/style/redundant_return.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/style/redundant_return.cr#L1"},{"filename":"src/ameba/rule/style/type_names.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/style/type_names.cr#L1"},{"filename":"src/ameba/rule/style/unless_else.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/style/unless_else.cr#L1"},{"filename":"src/ameba/rule/style/variable_names.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/style/variable_names.cr#L1"},{"filename":"src/ameba/rule/style/while_true.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/style/while_true.cr#L1"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule","kind":"module","full_name":"Ameba::Rule","name":"Rule"},"doc":null,"summary":null,"class_methods":[],"constructors":[],"instance_methods":[],"macros":[],"types":[{"html_id":"ameba/Ameba/Rule/Style/ConstantNames","path":"Ameba/Rule/Style/ConstantNames.html","kind":"struct","full_name":"Ameba::Rule::Style::ConstantNames","name":"ConstantNames","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/style/constant_names.cr","line_number":25,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/style/constant_names.cr#L25"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Constant name should be screaming-cased: %s, not %s\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Style","kind":"module","full_name":"Ameba::Rule::Style","name":"Style"},"doc":"A rule that enforces constant names to be in screaming case.\n\nFor example, these constant names are considered valid:\n\n```\nLUCKY_NUMBERS = [3, 7, 11]\nDOCUMENTATION_URL = \"http://crystal-lang.org/docs\"\n```\n\nAnd these are invalid names:\n\n```\nmyBadConstant = 1\nWrong_NAME = 2\n```\n\nYAML configuration example:\n\n```\nStyle/ConstantNames:\n Enabled: true\n```\n","summary":"

    A rule that enforces constant names to be in screaming case.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that enforces constant names to be in screaming case.\n\nFor example, these constant names are considered valid:\n\n```\nLUCKY_NUMBERS = [3, 7, 11]\nDOCUMENTATION_URL = \"http://crystal-lang.org/docs\"\n```\n\nAnd these are invalid names:\n\n```\nmyBadConstant = 1\nWrong_NAME = 2\n```\n\nYAML configuration example:\n\n```\nStyle/ConstantNames:\n Enabled: true\n```\n","summary":"

    A rule that enforces constant names to be in screaming case.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/style/constant_names.cr#L25","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node:Crystal::Assign)-instance-method","html_id":"test(source,node:Crystal::Assign)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Assign"}],"args_string":"(source, node : Crystal::Assign)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/style/constant_names.cr#L32","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Assign"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (target = node.target).is_a?(Crystal::Path)\n name = target.names.first\n expected = name.upcase\n if (expected == name) || (name.camelcase == name)\n return\n end\n issue_for(target, MSG % {expected, name})\nend"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Style/IsANil","path":"Ameba/Rule/Style/IsANil.html","kind":"struct","full_name":"Ameba::Rule::Style::IsANil","name":"IsANil","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/style/is_a_nil.cr","line_number":23,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/style/is_a_nil.cr#L23"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Use `nil?` instead of `is_a?(Nil)`\"","doc":null,"summary":null},{"id":"PATH_NIL_NAMES","name":"PATH_NIL_NAMES","value":"[\"Nil\"] of ::String","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Style","kind":"module","full_name":"Ameba::Rule::Style","name":"Style"},"doc":"A rule that disallows calls to `is_a?(Nil)` in favor of `nil?`.\n\nThis is considered bad:\n\n```\nvar.is_a? Nil\n```\n\nAnd needs to be written as:\n\n```\nvar.nil?\n```\n\nYAML configuration example:\n\n```\nStyle/IsANil:\n Enabled: true\n```\n","summary":"

    A rule that disallows calls to is_a?(Nil) in favor of nil?.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows calls to `is_a?(Nil)` in favor of `nil?`.\n\nThis is considered bad:\n\n```\nvar.is_a? Nil\n```\n\nAnd needs to be written as:\n\n```\nvar.nil?\n```\n\nYAML configuration example:\n\n```\nStyle/IsANil:\n Enabled: true\n```\n","summary":"

    A rule that disallows calls to is_a?(Nil) in favor of nil?.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/style/is_a_nil.cr#L23","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node:Crystal::IsA)-instance-method","html_id":"test(source,node:Crystal::IsA)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::IsA"}],"args_string":"(source, node : Crystal::IsA)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/style/is_a_nil.cr#L31","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::IsA"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if node.nil_check?\n return\nend\nconst = node.const\nif const.is_a?(Crystal::Path) && (const.names == PATH_NIL_NAMES)\n issue_for(const, MSG)\nend\n"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Style/LargeNumbers","path":"Ameba/Rule/Style/LargeNumbers.html","kind":"struct","full_name":"Ameba::Rule::Style::LargeNumbers","name":"LargeNumbers","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/style/large_numbers.cr","line_number":30,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/style/large_numbers.cr#L30"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Large numbers should be written with underscores: %s\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Style","kind":"module","full_name":"Ameba::Rule::Style","name":"Style"},"doc":"A rule that disallows usage of large numbers without underscore.\nThese do not affect the value of the number, but can help read\nlarge numbers more easily.\n\nFor example, these are considered invalid:\n\n```\n10000\n141592654\n5.12345\n```\n\nAnd has to be rewritten as the following:\n\n```\n10_000\n141_592_654\n5.123_45\n```\n\nYAML configuration example:\n\n```\nStyle/LargeNumbers:\n Enabled: true\n IntMinDigits: 5 # i.e. integers higher than 9999\n```\n","summary":"

    A rule that disallows usage of large numbers without underscore.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows usage of large numbers without underscore.\nThese do not affect the value of the number, but can help read\nlarge numbers more easily.\n\nFor example, these are considered invalid:\n\n```\n10000\n141592654\n5.12345\n```\n\nAnd has to be rewritten as the following:\n\n```\n10_000\n141_592_654\n5.123_45\n```\n\nYAML configuration example:\n\n```\nStyle/LargeNumbers:\n Enabled: true\n IntMinDigits: 5 # i.e. integers higher than 9999\n```\n","summary":"

    A rule that disallows usage of large numbers without underscore.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/style/large_numbers.cr#L30","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Bool","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled:Bool)-instance-method","html_id":"enabled=(enabled:Bool)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":"Bool"}],"args_string":"(enabled : Bool)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":"Bool"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"int_min_digits:Int32-instance-method","html_id":"int_min_digits:Int32-instance-method","name":"int_min_digits","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Int32","source_link":null,"def":{"name":"int_min_digits","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Int32","visibility":"Public","body":"@int_min_digits"}},{"id":"int_min_digits=(int_min_digits:Int32)-instance-method","html_id":"int_min_digits=(int_min_digits:Int32)-instance-method","name":"int_min_digits=","doc":null,"summary":null,"abstract":false,"args":[{"name":"int_min_digits","doc":null,"default_value":"","external_name":"int_min_digits","restriction":"Int32"}],"args_string":"(int_min_digits : Int32)","source_link":null,"def":{"name":"int_min_digits=","args":[{"name":"int_min_digits","doc":null,"default_value":"","external_name":"int_min_digits","restriction":"Int32"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@int_min_digits = int_min_digits"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source)-instance-method","html_id":"test(source)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"args_string":"(source)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/style/large_numbers.cr#L39","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"(Tokenizer.new(source)).run do |token|\n if (token.type == (:NUMBER)) && (decimal?(token.raw))\n else\n next\n end\n parsed = parse_number(token.raw)\n if (allowed?(*parsed)) && ((expected = underscored(*parsed)) != token.raw)\n issue_for(token, MSG % expected)\n end\nend"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Style/MethodNames","path":"Ameba/Rule/Style/MethodNames.html","kind":"struct","full_name":"Ameba::Rule::Style::MethodNames","name":"MethodNames","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/style/method_names.cr","line_number":41,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/style/method_names.cr#L41"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Method name should be underscore-cased: %s, not %s\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Style","kind":"module","full_name":"Ameba::Rule::Style","name":"Style"},"doc":"A rule that enforces method names to be in underscored case.\n\nFor example, these are considered valid:\n\n```\nclass Person\n def first_name\n end\n\n def date_of_birth\n end\n\n def homepage_url\n end\nend\n```\n\nAnd these are invalid method names:\n\n```\nclass Person\n def firstName\n end\n\n def date_of_Birth\n end\n\n def homepageURL\n end\nend\n```\n\nYAML configuration example:\n\n```\nStyle/MethodNames:\n Enabled: true\n```\n","summary":"

    A rule that enforces method names to be in underscored case.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that enforces method names to be in underscored case.\n\nFor example, these are considered valid:\n\n```\nclass Person\n def first_name\n end\n\n def date_of_birth\n end\n\n def homepage_url\n end\nend\n```\n\nAnd these are invalid method names:\n\n```\nclass Person\n def firstName\n end\n\n def date_of_Birth\n end\n\n def homepageURL\n end\nend\n```\n\nYAML configuration example:\n\n```\nStyle/MethodNames:\n Enabled: true\n```\n","summary":"

    A rule that enforces method names to be in underscored case.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/style/method_names.cr#L41","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node:Crystal::Def)-instance-method","html_id":"test(source,node:Crystal::Def)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Def"}],"args_string":"(source, node : Crystal::Def)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/style/method_names.cr#L48","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Def"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (expected = node.name.underscore) == node.name\n return\nend\nline_number = node.location.try(&.line_number)\ncolumn_number = node.name_location.try(&.column_number)\nif line_number.nil? || column_number.nil?\n return\nend\nissue_for({line_number, column_number}, {line_number, (column_number + node.name.size) - 1}, MSG % {expected, node.name})\n"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Style/NegatedConditionsInUnless","path":"Ameba/Rule/Style/NegatedConditionsInUnless.html","kind":"struct","full_name":"Ameba::Rule::Style::NegatedConditionsInUnless","name":"NegatedConditionsInUnless","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/style/negated_conditions_in_unless.cr","line_number":30,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/style/negated_conditions_in_unless.cr#L30"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Avoid negated conditions in unless blocks\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Style","kind":"module","full_name":"Ameba::Rule::Style","name":"Style"},"doc":"A rule that disallows negated conditions in unless.\n\nFor example, this is considered invalid:\n\n```\nunless !s.empty?\n :ok\nend\n```\n\nAnd should be rewritten to the following:\n\n```\nif s.emtpy?\n :ok\nend\n```\n\nIt is pretty difficult to wrap your head around a block of code\nthat is executed if a negated condition is NOT met.\n\nYAML configuration example:\n\n```\nStyle/NegatedConditionsInUnless:\n Enabled: true\n```\n","summary":"

    A rule that disallows negated conditions in unless.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows negated conditions in unless.\n\nFor example, this is considered invalid:\n\n```\nunless !s.empty?\n :ok\nend\n```\n\nAnd should be rewritten to the following:\n\n```\nif s.emtpy?\n :ok\nend\n```\n\nIt is pretty difficult to wrap your head around a block of code\nthat is executed if a negated condition is NOT met.\n\nYAML configuration example:\n\n```\nStyle/NegatedConditionsInUnless:\n Enabled: true\n```\n","summary":"

    A rule that disallows negated conditions in unless.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/style/negated_conditions_in_unless.cr#L30","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node:Crystal::Unless)-instance-method","html_id":"test(source,node:Crystal::Unless)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Unless"}],"args_string":"(source, node : Crystal::Unless)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/style/negated_conditions_in_unless.cr#L37","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Unless"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if negated_condition?(node.cond)\nelse\n return\nend\nissue_for(node, MSG)\n"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Style/PredicateName","path":"Ameba/Rule/Style/PredicateName.html","kind":"struct","full_name":"Ameba::Rule::Style::PredicateName","name":"PredicateName","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/style/predicate_name.cr","line_number":32,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/style/predicate_name.cr#L32"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Favour method name '%s?' over '%s'\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Style","kind":"module","full_name":"Ameba::Rule::Style","name":"Style"},"doc":"A rule that disallows tautological predicate names, meaning those that\nstart with the prefix `has_` or the prefix `is_`. Ignores if the alternative isn't valid Crystal code (e.g. `is_404?`).\n\nFavour these:\n\n```\ndef valid?(x)\nend\n\ndef picture?(x)\nend\n```\n\nOver these:\n\n```\ndef is_valid?(x)\nend\n\ndef has_picture?(x)\nend\n```\n\nYAML configuration example:\n\n```\nStyle/PredicateName:\n Enabled: true\n```\n","summary":"

    A rule that disallows tautological predicate names, meaning those that start with the prefix has_ or the prefix is_.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows tautological predicate names, meaning those that\nstart with the prefix `has_` or the prefix `is_`. Ignores if the alternative isn't valid Crystal code (e.g. `is_404?`).\n\nFavour these:\n\n```\ndef valid?(x)\nend\n\ndef picture?(x)\nend\n```\n\nOver these:\n\n```\ndef is_valid?(x)\nend\n\ndef has_picture?(x)\nend\n```\n\nYAML configuration example:\n\n```\nStyle/PredicateName:\n Enabled: true\n```\n","summary":"

    A rule that disallows tautological predicate names, meaning those that start with the prefix has_ or the prefix is_.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/style/predicate_name.cr#L32","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Bool","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled:Bool)-instance-method","html_id":"enabled=(enabled:Bool)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":"Bool"}],"args_string":"(enabled : Bool)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":"Bool"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node:Crystal::Def)-instance-method","html_id":"test(source,node:Crystal::Def)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Def"}],"args_string":"(source, node : Crystal::Def)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/style/predicate_name.cr#L40","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Def"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if node.name =~ (/^(is|has)_(\\w+)\\?/)\n alternative = $~[2]\n if alternative =~ (/^[a-z][a-zA-Z_0-9]*$/)\n else\n return\n end\n issue_for(node, MSG % {alternative, node.name})\nend"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Style/RedundantBegin","path":"Ameba/Rule/Style/RedundantBegin.html","kind":"struct","full_name":"Ameba::Rule::Style::RedundantBegin","name":"RedundantBegin","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/Ameba/AST/Util","kind":"module","full_name":"Ameba::AST::Util","name":"Util"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/style/redundant_begin.cr","line_number":59,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/style/redundant_begin.cr#L59"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Redundant `begin` block detected\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/Ameba/AST/Util","kind":"module","full_name":"Ameba::AST::Util","name":"Util"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Style","kind":"module","full_name":"Ameba::Rule::Style","name":"Style"},"doc":"A rule that disallows redundant begin blocks.\n\nCurrently it is able to detect:\n\n1. Exception handler block that can be used as a part of the method.\n\nFor example, this:\n\n```\ndef method\n begin\n read_content\n rescue\n close_file\n end\nend\n```\n\nshould be rewritten as:\n\n```\ndef method\n read_content\nrescue\n close_file\nend\n```\n\n2. begin..end block as a top level block in a method.\n\nFor example this is considered invalid:\n\n```\ndef method\n begin\n a = 1\n b = 2\n end\nend\n```\n\nand has to be written as the following:\n\n```\ndef method\n a = 1\n b = 2\nend\n```\n\nYAML configuration example:\n\n```\nStyle/RedundantBegin:\n Enabled: true\n```\n","summary":"

    A rule that disallows redundant begin blocks.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows redundant begin blocks.\n\nCurrently it is able to detect:\n\n1. Exception handler block that can be used as a part of the method.\n\nFor example, this:\n\n```\ndef method\n begin\n read_content\n rescue\n close_file\n end\nend\n```\n\nshould be rewritten as:\n\n```\ndef method\n read_content\nrescue\n close_file\nend\n```\n\n2. begin..end block as a top level block in a method.\n\nFor example this is considered invalid:\n\n```\ndef method\n begin\n a = 1\n b = 2\n end\nend\n```\n\nand has to be written as the following:\n\n```\ndef method\n a = 1\n b = 2\nend\n```\n\nYAML configuration example:\n\n```\nStyle/RedundantBegin:\n Enabled: true\n```\n","summary":"

    A rule that disallows redundant begin blocks.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/style/redundant_begin.cr#L59","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node:Crystal::Def)-instance-method","html_id":"test(source,node:Crystal::Def)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Def"}],"args_string":"(source, node : Crystal::Def)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/style/redundant_begin.cr#L67","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Def"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if redundant_begin?(source, node)\nelse\n return\nend\nissue_for(node, MSG)\n"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Style/RedundantNext","path":"Ameba/Rule/Style/RedundantNext.html","kind":"struct","full_name":"Ameba::Rule::Style::RedundantNext","name":"RedundantNext","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/style/redundant_next.cr","line_number":99,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/style/redundant_next.cr#L99"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Redundant `next` detected\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Style","kind":"module","full_name":"Ameba::Rule::Style","name":"Style"},"doc":"A rule that disallows redundant next expressions. A `next` keyword allows\na block to skip to the next iteration early, however, it is considered\nredundant in cases where it is the last expression in a block or combines\ninto the node which is the last in a block.\n\nFor example, this is considered invalid:\n\n```\nblock do |v|\n next v + 1\nend\n```\n\n```\nblock do |v|\n case v\n when .nil?\n next \"nil\"\n when .blank?\n next \"blank\"\n else\n next \"empty\"\n end\nend\n```\n\nAnd has to be written as the following:\n\n```\nblock do |v|\n v + 1\nend\n```\n\n```\nblock do |v|\n case arg\n when .nil?\n \"nil\"\n when .blank?\n \"blank\"\n else\n \"empty\"\n end\nend\n```\n\n### Configuration params\n\n1. *allow_multi_next*, default: true\n\nAllows end-user to configure whether to report or not the next statements\nwhich yield tuple literals i.e.\n\n```\nblock do\n next a, b\nend\n```\n\nIf this param equals to `false`, the block above will be forced to be written as:\n\n```\nblock do\n {a, b}\nend\n```\n\n2. *allow_empty_next*, default: true\n\nAllows end-user to configure whether to report or not the next statements\nwithout arguments. Sometimes such statements are used to yild the `nil` value explicitly.\n\n```\nblock do\n @foo = :empty\n next\nend\n```\n\nIf this param equals to `false`, the block above will be forced to be written as:\n\n```\nblock do\n @foo = :empty\n nil\nend\n```\n\n### YAML config example\n\n```\nStyle/RedundantNext:\n Enabled: true\n AllowMultiNext: true\n AllowEmptyNext: true\n```","summary":"

    A rule that disallows redundant next expressions.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows redundant next expressions. A `next` keyword allows\na block to skip to the next iteration early, however, it is considered\nredundant in cases where it is the last expression in a block or combines\ninto the node which is the last in a block.\n\nFor example, this is considered invalid:\n\n```\nblock do |v|\n next v + 1\nend\n```\n\n```\nblock do |v|\n case v\n when .nil?\n next \"nil\"\n when .blank?\n next \"blank\"\n else\n next \"empty\"\n end\nend\n```\n\nAnd has to be written as the following:\n\n```\nblock do |v|\n v + 1\nend\n```\n\n```\nblock do |v|\n case arg\n when .nil?\n \"nil\"\n when .blank?\n \"blank\"\n else\n \"empty\"\n end\nend\n```\n\n### Configuration params\n\n1. *allow_multi_next*, default: true\n\nAllows end-user to configure whether to report or not the next statements\nwhich yield tuple literals i.e.\n\n```\nblock do\n next a, b\nend\n```\n\nIf this param equals to `false`, the block above will be forced to be written as:\n\n```\nblock do\n {a, b}\nend\n```\n\n2. *allow_empty_next*, default: true\n\nAllows end-user to configure whether to report or not the next statements\nwithout arguments. Sometimes such statements are used to yild the `nil` value explicitly.\n\n```\nblock do\n @foo = :empty\n next\nend\n```\n\nIf this param equals to `false`, the block above will be forced to be written as:\n\n```\nblock do\n @foo = :empty\n nil\nend\n```\n\n### YAML config example\n\n```\nStyle/RedundantNext:\n Enabled: true\n AllowMultiNext: true\n AllowEmptyNext: true\n```","summary":"

    A rule that disallows redundant next expressions.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/style/redundant_next.cr#L99","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"allow_empty_next:Bool-instance-method","html_id":"allow_empty_next:Bool-instance-method","name":"allow_empty_next","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"allow_empty_next","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Bool","visibility":"Public","body":"@allow_empty_next"}},{"id":"allow_empty_next=(allow_empty_next:Bool)-instance-method","html_id":"allow_empty_next=(allow_empty_next:Bool)-instance-method","name":"allow_empty_next=","doc":null,"summary":null,"abstract":false,"args":[{"name":"allow_empty_next","doc":null,"default_value":"","external_name":"allow_empty_next","restriction":"Bool"}],"args_string":"(allow_empty_next : Bool)","source_link":null,"def":{"name":"allow_empty_next=","args":[{"name":"allow_empty_next","doc":null,"default_value":"","external_name":"allow_empty_next","restriction":"Bool"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@allow_empty_next = allow_empty_next"}},{"id":"allow_multi_next:Bool-instance-method","html_id":"allow_multi_next:Bool-instance-method","name":"allow_multi_next","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"allow_multi_next","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Bool","visibility":"Public","body":"@allow_multi_next"}},{"id":"allow_multi_next=(allow_multi_next:Bool)-instance-method","html_id":"allow_multi_next=(allow_multi_next:Bool)-instance-method","name":"allow_multi_next=","doc":null,"summary":null,"abstract":false,"args":[{"name":"allow_multi_next","doc":null,"default_value":"","external_name":"allow_multi_next","restriction":"Bool"}],"args_string":"(allow_multi_next : Bool)","source_link":null,"def":{"name":"allow_multi_next=","args":[{"name":"allow_multi_next","doc":null,"default_value":"","external_name":"allow_multi_next","restriction":"Bool"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@allow_multi_next = allow_multi_next"}},{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node:Crystal::Next,visitor:AST::RedundantControlExpressionVisitor)-instance-method","html_id":"test(source,node:Crystal::Next,visitor:AST::RedundantControlExpressionVisitor)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Next"},{"name":"visitor","doc":null,"default_value":"","external_name":"visitor","restriction":"AST::RedundantControlExpressionVisitor"}],"args_string":"(source, node : Crystal::Next, visitor : AST::RedundantControlExpressionVisitor)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/style/redundant_next.cr#L112","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Next"},{"name":"visitor","doc":null,"default_value":"","external_name":"visitor","restriction":"AST::RedundantControlExpressionVisitor"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if allow_multi_next && node.exp.is_a?(Crystal::TupleLiteral)\n return\nend\nif allow_empty_next && (node.exp.nil? || node.exp.not_nil!.nop?)\n return\nend\nsource.try(&.add_issue(self, node, MSG))\n"}},{"id":"test(source,node:Crystal::Block)-instance-method","html_id":"test(source,node:Crystal::Block)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Block"}],"args_string":"(source, node : Crystal::Block)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/style/redundant_next.cr#L108","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Block"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"AST::RedundantControlExpressionVisitor.new(self, source, node.body)"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Style/RedundantReturn","path":"Ameba/Rule/Style/RedundantReturn.html","kind":"struct","full_name":"Ameba::Rule::Style::RedundantReturn","name":"RedundantReturn","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/style/redundant_return.cr","line_number":96,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/style/redundant_return.cr#L96"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Redundant `return` detected\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Style","kind":"module","full_name":"Ameba::Rule::Style","name":"Style"},"doc":"A rule that disallows redundant return expressions.\n\nFor example, this is considered invalid:\n\n```\ndef foo\n return :bar\nend\n```\n\n```\ndef bar(arg)\n case arg\n when .nil?\n return \"nil\"\n when .blank?\n return \"blank\"\n else\n return \"empty\"\n end\nend\n```\n\nAnd has to be written as the following:\n\n```\ndef foo\n :bar\nend\n```\n\n```\ndef bar(arg)\n case arg\n when .nil?\n \"nil\"\n when .blank?\n \"blank\"\n else\n \"empty\"\n end\nend\n```\n\n### Configuration params\n\n1. *allow_multi_return*, default: true\n\nAllows end-user to configure whether to report or not the return statements\nwhich return tuple literals i.e.\n\n```\ndef method(a, b)\n return a, b\nend\n```\n\nIf this param equals to `false`, the method above has to be written as:\n\n```\ndef method(a, b)\n {a, b}\nend\n```\n\n2. *allow_empty_return*, default: true\n\nAllows end-user to configure whether to report or not the return statements\nwithout arguments. Sometimes such returns are used to return the `nil` value explicitly.\n\n```\ndef method\n @foo = :empty\n return\nend\n```\n\nIf this param equals to `false`, the method above has to be written as:\n\n```\ndef method\n @foo = :empty\n nil\nend\n```\n\n### YAML config example\n\n```\nStyle/RedundantReturn:\n Enabled: true\n AllowMutliReturn: true\n AllowEmptyReturn: true\n```","summary":"

    A rule that disallows redundant return expressions.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows redundant return expressions.\n\nFor example, this is considered invalid:\n\n```\ndef foo\n return :bar\nend\n```\n\n```\ndef bar(arg)\n case arg\n when .nil?\n return \"nil\"\n when .blank?\n return \"blank\"\n else\n return \"empty\"\n end\nend\n```\n\nAnd has to be written as the following:\n\n```\ndef foo\n :bar\nend\n```\n\n```\ndef bar(arg)\n case arg\n when .nil?\n \"nil\"\n when .blank?\n \"blank\"\n else\n \"empty\"\n end\nend\n```\n\n### Configuration params\n\n1. *allow_multi_return*, default: true\n\nAllows end-user to configure whether to report or not the return statements\nwhich return tuple literals i.e.\n\n```\ndef method(a, b)\n return a, b\nend\n```\n\nIf this param equals to `false`, the method above has to be written as:\n\n```\ndef method(a, b)\n {a, b}\nend\n```\n\n2. *allow_empty_return*, default: true\n\nAllows end-user to configure whether to report or not the return statements\nwithout arguments. Sometimes such returns are used to return the `nil` value explicitly.\n\n```\ndef method\n @foo = :empty\n return\nend\n```\n\nIf this param equals to `false`, the method above has to be written as:\n\n```\ndef method\n @foo = :empty\n nil\nend\n```\n\n### YAML config example\n\n```\nStyle/RedundantReturn:\n Enabled: true\n AllowMutliReturn: true\n AllowEmptyReturn: true\n```","summary":"

    A rule that disallows redundant return expressions.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/style/redundant_return.cr#L96","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"allow_empty_return:Bool-instance-method","html_id":"allow_empty_return:Bool-instance-method","name":"allow_empty_return","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"allow_empty_return","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Bool","visibility":"Public","body":"@allow_empty_return"}},{"id":"allow_empty_return=(allow_empty_return:Bool)-instance-method","html_id":"allow_empty_return=(allow_empty_return:Bool)-instance-method","name":"allow_empty_return=","doc":null,"summary":null,"abstract":false,"args":[{"name":"allow_empty_return","doc":null,"default_value":"","external_name":"allow_empty_return","restriction":"Bool"}],"args_string":"(allow_empty_return : Bool)","source_link":null,"def":{"name":"allow_empty_return=","args":[{"name":"allow_empty_return","doc":null,"default_value":"","external_name":"allow_empty_return","restriction":"Bool"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@allow_empty_return = allow_empty_return"}},{"id":"allow_multi_return:Bool-instance-method","html_id":"allow_multi_return:Bool-instance-method","name":"allow_multi_return","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"allow_multi_return","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Bool","visibility":"Public","body":"@allow_multi_return"}},{"id":"allow_multi_return=(allow_multi_return:Bool)-instance-method","html_id":"allow_multi_return=(allow_multi_return:Bool)-instance-method","name":"allow_multi_return=","doc":null,"summary":null,"abstract":false,"args":[{"name":"allow_multi_return","doc":null,"default_value":"","external_name":"allow_multi_return","restriction":"Bool"}],"args_string":"(allow_multi_return : Bool)","source_link":null,"def":{"name":"allow_multi_return=","args":[{"name":"allow_multi_return","doc":null,"default_value":"","external_name":"allow_multi_return","restriction":"Bool"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@allow_multi_return = allow_multi_return"}},{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node:Crystal::Return,visitor:AST::RedundantControlExpressionVisitor)-instance-method","html_id":"test(source,node:Crystal::Return,visitor:AST::RedundantControlExpressionVisitor)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Return"},{"name":"visitor","doc":null,"default_value":"","external_name":"visitor","restriction":"AST::RedundantControlExpressionVisitor"}],"args_string":"(source, node : Crystal::Return, visitor : AST::RedundantControlExpressionVisitor)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/style/redundant_return.cr#L109","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Return"},{"name":"visitor","doc":null,"default_value":"","external_name":"visitor","restriction":"AST::RedundantControlExpressionVisitor"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if allow_multi_return && node.exp.is_a?(Crystal::TupleLiteral)\n return\nend\nif allow_empty_return && (node.exp.nil? || node.exp.not_nil!.nop?)\n return\nend\nsource.try(&.add_issue(self, node, MSG))\n"}},{"id":"test(source,node:Crystal::Def)-instance-method","html_id":"test(source,node:Crystal::Def)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Def"}],"args_string":"(source, node : Crystal::Def)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/style/redundant_return.cr#L105","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Def"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"AST::RedundantControlExpressionVisitor.new(self, source, node.body)"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Style/TypeNames","path":"Ameba/Rule/Style/TypeNames.html","kind":"struct","full_name":"Ameba::Rule::Style::TypeNames","name":"TypeNames","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/style/type_names.cr","line_number":55,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/style/type_names.cr#L55"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Type name should be camelcased: %s, but it was %s\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Style","kind":"module","full_name":"Ameba::Rule::Style","name":"Style"},"doc":"A rule that enforces type names in camelcase manner.\n\nFor example, these are considered valid:\n\n```\nclass ParseError < Exception\nend\n\nmodule HTTP\n class RequestHandler\n end\nend\n\nalias NumericValue = Float32 | Float64 | Int32 | Int64\n\nlib LibYAML\nend\n\nstruct TagDirective\nend\n\nenum Time::DayOfWeek\nend\n```\n\nAnd these are invalid type names\n\n```\nclass My_class\nend\n\nmodule HTT_p\nend\n\nalias Numeric_value = Int32\n\nlib Lib_YAML\nend\n\nstruct Tag_directive\nend\n\nenum Time_enum::Day_of_week\nend\n```\n\nYAML configuration example:\n\n```\nStyle/TypeNames:\n Enabled: true\n```\n","summary":"

    A rule that enforces type names in camelcase manner.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that enforces type names in camelcase manner.\n\nFor example, these are considered valid:\n\n```\nclass ParseError < Exception\nend\n\nmodule HTTP\n class RequestHandler\n end\nend\n\nalias NumericValue = Float32 | Float64 | Int32 | Int64\n\nlib LibYAML\nend\n\nstruct TagDirective\nend\n\nenum Time::DayOfWeek\nend\n```\n\nAnd these are invalid type names\n\n```\nclass My_class\nend\n\nmodule HTT_p\nend\n\nalias Numeric_value = Int32\n\nlib Lib_YAML\nend\n\nstruct Tag_directive\nend\n\nenum Time_enum::Day_of_week\nend\n```\n\nYAML configuration example:\n\n```\nStyle/TypeNames:\n Enabled: true\n```\n","summary":"

    A rule that enforces type names in camelcase manner.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/style/type_names.cr#L55","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node:Crystal::ClassDef)-instance-method","html_id":"test(source,node:Crystal::ClassDef)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ClassDef"}],"args_string":"(source, node : Crystal::ClassDef)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/style/type_names.cr#L70","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ClassDef"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"check_node(source, node)"}},{"id":"test(source,node:Crystal::Alias)-instance-method","html_id":"test(source,node:Crystal::Alias)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Alias"}],"args_string":"(source, node : Crystal::Alias)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/style/type_names.cr#L74","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Alias"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"check_node(source, node)"}},{"id":"test(source,node:Crystal::LibDef)-instance-method","html_id":"test(source,node:Crystal::LibDef)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::LibDef"}],"args_string":"(source, node : Crystal::LibDef)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/style/type_names.cr#L78","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::LibDef"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"check_node(source, node)"}},{"id":"test(source,node:Crystal::EnumDef)-instance-method","html_id":"test(source,node:Crystal::EnumDef)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::EnumDef"}],"args_string":"(source, node : Crystal::EnumDef)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/style/type_names.cr#L82","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::EnumDef"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"check_node(source, node)"}},{"id":"test(source,node:Crystal::ModuleDef)-instance-method","html_id":"test(source,node:Crystal::ModuleDef)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ModuleDef"}],"args_string":"(source, node : Crystal::ModuleDef)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/style/type_names.cr#L86","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ModuleDef"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"check_node(source, node)"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Style/UnlessElse","path":"Ameba/Rule/Style/UnlessElse.html","kind":"struct","full_name":"Ameba::Rule::Style::UnlessElse","name":"UnlessElse","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/style/unless_else.cr","line_number":46,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/style/unless_else.cr#L46"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Favour if over unless with else\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Style","kind":"module","full_name":"Ameba::Rule::Style","name":"Style"},"doc":"A rule that disallows the use of an `else` block with the `unless`.\n\nFor example, the rule considers these valid:\n\n```\nunless something\n :ok\nend\n\nif something\n :one\nelse\n :two\nend\n```\n\nBut it considers this one invalid as it is an `unless` with an `else`:\n\n```\nunless something\n :one\nelse\n :two\nend\n```\n\nThe solution is to swap the order of the blocks, and change the `unless` to\nan `if`, so the previous invalid example would become this:\n\n```\nif something\n :two\nelse\n :one\nend\n```\n\nYAML configuration example:\n\n```\nStyle/UnlessElse:\n Enabled: true\n```\n","summary":"

    A rule that disallows the use of an else block with the unless.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows the use of an `else` block with the `unless`.\n\nFor example, the rule considers these valid:\n\n```\nunless something\n :ok\nend\n\nif something\n :one\nelse\n :two\nend\n```\n\nBut it considers this one invalid as it is an `unless` with an `else`:\n\n```\nunless something\n :one\nelse\n :two\nend\n```\n\nThe solution is to swap the order of the blocks, and change the `unless` to\nan `if`, so the previous invalid example would become this:\n\n```\nif something\n :two\nelse\n :one\nend\n```\n\nYAML configuration example:\n\n```\nStyle/UnlessElse:\n Enabled: true\n```\n","summary":"

    A rule that disallows the use of an else block with the unless.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/style/unless_else.cr#L46","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node:Crystal::Unless)-instance-method","html_id":"test(source,node:Crystal::Unless)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Unless"}],"args_string":"(source, node : Crystal::Unless)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/style/unless_else.cr#L53","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Unless"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if node.else.nop?\n return\nend\nissue_for(node, MSG)\n"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Style/VariableNames","path":"Ameba/Rule/Style/VariableNames.html","kind":"struct","full_name":"Ameba::Rule::Style::VariableNames","name":"VariableNames","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/style/variable_names.cr","line_number":26,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/style/variable_names.cr#L26"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Var name should be underscore-cased: %s, not %s\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Style","kind":"module","full_name":"Ameba::Rule::Style","name":"Style"},"doc":"A rule that enforces variable names to be in underscored case.\n\nFor example, these variable names are considered valid:\n\n```\nvar_name = 1\nname = 2\n_another_good_name = 3\n```\n\nAnd these are invalid variable names:\n\n```\nmyBadNamedVar = 1\nwrong_Name = 2\n```\n\nYAML configuration example:\n\n```\nStyle/VariableNames:\n Enabled: true\n```\n","summary":"

    A rule that enforces variable names to be in underscored case.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that enforces variable names to be in underscored case.\n\nFor example, these variable names are considered valid:\n\n```\nvar_name = 1\nname = 2\n_another_good_name = 3\n```\n\nAnd these are invalid variable names:\n\n```\nmyBadNamedVar = 1\nwrong_Name = 2\n```\n\nYAML configuration example:\n\n```\nStyle/VariableNames:\n Enabled: true\n```\n","summary":"

    A rule that enforces variable names to be in underscored case.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/style/variable_names.cr#L26","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node:Crystal::Var)-instance-method","html_id":"test(source,node:Crystal::Var)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Var"}],"args_string":"(source, node : Crystal::Var)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/style/variable_names.cr#L39","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Var"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"check_node(source, node)"}},{"id":"test(source,node:Crystal::InstanceVar)-instance-method","html_id":"test(source,node:Crystal::InstanceVar)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::InstanceVar"}],"args_string":"(source, node : Crystal::InstanceVar)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/style/variable_names.cr#L43","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::InstanceVar"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"check_node(source, node)"}},{"id":"test(source,node:Crystal::ClassVar)-instance-method","html_id":"test(source,node:Crystal::ClassVar)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ClassVar"}],"args_string":"(source, node : Crystal::ClassVar)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/style/variable_names.cr#L47","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ClassVar"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"check_node(source, node)"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Style/WhileTrue","path":"Ameba/Rule/Style/WhileTrue.html","kind":"struct","full_name":"Ameba::Rule::Style::WhileTrue","name":"WhileTrue","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/style/while_true.cr","line_number":29,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/style/while_true.cr#L29"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"While statement using true literal as condition\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Style","kind":"module","full_name":"Ameba::Rule::Style","name":"Style"},"doc":"A rule that disallows the use of `while true` instead of using the idiomatic `loop`\n\nFor example, this is considered invalid:\n\n```\nwhile true\n do_something\n break if some_condition\nend\n```\n\nAnd should be replaced by the following:\n\n```\nloop do\n do_something\n break if some_condition\nend\n```\n\nYAML configuration example:\n\n```\nStyle/WhileTrue:\n Enabled: true\n```\n","summary":"

    A rule that disallows the use of while true instead of using the idiomatic loop

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows the use of `while true` instead of using the idiomatic `loop`\n\nFor example, this is considered invalid:\n\n```\nwhile true\n do_something\n break if some_condition\nend\n```\n\nAnd should be replaced by the following:\n\n```\nloop do\n do_something\n break if some_condition\nend\n```\n\nYAML configuration example:\n\n```\nStyle/WhileTrue:\n Enabled: true\n```\n","summary":"

    A rule that disallows the use of while true instead of using the idiomatic loop

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/style/while_true.cr#L29","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node:Crystal::While)-instance-method","html_id":"test(source,node:Crystal::While)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::While"}],"args_string":"(source, node : Crystal::While)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/style/while_true.cr#L36","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::While"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if node.cond.true_literal?\nelse\n return\nend\nissue_for(node, MSG)\n"}}],"macros":[],"types":[]}]}]},{"html_id":"ameba/Ameba/Runner","path":"Ameba/Runner.html","kind":"class","full_name":"Ameba::Runner","name":"Runner","abstract":false,"superclass":{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},"ancestors":[{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/runner.cr","line_number":13,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/runner.cr#L13"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba","kind":"module","full_name":"Ameba","name":"Ameba"},"doc":"Represents a runner for inspecting sources files.\nHolds a list of rules to do inspection based on,\nlist of sources to run inspection on and a formatter\nto prepare a report.\n\n```\nconfig = Ameba::Config.load\nrunner = Ameba::Runner.new config\nrunner.run.success? # => true or false\n```\n","summary":"

    Represents a runner for inspecting sources files.

    ","class_methods":[],"constructors":[{"id":"new(config:Config)-class-method","html_id":"new(config:Config)-class-method","name":"new","doc":"Instantiates a runner using a `config`.\n\n```\nconfig = Ameba::Config.load\nconfig.files = files\nconfig.formatter = formatter\n\nAmeba::Runner.new config\n```\n","summary":"

    Instantiates a runner using a config.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"","external_name":"config","restriction":"Config"}],"args_string":"(config : Config)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/runner.cr#L42","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"","external_name":"config","restriction":"Config"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"_ = allocate\n_.initialize(config)\nif _.responds_to?(:finalize)\n ::GC.add_finalizer(_)\nend\n_\n"}}],"instance_methods":[{"id":"explain(location,output=STDOUT)-instance-method","html_id":"explain(location,output=STDOUT)-instance-method","name":"explain","doc":"Explains an issue at a specified *location*.\n\nRunner should perform inspection before doing the explain.\nThis is necessary to be able to find the issue at a specified location.\n\n```\nrunner = Ameba::Runner.new config\nrunner.run\nrunner.explain({file: file, line: l, column: c})\n```\n","summary":"

    Explains an issue at a specified location.

    ","abstract":false,"args":[{"name":"location","doc":null,"default_value":"","external_name":"location","restriction":""},{"name":"output","doc":null,"default_value":"STDOUT","external_name":"output","restriction":""}],"args_string":"(location, output = STDOUT)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/runner.cr#L118","def":{"name":"explain","args":[{"name":"location","doc":null,"default_value":"","external_name":"location","restriction":""},{"name":"output","doc":null,"default_value":"STDOUT","external_name":"output","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"(Formatter::ExplainFormatter.new(output, location)).finished(@sources)"}},{"id":"run-instance-method","html_id":"run-instance-method","name":"run","doc":"Performs the inspection. Iterates through all sources and test it using\nlist of rules. If a specific rule fails on a specific source, it adds\nan issue to that source.\n\nThis action also notifies formatter when inspection is started/finished,\nand when a specific source started/finished to be inspected.\n\n```\nrunner = Ameba::Runner.new config\nrunner.run # => returns runner again\n```\n","summary":"

    Performs the inspection.

    ","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/runner.cr#L69","def":{"name":"run","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"begin\n @formatter.started(@sources)\n channels = @sources.map do\n Channel(Exception | ::Nil).new\n end\n @sources.each_with_index do |source, idx|\n channel = channels[idx]\n spawn do\n begin\n run_source(source)\n rescue e\n channel.send(e)\n else\n channel.send(nil)\n end\n end\n end\n channels.each do |c|\n e = c.receive\n if e.nil?\n else\n raise(e)\n end\n end\n self\nensure\n @formatter.finished(@sources)\nend"}},{"id":"sources:Array(Source)-instance-method","html_id":"sources:Array(Source)-instance-method","name":"sources","doc":"A list of sources to run inspection on.","summary":"

    A list of sources to run inspection on.

    ","abstract":false,"args":[],"args_string":" : Array(Source)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/runner.cr#L18","def":{"name":"sources","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(Source)","visibility":"Public","body":"@sources"}},{"id":"success?-instance-method","html_id":"success?-instance-method","name":"success?","doc":"Indicates whether the last inspection successful or not.\nIt returns true if no issues matching severity in sources found, false otherwise.\n\n```\nrunner = Ameba::Runner.new config\nrunner.run\nrunner.success? # => true or false\n```\n","summary":"

    Indicates whether the last inspection successful or not.

    ","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/runner.cr#L131","def":{"name":"success?","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@sources.all? do |source|\n source.issues.reject(&.disabled?).none? do |issue|\n issue.rule.severity <= @severity\n end\nend"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Severity","path":"Ameba/Severity.html","kind":"enum","full_name":"Ameba::Severity","name":"Severity","abstract":false,"superclass":null,"ancestors":[{"html_id":"ameba/Enum","kind":"struct","full_name":"Enum","name":"Enum"},{"html_id":"ameba/Comparable","kind":"module","full_name":"Comparable","name":"Comparable"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/severity.cr","line_number":2,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/severity.cr#L2"}],"repository_name":"ameba","program":false,"enum":true,"alias":false,"aliased":"","const":false,"constants":[{"id":"Error","name":"Error","value":"0","doc":null,"summary":null},{"id":"Warning","name":"Warning","value":"1","doc":null,"summary":null},{"id":"Convention","name":"Convention","value":"2","doc":null,"summary":null}],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba","kind":"module","full_name":"Ameba","name":"Ameba"},"doc":null,"summary":null,"class_methods":[{"id":"parse(name:String)-class-method","html_id":"parse(name:String)-class-method","name":"parse","doc":"Creates Severity by the name.\n\n```\nSeverity.parse(\"convention\") # => Severity::Convention\nSeverity.parse(\"foo-bar\") # => Exception: Incorrect severity name\n```\n","summary":"

    Creates Severity by the name.

    ","abstract":false,"args":[{"name":"name","doc":null,"default_value":"","external_name":"name","restriction":"String"}],"args_string":"(name : String)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/severity.cr#L23","def":{"name":"parse","args":[{"name":"name","doc":null,"default_value":"","external_name":"name","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"begin\n super(name)\nrescue ArgumentError\n raise(\"Incorrect severity name #{name}. Try one of #{values}\")\nend"}}],"constructors":[],"instance_methods":[{"id":"convention?-instance-method","html_id":"convention?-instance-method","name":"convention?","doc":null,"summary":null,"abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/severity.cr#L5","def":{"name":"convention?","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"self == Convention"}},{"id":"error?-instance-method","html_id":"error?-instance-method","name":"error?","doc":null,"summary":null,"abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/severity.cr#L3","def":{"name":"error?","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"self == Error"}},{"id":"symbol-instance-method","html_id":"symbol-instance-method","name":"symbol","doc":"Returns a symbol uniquely indicating severity.\n\n```\nSeverity::Warning.symbol # => 'W'\n```","summary":"

    Returns a symbol uniquely indicating severity.

    ","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/severity.cr#L12","def":{"name":"symbol","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"to_s[0]"}},{"id":"warning?-instance-method","html_id":"warning?-instance-method","name":"warning?","doc":null,"summary":null,"abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/severity.cr#L4","def":{"name":"warning?","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"self == Warning"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/SeverityYamlConverter","path":"Ameba/SeverityYamlConverter.html","kind":"class","full_name":"Ameba::SeverityYamlConverter","name":"SeverityYamlConverter","abstract":false,"superclass":{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},"ancestors":[{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/severity.cr","line_number":31,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/severity.cr#L31"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba","kind":"module","full_name":"Ameba","name":"Ameba"},"doc":"Converter for `YAML.mapping` which converts severity enum to and from YAML.","summary":"

    Converter for YAML.mapping which converts severity enum to and from YAML.

    ","class_methods":[{"id":"from_yaml(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"from_yaml(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"from_yaml","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/severity.cr#L32","def":{"name":"from_yaml","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if node.is_a?(YAML::Nodes::Scalar)\nelse\n raise(\"Severity must be a scalar, not #{node.class}\")\nend\ncase value = node.value\nwhen String\n Severity.parse(value)\nwhen Nil\n nil\nelse\n raise(\"Incorrect severity: #{value}\")\nend\n"}},{"id":"to_yaml(value:Severity,yaml:YAML::Nodes::Builder)-class-method","html_id":"to_yaml(value:Severity,yaml:YAML::Nodes::Builder)-class-method","name":"to_yaml","doc":null,"summary":null,"abstract":false,"args":[{"name":"value","doc":null,"default_value":"","external_name":"value","restriction":"Severity"},{"name":"yaml","doc":null,"default_value":"","external_name":"yaml","restriction":"YAML::Nodes::Builder"}],"args_string":"(value : Severity, yaml : YAML::Nodes::Builder)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/severity.cr#L45","def":{"name":"to_yaml","args":[{"name":"value","doc":null,"default_value":"","external_name":"value","restriction":"Severity"},{"name":"yaml","doc":null,"default_value":"","external_name":"yaml","restriction":"YAML::Nodes::Builder"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"yaml.scalar(value)"}}],"constructors":[],"instance_methods":[],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Source","path":"Ameba/Source.html","kind":"class","full_name":"Ameba::Source","name":"Source","abstract":false,"superclass":{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},"ancestors":[{"html_id":"ameba/Ameba/Reportable","kind":"module","full_name":"Ameba::Reportable","name":"Reportable"},{"html_id":"ameba/Ameba/InlineComments","kind":"module","full_name":"Ameba::InlineComments","name":"InlineComments"},{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/source.cr","line_number":4,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/source.cr#L4"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[{"html_id":"ameba/Ameba/InlineComments","kind":"module","full_name":"Ameba::InlineComments","name":"InlineComments"},{"html_id":"ameba/Ameba/Reportable","kind":"module","full_name":"Ameba::Reportable","name":"Reportable"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba","kind":"module","full_name":"Ameba","name":"Ameba"},"doc":"An entity that represents a Crystal source file.\nHas path, lines of code and issues reported by rules.","summary":"

    An entity that represents a Crystal source file.

    ","class_methods":[],"constructors":[{"id":"new(code:String,path="")-class-method","html_id":"new(code:String,path="")-class-method","name":"new","doc":"Creates a new source by `code` and `path`.\n\nFor example:\n\n```\npath = \"./src/source.cr\"\nAmeba::Source.new File.read(path), path\n```\n","summary":"

    Creates a new source by #code and #path.

    ","abstract":false,"args":[{"name":"code","doc":null,"default_value":"","external_name":"code","restriction":"String"},{"name":"path","doc":null,"default_value":"\"\"","external_name":"path","restriction":""}],"args_string":"(code : String, path = "")","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/source.cr#L27","def":{"name":"new","args":[{"name":"code","doc":null,"default_value":"","external_name":"code","restriction":"String"},{"name":"path","doc":null,"default_value":"\"\"","external_name":"path","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"_ = allocate\n_.initialize(code, path)\nif _.responds_to?(:finalize)\n ::GC.add_finalizer(_)\nend\n_\n"}}],"instance_methods":[{"id":"ast-instance-method","html_id":"ast-instance-method","name":"ast","doc":"Returns AST nodes constructed by `Crystal::Parser`.\n\n```\nsource = Ameba::Source.new code, path\nsource.ast\n```\n","summary":"

    Returns AST nodes constructed by Crystal::Parser.

    ","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/source.cr#L52","def":{"name":"ast","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@ast || (@ast = (Crystal::Parser.new(code)).tap do |parser|\n parser.wants_doc = true\nend.tap do |parser|\n parser.filename = @path\nend.parse)"}},{"id":"code:String-instance-method","html_id":"code:String-instance-method","name":"code","doc":"Crystal code (content of a source file).","summary":"

    Crystal code (content of a source file).

    ","abstract":false,"args":[],"args_string":" : String","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/source.cr#L12","def":{"name":"code","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@code"}},{"id":"fullpath-instance-method","html_id":"fullpath-instance-method","name":"fullpath","doc":null,"summary":null,"abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/source.cr#L60","def":{"name":"fullpath","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@fullpath || (@fullpath = File.expand_path(@path))"}},{"id":"lines-instance-method","html_id":"lines-instance-method","name":"lines","doc":"Returns lines of code splitted by new line character.\nSince `code` is immutable and can't be changed, this\nmethod caches lines in an instance variable, so calling\nit second time will not perform a split, but will return\nlines instantly.\n\n```\nsource = Ameba::Source.new \"a = 1\\nb = 2\", path\nsource.lines # => [\"a = 1\", \"b = 2\"]\n```\n","summary":"

    Returns lines of code splitted by new line character.

    ","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/source.cr#L41","def":{"name":"lines","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@lines || (@lines = @code.split(\"\\n\"))"}},{"id":"matches_path?(filepath)-instance-method","html_id":"matches_path?(filepath)-instance-method","name":"matches_path?","doc":"Returns true if *filepath* matches the source's path, false if it does not.","summary":"

    Returns true if filepath matches the source's path, false if it does not.

    ","abstract":false,"args":[{"name":"filepath","doc":null,"default_value":"","external_name":"filepath","restriction":""}],"args_string":"(filepath)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/source.cr#L65","def":{"name":"matches_path?","args":[{"name":"filepath","doc":null,"default_value":"","external_name":"filepath","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"(path == filepath) || (path == (File.expand_path(filepath)))"}},{"id":"path:String-instance-method","html_id":"path:String-instance-method","name":"path","doc":"Path to the source file.","summary":"

    Path to the source file.

    ","abstract":false,"args":[],"args_string":" : String","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/source.cr#L9","def":{"name":"path","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@path"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Tokenizer","path":"Ameba/Tokenizer.html","kind":"class","full_name":"Ameba::Tokenizer","name":"Tokenizer","abstract":false,"superclass":{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},"ancestors":[{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/tokenizer.cr","line_number":14,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/tokenizer.cr#L14"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba","kind":"module","full_name":"Ameba","name":"Ameba"},"doc":"Represents Crystal syntax tokenizer based on `Crystal::Lexer`.\n\n```\nsource = Ameba::Source.new code, path\ntokenizer = Ameba::Tokenizer.new(source)\ntokenizer.run do |token|\n puts token\nend\n```\n","summary":"

    Represents Crystal syntax tokenizer based on Crystal::Lexer.

    ","class_methods":[],"constructors":[{"id":"new(lexer:Crystal::Lexer)-class-method","html_id":"new(lexer:Crystal::Lexer)-class-method","name":"new","doc":"Instantiates Tokenizer using a `lexer`.\n\n```\nlexer = Crystal::Lexer.new(code)\nAmeba::Tokenizer.new(lexer)\n```\n","summary":"

    Instantiates Tokenizer using a lexer.

    ","abstract":false,"args":[{"name":"lexer","doc":null,"default_value":"","external_name":"lexer","restriction":"Crystal::Lexer"}],"args_string":"(lexer : Crystal::Lexer)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/tokenizer.cr#L37","def":{"name":"new","args":[{"name":"lexer","doc":null,"default_value":"","external_name":"lexer","restriction":"Crystal::Lexer"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"_ = allocate\n_.initialize(lexer)\nif _.responds_to?(:finalize)\n ::GC.add_finalizer(_)\nend\n_\n"}},{"id":"new(source)-class-method","html_id":"new(source)-class-method","name":"new","doc":"Instantiates Tokenizer using a `source`.\n\n```\nsource = Ameba::Source.new code, path\nAmeba::Tokenizer.new(source)\n```\n","summary":"

    Instantiates Tokenizer using a source.

    ","abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"args_string":"(source)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/tokenizer.cr#L22","def":{"name":"new","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"_ = allocate\n_.initialize(source)\nif _.responds_to?(:finalize)\n ::GC.add_finalizer(_)\nend\n_\n"}}],"instance_methods":[{"id":"run(&block:Crystal::Token->_)-instance-method","html_id":"run(&block:Crystal::Token->_)-instance-method","name":"run","doc":"Runs the tokenizer and yields each token as a block argument.\n\n```\nAmeba::Tokenizer.new(source).run do |token|\n puts token\nend\n```\n","summary":"

    Runs the tokenizer and yields each token as a block argument.

    ","abstract":false,"args":[],"args_string":"(&block : Crystal::Token -> _)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/tokenizer.cr#L48","def":{"name":"run","args":[],"double_splat":null,"splat_index":null,"yields":1,"block_arg":{"name":"block","doc":null,"default_value":"","external_name":"block","restriction":"(Crystal::Token -> _)"},"return_type":"","visibility":"Public","body":"begin\n run_normal_state(@lexer, &block)\n true\nrescue e : Crystal::SyntaxException\n false\nend"}}],"macros":[],"types":[]}]}]}} \ No newline at end of file diff --git a/search-index.js b/search-index.js index 1d54e99f..5808c4a3 100644 --- a/search-index.js +++ b/search-index.js @@ -1 +1 @@ -crystal_doc_search_index_callback({"repository_name":"ameba","body":"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n- [About](#about)\n- [Usage](#usage)\n * [Run in parallel](#run-in-parallel)\n- [Installation](#installation)\n * [As a project dependency:](#as-a-project-dependency)\n * [OS X](#os-x)\n * [Docker](#docker)\n * [From sources](#from-sources)\n- [Configuration](#configuration)\n * [Sources](#sources)\n * [Rules](#rules)\n * [Explain issues](#explain-issues)\n * [Inline disabling](#inline-disabling)\n- [Editors & integrations](#editors--integrations)\n- [Credits & inspirations](#credits--inspirations)\n- [Contributors](#contributors)\n\n## About\n\nAmeba is a static code analysis tool for the Crystal language.\nIt enforces a consistent [Crystal code style](https://crystal-lang.org/docs/conventions/coding_style.html),\nalso catches code smells and wrong code constructions.\n\nSee also [Roadmap](https://github.com/crystal-ameba/ameba/wiki).\n\n## Usage\n\nRun `ameba` binary within your project directory to catch code issues:\n\n```sh\n$ ameba\nInspecting 107 files.\n\n...............F.....................F....................................................................\n\nsrc/ameba/formatter/flycheck_formatter.cr:4:33\n[W] Lint/UnusedArgument: Unused argument `location`\n> source.issues.each do |e, location|\n ^\n\nsrc/ameba/formatter/base_formatter.cr:12:7\n[W] Lint/UselessAssign: Useless assignment to variable `s`\n> return s += issues.size\n ^\n\nFinished in 542.64 milliseconds\n\n129 inspected, 2 failures.\n\n```\n\n### Run in parallel\n\nStarting from 0.31.0 Crystal [supports parallelism](https://crystal-lang.org/2019/09/06/parallelism-in-crystal.html).\nIt allows to run linting in parallel too.\nIn order to take advantage of this feature you need to build ameba with preview_mt support:\n\n```sh\n$ crystal build src/cli.cr -Dpreview_mt -o bin/ameba\n$ make install\n```\n\nSome quick benchmark results measured while running Ameba on Crystal repo:\n\n```sh\n$ CRYSTAL_WORKERS=1 ameba #=> 29.11 seconds\n$ CRYSTAL_WORKERS=2 ameba #=> 19.49 seconds\n$ CRYSTAL_WORKERS=4 ameba #=> 13.48 seconds\n$ CRYSTAL_WORKERS=8 ameba #=> 10.14 seconds\n```\n\n## Installation\n\n### As a project dependency:\n\nAdd this to your application's `shard.yml`:\n\n```yaml\ndevelopment_dependencies:\n ameba:\n github: crystal-ameba/ameba\n version: ~> 0.13.0\n```\n\nBuild `bin/ameba` binary within your project directory while running `shards install`.\n\nYou may also want to use it on [Travis](travis-ci.org):\n\n```yaml\n# .travis.yml\nlanguage: crystal\ninstall:\n - shards install\nscript:\n - crystal spec\n - crystal bin/ameba.cr\n```\n\nUsing this config Ameba will inspect files just after the specs run. Travis will also fail\nthe build if some problems detected.\n\n### OS X\n\n```sh\n$ brew tap veelenga/tap\n$ brew install ameba\n```\n\n### Docker\n\nBuild the image:\n\n```sh\n$ docker build -t crystal-ameba/ameba .\n```\n\nTo use the resulting image on a local source folder, mount the current (or target) directory into `/src`:\n\n```sh\n$ docker run -v $(pwd):/src crystal-ameba/ameba\n```\n\nAlso available on DockerHub: https://hub.docker.com/r/veelenga/ameba\n\n### From sources\n\n```sh\n$ git clone https://github.com/crystal-ameba/ameba && cd ameba\n$ make install\n```\n\n## Configuration\n\nDefault configuration file is `.ameba.yml`.\nIt allows to configure rule properties, disable specific rules and exclude sources from the rules.\n\nGenerate new file by running `ameba --gen-config`.\n\n### Sources\n\n**List of sources to run Ameba on can be configured globally via:**\n\n- `Globs` section - an array of wildcards (or paths) to include to the\n inspection. Defaults to `%w(**/*.cr !lib)`, meaning it includes all project\n files with `*.cr` extension except those which exist in `lib` folder.\n- `Excluded` section - an array of wildcards (or paths) to exclude from the\n source list defined by `Globs`. Defaults to an empty array.\n\nIn this example we define default globs and exclude `src/compiler` folder:\n\n``` yaml\nGlobs:\n - **/*.cr\n - !lib\n\nExcluded:\n - src/compiler\n```\n\n**Specific sources can be excluded at rule level**:\n\n``` yaml\nStyle/RedundantBegin:\n Excluded:\n - src/server/processor.cr\n - src/server/api.cr\n```\n\n### Rules\n\nOne or more rules, or a one or more group of rules can be included or excluded\nvia command line arguments:\n\n```sh\n$ ameba --only Lint/Syntax # runs only Lint/Syntax rule\n$ ameba --only Style,Lint # runs only rules from Style and Lint groups\n$ ameba --except Lint/Syntax # runs all rules except Lint/Syntax\n$ ameba --except Style,Lint # runs all rules except rules in Style and Lint groups\n```\n\nOr through the configuration file:\n\n``` yaml\nStyle/RedundantBegin:\n Enabled: false\n```\n\n### Explain issues\n\nAmeba allows you to dig deeper into an issue, by showing you details about the issue\nand the reasoning by it being reported.\n\nTo be convenient, you can just copy-paste the `PATH:line:column` string from the\nreport and paste behind the `ameba` command to check it out.\n\n```sh\n$ ameba crystal/command/format.cr:26:83 # show explanation for the issue\n$ ameba --explain crystal/command/format.cr:26:83 # same thing\n```\n\n### Inline disabling\n\nOne or more rules or one or more group of rules can be disabled using inline directives:\n\n```crystal\n# ameba:disable Style/LargeNumbers\ntime = Time.epoch(1483859302)\n\ntime = Time.epoch(1483859302) # ameba:disable Style/LargeNumbers, Lint/UselessAssign\n\ntime = Time.epoch(1483859302) # ameba:disable Style, Lint\n```\n\n## Editors & integrations\n\n * Vim: [vim-crystal](https://github.com/rhysd/vim-crystal), [Ale](https://github.com/w0rp/ale)\n * Emacs: [ameba.el](https://github.com/crystal-ameba/ameba.el)\n * Sublime Text: [Sublime Linter Ameba](https://github.com/epergo/SublimeLinter-contrib-ameba)\n * VSCode: [vscode-crystal-ameba](https://github.com/crystal-ameba/vscode-crystal-ameba)\n * Codacy: [codacy-ameba](https://github.com/codacy/codacy-ameba)\n * GitHub Actions: [github-action](https://github.com/crystal-ameba/github-action)\n\n## Credits & inspirations\n\n- [Crystal Language](https://crystal-lang.org)\n- [Rubocop](https://rubocop.readthedocs.io/en/latest/)\n- [Credo](http://credo-ci.org/)\n- [Dogma](https://github.com/lpil/dogma)\n\n## Contributors\n\n- [veelenga](https://github.com/veelenga) Vitalii Elenhaupt - creator, maintainer\n","program":{"html_id":"ameba/toplevel","path":"toplevel.html","kind":"module","full_name":"Top Level Namespace","name":"Top Level Namespace","abstract":false,"superclass":null,"ancestors":[],"locations":[],"repository_name":"ameba","program":true,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":null,"doc":null,"summary":null,"class_methods":[],"constructors":[],"instance_methods":[],"macros":[],"types":[{"html_id":"ameba/Ameba","path":"Ameba.html","kind":"module","full_name":"Ameba","name":"Ameba","abstract":false,"superclass":null,"ancestors":[],"locations":[{"filename":"src/ameba.cr","line_number":24,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba.cr#L24"},{"filename":"src/ameba/glob_utils.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/glob_utils.cr#L1"},{"filename":"src/ameba/inline_comments.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/inline_comments.cr#L1"},{"filename":"src/ameba/issue.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/issue.cr#L1"},{"filename":"src/ameba/reportable.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/reportable.cr#L1"},{"filename":"src/ameba/runner.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/runner.cr#L1"},{"filename":"src/ameba/severity.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/severity.cr#L1"},{"filename":"src/ameba/source.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/source.cr#L1"},{"filename":"src/ameba/tokenizer.cr","line_number":3,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/tokenizer.cr#L3"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"VERSION","name":"VERSION","value":"{{ (`shards version \\\"/home/runner/work/ameba/ameba/src\\\"`).chomp.stringify }}","doc":null,"summary":null}],"included_modules":[],"extended_modules":[{"html_id":"ameba/Ameba","kind":"module","full_name":"Ameba","name":"Ameba"}],"subclasses":[],"including_types":[],"namespace":null,"doc":"Ameba's entry module.\n\nTo run the linter with default parameters:\n\n```\nAmeba.run\n```\n\nTo configure and run it:\n\n```\nconfig = Ameba::Config.load\nconfig.formatter = formatter\nconfig.files = file_paths\n\nAmeba.run config\n```\n","summary":"

    Ameba's entry module.

    ","class_methods":[],"constructors":[],"instance_methods":[{"id":"run(config=Config.load)-instance-method","html_id":"run(config=Config.load)-instance-method","name":"run","doc":"Initializes `Ameba::Runner` and runs it.\nCan be configured via `config` parameter.\n\nExamples:\n\n```\nAmeba.run\nAmeba.run config\n```\n","summary":"

    Initializes Ameba::Runner and runs it.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"Config.load","external_name":"config","restriction":""}],"args_string":"(config = Config.load)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba.cr#L39","def":{"name":"run","args":[{"name":"config","doc":null,"default_value":"Config.load","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"(Runner.new(config)).run"}}],"macros":[],"types":[{"html_id":"ameba/Ameba/AST","path":"Ameba/AST.html","kind":"module","full_name":"Ameba::AST","name":"AST","abstract":false,"superclass":null,"ancestors":[],"locations":[{"filename":"src/ameba/ast/branch.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/branch.cr#L1"},{"filename":"src/ameba/ast/branchable.cr","line_number":3,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/branchable.cr#L3"},{"filename":"src/ameba/ast/flow_expression.cr","line_number":3,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/flow_expression.cr#L3"},{"filename":"src/ameba/ast/scope.cr","line_number":3,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/scope.cr#L3"},{"filename":"src/ameba/ast/variabling/argument.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/variabling/argument.cr#L1"},{"filename":"src/ameba/ast/variabling/assignment.cr","line_number":4,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/variabling/assignment.cr#L4"},{"filename":"src/ameba/ast/variabling/ivariable.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/variabling/ivariable.cr#L1"},{"filename":"src/ameba/ast/variabling/reference.cr","line_number":3,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/variabling/reference.cr#L3"},{"filename":"src/ameba/ast/variabling/variable.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/variabling/variable.cr#L1"},{"filename":"src/ameba/ast/visitors/base_visitor.cr","line_number":4,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/visitors/base_visitor.cr#L4"},{"filename":"src/ameba/ast/visitors/counting_visitor.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/visitors/counting_visitor.cr#L1"},{"filename":"src/ameba/ast/visitors/flow_expression_visitor.cr","line_number":4,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/visitors/flow_expression_visitor.cr#L4"},{"filename":"src/ameba/ast/visitors/node_visitor.cr","line_number":3,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/visitors/node_visitor.cr#L3"},{"filename":"src/ameba/ast/visitors/redundant_control_expression_visitor.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/visitors/redundant_control_expression_visitor.cr#L1"},{"filename":"src/ameba/ast/visitors/scope_visitor.cr","line_number":3,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/visitors/scope_visitor.cr#L3"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"NODES","name":"NODES","value":"[Alias, IsA, Assign, Call, Block, Case, ClassDef, ClassVar, Def, EnumDef, ExceptionHandler, Expressions, HashLiteral, If, InstanceVar, LibDef, ModuleDef, NilLiteral, StringInterpolation, Unless, Var, When, While, Until]","doc":"List of nodes to be visited by Ameba's rules.","summary":"

    List of nodes to be visited by Ameba's rules.

    "}],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba","kind":"module","full_name":"Ameba","name":"Ameba"},"doc":"A module that helps to traverse Crystal AST using `Crystal::Visitor`.","summary":"

    A module that helps to traverse Crystal AST using Crystal::Visitor.

    ","class_methods":[],"constructors":[],"instance_methods":[],"macros":[],"types":[{"html_id":"ameba/Ameba/AST/Argument","path":"Ameba/AST/Argument.html","kind":"class","full_name":"Ameba::AST::Argument","name":"Argument","abstract":false,"superclass":{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},"ancestors":[{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/ast/variabling/argument.cr","line_number":15,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/variabling/argument.cr#L15"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/AST","kind":"module","full_name":"Ameba::AST","name":"AST"},"doc":"Represents the argument of some node.\nHolds the reference to the variable, thus to scope.\n\nFor example, all these vars are arguments:\n\n```\ndef method(a, b, c = 10, &block)\n 3.times do |i|\n end\n\n ->(x : Int32) {}\nend\n```","summary":"

    Represents the argument of some node.

    ","class_methods":[],"constructors":[{"id":"new(node,variable)-class-method","html_id":"new(node,variable)-class-method","name":"new","doc":"Creates a new argument.\n\n```\nArgument.new(node, variable)\n```","summary":"

    Creates a new argument.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""},{"name":"variable","doc":null,"default_value":"","external_name":"variable","restriction":""}],"args_string":"(node, variable)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/variabling/argument.cr#L31","def":{"name":"new","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""},{"name":"variable","doc":null,"default_value":"","external_name":"variable","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"_ = allocate\n_.initialize(node, variable)\nif _.responds_to?(:finalize)\n ::GC.add_finalizer(_)\nend\n_\n"}}],"instance_methods":[{"id":"end_location(*args,**options)-instance-method","html_id":"end_location(*args,**options)-instance-method","name":"end_location","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/variabling/argument.cr#L23","def":{"name":"end_location","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.end_location(*args, **options)"}},{"id":"end_location(*args,**options,&)-instance-method","html_id":"end_location(*args,**options,&)-instance-method","name":"end_location","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options, &)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/variabling/argument.cr#L23","def":{"name":"end_location","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":1,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.end_location(*args, **options) do |*yield_args|\n yield *yield_args\nend"}},{"id":"ignored?-instance-method","html_id":"ignored?-instance-method","name":"ignored?","doc":"Returns true if the name starts with '_', false if not.","summary":"

    Returns true if the name starts with '_', false if not.

    ","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/variabling/argument.cr#L35","def":{"name":"ignored?","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"name.starts_with?('_')"}},{"id":"location(*args,**options)-instance-method","html_id":"location(*args,**options)-instance-method","name":"location","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/variabling/argument.cr#L22","def":{"name":"location","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.location(*args, **options)"}},{"id":"location(*args,**options,&)-instance-method","html_id":"location(*args,**options,&)-instance-method","name":"location","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options, &)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/variabling/argument.cr#L22","def":{"name":"location","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":1,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.location(*args, **options) do |*yield_args|\n yield *yield_args\nend"}},{"id":"name-instance-method","html_id":"name-instance-method","name":"name","doc":"Name of the argument.","summary":"

    Name of the argument.

    ","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/variabling/argument.cr#L40","def":{"name":"name","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"case current_node = node\nwhen Crystal::Var\n current_node.name\nwhen Crystal::Arg\n current_node.name\nelse\n raise(ArgumentError.new(\"invalid node\"))\nend"}},{"id":"node:Crystal::Var|Crystal::Arg-instance-method","html_id":"node:Crystal::Var|Crystal::Arg-instance-method","name":"node","doc":"The actual node.","summary":"

    The actual node.

    ","abstract":false,"args":[],"args_string":" : Crystal::Var | Crystal::Arg","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/variabling/argument.cr#L17","def":{"name":"node","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Crystal::Var | Crystal::Arg","visibility":"Public","body":"@node"}},{"id":"to_s(*args,**options)-instance-method","html_id":"to_s(*args,**options)-instance-method","name":"to_s","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/variabling/argument.cr#L24","def":{"name":"to_s","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.to_s(*args, **options)"}},{"id":"to_s(*args,**options,&)-instance-method","html_id":"to_s(*args,**options,&)-instance-method","name":"to_s","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options, &)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/variabling/argument.cr#L24","def":{"name":"to_s","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":1,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.to_s(*args, **options) do |*yield_args|\n yield *yield_args\nend"}},{"id":"variable:Variable-instance-method","html_id":"variable:Variable-instance-method","name":"variable","doc":"Variable of this argument (may be the same node)","summary":"

    Variable of this argument (may be the same node)

    ","abstract":false,"args":[],"args_string":" : Variable","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/variabling/argument.cr#L20","def":{"name":"variable","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Variable","visibility":"Public","body":"@variable"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/AST/Assignment","path":"Ameba/AST/Assignment.html","kind":"class","full_name":"Ameba::AST::Assignment","name":"Assignment","abstract":false,"superclass":{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},"ancestors":[{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/ast/variabling/assignment.cr","line_number":7,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/variabling/assignment.cr#L7"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/AST","kind":"module","full_name":"Ameba::AST","name":"AST"},"doc":"Represents the assignment to the variable.\nHolds the assign node and the variable.","summary":"

    Represents the assignment to the variable.

    ","class_methods":[],"constructors":[{"id":"new(node,variable,scope)-class-method","html_id":"new(node,variable,scope)-class-method","name":"new","doc":"Creates a new assignment.\n\n```\nAssignment.new(node, variable, scope)\n```\n","summary":"

    Creates a new assignment.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""},{"name":"variable","doc":null,"default_value":"","external_name":"variable","restriction":""},{"name":"scope","doc":null,"default_value":"","external_name":"scope","restriction":""}],"args_string":"(node, variable, scope)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/variabling/assignment.cr#L32","def":{"name":"new","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""},{"name":"variable","doc":null,"default_value":"","external_name":"variable","restriction":""},{"name":"scope","doc":null,"default_value":"","external_name":"scope","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"_ = allocate\n_.initialize(node, variable, scope)\nif _.responds_to?(:finalize)\n ::GC.add_finalizer(_)\nend\n_\n"}}],"instance_methods":[{"id":"branch:Branch?-instance-method","html_id":"branch:Branch?-instance-method","name":"branch","doc":"Branch of this assignment.","summary":"

    Branch of this assignment.

    ","abstract":false,"args":[],"args_string":" : Branch?","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/variabling/assignment.cr#L17","def":{"name":"branch","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Branch | ::Nil","visibility":"Public","body":"@branch"}},{"id":"end_location(*args,**options,&)-instance-method","html_id":"end_location(*args,**options,&)-instance-method","name":"end_location","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options, &)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/variabling/assignment.cr#L24","def":{"name":"end_location","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":1,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.end_location(*args, **options) do |*yield_args|\n yield *yield_args\nend"}},{"id":"end_location(*args,**options)-instance-method","html_id":"end_location(*args,**options)-instance-method","name":"end_location","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/variabling/assignment.cr#L24","def":{"name":"end_location","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.end_location(*args, **options)"}},{"id":"in_branch?-instance-method","html_id":"in_branch?-instance-method","name":"in_branch?","doc":"Returns true if this assignment is in a branch, false if not.\nFor example, this assignment is in a branch:\n\n```\na = 1 if a.nil?\n```","summary":"

    Returns true if this assignment is in a branch, false if not.

    ","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/variabling/assignment.cr#L61","def":{"name":"in_branch?","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"!branch.nil?"}},{"id":"location(*args,**options)-instance-method","html_id":"location(*args,**options)-instance-method","name":"location","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/variabling/assignment.cr#L23","def":{"name":"location","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.location(*args, **options)"}},{"id":"location(*args,**options,&)-instance-method","html_id":"location(*args,**options,&)-instance-method","name":"location","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options, &)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/variabling/assignment.cr#L23","def":{"name":"location","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":1,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.location(*args, **options) do |*yield_args|\n yield *yield_args\nend"}},{"id":"node:Crystal::ASTNode-instance-method","html_id":"node:Crystal::ASTNode-instance-method","name":"node","doc":"The actual assignment node.","summary":"

    The actual assignment node.

    ","abstract":false,"args":[],"args_string":" : Crystal::ASTNode","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/variabling/assignment.cr#L11","def":{"name":"node","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Crystal::ASTNode","visibility":"Public","body":"@node"}},{"id":"op_assign?-instance-method","html_id":"op_assign?-instance-method","name":"op_assign?","doc":"Returns true if this assignment is an op assign, false if not.\nFor example, this is an op assign:\n\n```\na ||= 1\n```","summary":"

    Returns true if this assignment is an op assign, false if not.

    ","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/variabling/assignment.cr#L51","def":{"name":"op_assign?","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"node.is_a?(Crystal::OpAssign)"}},{"id":"referenced=(referenced)-instance-method","html_id":"referenced=(referenced)-instance-method","name":"referenced=","doc":null,"summary":null,"abstract":false,"args":[{"name":"referenced","doc":null,"default_value":"","external_name":"referenced","restriction":""}],"args_string":"(referenced)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/variabling/assignment.cr#L8","def":{"name":"referenced=","args":[{"name":"referenced","doc":null,"default_value":"","external_name":"referenced","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@referenced = referenced"}},{"id":"referenced?:Bool-instance-method","html_id":"referenced?:Bool-instance-method","name":"referenced?","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/variabling/assignment.cr#L8","def":{"name":"referenced?","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@referenced"}},{"id":"referenced_in_loop?-instance-method","html_id":"referenced_in_loop?-instance-method","name":"referenced_in_loop?","doc":null,"summary":null,"abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/variabling/assignment.cr#L41","def":{"name":"referenced_in_loop?","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@variable.referenced? && @branch.try(&.in_loop?)"}},{"id":"scope:Scope-instance-method","html_id":"scope:Scope-instance-method","name":"scope","doc":"A scope assignment belongs to","summary":"

    A scope assignment belongs to

    ","abstract":false,"args":[],"args_string":" : Scope","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/variabling/assignment.cr#L20","def":{"name":"scope","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Scope","visibility":"Public","body":"@scope"}},{"id":"target_node-instance-method","html_id":"target_node-instance-method","name":"target_node","doc":"Returns the target node of the variable in this assignment.","summary":"

    Returns the target node of the variable in this assignment.

    ","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/variabling/assignment.cr#L66","def":{"name":"target_node","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"case assign = node\nwhen Crystal::Assign\n assign.target\nwhen Crystal::OpAssign\n assign.target\nwhen Crystal::UninitializedVar\n assign.var\nwhen Crystal::MultiAssign\n assign.targets.find(node) do |target|\n target.is_a?(Crystal::Var) && (target.name == variable.name)\n end\nelse\n node\nend"}},{"id":"to_s(*args,**options,&)-instance-method","html_id":"to_s(*args,**options,&)-instance-method","name":"to_s","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options, &)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/variabling/assignment.cr#L22","def":{"name":"to_s","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":1,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.to_s(*args, **options) do |*yield_args|\n yield *yield_args\nend"}},{"id":"to_s(*args,**options)-instance-method","html_id":"to_s(*args,**options)-instance-method","name":"to_s","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/variabling/assignment.cr#L22","def":{"name":"to_s","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.to_s(*args, **options)"}},{"id":"transformed?-instance-method","html_id":"transformed?-instance-method","name":"transformed?","doc":"Indicates whether the node is a transformed assignment by the compiler.\ni.e.\n\n```\ncollection.each do |(a, b)|\n puts b\nend\n```\n\nis transformed to:\n\n```\ncollection.each do |__arg0|\n a = __arg0[0]\n b = __arg0[1]\n puts(b)\nend\n```\n","summary":"

    Indicates whether the node is a transformed assignment by the compiler.

    ","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/variabling/assignment.cr#L99","def":{"name":"transformed?","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (assign = node).is_a?(Crystal::Assign)\nelse\n return false\nend\nif (value = assign.value).is_a?(Crystal::Call)\nelse\n return false\nend\nif (obj = value.obj).is_a?(Crystal::Var)\nelse\n return false\nend\nobj.name.starts_with?(\"__arg\")\n"}},{"id":"variable:Variable-instance-method","html_id":"variable:Variable-instance-method","name":"variable","doc":"Variable of this assignment.","summary":"

    Variable of this assignment.

    ","abstract":false,"args":[],"args_string":" : Variable","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/variabling/assignment.cr#L14","def":{"name":"variable","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Variable","visibility":"Public","body":"@variable"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/AST/BaseVisitor","path":"Ameba/AST/BaseVisitor.html","kind":"class","full_name":"Ameba::AST::BaseVisitor","name":"BaseVisitor","abstract":true,"superclass":{"html_id":"ameba/Crystal/Visitor","kind":"class","full_name":"Crystal::Visitor","name":"Visitor"},"ancestors":[{"html_id":"ameba/Crystal/Visitor","kind":"class","full_name":"Crystal::Visitor","name":"Visitor"},{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/ast/visitors/base_visitor.cr","line_number":6,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/visitors/base_visitor.cr#L6"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[{"html_id":"ameba/Ameba/AST/FlowExpressionVisitor","kind":"class","full_name":"Ameba::AST::FlowExpressionVisitor","name":"FlowExpressionVisitor"},{"html_id":"ameba/Ameba/AST/NodeVisitor","kind":"class","full_name":"Ameba::AST::NodeVisitor","name":"NodeVisitor"},{"html_id":"ameba/Ameba/AST/ScopeVisitor","kind":"class","full_name":"Ameba::AST::ScopeVisitor","name":"ScopeVisitor"}],"including_types":[],"namespace":{"html_id":"ameba/Ameba/AST","kind":"module","full_name":"Ameba::AST","name":"AST"},"doc":"An abstract base visitor that utilizes general logic for all visitors.","summary":"

    An abstract base visitor that utilizes general logic for all visitors.

    ","class_methods":[],"constructors":[{"id":"new(rule,source)-class-method","html_id":"new(rule,source)-class-method","name":"new","doc":"Creates instance of this visitor.\n\n```\nvisitor = Ameba::AST::NodeVisitor.new(rule, source)\n```\n","summary":"

    Creates instance of this visitor.

    ","abstract":false,"args":[{"name":"rule","doc":null,"default_value":"","external_name":"rule","restriction":""},{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"args_string":"(rule, source)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/visitors/base_visitor.cr#L19","def":{"name":"new","args":[{"name":"rule","doc":null,"default_value":"","external_name":"rule","restriction":""},{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"_ = allocate\n_.initialize(rule, source)\nif _.responds_to?(:finalize)\n ::GC.add_finalizer(_)\nend\n_\n"}}],"instance_methods":[{"id":"visit(node:Crystal::ASTNode)-instance-method","html_id":"visit(node:Crystal::ASTNode)-instance-method","name":"visit","doc":"A main visit method that accepts `Crystal::ASTNode`.\nReturns true meaning all child nodes will be traversed.","summary":"

    A main visit method that accepts Crystal::ASTNode.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ASTNode"}],"args_string":"(node : Crystal::ASTNode)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/visitors/base_visitor.cr#L25","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ASTNode"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"true"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/AST/Branch","path":"Ameba/AST/Branch.html","kind":"class","full_name":"Ameba::AST::Branch","name":"Branch","abstract":false,"superclass":{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},"ancestors":[{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/ast/branch.cr","line_number":15,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/branch.cr#L15"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/AST","kind":"module","full_name":"Ameba::AST","name":"AST"},"doc":"Represents the branch in Crystal code.\nBranch is a part of a branchable statement.\nFor example, the branchable if statement contains 3 branches:\n\n```\nif a = something # --> Branch A\n a = 1 # --> Branch B\n put a if out # --> Branch C\nelse\n do_something a # --> Branch D\nend\n```\n","summary":"

    Represents the branch in Crystal code.

    ","class_methods":[{"id":"of(node:Crystal::ASTNode,parent_node:Crystal::ASTNode)-class-method","html_id":"of(node:Crystal::ASTNode,parent_node:Crystal::ASTNode)-class-method","name":"of","doc":"Constructs a new branch based on the node some parent scope.\n\n```\nBranch.of(assign_node, def_node)\n```","summary":"

    Constructs a new branch based on the node some parent scope.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ASTNode"},{"name":"parent_node","doc":null,"default_value":"","external_name":"parent_node","restriction":"Crystal::ASTNode"}],"args_string":"(node : Crystal::ASTNode, parent_node : Crystal::ASTNode)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/branch.cr#L66","def":{"name":"of","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ASTNode"},{"name":"parent_node","doc":null,"default_value":"","external_name":"parent_node","restriction":"Crystal::ASTNode"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"(BranchVisitor.new(node)).tap(&.accept(parent_node)).branch"}},{"id":"of(node:Crystal::ASTNode,scope:Scope)-class-method","html_id":"of(node:Crystal::ASTNode,scope:Scope)-class-method","name":"of","doc":"Constructs a new branch based on the node in scope.\n\n```\nBranch.of(assign_node, scope)\n```","summary":"

    Constructs a new branch based on the node in scope.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ASTNode"},{"name":"scope","doc":null,"default_value":"","external_name":"scope","restriction":"Scope"}],"args_string":"(node : Crystal::ASTNode, scope : Scope)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/branch.cr#L57","def":{"name":"of","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ASTNode"},{"name":"scope","doc":null,"default_value":"","external_name":"scope","restriction":"Scope"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"of(node, scope.node)"}}],"constructors":[{"id":"new(node,parent)-class-method","html_id":"new(node,parent)-class-method","name":"new","doc":"Creates a new branch.\n\n```\nBranch.new(if_node)\n```","summary":"

    Creates a new branch.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""},{"name":"parent","doc":null,"default_value":"","external_name":"parent","restriction":""}],"args_string":"(node, parent)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/branch.cr#L33","def":{"name":"new","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""},{"name":"parent","doc":null,"default_value":"","external_name":"parent","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"_ = allocate\n_.initialize(node, parent)\nif _.responds_to?(:finalize)\n ::GC.add_finalizer(_)\nend\n_\n"}}],"instance_methods":[{"id":"==(other:self)-instance-method","html_id":"==(other:self)-instance-method","name":"==","doc":"Returns `true` if this reference is the same as *other*. Invokes `same?`.","summary":"

    Returns true if this reference is the same as other.

    ","abstract":false,"args":[{"name":"other","doc":null,"default_value":"","external_name":"other","restriction":"self"}],"args_string":"(other : self)","source_link":null,"def":{"name":"==","args":[{"name":"other","doc":null,"default_value":"","external_name":"other","restriction":"self"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if node == other.node\nelse\n return false\nend\nif location == other.location\nelse\n return false\nend\ntrue\n"}},{"id":"end_location(*args,**options)-instance-method","html_id":"end_location(*args,**options)-instance-method","name":"end_location","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/branch.cr#L24","def":{"name":"end_location","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.end_location(*args, **options)"}},{"id":"end_location(*args,**options,&)-instance-method","html_id":"end_location(*args,**options,&)-instance-method","name":"end_location","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options, &)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/branch.cr#L24","def":{"name":"end_location","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":1,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.end_location(*args, **options) do |*yield_args|\n yield *yield_args\nend"}},{"id":"hash(hasher)-instance-method","html_id":"hash(hasher)-instance-method","name":"hash","doc":"See `Object#hash(hasher)`","summary":"

    See Object#hash(hasher)

    ","abstract":false,"args":[{"name":"hasher","doc":null,"default_value":"","external_name":"hasher","restriction":""}],"args_string":"(hasher)","source_link":null,"def":{"name":"hash","args":[{"name":"hasher","doc":null,"default_value":"","external_name":"hasher","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"hasher = node.hash(hasher)\nhasher = location.hash(hasher)\nhasher\n"}},{"id":"in_loop?-instance-method","html_id":"in_loop?-instance-method","name":"in_loop?","doc":"Returns true if current branch is in a loop, false - otherwise.\nFor example, this branch is in a loop:\n\n```\nwhile true\n handle_input # this branch is in a loop\n if wrong_input\n show_message # this branch is also in a loop.\n end\nend\n```\n","summary":"

    Returns true if current branch is in a loop, false - otherwise.

    ","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/branch.cr#L48","def":{"name":"in_loop?","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@parent.loop?"}},{"id":"location(*args,**options)-instance-method","html_id":"location(*args,**options)-instance-method","name":"location","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/branch.cr#L23","def":{"name":"location","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.location(*args, **options)"}},{"id":"location(*args,**options,&)-instance-method","html_id":"location(*args,**options,&)-instance-method","name":"location","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options, &)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/branch.cr#L23","def":{"name":"location","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":1,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.location(*args, **options) do |*yield_args|\n yield *yield_args\nend"}},{"id":"node:Crystal::ASTNode-instance-method","html_id":"node:Crystal::ASTNode-instance-method","name":"node","doc":"The actual branch node.","summary":"

    The actual branch node.

    ","abstract":false,"args":[],"args_string":" : Crystal::ASTNode","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/branch.cr#L17","def":{"name":"node","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Crystal::ASTNode","visibility":"Public","body":"@node"}},{"id":"parent:Branchable-instance-method","html_id":"parent:Branchable-instance-method","name":"parent","doc":"The parent branchable.","summary":"

    The parent branchable.

    ","abstract":false,"args":[],"args_string":" : Branchable","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/branch.cr#L20","def":{"name":"parent","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Branchable","visibility":"Public","body":"@parent"}},{"id":"to_s(*args,**options)-instance-method","html_id":"to_s(*args,**options)-instance-method","name":"to_s","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/branch.cr#L22","def":{"name":"to_s","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.to_s(*args, **options)"}},{"id":"to_s(*args,**options,&)-instance-method","html_id":"to_s(*args,**options,&)-instance-method","name":"to_s","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options, &)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/branch.cr#L22","def":{"name":"to_s","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":1,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.to_s(*args, **options) do |*yield_args|\n yield *yield_args\nend"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/AST/Branchable","path":"Ameba/AST/Branchable.html","kind":"class","full_name":"Ameba::AST::Branchable","name":"Branchable","abstract":false,"superclass":{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},"ancestors":[{"html_id":"ameba/Ameba/AST/Util","kind":"module","full_name":"Ameba::AST::Util","name":"Util"},{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/ast/branchable.cr","line_number":15,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/branchable.cr#L15"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[{"html_id":"ameba/Ameba/AST/Util","kind":"module","full_name":"Ameba::AST::Util","name":"Util"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/AST","kind":"module","full_name":"Ameba::AST","name":"AST"},"doc":"A generic entity to represent a branchable Crystal node.\nFor example, `Crystal::If`, `Crystal::Unless`, `Crystal::While`\nare branchables.\n\n```\nwhite a > 100 # Branchable A\n if b > 2 # Branchable B\n a += 1\n end\nend\n```","summary":"

    A generic entity to represent a branchable Crystal node.

    ","class_methods":[],"constructors":[{"id":"new(node,parent=nil)-class-method","html_id":"new(node,parent=nil)-class-method","name":"new","doc":"Creates a new branchable\n\n```\nBranchable.new(node, parent_branchable)\n```","summary":"

    Creates a new branchable

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""},{"name":"parent","doc":null,"default_value":"nil","external_name":"parent","restriction":""}],"args_string":"(node, parent = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/branchable.cr#L35","def":{"name":"new","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""},{"name":"parent","doc":null,"default_value":"nil","external_name":"parent","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"_ = allocate\n_.initialize(node, parent)\nif _.responds_to?(:finalize)\n ::GC.add_finalizer(_)\nend\n_\n"}}],"instance_methods":[{"id":"branches:Array(Crystal::ASTNode)-instance-method","html_id":"branches:Array(Crystal::ASTNode)-instance-method","name":"branches","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(Crystal::ASTNode)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/branchable.cr#L18","def":{"name":"branches","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@branches"}},{"id":"end_location(*args,**options)-instance-method","html_id":"end_location(*args,**options)-instance-method","name":"end_location","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/branchable.cr#L28","def":{"name":"end_location","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.end_location(*args, **options)"}},{"id":"end_location(*args,**options,&)-instance-method","html_id":"end_location(*args,**options,&)-instance-method","name":"end_location","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options, &)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/branchable.cr#L28","def":{"name":"end_location","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":1,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.end_location(*args, **options) do |*yield_args|\n yield *yield_args\nend"}},{"id":"location(*args,**options)-instance-method","html_id":"location(*args,**options)-instance-method","name":"location","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/branchable.cr#L27","def":{"name":"location","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.location(*args, **options)"}},{"id":"location(*args,**options,&)-instance-method","html_id":"location(*args,**options,&)-instance-method","name":"location","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options, &)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/branchable.cr#L27","def":{"name":"location","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":1,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.location(*args, **options) do |*yield_args|\n yield *yield_args\nend"}},{"id":"loop?-instance-method","html_id":"loop?-instance-method","name":"loop?","doc":"Returns true if this node or one of the parent branchables is a loop, false otherwise.","summary":"

    Returns true if this node or one of the parent branchables is a loop, false otherwise.

    ","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/branchable.cr#L39","def":{"name":"loop?","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if loop?(node)\n return true\nend\nparent.try(&.loop?) || false\n"}},{"id":"node:Crystal::ASTNode-instance-method","html_id":"node:Crystal::ASTNode-instance-method","name":"node","doc":"The actual Crystal node.","summary":"

    The actual Crystal node.

    ","abstract":false,"args":[],"args_string":" : Crystal::ASTNode","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/branchable.cr#L21","def":{"name":"node","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Crystal::ASTNode","visibility":"Public","body":"@node"}},{"id":"parent:Branchable?-instance-method","html_id":"parent:Branchable?-instance-method","name":"parent","doc":"Parent branchable (if any)","summary":"

    Parent branchable (if any)

    ","abstract":false,"args":[],"args_string":" : Branchable?","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/branchable.cr#L24","def":{"name":"parent","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Branchable | ::Nil","visibility":"Public","body":"@parent"}},{"id":"to_s(*args,**options)-instance-method","html_id":"to_s(*args,**options)-instance-method","name":"to_s","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/branchable.cr#L26","def":{"name":"to_s","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.to_s(*args, **options)"}},{"id":"to_s(*args,**options,&)-instance-method","html_id":"to_s(*args,**options,&)-instance-method","name":"to_s","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options, &)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/branchable.cr#L26","def":{"name":"to_s","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":1,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.to_s(*args, **options) do |*yield_args|\n yield *yield_args\nend"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/AST/CountingVisitor","path":"Ameba/AST/CountingVisitor.html","kind":"class","full_name":"Ameba::AST::CountingVisitor","name":"CountingVisitor","abstract":false,"superclass":{"html_id":"ameba/Crystal/Visitor","kind":"class","full_name":"Crystal::Visitor","name":"Visitor"},"ancestors":[{"html_id":"ameba/Crystal/Visitor","kind":"class","full_name":"Crystal::Visitor","name":"Visitor"},{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/ast/visitors/counting_visitor.cr","line_number":3,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/visitors/counting_visitor.cr#L3"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"DEFAULT_COMPLEXITY","name":"DEFAULT_COMPLEXITY","value":"1","doc":null,"summary":null}],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/AST","kind":"module","full_name":"Ameba::AST","name":"AST"},"doc":"AST Visitor that counts occurrences of certain keywords","summary":"

    AST Visitor that counts occurrences of certain keywords

    ","class_methods":[],"constructors":[{"id":"new(scope:Crystal::ASTNode)-class-method","html_id":"new(scope:Crystal::ASTNode)-class-method","name":"new","doc":"Creates a new counting visitor","summary":"

    Creates a new counting visitor

    ","abstract":false,"args":[{"name":"scope","doc":null,"default_value":"","external_name":"scope","restriction":"Crystal::ASTNode"}],"args_string":"(scope : Crystal::ASTNode)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/visitors/counting_visitor.cr#L8","def":{"name":"new","args":[{"name":"scope","doc":null,"default_value":"","external_name":"scope","restriction":"Crystal::ASTNode"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"_ = allocate\n_.initialize(scope)\nif _.responds_to?(:finalize)\n ::GC.add_finalizer(_)\nend\n_\n"}}],"instance_methods":[{"id":"count-instance-method","html_id":"count-instance-method","name":"count","doc":"Returns the number of keywords that were found in the node","summary":"

    Returns the number of keywords that were found in the node

    ","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/visitors/counting_visitor.cr#L18","def":{"name":"count","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@scope.accept(self)\n@complexity\n"}},{"id":"macro_condition:Bool-instance-method","html_id":"macro_condition:Bool-instance-method","name":"macro_condition","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/visitors/counting_visitor.cr#L5","def":{"name":"macro_condition","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@macro_condition"}},{"id":"visit(node:Crystal::MacroIf|Crystal::MacroFor)-instance-method","html_id":"visit(node:Crystal::MacroIf|Crystal::MacroFor)-instance-method","name":"visit","doc":null,"summary":null,"abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::MacroIf | Crystal::MacroFor"}],"args_string":"(node : Crystal::MacroIf | Crystal::MacroFor)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/visitors/counting_visitor.cr#L33","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::MacroIf | Crystal::MacroFor"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@macro_condition = true\n@complexity = DEFAULT_COMPLEXITY\nfalse\n"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/AST/FlowExpression","path":"Ameba/AST/FlowExpression.html","kind":"class","full_name":"Ameba::AST::FlowExpression","name":"FlowExpression","abstract":false,"superclass":{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},"ancestors":[{"html_id":"ameba/Ameba/AST/Util","kind":"module","full_name":"Ameba::AST::Util","name":"Util"},{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/ast/flow_expression.cr","line_number":18,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/flow_expression.cr#L18"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[{"html_id":"ameba/Ameba/AST/Util","kind":"module","full_name":"Ameba::AST::Util","name":"Util"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/AST","kind":"module","full_name":"Ameba::AST","name":"AST"},"doc":"Represents a flow expression in Crystal code.\nFor example,\n\n```\ndef foobar\n a = 3\n return 42 # => flow expression\n a + 1\nend\n```\n\nFlow expression contains an actual node of a control expression and\na parent node, which allows easily search through the related statement\n(i.e. find unreachable code)","summary":"

    Represents a flow expression in Crystal code.

    ","class_methods":[],"constructors":[{"id":"new(node,in_loop)-class-method","html_id":"new(node,in_loop)-class-method","name":"new","doc":"Creates a new flow expression.\n\n```\nFlowExpression.new(node, parent_node)\n```","summary":"

    Creates a new flow expression.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""},{"name":"in_loop","doc":null,"default_value":"","external_name":"in_loop","restriction":""}],"args_string":"(node, in_loop)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/flow_expression.cr#L36","def":{"name":"new","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""},{"name":"in_loop","doc":null,"default_value":"","external_name":"in_loop","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"_ = allocate\n_.initialize(node, in_loop)\nif _.responds_to?(:finalize)\n ::GC.add_finalizer(_)\nend\n_\n"}}],"instance_methods":[{"id":"end_location(*args,**options)-instance-method","html_id":"end_location(*args,**options)-instance-method","name":"end_location","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/flow_expression.cr#L29","def":{"name":"end_location","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.end_location(*args, **options)"}},{"id":"end_location(*args,**options,&)-instance-method","html_id":"end_location(*args,**options,&)-instance-method","name":"end_location","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options, &)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/flow_expression.cr#L29","def":{"name":"end_location","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":1,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.end_location(*args, **options) do |*yield_args|\n yield *yield_args\nend"}},{"id":"in_loop?:Bool-instance-method","html_id":"in_loop?:Bool-instance-method","name":"in_loop?","doc":"Is true only if some of the nodes parents is a loop.","summary":"

    Is true only if some of the nodes parents is a loop.

    ","abstract":false,"args":[],"args_string":" : Bool","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/flow_expression.cr#L22","def":{"name":"in_loop?","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Bool","visibility":"Public","body":"@in_loop"}},{"id":"location(*args,**options)-instance-method","html_id":"location(*args,**options)-instance-method","name":"location","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/flow_expression.cr#L28","def":{"name":"location","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.location(*args, **options)"}},{"id":"location(*args,**options,&)-instance-method","html_id":"location(*args,**options,&)-instance-method","name":"location","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options, &)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/flow_expression.cr#L28","def":{"name":"location","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":1,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.location(*args, **options) do |*yield_args|\n yield *yield_args\nend"}},{"id":"node:Crystal::ASTNode-instance-method","html_id":"node:Crystal::ASTNode-instance-method","name":"node","doc":"The actual node of the flow expression.","summary":"

    The actual node of the flow expression.

    ","abstract":false,"args":[],"args_string":" : Crystal::ASTNode","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/flow_expression.cr#L25","def":{"name":"node","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Crystal::ASTNode","visibility":"Public","body":"@node"}},{"id":"to_s(*args,**options)-instance-method","html_id":"to_s(*args,**options)-instance-method","name":"to_s","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/flow_expression.cr#L27","def":{"name":"to_s","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.to_s(*args, **options)"}},{"id":"to_s(*args,**options,&)-instance-method","html_id":"to_s(*args,**options,&)-instance-method","name":"to_s","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options, &)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/flow_expression.cr#L27","def":{"name":"to_s","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":1,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.to_s(*args, **options) do |*yield_args|\n yield *yield_args\nend"}},{"id":"unreachable_nodes-instance-method","html_id":"unreachable_nodes-instance-method","name":"unreachable_nodes","doc":"Returns nodes which can't be reached because of a flow command inside.\nFor example:\n\n```\ndef foobar\n a = 1\n return 42\n\n a + 2 # => unreachable assign node\nend\n```","summary":"

    Returns nodes which can't be reached because of a flow command inside.

    ","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/flow_expression.cr#L50","def":{"name":"unreachable_nodes","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"unreachable_nodes = [] of Crystal::ASTNode\ncase current_node = node\nwhen Crystal::Expressions\n control_flow_found = false\n current_node.expressions.each do |exp|\n if control_flow_found\n unreachable_nodes << exp\n end\n control_flow_found || (control_flow_found = flow_expression?(exp, in_loop?))\n end\nwhen Crystal::BinaryOp\n if flow_expression?(current_node.left, in_loop?)\n unreachable_nodes << current_node.right\n end\nelse\nend\nunreachable_nodes\n"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/AST/FlowExpressionVisitor","path":"Ameba/AST/FlowExpressionVisitor.html","kind":"class","full_name":"Ameba::AST::FlowExpressionVisitor","name":"FlowExpressionVisitor","abstract":false,"superclass":{"html_id":"ameba/Ameba/AST/BaseVisitor","kind":"class","full_name":"Ameba::AST::BaseVisitor","name":"BaseVisitor"},"ancestors":[{"html_id":"ameba/Ameba/AST/Util","kind":"module","full_name":"Ameba::AST::Util","name":"Util"},{"html_id":"ameba/Ameba/AST/BaseVisitor","kind":"class","full_name":"Ameba::AST::BaseVisitor","name":"BaseVisitor"},{"html_id":"ameba/Crystal/Visitor","kind":"class","full_name":"Crystal::Visitor","name":"Visitor"},{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/ast/visitors/flow_expression_visitor.cr","line_number":6,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/visitors/flow_expression_visitor.cr#L6"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[{"html_id":"ameba/Ameba/AST/Util","kind":"module","full_name":"Ameba::AST::Util","name":"Util"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/AST","kind":"module","full_name":"Ameba::AST","name":"AST"},"doc":"AST Visitor that traverses all the flow expressions.","summary":"

    AST Visitor that traverses all the flow expressions.

    ","class_methods":[],"constructors":[{"id":"new(rule,source)-class-method","html_id":"new(rule,source)-class-method","name":"new","doc":"Creates a new flow expression visitor.","summary":"

    Creates a new flow expression visitor.

    ","abstract":false,"args":[{"name":"rule","doc":null,"default_value":"","external_name":"rule","restriction":""},{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"args_string":"(rule, source)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/visitors/flow_expression_visitor.cr#L12","def":{"name":"new","args":[{"name":"rule","doc":null,"default_value":"","external_name":"rule","restriction":""},{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"_ = allocate\n_.initialize(rule, source)\nif _.responds_to?(:finalize)\n ::GC.add_finalizer(_)\nend\n_\n"}}],"instance_methods":[],"macros":[],"types":[]},{"html_id":"ameba/Ameba/AST/InstanceVariable","path":"Ameba/AST/InstanceVariable.html","kind":"class","full_name":"Ameba::AST::InstanceVariable","name":"InstanceVariable","abstract":false,"superclass":{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},"ancestors":[{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/ast/variabling/ivariable.cr","line_number":2,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/variabling/ivariable.cr#L2"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/AST","kind":"module","full_name":"Ameba::AST","name":"AST"},"doc":null,"summary":null,"class_methods":[],"constructors":[{"id":"new(node)-class-method","html_id":"new(node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"args_string":"(node)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/variabling/ivariable.cr#L10","def":{"name":"new","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"_ = allocate\n_.initialize(node)\nif _.responds_to?(:finalize)\n ::GC.add_finalizer(_)\nend\n_\n"}}],"instance_methods":[{"id":"end_location(*args,**options)-instance-method","html_id":"end_location(*args,**options)-instance-method","name":"end_location","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/variabling/ivariable.cr#L6","def":{"name":"end_location","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.end_location(*args, **options)"}},{"id":"end_location(*args,**options,&)-instance-method","html_id":"end_location(*args,**options,&)-instance-method","name":"end_location","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options, &)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/variabling/ivariable.cr#L6","def":{"name":"end_location","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":1,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.end_location(*args, **options) do |*yield_args|\n yield *yield_args\nend"}},{"id":"location(*args,**options)-instance-method","html_id":"location(*args,**options)-instance-method","name":"location","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/variabling/ivariable.cr#L5","def":{"name":"location","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.location(*args, **options)"}},{"id":"location(*args,**options,&)-instance-method","html_id":"location(*args,**options,&)-instance-method","name":"location","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options, &)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/variabling/ivariable.cr#L5","def":{"name":"location","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":1,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.location(*args, **options) do |*yield_args|\n yield *yield_args\nend"}},{"id":"name(*args,**options)-instance-method","html_id":"name(*args,**options)-instance-method","name":"name","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/variabling/ivariable.cr#L7","def":{"name":"name","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.name(*args, **options)"}},{"id":"name(*args,**options,&)-instance-method","html_id":"name(*args,**options,&)-instance-method","name":"name","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options, &)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/variabling/ivariable.cr#L7","def":{"name":"name","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":1,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.name(*args, **options) do |*yield_args|\n yield *yield_args\nend"}},{"id":"node:Crystal::InstanceVar-instance-method","html_id":"node:Crystal::InstanceVar-instance-method","name":"node","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Crystal::InstanceVar","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/variabling/ivariable.cr#L3","def":{"name":"node","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Crystal::InstanceVar","visibility":"Public","body":"@node"}},{"id":"to_s(*args,**options)-instance-method","html_id":"to_s(*args,**options)-instance-method","name":"to_s","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/variabling/ivariable.cr#L8","def":{"name":"to_s","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.to_s(*args, **options)"}},{"id":"to_s(*args,**options,&)-instance-method","html_id":"to_s(*args,**options,&)-instance-method","name":"to_s","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options, &)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/variabling/ivariable.cr#L8","def":{"name":"to_s","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":1,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.to_s(*args, **options) do |*yield_args|\n yield *yield_args\nend"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/AST/NodeVisitor","path":"Ameba/AST/NodeVisitor.html","kind":"class","full_name":"Ameba::AST::NodeVisitor","name":"NodeVisitor","abstract":false,"superclass":{"html_id":"ameba/Ameba/AST/BaseVisitor","kind":"class","full_name":"Ameba::AST::BaseVisitor","name":"BaseVisitor"},"ancestors":[{"html_id":"ameba/Ameba/AST/BaseVisitor","kind":"class","full_name":"Ameba::AST::BaseVisitor","name":"BaseVisitor"},{"html_id":"ameba/Crystal/Visitor","kind":"class","full_name":"Crystal::Visitor","name":"Visitor"},{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/ast/visitors/node_visitor.cr","line_number":39,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/visitors/node_visitor.cr#L39"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/AST","kind":"module","full_name":"Ameba::AST","name":"AST"},"doc":"An AST Visitor that traverses the source and allows all nodes\nto be inspected by rules.\n\n```\nvisitor = Ameba::AST::NodeVisitor.new(rule, source)\n```\n","summary":"

    An AST Visitor that traverses the source and allows all nodes to be inspected by rules.

    ","class_methods":[],"constructors":[{"id":"new(rule,source,skip=nil)-class-method","html_id":"new(rule,source,skip=nil)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"rule","doc":null,"default_value":"","external_name":"rule","restriction":""},{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"skip","doc":null,"default_value":"nil","external_name":"skip","restriction":""}],"args_string":"(rule, source, skip = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/visitors/node_visitor.cr#L42","def":{"name":"new","args":[{"name":"rule","doc":null,"default_value":"","external_name":"rule","restriction":""},{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"skip","doc":null,"default_value":"nil","external_name":"skip","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"_ = allocate\n_.initialize(rule, source, skip)\nif _.responds_to?(:finalize)\n ::GC.add_finalizer(_)\nend\n_\n"}}],"instance_methods":[{"id":"visit(node:Crystal::Alias)-instance-method","html_id":"visit(node:Crystal::Alias)-instance-method","name":"visit","doc":"A visit callback for `Crystal::Alias` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"

    A visit callback for Crystal::Alias node.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Alias"}],"args_string":"(node : Crystal::Alias)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/visitors/node_visitor.cr#L47","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Alias"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::Until)-instance-method","html_id":"visit(node:Crystal::Until)-instance-method","name":"visit","doc":"A visit callback for `Crystal::Until` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"

    A visit callback for Crystal::Until node.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Until"}],"args_string":"(node : Crystal::Until)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/visitors/node_visitor.cr#L47","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Until"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::While)-instance-method","html_id":"visit(node:Crystal::While)-instance-method","name":"visit","doc":"A visit callback for `Crystal::While` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"

    A visit callback for Crystal::While node.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::While"}],"args_string":"(node : Crystal::While)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/visitors/node_visitor.cr#L47","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::While"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::When)-instance-method","html_id":"visit(node:Crystal::When)-instance-method","name":"visit","doc":"A visit callback for `Crystal::When` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"

    A visit callback for Crystal::When node.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::When"}],"args_string":"(node : Crystal::When)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/visitors/node_visitor.cr#L47","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::When"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::Var)-instance-method","html_id":"visit(node:Crystal::Var)-instance-method","name":"visit","doc":"A visit callback for `Crystal::Var` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"

    A visit callback for Crystal::Var node.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Var"}],"args_string":"(node : Crystal::Var)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/visitors/node_visitor.cr#L47","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Var"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::Unless)-instance-method","html_id":"visit(node:Crystal::Unless)-instance-method","name":"visit","doc":"A visit callback for `Crystal::Unless` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"

    A visit callback for Crystal::Unless node.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Unless"}],"args_string":"(node : Crystal::Unless)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/visitors/node_visitor.cr#L47","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Unless"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::StringInterpolation)-instance-method","html_id":"visit(node:Crystal::StringInterpolation)-instance-method","name":"visit","doc":"A visit callback for `Crystal::StringInterpolation` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"

    A visit callback for Crystal::StringInterpolation node.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::StringInterpolation"}],"args_string":"(node : Crystal::StringInterpolation)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/visitors/node_visitor.cr#L47","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::StringInterpolation"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::NilLiteral)-instance-method","html_id":"visit(node:Crystal::NilLiteral)-instance-method","name":"visit","doc":"A visit callback for `Crystal::NilLiteral` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"

    A visit callback for Crystal::NilLiteral node.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::NilLiteral"}],"args_string":"(node : Crystal::NilLiteral)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/visitors/node_visitor.cr#L47","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::NilLiteral"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::ModuleDef)-instance-method","html_id":"visit(node:Crystal::ModuleDef)-instance-method","name":"visit","doc":"A visit callback for `Crystal::ModuleDef` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"

    A visit callback for Crystal::ModuleDef node.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ModuleDef"}],"args_string":"(node : Crystal::ModuleDef)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/visitors/node_visitor.cr#L47","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ModuleDef"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::LibDef)-instance-method","html_id":"visit(node:Crystal::LibDef)-instance-method","name":"visit","doc":"A visit callback for `Crystal::LibDef` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"

    A visit callback for Crystal::LibDef node.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::LibDef"}],"args_string":"(node : Crystal::LibDef)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/visitors/node_visitor.cr#L47","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::LibDef"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::InstanceVar)-instance-method","html_id":"visit(node:Crystal::InstanceVar)-instance-method","name":"visit","doc":"A visit callback for `Crystal::InstanceVar` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"

    A visit callback for Crystal::InstanceVar node.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::InstanceVar"}],"args_string":"(node : Crystal::InstanceVar)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/visitors/node_visitor.cr#L47","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::InstanceVar"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::If)-instance-method","html_id":"visit(node:Crystal::If)-instance-method","name":"visit","doc":"A visit callback for `Crystal::If` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"

    A visit callback for Crystal::If node.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::If"}],"args_string":"(node : Crystal::If)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/visitors/node_visitor.cr#L47","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::If"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::HashLiteral)-instance-method","html_id":"visit(node:Crystal::HashLiteral)-instance-method","name":"visit","doc":"A visit callback for `Crystal::HashLiteral` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"

    A visit callback for Crystal::HashLiteral node.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::HashLiteral"}],"args_string":"(node : Crystal::HashLiteral)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/visitors/node_visitor.cr#L47","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::HashLiteral"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::Expressions)-instance-method","html_id":"visit(node:Crystal::Expressions)-instance-method","name":"visit","doc":"A visit callback for `Crystal::Expressions` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"

    A visit callback for Crystal::Expressions node.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Expressions"}],"args_string":"(node : Crystal::Expressions)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/visitors/node_visitor.cr#L47","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Expressions"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::ExceptionHandler)-instance-method","html_id":"visit(node:Crystal::ExceptionHandler)-instance-method","name":"visit","doc":"A visit callback for `Crystal::ExceptionHandler` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"

    A visit callback for Crystal::ExceptionHandler node.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ExceptionHandler"}],"args_string":"(node : Crystal::ExceptionHandler)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/visitors/node_visitor.cr#L47","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ExceptionHandler"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::EnumDef)-instance-method","html_id":"visit(node:Crystal::EnumDef)-instance-method","name":"visit","doc":"A visit callback for `Crystal::EnumDef` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"

    A visit callback for Crystal::EnumDef node.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::EnumDef"}],"args_string":"(node : Crystal::EnumDef)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/visitors/node_visitor.cr#L47","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::EnumDef"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::Def)-instance-method","html_id":"visit(node:Crystal::Def)-instance-method","name":"visit","doc":"A visit callback for `Crystal::Def` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"

    A visit callback for Crystal::Def node.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Def"}],"args_string":"(node : Crystal::Def)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/visitors/node_visitor.cr#L47","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Def"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::ClassVar)-instance-method","html_id":"visit(node:Crystal::ClassVar)-instance-method","name":"visit","doc":"A visit callback for `Crystal::ClassVar` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"

    A visit callback for Crystal::ClassVar node.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ClassVar"}],"args_string":"(node : Crystal::ClassVar)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/visitors/node_visitor.cr#L47","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ClassVar"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::ClassDef)-instance-method","html_id":"visit(node:Crystal::ClassDef)-instance-method","name":"visit","doc":"A visit callback for `Crystal::ClassDef` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"

    A visit callback for Crystal::ClassDef node.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ClassDef"}],"args_string":"(node : Crystal::ClassDef)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/visitors/node_visitor.cr#L47","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ClassDef"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::Case)-instance-method","html_id":"visit(node:Crystal::Case)-instance-method","name":"visit","doc":"A visit callback for `Crystal::Case` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"

    A visit callback for Crystal::Case node.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Case"}],"args_string":"(node : Crystal::Case)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/visitors/node_visitor.cr#L47","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Case"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::Block)-instance-method","html_id":"visit(node:Crystal::Block)-instance-method","name":"visit","doc":"A visit callback for `Crystal::Block` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"

    A visit callback for Crystal::Block node.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Block"}],"args_string":"(node : Crystal::Block)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/visitors/node_visitor.cr#L47","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Block"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::Call)-instance-method","html_id":"visit(node:Crystal::Call)-instance-method","name":"visit","doc":"A visit callback for `Crystal::Call` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"

    A visit callback for Crystal::Call node.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Call"}],"args_string":"(node : Crystal::Call)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/visitors/node_visitor.cr#L47","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Call"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::Assign)-instance-method","html_id":"visit(node:Crystal::Assign)-instance-method","name":"visit","doc":"A visit callback for `Crystal::Assign` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"

    A visit callback for Crystal::Assign node.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Assign"}],"args_string":"(node : Crystal::Assign)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/visitors/node_visitor.cr#L47","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Assign"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::IsA)-instance-method","html_id":"visit(node:Crystal::IsA)-instance-method","name":"visit","doc":"A visit callback for `Crystal::IsA` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"

    A visit callback for Crystal::IsA node.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::IsA"}],"args_string":"(node : Crystal::IsA)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/visitors/node_visitor.cr#L47","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::IsA"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node)-instance-method","html_id":"visit(node)-instance-method","name":"visit","doc":null,"summary":null,"abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"args_string":"(node)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/visitors/node_visitor.cr#L56","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (skip = @skip)\nelse\n return true\nend\n!(skip.includes?(node.class))\n"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/AST/RedundantControlExpressionVisitor","path":"Ameba/AST/RedundantControlExpressionVisitor.html","kind":"class","full_name":"Ameba::AST::RedundantControlExpressionVisitor","name":"RedundantControlExpressionVisitor","abstract":false,"superclass":{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},"ancestors":[{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/ast/visitors/redundant_control_expression_visitor.cr","line_number":5,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/visitors/redundant_control_expression_visitor.cr#L5"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/AST","kind":"module","full_name":"Ameba::AST","name":"AST"},"doc":"A class that utilizes a logic to traverse AST nodes and\nfire a source test callback if a redundant `Crystal::ControlExpression`\nis reached.","summary":"

    A class that utilizes a logic to traverse AST nodes and fire a source test callback if a redundant Crystal::ControlExpression is reached.

    ","class_methods":[],"constructors":[{"id":"new(rule,source,node)-class-method","html_id":"new(rule,source,node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"rule","doc":null,"default_value":"","external_name":"rule","restriction":""},{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"args_string":"(rule, source, node)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/visitors/redundant_control_expression_visitor.cr#L15","def":{"name":"new","args":[{"name":"rule","doc":null,"default_value":"","external_name":"rule","restriction":""},{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"_ = allocate\n_.initialize(rule, source, node)\nif _.responds_to?(:finalize)\n ::GC.add_finalizer(_)\nend\n_\n"}}],"instance_methods":[{"id":"node:Crystal::ASTNode-instance-method","html_id":"node:Crystal::ASTNode-instance-method","name":"node","doc":"A node to run traversal on.","summary":"

    A node to run traversal on.

    ","abstract":false,"args":[],"args_string":" : Crystal::ASTNode","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/visitors/redundant_control_expression_visitor.cr#L13","def":{"name":"node","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Crystal::ASTNode","visibility":"Public","body":"@node"}},{"id":"rule:Rule::Base-instance-method","html_id":"rule:Rule::Base-instance-method","name":"rule","doc":"A corresponding rule that uses this visitor.","summary":"

    A corresponding rule that uses this visitor.

    ","abstract":false,"args":[],"args_string":" : Rule::Base","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/visitors/redundant_control_expression_visitor.cr#L7","def":{"name":"rule","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Rule::Base","visibility":"Public","body":"@rule"}},{"id":"source:Source-instance-method","html_id":"source:Source-instance-method","name":"source","doc":"A source that needs to be traversed.","summary":"

    A source that needs to be traversed.

    ","abstract":false,"args":[],"args_string":" : Source","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/visitors/redundant_control_expression_visitor.cr#L10","def":{"name":"source","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Source","visibility":"Public","body":"@source"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/AST/Reference","path":"Ameba/AST/Reference.html","kind":"class","full_name":"Ameba::AST::Reference","name":"Reference","abstract":false,"superclass":{"html_id":"ameba/Ameba/AST/Variable","kind":"class","full_name":"Ameba::AST::Variable","name":"Variable"},"ancestors":[{"html_id":"ameba/Ameba/AST/Variable","kind":"class","full_name":"Ameba::AST::Variable","name":"Variable"},{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/ast/variabling/reference.cr","line_number":7,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/variabling/reference.cr#L7"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/AST","kind":"module","full_name":"Ameba::AST","name":"AST"},"doc":"Represents a reference to the variable.\nIt behaves like a variable is used to distinguish a\nthe variable from its reference.","summary":"

    Represents a reference to the variable.

    ","class_methods":[],"constructors":[],"instance_methods":[{"id":"explicit=(explicit)-instance-method","html_id":"explicit=(explicit)-instance-method","name":"explicit=","doc":null,"summary":null,"abstract":false,"args":[{"name":"explicit","doc":null,"default_value":"","external_name":"explicit","restriction":""}],"args_string":"(explicit)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/variabling/reference.cr#L8","def":{"name":"explicit=","args":[{"name":"explicit","doc":null,"default_value":"","external_name":"explicit","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@explicit = explicit"}},{"id":"explicit?:Bool-instance-method","html_id":"explicit?:Bool-instance-method","name":"explicit?","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/variabling/reference.cr#L8","def":{"name":"explicit?","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@explicit"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/AST/Scope","path":"Ameba/AST/Scope.html","kind":"class","full_name":"Ameba::AST::Scope","name":"Scope","abstract":false,"superclass":{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},"ancestors":[{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/ast/scope.cr","line_number":6,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/scope.cr#L6"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/AST","kind":"module","full_name":"Ameba::AST","name":"AST"},"doc":"Represents a context of the local variable visibility.\nThis is where the local variables belong to.","summary":"

    Represents a context of the local variable visibility.

    ","class_methods":[],"constructors":[{"id":"new(node,outer_scope=nil)-class-method","html_id":"new(node,outer_scope=nil)-class-method","name":"new","doc":"Creates a new scope. Accepts the AST node and the outer scope.\n\n```\nscope = Scope.new(class_node, nil)\n```","summary":"

    Creates a new scope.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""},{"name":"outer_scope","doc":null,"default_value":"nil","external_name":"outer_scope","restriction":""}],"args_string":"(node, outer_scope = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/scope.cr#L39","def":{"name":"new","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""},{"name":"outer_scope","doc":null,"default_value":"nil","external_name":"outer_scope","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"_ = allocate\n_.initialize(node, outer_scope)\nif _.responds_to?(:finalize)\n ::GC.add_finalizer(_)\nend\n_\n"}}],"instance_methods":[{"id":"==(other:self)-instance-method","html_id":"==(other:self)-instance-method","name":"==","doc":"Returns `true` if this reference is the same as *other*. Invokes `same?`.","summary":"

    Returns true if this reference is the same as other.

    ","abstract":false,"args":[{"name":"other","doc":null,"default_value":"","external_name":"other","restriction":"self"}],"args_string":"(other : self)","source_link":null,"def":{"name":"==","args":[{"name":"other","doc":null,"default_value":"","external_name":"other","restriction":"self"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if node == other.node\nelse\n return false\nend\nif location == other.location\nelse\n return false\nend\ntrue\n"}},{"id":"add_argument(node)-instance-method","html_id":"add_argument(node)-instance-method","name":"add_argument","doc":"Creates a new argument in the current scope.\n\n```\nscope = Scope.new(class_node, nil)\nscope.add_argument(arg_node)\n```","summary":"

    Creates a new argument in the current scope.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"args_string":"(node)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/scope.cr#L59","def":{"name":"add_argument","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"add_variable((Crystal::Var.new(node.name)).at(node))\narguments << (Argument.new(node, variables.last))\n"}},{"id":"add_ivariable(node)-instance-method","html_id":"add_ivariable(node)-instance-method","name":"add_ivariable","doc":"Adds a new instance variable to the current scope.\n\n```\nscope = Scope.new(class_node, nil)\nscope.add_ivariable(ivar_node)\n```","summary":"

    Adds a new instance variable to the current scope.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"args_string":"(node)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/scope.cr#L70","def":{"name":"add_ivariable","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"ivariables << (InstanceVariable.new(node))"}},{"id":"add_variable(node)-instance-method","html_id":"add_variable(node)-instance-method","name":"add_variable","doc":"Creates a new variable in the current scope.\n\n```\nscope = Scope.new(class_node, nil)\nscope.add_variable(var_node)\n```","summary":"

    Creates a new variable in the current scope.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"args_string":"(node)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/scope.cr#L49","def":{"name":"add_variable","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"variables << (Variable.new(node, self))"}},{"id":"arg?(var)-instance-method","html_id":"arg?(var)-instance-method","name":"arg?","doc":"Returns true if var is an argument in current scope, false if not.","summary":"

    Returns true if var is an argument in current scope, false if not.

    ","abstract":false,"args":[{"name":"var","doc":null,"default_value":"","external_name":"var","restriction":""}],"args_string":"(var)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/scope.cr#L155","def":{"name":"arg?","args":[{"name":"var","doc":null,"default_value":"","external_name":"var","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"case current_node = node\nwhen Crystal::Def\n var.is_a?(Crystal::Arg) && (any_arg?(current_node.args, var))\nwhen Crystal::Block\n var.is_a?(Crystal::Var) && (any_arg?(current_node.args, var))\nwhen Crystal::ProcLiteral\n var.is_a?(Crystal::Var) && (any_arg?(current_node.def.args, var))\nelse\n false\nend"}},{"id":"arguments:Array(Ameba::AST::Argument)-instance-method","html_id":"arguments:Array(Ameba::AST::Argument)-instance-method","name":"arguments","doc":"Link to the arguments in current scope","summary":"

    Link to the arguments in current scope

    ","abstract":false,"args":[],"args_string":" : Array(Ameba::AST::Argument)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/scope.cr#L14","def":{"name":"arguments","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@arguments"}},{"id":"assign_variable(name,node)-instance-method","html_id":"assign_variable(name,node)-instance-method","name":"assign_variable","doc":"Creates a new assignment for the variable.\n\n```\nscope = Scope.new(class_node, nil)\nscope.assign_variable(var_name, assign_node)\n```","summary":"

    Creates a new assignment for the variable.

    ","abstract":false,"args":[{"name":"name","doc":null,"default_value":"","external_name":"name","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"args_string":"(name, node)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/scope.cr#L90","def":{"name":"assign_variable","args":[{"name":"name","doc":null,"default_value":"","external_name":"name","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"(find_variable(name)).try(&.assign(node, self))"}},{"id":"assigns_ivar?(name)-instance-method","html_id":"assigns_ivar?(name)-instance-method","name":"assigns_ivar?","doc":"Returns true instance variable assinged in this scope.","summary":"

    Returns true instance variable assinged in this scope.

    ","abstract":false,"args":[{"name":"name","doc":null,"default_value":"","external_name":"name","restriction":""}],"args_string":"(name)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/scope.cr#L119","def":{"name":"assigns_ivar?","args":[{"name":"name","doc":null,"default_value":"","external_name":"name","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"arguments.find do |arg|\n arg.name == name\nend && ivariables.find do |var|\n var.name == \"@#{name}\"\nend"}},{"id":"block?-instance-method","html_id":"block?-instance-method","name":"block?","doc":"Returns true if current scope represents a block (or proc),\nfalse if not.","summary":"

    Returns true if current scope represents a block (or proc), false if not.

    ","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/scope.cr#L96","def":{"name":"block?","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"node.is_a?(Crystal::Block) || node.is_a?(Crystal::ProcLiteral)"}},{"id":"def?-instance-method","html_id":"def?-instance-method","name":"def?","doc":"Returns true if current scope is a def, false if not.","summary":"

    Returns true if current scope is a def, false if not.

    ","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/scope.cr#L145","def":{"name":"def?","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"node.is_a?(Crystal::Def)"}},{"id":"end_location(*args,**options)-instance-method","html_id":"end_location(*args,**options)-instance-method","name":"end_location","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/scope.cr#L30","def":{"name":"end_location","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"node.end_location(*args, **options)"}},{"id":"end_location(*args,**options,&)-instance-method","html_id":"end_location(*args,**options,&)-instance-method","name":"end_location","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options, &)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/scope.cr#L30","def":{"name":"end_location","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":1,"block_arg":null,"return_type":"","visibility":"Public","body":"node.end_location(*args, **options) do |*yield_args|\n yield *yield_args\nend"}},{"id":"eql?(node)-instance-method","html_id":"eql?(node)-instance-method","name":"eql?","doc":"Returns true if the `node` represents exactly\nthe same Crystal node as `@node`.","summary":"

    Returns true if the #node represents exactly the same Crystal node as @node.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"args_string":"(node)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/scope.cr#L174","def":{"name":"eql?","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"((node == @node) && (!node.location.nil?)) && (node.location == @node.location)"}},{"id":"find_variable(name:String)-instance-method","html_id":"find_variable(name:String)-instance-method","name":"find_variable","doc":"Returns variable by its name or nil if it does not exist.\n\n```\nscope = Scope.new(class_node, nil)\nscope.find_variable(\"foo\")\n```","summary":"

    Returns variable by its name or nil if it does not exist.

    ","abstract":false,"args":[{"name":"name","doc":null,"default_value":"","external_name":"name","restriction":"String"}],"args_string":"(name : String)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/scope.cr#L80","def":{"name":"find_variable","args":[{"name":"name","doc":null,"default_value":"","external_name":"name","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"variables.find do |v|\n v.name == name\nend || outer_scope.try(&.find_variable(name))"}},{"id":"hash(hasher)-instance-method","html_id":"hash(hasher)-instance-method","name":"hash","doc":"See `Object#hash(hasher)`","summary":"

    See Object#hash(hasher)

    ","abstract":false,"args":[{"name":"hasher","doc":null,"default_value":"","external_name":"hasher","restriction":""}],"args_string":"(hasher)","source_link":null,"def":{"name":"hash","args":[{"name":"hasher","doc":null,"default_value":"","external_name":"hasher","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"hasher = node.hash(hasher)\nhasher = location.hash(hasher)\nhasher\n"}},{"id":"in_macro?-instance-method","html_id":"in_macro?-instance-method","name":"in_macro?","doc":"Returns true if current scope sits inside a macro.","summary":"

    Returns true if current scope sits inside a macro.

    ","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/scope.cr#L114","def":{"name":"in_macro?","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"node.is_a?(Crystal::Macro) || (!(!outer_scope.try(&.in_macro?)))"}},{"id":"inner_scopes:Array(Ameba::AST::Scope)-instance-method","html_id":"inner_scopes:Array(Ameba::AST::Scope)-instance-method","name":"inner_scopes","doc":"List of inner scopes","summary":"

    List of inner scopes

    ","abstract":false,"args":[],"args_string":" : Array(Ameba::AST::Scope)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/scope.cr#L23","def":{"name":"inner_scopes","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@inner_scopes"}},{"id":"ivariables:Array(Ameba::AST::InstanceVariable)-instance-method","html_id":"ivariables:Array(Ameba::AST::InstanceVariable)-instance-method","name":"ivariables","doc":"Link to the instance variables used in current scope","summary":"

    Link to the instance variables used in current scope

    ","abstract":false,"args":[],"args_string":" : Array(Ameba::AST::InstanceVariable)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/scope.cr#L17","def":{"name":"ivariables","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@ivariables"}},{"id":"location(*args,**options,&)-instance-method","html_id":"location(*args,**options,&)-instance-method","name":"location","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options, &)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/scope.cr#L29","def":{"name":"location","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":1,"block_arg":null,"return_type":"","visibility":"Public","body":"node.location(*args, **options) do |*yield_args|\n yield *yield_args\nend"}},{"id":"location(*args,**options)-instance-method","html_id":"location(*args,**options)-instance-method","name":"location","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/scope.cr#L29","def":{"name":"location","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"node.location(*args, **options)"}},{"id":"node:Crystal::ASTNode-instance-method","html_id":"node:Crystal::ASTNode-instance-method","name":"node","doc":"The actual AST node that represents a current scope.","summary":"

    The actual AST node that represents a current scope.

    ","abstract":false,"args":[],"args_string":" : Crystal::ASTNode","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/scope.cr#L26","def":{"name":"node","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Crystal::ASTNode","visibility":"Public","body":"@node"}},{"id":"outer_scope:Scope?-instance-method","html_id":"outer_scope:Scope?-instance-method","name":"outer_scope","doc":"Link to the outer scope","summary":"

    Link to the outer scope

    ","abstract":false,"args":[],"args_string":" : Scope?","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/scope.cr#L20","def":{"name":"outer_scope","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Scope | ::Nil","visibility":"Public","body":"@outer_scope"}},{"id":"references:Array(Ameba::AST::Reference)-instance-method","html_id":"references:Array(Ameba::AST::Reference)-instance-method","name":"references","doc":"Link to all variable references in currency scope","summary":"

    Link to all variable references in currency scope

    ","abstract":false,"args":[],"args_string":" : Array(Ameba::AST::Reference)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/scope.cr#L11","def":{"name":"references","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@references"}},{"id":"references?(variable:Variable)-instance-method","html_id":"references?(variable:Variable)-instance-method","name":"references?","doc":"Returns true if current scope (or any of inner scopes) references variable,\nfalse if not.","summary":"

    Returns true if current scope (or any of inner scopes) references variable, false if not.

    ","abstract":false,"args":[{"name":"variable","doc":null,"default_value":"","external_name":"variable","restriction":"Variable"}],"args_string":"(variable : Variable)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/scope.cr#L137","def":{"name":"references?","args":[{"name":"variable","doc":null,"default_value":"","external_name":"variable","restriction":"Variable"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"variable.references.any? do |reference|\n (reference.scope == self) || inner_scopes.any?(&.references?(variable))\nend || variable.used_in_macro?"}},{"id":"spawn_block?-instance-method","html_id":"spawn_block?-instance-method","name":"spawn_block?","doc":"Returns true if current scope represents a spawn block, e. g.\n\n```\nspawn do\n # ...\nend\n```","summary":"

    Returns true if current scope represents a spawn block, e.

    ","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/scope.cr#L107","def":{"name":"spawn_block?","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if node.is_a?(Crystal::Block)\nelse\n return false\nend\ncall = (node.as(Crystal::Block)).call\ncall.try(&.name) == \"spawn\"\n"}},{"id":"to_s(*args,**options)-instance-method","html_id":"to_s(*args,**options)-instance-method","name":"to_s","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/scope.cr#L28","def":{"name":"to_s","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"node.to_s(*args, **options)"}},{"id":"to_s(*args,**options,&)-instance-method","html_id":"to_s(*args,**options,&)-instance-method","name":"to_s","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options, &)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/scope.cr#L28","def":{"name":"to_s","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":1,"block_arg":null,"return_type":"","visibility":"Public","body":"node.to_s(*args, **options) do |*yield_args|\n yield *yield_args\nend"}},{"id":"top_level?-instance-method","html_id":"top_level?-instance-method","name":"top_level?","doc":"Returns true if this scope is a top level scope, false if not.","summary":"

    Returns true if this scope is a top level scope, false if not.

    ","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/scope.cr#L150","def":{"name":"top_level?","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"outer_scope.nil?"}},{"id":"type_definition?-instance-method","html_id":"type_definition?-instance-method","name":"type_definition?","doc":"Returns true if and only if current scope represents some\ntype definition, for example a class.","summary":"

    Returns true if and only if current scope represents some type definition, for example a class.

    ","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/scope.cr#L126","def":{"name":"type_definition?","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"((((node.is_a?(Crystal::ClassDef) || node.is_a?(Crystal::ModuleDef)) || node.is_a?(Crystal::LibDef)) || node.is_a?(Crystal::FunDef)) || node.is_a?(Crystal::TypeDef)) || node.is_a?(Crystal::CStructOrUnionDef)"}},{"id":"variables:Array(Ameba::AST::Variable)-instance-method","html_id":"variables:Array(Ameba::AST::Variable)-instance-method","name":"variables","doc":"Link to local variables","summary":"

    Link to local variables

    ","abstract":false,"args":[],"args_string":" : Array(Ameba::AST::Variable)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/scope.cr#L8","def":{"name":"variables","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@variables"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/AST/ScopeVisitor","path":"Ameba/AST/ScopeVisitor.html","kind":"class","full_name":"Ameba::AST::ScopeVisitor","name":"ScopeVisitor","abstract":false,"superclass":{"html_id":"ameba/Ameba/AST/BaseVisitor","kind":"class","full_name":"Ameba::AST::BaseVisitor","name":"BaseVisitor"},"ancestors":[{"html_id":"ameba/Ameba/AST/BaseVisitor","kind":"class","full_name":"Ameba::AST::BaseVisitor","name":"BaseVisitor"},{"html_id":"ameba/Crystal/Visitor","kind":"class","full_name":"Crystal::Visitor","name":"Visitor"},{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/ast/visitors/scope_visitor.cr","line_number":5,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/visitors/scope_visitor.cr#L5"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"RECORD_NODE_NAME","name":"RECORD_NODE_NAME","value":"\"record\"","doc":null,"summary":null},{"id":"SUPER_NODE_NAME","name":"SUPER_NODE_NAME","value":"\"super\"","doc":null,"summary":null}],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/AST","kind":"module","full_name":"Ameba::AST","name":"AST"},"doc":"AST Visitor that traverses the source and constructs scopes.","summary":"

    AST Visitor that traverses the source and constructs scopes.

    ","class_methods":[],"constructors":[{"id":"new(rule,source)-class-method","html_id":"new(rule,source)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"rule","doc":null,"default_value":"","external_name":"rule","restriction":""},{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"args_string":"(rule, source)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/visitors/scope_visitor.cr#L13","def":{"name":"new","args":[{"name":"rule","doc":null,"default_value":"","external_name":"rule","restriction":""},{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"_ = allocate\n_.initialize(rule, source)\nif _.responds_to?(:finalize)\n ::GC.add_finalizer(_)\nend\n_\n"}}],"instance_methods":[],"macros":[],"types":[]},{"html_id":"ameba/Ameba/AST/Util","path":"Ameba/AST/Util.html","kind":"module","full_name":"Ameba::AST::Util","name":"Util","abstract":false,"superclass":null,"ancestors":[],"locations":[{"filename":"src/ameba/ast/util.cr","line_number":2,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/util.cr#L2"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[{"html_id":"ameba/Ameba/AST/Branchable","kind":"class","full_name":"Ameba::AST::Branchable","name":"Branchable"},{"html_id":"ameba/Ameba/AST/FlowExpression","kind":"class","full_name":"Ameba::AST::FlowExpression","name":"FlowExpression"},{"html_id":"ameba/Ameba/AST/FlowExpressionVisitor","kind":"class","full_name":"Ameba::AST::FlowExpressionVisitor","name":"FlowExpressionVisitor"},{"html_id":"ameba/Ameba/Rule/Lint/EmptyExpression","kind":"struct","full_name":"Ameba::Rule::Lint::EmptyExpression","name":"EmptyExpression"},{"html_id":"ameba/Ameba/Rule/Lint/EmptyLoop","kind":"struct","full_name":"Ameba::Rule::Lint::EmptyLoop","name":"EmptyLoop"},{"html_id":"ameba/Ameba/Rule/Lint/LiteralInCondition","kind":"struct","full_name":"Ameba::Rule::Lint::LiteralInCondition","name":"LiteralInCondition"},{"html_id":"ameba/Ameba/Rule/Lint/LiteralInInterpolation","kind":"struct","full_name":"Ameba::Rule::Lint::LiteralInInterpolation","name":"LiteralInInterpolation"},{"html_id":"ameba/Ameba/Rule/Lint/RedundantStringCoercion","kind":"struct","full_name":"Ameba::Rule::Lint::RedundantStringCoercion","name":"RedundantStringCoercion"},{"html_id":"ameba/Ameba/Rule/Lint/UnreachableCode","kind":"struct","full_name":"Ameba::Rule::Lint::UnreachableCode","name":"UnreachableCode"},{"html_id":"ameba/Ameba/Rule/Style/RedundantBegin","kind":"struct","full_name":"Ameba::Rule::Style::RedundantBegin","name":"RedundantBegin"}],"namespace":{"html_id":"ameba/Ameba/AST","kind":"module","full_name":"Ameba::AST","name":"AST"},"doc":"Utility module for Ameba's rules.","summary":"

    Utility module for Ameba's rules.

    ","class_methods":[],"constructors":[],"instance_methods":[{"id":"abort?(node)-instance-method","html_id":"abort?(node)-instance-method","name":"abort?","doc":"Returns true if node represents `abort` method call.","summary":"

    Returns true if node represents abort method call.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"args_string":"(node)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/util.cr#L141","def":{"name":"abort?","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"((node.is_a?(Crystal::Call) && (node.name == \"abort\")) && node.args.size <= 2) && node.obj.nil?"}},{"id":"exit?(node)-instance-method","html_id":"exit?(node)-instance-method","name":"exit?","doc":"Returns true if node represents `exit` method call.","summary":"

    Returns true if node represents exit method call.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"args_string":"(node)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/util.cr#L135","def":{"name":"exit?","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"((node.is_a?(Crystal::Call) && (node.name == \"exit\")) && node.args.size <= 1) && node.obj.nil?"}},{"id":"flow_command?(node,in_loop)-instance-method","html_id":"flow_command?(node,in_loop)-instance-method","name":"flow_command?","doc":"Returns true if node is a flow command, false - otherwise.\nNode represents a flow command if it is a control expression,\nor special call node that interrupts execution (i.e. raise, exit, abort).","summary":"

    Returns true if node is a flow command, false - otherwise.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""},{"name":"in_loop","doc":null,"default_value":"","external_name":"in_loop","restriction":""}],"args_string":"(node, in_loop)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/util.cr#L62","def":{"name":"flow_command?","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""},{"name":"in_loop","doc":null,"default_value":"","external_name":"in_loop","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"case node\nwhen Crystal::Return\n true\nwhen Crystal::Break, Crystal::Next\n in_loop\nwhen Crystal::Call\n ((raise?(node)) || (exit?(node))) || (abort?(node))\nelse\n false\nend"}},{"id":"flow_expression?(node,in_loop=false)-instance-method","html_id":"flow_expression?(node,in_loop=false)-instance-method","name":"flow_expression?","doc":"Returns true if node is a flow expression, false if not.\nNode represents a flow expression if it is full-filled by a flow command.\n\nFor example, this node is a flow expression, because each branch contains\na flow command `return`:\n\n```\nif a > 0\n return :positive\nelsif a < 0\n return :negative\nelse\n return :zero\nend\n```\n\nThis node is a not a flow expression:\n\n```\nif a > 0\n return :positive\nend\n```\n\nThat's because not all branches return(i.e. `else` is missing).\n","summary":"

    Returns true if node is a flow expression, false if not.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""},{"name":"in_loop","doc":null,"default_value":"false","external_name":"in_loop","restriction":""}],"args_string":"(node, in_loop = false)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/util.cr#L101","def":{"name":"flow_expression?","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""},{"name":"in_loop","doc":null,"default_value":"false","external_name":"in_loop","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if flow_command?(node, in_loop)\n return true\nend\ncase node\nwhen Crystal::If, Crystal::Unless\n flow_expressions?([node.then, node.else], in_loop)\nwhen Crystal::BinaryOp\n flow_expression?(node.left, in_loop)\nwhen Crystal::Case\n flow_expressions?([node.whens, node.else].flatten, in_loop)\nwhen Crystal::ExceptionHandler\n flow_expressions?([node.else || node.body, node.rescues].flatten, in_loop)\nwhen Crystal::While, Crystal::Until\n flow_expression?(node.body, in_loop)\nwhen Crystal::Rescue, Crystal::When\n flow_expression?(node.body, in_loop)\nwhen Crystal::Expressions\n node.expressions.any? do |exp|\n flow_expression?(exp, in_loop)\n end\nelse\n false\nend\n"}},{"id":"literal?(node)-instance-method","html_id":"literal?(node)-instance-method","name":"literal?","doc":"Returns true if current `node` is a literal, false otherwise.","summary":"

    Returns true if current node is a literal, false otherwise.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"args_string":"(node)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/util.cr#L4","def":{"name":"literal?","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"case node\nwhen Crystal::NilLiteral, Crystal::BoolLiteral, Crystal::NumberLiteral, Crystal::CharLiteral, Crystal::StringLiteral, Crystal::SymbolLiteral, Crystal::RegexLiteral, Crystal::ProcLiteral, Crystal::MacroLiteral\n true\nwhen Crystal::RangeLiteral\n (literal?(node.from)) && (literal?(node.to))\nwhen Crystal::ArrayLiteral, Crystal::TupleLiteral\n node.elements.all? do |el|\n literal?(el)\n end\nwhen Crystal::HashLiteral\n node.entries.all? do |entry|\n (literal?(entry.key)) && (literal?(entry.value))\n end\nwhen Crystal::NamedTupleLiteral\n node.entries.all? do |entry|\n literal?(entry.value)\n end\nelse\n false\nend"}},{"id":"loop?(node)-instance-method","html_id":"loop?(node)-instance-method","name":"loop?","doc":"Returns true if node represents a loop.","summary":"

    Returns true if node represents a loop.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"args_string":"(node)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/util.cr#L147","def":{"name":"loop?","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"case node\nwhen Crystal::While, Crystal::Until\n true\nwhen Crystal::Call\n ((node.name == \"loop\") && (node.args.size == 0)) && node.obj.nil?\nelse\n false\nend"}},{"id":"node_source(node,code_lines)-instance-method","html_id":"node_source(node,code_lines)-instance-method","name":"node_source","doc":"Returns a source code for the current node.\nThis method uses `node.location` and `node.end_location`\nto determine and cut a piece of source of the node.","summary":"

    Returns a source code for the current node.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""},{"name":"code_lines","doc":null,"default_value":"","external_name":"code_lines","restriction":""}],"args_string":"(node, code_lines)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/util.cr#L33","def":{"name":"node_source","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""},{"name":"code_lines","doc":null,"default_value":"","external_name":"code_lines","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"loc, end_loc = node.location, node.end_location\nif loc && end_loc\nelse\n return\nend\nline, column = loc.line_number - 1, loc.column_number - 1\nend_line, end_column = end_loc.line_number - 1, end_loc.column_number - 1\nnode_lines = code_lines[line..end_line]\nfirst_line, last_line = node_lines[0]?, node_lines[-1]?\nif first_line.nil? || last_line.nil?\n return\nend\nif first_line.size < column\n return\nend\nnode_lines[0] = first_line.sub(0...column, \"\")\nif line == end_line\n end_column = end_column - column\n last_line = node_lines[0]\nend\nif last_line.size < (end_column + 1)\n return\nend\nnode_lines[-1] = last_line.sub((end_column + 1)...last_line.size, \"\")\nnode_lines\n"}},{"id":"raise?(node)-instance-method","html_id":"raise?(node)-instance-method","name":"raise?","doc":"Returns true if node represents `raise` method call.","summary":"

    Returns true if node represents raise method call.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"args_string":"(node)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/util.cr#L129","def":{"name":"raise?","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"((node.is_a?(Crystal::Call) && (node.name == \"raise\")) && (node.args.size == 1)) && node.obj.nil?"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/AST/Variable","path":"Ameba/AST/Variable.html","kind":"class","full_name":"Ameba::AST::Variable","name":"Variable","abstract":false,"superclass":{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},"ancestors":[{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/ast/variabling/variable.cr","line_number":4,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/variabling/variable.cr#L4"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[{"html_id":"ameba/Ameba/AST/Reference","kind":"class","full_name":"Ameba::AST::Reference","name":"Reference"}],"including_types":[],"namespace":{"html_id":"ameba/Ameba/AST","kind":"module","full_name":"Ameba::AST","name":"AST"},"doc":"Represents the existence of the local variable.\nHolds the var node and variable assigments.","summary":"

    Represents the existence of the local variable.

    ","class_methods":[],"constructors":[{"id":"new(node,scope)-class-method","html_id":"new(node,scope)-class-method","name":"new","doc":"Creates a new variable(in the scope).\n\n```\nVariable.new(node, scope)\n```\n","summary":"

    Creates a new variable(in the scope).

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""},{"name":"scope","doc":null,"default_value":"","external_name":"scope","restriction":""}],"args_string":"(node, scope)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/variabling/variable.cr#L31","def":{"name":"new","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""},{"name":"scope","doc":null,"default_value":"","external_name":"scope","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"_ = allocate\n_.initialize(node, scope)\nif _.responds_to?(:finalize)\n ::GC.add_finalizer(_)\nend\n_\n"}}],"instance_methods":[{"id":"assign(node,scope)-instance-method","html_id":"assign(node,scope)-instance-method","name":"assign","doc":"Assigns the variable (creates a new assignment).\nVariable may have multiple assignments.\n\n```\nvariable = Variable.new(node, scope)\nvariable.assign(node1)\nvariable.assign(node2)\nvariable.assignment.size # => 2\n```\n","summary":"

    Assigns the variable (creates a new assignment).

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""},{"name":"scope","doc":null,"default_value":"","external_name":"scope","restriction":""}],"args_string":"(node, scope)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/variabling/variable.cr#L49","def":{"name":"assign","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""},{"name":"scope","doc":null,"default_value":"","external_name":"scope","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"assignments << (Assignment.new(node, self, scope))\nupdate_assign_reference!\n"}},{"id":"assign_before_reference:Crystal::ASTNode?-instance-method","html_id":"assign_before_reference:Crystal::ASTNode?-instance-method","name":"assign_before_reference","doc":"Node of the first assignment which can be available before any reference.","summary":"

    Node of the first assignment which can be available before any reference.

    ","abstract":false,"args":[],"args_string":" : Crystal::ASTNode?","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/variabling/variable.cr#L18","def":{"name":"assign_before_reference","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Crystal::ASTNode | ::Nil","visibility":"Public","body":"@assign_before_reference"}},{"id":"assignments:Array(Ameba::AST::Assignment)-instance-method","html_id":"assignments:Array(Ameba::AST::Assignment)-instance-method","name":"assignments","doc":"List of the assigments of this variable.","summary":"

    List of the assigments of this variable.

    ","abstract":false,"args":[],"args_string":" : Array(Ameba::AST::Assignment)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/variabling/variable.cr#L6","def":{"name":"assignments","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@assignments"}},{"id":"captured_by_block?(scope=@scope)-instance-method","html_id":"captured_by_block?(scope=@scope)-instance-method","name":"captured_by_block?","doc":"Returns true if the current var is referenced in\nin the block. For example this variable is captured\nby block:\n\n```\na = 1\n3.times { |i| a = a + i }\n```\n\nAnd this variable is not captured by block.\n\n```\ni = 1\n3.times { |i| i + 1 }\n```","summary":"

    Returns true if the current var is referenced in in the block.

    ","abstract":false,"args":[{"name":"scope","doc":null,"default_value":"@scope","external_name":"scope","restriction":""}],"args_string":"(scope = @scope)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/variabling/variable.cr#L114","def":{"name":"captured_by_block?","args":[{"name":"scope","doc":null,"default_value":"@scope","external_name":"scope","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"scope.inner_scopes.each do |inner_scope|\n if inner_scope.block? && (inner_scope.references?(self))\n return true\n end\n if captured_by_block?(inner_scope)\n return true\n end\nend\nfalse\n"}},{"id":"declared_before?(node)-instance-method","html_id":"declared_before?(node)-instance-method","name":"declared_before?","doc":"Returns true if the variable is delcared before the `node`.","summary":"

    Returns true if the variable is delcared before the #node.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"args_string":"(node)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/variabling/variable.cr#L160","def":{"name":"declared_before?","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"var_location, node_location = location, node.location\nif var_location.nil? || node_location.nil?\n return\nend\n(var_location.line_number < node_location.line_number) || ((var_location.line_number == node_location.line_number) && var_location.column_number < node_location.column_number)\n"}},{"id":"end_location(*args,**options)-instance-method","html_id":"end_location(*args,**options)-instance-method","name":"end_location","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/variabling/variable.cr#L21","def":{"name":"end_location","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.end_location(*args, **options)"}},{"id":"end_location(*args,**options,&)-instance-method","html_id":"end_location(*args,**options,&)-instance-method","name":"end_location","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options, &)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/variabling/variable.cr#L21","def":{"name":"end_location","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":1,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.end_location(*args, **options) do |*yield_args|\n yield *yield_args\nend"}},{"id":"eql?(node)-instance-method","html_id":"eql?(node)-instance-method","name":"eql?","doc":"Returns true if the `node` represents exactly\nthe same Crystal node as `@node`.","summary":"

    Returns true if the #node represents exactly the same Crystal node as @node.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"args_string":"(node)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/variabling/variable.cr#L153","def":{"name":"eql?","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"(node.is_a?(Crystal::Var) && (node.name == @node.name)) && (node.location == @node.location)"}},{"id":"ignored?-instance-method","html_id":"ignored?-instance-method","name":"ignored?","doc":"Returns true if the name starts with '_', false if not.","summary":"

    Returns true if the name starts with '_', false if not.

    ","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/variabling/variable.cr#L147","def":{"name":"ignored?","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"name.starts_with?('_')"}},{"id":"location(*args,**options)-instance-method","html_id":"location(*args,**options)-instance-method","name":"location","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/variabling/variable.cr#L20","def":{"name":"location","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.location(*args, **options)"}},{"id":"location(*args,**options,&)-instance-method","html_id":"location(*args,**options,&)-instance-method","name":"location","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options, &)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/variabling/variable.cr#L20","def":{"name":"location","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":1,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.location(*args, **options) do |*yield_args|\n yield *yield_args\nend"}},{"id":"name(*args,**options)-instance-method","html_id":"name(*args,**options)-instance-method","name":"name","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/variabling/variable.cr#L22","def":{"name":"name","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.name(*args, **options)"}},{"id":"name(*args,**options,&)-instance-method","html_id":"name(*args,**options,&)-instance-method","name":"name","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options, &)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/variabling/variable.cr#L22","def":{"name":"name","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":1,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.name(*args, **options) do |*yield_args|\n yield *yield_args\nend"}},{"id":"node:Crystal::Var-instance-method","html_id":"node:Crystal::Var-instance-method","name":"node","doc":"The actual var node.","summary":"

    The actual var node.

    ","abstract":false,"args":[],"args_string":" : Crystal::Var","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/variabling/variable.cr#L12","def":{"name":"node","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Crystal::Var","visibility":"Public","body":"@node"}},{"id":"reference(node:Crystal::Var,scope:Scope)-instance-method","html_id":"reference(node:Crystal::Var,scope:Scope)-instance-method","name":"reference","doc":"Creates a reference to this variable in some scope.\n\n```\nvariable = Variable.new(node, scope)\nvariable.reference(var_node, some_scope)\n```\n","summary":"

    Creates a reference to this variable in some scope.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Var"},{"name":"scope","doc":null,"default_value":"","external_name":"scope","restriction":"Scope"}],"args_string":"(node : Crystal::Var, scope : Scope)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/variabling/variable.cr#L73","def":{"name":"reference","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Var"},{"name":"scope","doc":null,"default_value":"","external_name":"scope","restriction":"Scope"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"(Reference.new(node, scope)).tap do |reference|\n references << reference\n scope.references << reference\nend"}},{"id":"reference_assignments!-instance-method","html_id":"reference_assignments!-instance-method","name":"reference_assignments!","doc":"Reference variable's assignments.\n\n```\nvariable = Variable.new(node, scope)\nvariable.assign(assign_node)\nvariable.reference_assignments!\n```","summary":"

    Reference variable's assignments.

    ","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/variabling/variable.cr#L87","def":{"name":"reference_assignments!","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"consumed_branches = Set(Branch).new\nassignments.reverse_each do |assignment|\n if consumed_branches.includes?(assignment.branch)\n next\n end\n assignment.referenced = true\n if assignment.branch\n else\n break\n end\n consumed_branches << assignment.branch.not_nil!\nend\n"}},{"id":"referenced?-instance-method","html_id":"referenced?-instance-method","name":"referenced?","doc":"Returns true if variable has any reference.\n\n```\nvariable = Variable.new(node, scope)\nvariable.reference(var_node)\nvariable.referenced? # => true\n```","summary":"

    Returns true if variable has any reference.

    ","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/variabling/variable.cr#L62","def":{"name":"referenced?","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"references.any?"}},{"id":"references:Array(Ameba::AST::Reference)-instance-method","html_id":"references:Array(Ameba::AST::Reference)-instance-method","name":"references","doc":"List of the references of this variable.","summary":"

    List of the references of this variable.

    ","abstract":false,"args":[],"args_string":" : Array(Ameba::AST::Reference)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/variabling/variable.cr#L9","def":{"name":"references","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@references"}},{"id":"scope:Scope-instance-method","html_id":"scope:Scope-instance-method","name":"scope","doc":"Scope of this variable.","summary":"

    Scope of this variable.

    ","abstract":false,"args":[],"args_string":" : Scope","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/variabling/variable.cr#L15","def":{"name":"scope","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Scope","visibility":"Public","body":"@scope"}},{"id":"special?-instance-method","html_id":"special?-instance-method","name":"special?","doc":"Returns true if it is a special variable, i.e `$?`.","summary":"

    Returns true if it is a special variable, i.e $?.

    ","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/variabling/variable.cr#L35","def":{"name":"special?","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.special_var?"}},{"id":"target_of?(assign)-instance-method","html_id":"target_of?(assign)-instance-method","name":"target_of?","doc":"Returns true if the variable is a target (on the left) of the assignment,\nfalse otherwise.","summary":"

    Returns true if the variable is a target (on the left) of the assignment, false otherwise.

    ","abstract":false,"args":[{"name":"assign","doc":null,"default_value":"","external_name":"assign","restriction":""}],"args_string":"(assign)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/variabling/variable.cr#L135","def":{"name":"target_of?","args":[{"name":"assign","doc":null,"default_value":"","external_name":"assign","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"case assign\nwhen Crystal::Assign\n eql?(assign.target)\nwhen Crystal::OpAssign\n eql?(assign.target)\nwhen Crystal::MultiAssign\n assign.targets.any? do |t|\n eql?(t)\n end\nwhen Crystal::UninitializedVar\n eql?(assign.var)\nelse\n false\nend"}},{"id":"to_s(*args,**options)-instance-method","html_id":"to_s(*args,**options)-instance-method","name":"to_s","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/variabling/variable.cr#L23","def":{"name":"to_s","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.to_s(*args, **options)"}},{"id":"to_s(*args,**options,&)-instance-method","html_id":"to_s(*args,**options,&)-instance-method","name":"to_s","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options, &)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/variabling/variable.cr#L23","def":{"name":"to_s","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":1,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.to_s(*args, **options) do |*yield_args|\n yield *yield_args\nend"}},{"id":"used_in_macro?(scope=@scope)-instance-method","html_id":"used_in_macro?(scope=@scope)-instance-method","name":"used_in_macro?","doc":"Returns true if current variable potentially referenced in a macro literal,\nfalse if not.","summary":"

    Returns true if current variable potentially referenced in a macro literal, false if not.

    ","abstract":false,"args":[{"name":"scope","doc":null,"default_value":"@scope","external_name":"scope","restriction":""}],"args_string":"(scope = @scope)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/ast/variabling/variable.cr#L125","def":{"name":"used_in_macro?","args":[{"name":"scope","doc":null,"default_value":"@scope","external_name":"scope","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"scope.inner_scopes.each do |inner_scope|\n if (MacroLiteralFinder.new(inner_scope.node)).references?(node)\n return true\n end\nend\nif (outer_scope = scope.outer_scope) && (used_in_macro?(outer_scope))\n return true\nend\nfalse\n"}}],"macros":[],"types":[]}]},{"html_id":"ameba/Ameba/Config","path":"Ameba/Config.html","kind":"class","full_name":"Ameba::Config","name":"Config","abstract":false,"superclass":{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},"ancestors":[{"html_id":"ameba/Ameba/GlobUtils","kind":"module","full_name":"Ameba::GlobUtils","name":"GlobUtils"},{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/config.cr","line_number":15,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/config.cr#L15"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"AVAILABLE_FORMATTERS","name":"AVAILABLE_FORMATTERS","value":"{progress: Formatter::DotFormatter, todo: Formatter::TODOFormatter, flycheck: Formatter::FlycheckFormatter, silent: Formatter::BaseFormatter, disabled: Formatter::DisabledFormatter, json: Formatter::JSONFormatter}","doc":null,"summary":null},{"id":"DEFAULT_GLOBS","name":"DEFAULT_GLOBS","value":"[\"**/*.cr\", \"!lib\"] of ::String","doc":null,"summary":null},{"id":"PATH","name":"PATH","value":"\".ameba.yml\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/Ameba/GlobUtils","kind":"module","full_name":"Ameba::GlobUtils","name":"GlobUtils"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba","kind":"module","full_name":"Ameba","name":"Ameba"},"doc":"A configuration entry for `Ameba::Runner`.\n\nConfig can be loaded from configuration YAML file and adjusted.\n\n```\nconfig = Config.load\nconfig.formatter = my_formatter\n```\n\nBy default config loads `.ameba.yml` file in a current directory.\n","summary":"

    A configuration entry for Ameba::Runner.

    ","class_methods":[{"id":"formatter_names-class-method","html_id":"formatter_names-class-method","name":"formatter_names","doc":null,"summary":null,"abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/config.cr#L86","def":{"name":"formatter_names","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"AVAILABLE_FORMATTERS.keys.join(\"|\")"}},{"id":"load(path=PATH,colors=true)-class-method","html_id":"load(path=PATH,colors=true)-class-method","name":"load","doc":"Loads YAML configuration file by `path`.\n\n```\nconfig = Ameba::Config.load\n```\n","summary":"

    Loads YAML configuration file by path.

    ","abstract":false,"args":[{"name":"path","doc":null,"default_value":"PATH","external_name":"path","restriction":""},{"name":"colors","doc":null,"default_value":"true","external_name":"colors","restriction":""}],"args_string":"(path = PATH, colors = true)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/config.cr#L78","def":{"name":"load","args":[{"name":"path","doc":null,"default_value":"PATH","external_name":"path","restriction":""},{"name":"colors","doc":null,"default_value":"true","external_name":"colors","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"begin\n Colorize.enabled = colors\n content = File.exists?(path) ? File.read(path) : \"{}\"\n Config.new(YAML.parse(content))\nrescue e\n raise(\"Config file is invalid: #{e.message}\")\nend"}}],"constructors":[],"instance_methods":[{"id":"excluded:Array(String)-instance-method","html_id":"excluded:Array(String)-instance-method","name":"excluded","doc":"Represents a list of paths to exclude from globs.\nCan have wildcards.\n\n```\nconfig = Ameba::Config.load\nconfig.excluded = [\"spec\", \"src/server/*.cr\"]\n```","summary":"

    Represents a list of paths to exclude from globs.

    ","abstract":false,"args":[],"args_string":" : Array(String)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/config.cr#L56","def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String)","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String))-instance-method","html_id":"excluded=(excluded:Array(String))-instance-method","name":"excluded=","doc":"Represents a list of paths to exclude from globs.\nCan have wildcards.\n\n```\nconfig = Ameba::Config.load\nconfig.excluded = [\"spec\", \"src/server/*.cr\"]\n```","summary":"

    Represents a list of paths to exclude from globs.

    ","abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String)"}],"args_string":"(excluded : Array(String))","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/config.cr#L56","def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String)"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"formatter-instance-method","html_id":"formatter-instance-method","name":"formatter","doc":"Returns a formatter to be used while inspecting files.\nIf formatter is not set, it will return default formatter.\n\n```\nconfig = Ameba::Config.load\nconfig.formatter = custom_formatter\nconfig.formatter\n```\n","summary":"

    Returns a formatter to be used while inspecting files.

    ","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/config.cr#L114","def":{"name":"formatter","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@formatter || (@formatter = Formatter::DotFormatter.new)"}},{"id":"formatter=(formatter:Formatter::BaseFormatter?)-instance-method","html_id":"formatter=(formatter:Formatter::BaseFormatter?)-instance-method","name":"formatter=","doc":null,"summary":null,"abstract":false,"args":[{"name":"formatter","doc":null,"default_value":"","external_name":"formatter","restriction":"Formatter::BaseFormatter | ::Nil"}],"args_string":"(formatter : Formatter::BaseFormatter?)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/config.cr#L34","def":{"name":"formatter=","args":[{"name":"formatter","doc":null,"default_value":"","external_name":"formatter","restriction":"Formatter::BaseFormatter | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@formatter = formatter"}},{"id":"formatter=(name:String|Symbol)-instance-method","html_id":"formatter=(name:String|Symbol)-instance-method","name":"formatter=","doc":"Sets formatter by name.\n\n```\nconfig = Ameba::Config.load\nconfig.formatter = :progress\n```\n","summary":"

    Sets formatter by name.

    ","abstract":false,"args":[{"name":"name","doc":null,"default_value":"","external_name":"name","restriction":"String | Symbol"}],"args_string":"(name : String | Symbol)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/config.cr#L125","def":{"name":"formatter=","args":[{"name":"name","doc":null,"default_value":"","external_name":"name","restriction":"String | Symbol"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if f = AVAILABLE_FORMATTERS[name]?\n @formatter = f.new\nelse\n raise(\"Unknown formatter `#{name}`. Use one of #{Config.formatter_names}.\")\nend"}},{"id":"globs:Array(String)-instance-method","html_id":"globs:Array(String)-instance-method","name":"globs","doc":"Returns a list of paths (with wildcards) to files.\nRepresents a list of sources to be inspected.\nIf globs are not set, it will return default list of files.\n\n```\nconfig = Ameba::Config.load\nconfig.globs = [\"**/*.cr\"]\nconfig.globs\n```","summary":"

    Returns a list of paths (with wildcards) to files.

    ","abstract":false,"args":[],"args_string":" : Array(String)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/config.cr#L47","def":{"name":"globs","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String)","visibility":"Public","body":"@globs"}},{"id":"globs=(globs:Array(String))-instance-method","html_id":"globs=(globs:Array(String))-instance-method","name":"globs=","doc":"Returns a list of paths (with wildcards) to files.\nRepresents a list of sources to be inspected.\nIf globs are not set, it will return default list of files.\n\n```\nconfig = Ameba::Config.load\nconfig.globs = [\"**/*.cr\"]\nconfig.globs\n```","summary":"

    Returns a list of paths (with wildcards) to files.

    ","abstract":false,"args":[{"name":"globs","doc":null,"default_value":"","external_name":"globs","restriction":"Array(String)"}],"args_string":"(globs : Array(String))","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/config.cr#L47","def":{"name":"globs=","args":[{"name":"globs","doc":null,"default_value":"","external_name":"globs","restriction":"Array(String)"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@globs = globs"}},{"id":"rules:Array(Rule::Base)-instance-method","html_id":"rules:Array(Rule::Base)-instance-method","name":"rules","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(Rule::Base)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/config.cr#L35","def":{"name":"rules","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(Rule::Base)","visibility":"Public","body":"@rules"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/config.cr#L36","def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/config.cr#L36","def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"sources-instance-method","html_id":"sources-instance-method","name":"sources","doc":"Returns a list of sources matching globs and excluded sections.\n\n```\nconfig = Ameba::Config.load\nconfig.sources # => list of default sources\nconfig.globs = [\"**/*.cr\"]\nconfig.excluded = [\"spec\"]\nconfig.sources # => list of sources pointing to files found by the wildcards\n```\n","summary":"

    Returns a list of sources matching globs and excluded sections.

    ","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/config.cr#L100","def":{"name":"sources","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"((find_files_by_globs(globs)) - (find_files_by_globs(excluded))).map do |path|\n Source.new(File.read(path), path)\nend"}},{"id":"update_rule(name,enabled=true,excluded=nil)-instance-method","html_id":"update_rule(name,enabled=true,excluded=nil)-instance-method","name":"update_rule","doc":"Updates rule properties.\n\n```\nconfig = Ameba::Config.load\nconfig.update_rule \"MyRuleName\", enabled: false\n```\n","summary":"

    Updates rule properties.

    ","abstract":false,"args":[{"name":"name","doc":null,"default_value":"","external_name":"name","restriction":""},{"name":"enabled","doc":null,"default_value":"true","external_name":"enabled","restriction":""},{"name":"excluded","doc":null,"default_value":"nil","external_name":"excluded","restriction":""}],"args_string":"(name, enabled = true, excluded = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/config.cr#L140","def":{"name":"update_rule","args":[{"name":"name","doc":null,"default_value":"","external_name":"name","restriction":""},{"name":"enabled","doc":null,"default_value":"true","external_name":"enabled","restriction":""},{"name":"excluded","doc":null,"default_value":"nil","external_name":"excluded","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"index = @rules.index do |r|\n r.name == name\nend\nif index\nelse\n raise(ArgumentError.new(\"Rule `#{name}` does not exist\"))\nend\nrule = @rules[index]\nrule.enabled = enabled\nrule.excluded = excluded\n@rules[index] = rule\n"}},{"id":"update_rules(names,**args)-instance-method","html_id":"update_rules(names,**args)-instance-method","name":"update_rules","doc":"Updates rules properties.\n\n```\nconfig = Ameba::Config.load\nconfig.update_rules %w(Rule1 Rule2), enabled: true\n```\n\nalso it allows to update groups of rules:\n\n```\nconfig.update_rules %w(Group1 Group2), enabled: true\n```\n","summary":"

    Updates rules properties.

    ","abstract":false,"args":[{"name":"names","doc":null,"default_value":"","external_name":"names","restriction":""}],"args_string":"(names, **args)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/config.cr#L163","def":{"name":"update_rules","args":[{"name":"names","doc":null,"default_value":"","external_name":"names","restriction":""}],"double_splat":{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""},"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"names.try(&.each do |name|\n if group = @rule_groups[name]?\n group.each do |rule|\n update_rule(rule.name, **args)\n end\n else\n update_rule(name, **args)\n end\nend)"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Formatter","path":"Ameba/Formatter.html","kind":"module","full_name":"Ameba::Formatter","name":"Formatter","abstract":false,"superclass":null,"ancestors":[],"locations":[{"filename":"src/ameba/formatter/base_formatter.cr","line_number":4,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/formatter/base_formatter.cr#L4"},{"filename":"src/ameba/formatter/disabled_formatter.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/formatter/disabled_formatter.cr#L1"},{"filename":"src/ameba/formatter/dot_formatter.cr","line_number":3,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/formatter/dot_formatter.cr#L3"},{"filename":"src/ameba/formatter/explain_formatter.cr","line_number":3,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/formatter/explain_formatter.cr#L3"},{"filename":"src/ameba/formatter/flycheck_formatter.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/formatter/flycheck_formatter.cr#L1"},{"filename":"src/ameba/formatter/json_formatter.cr","line_number":3,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/formatter/json_formatter.cr#L3"},{"filename":"src/ameba/formatter/todo_formatter.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/formatter/todo_formatter.cr#L1"},{"filename":"src/ameba/formatter/util.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/formatter/util.cr#L1"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba","kind":"module","full_name":"Ameba","name":"Ameba"},"doc":"A module that utilizes Ameba's formatters.","summary":"

    A module that utilizes Ameba's formatters.

    ","class_methods":[],"constructors":[],"instance_methods":[],"macros":[],"types":[{"html_id":"ameba/Ameba/Formatter/BaseFormatter","path":"Ameba/Formatter/BaseFormatter.html","kind":"class","full_name":"Ameba::Formatter::BaseFormatter","name":"BaseFormatter","abstract":false,"superclass":{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},"ancestors":[{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/formatter/base_formatter.cr","line_number":8,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/formatter/base_formatter.cr#L8"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[{"html_id":"ameba/Ameba/Formatter/DisabledFormatter","kind":"class","full_name":"Ameba::Formatter::DisabledFormatter","name":"DisabledFormatter"},{"html_id":"ameba/Ameba/Formatter/DotFormatter","kind":"class","full_name":"Ameba::Formatter::DotFormatter","name":"DotFormatter"},{"html_id":"ameba/Ameba/Formatter/FlycheckFormatter","kind":"class","full_name":"Ameba::Formatter::FlycheckFormatter","name":"FlycheckFormatter"},{"html_id":"ameba/Ameba/Formatter/JSONFormatter","kind":"class","full_name":"Ameba::Formatter::JSONFormatter","name":"JSONFormatter"}],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Formatter","kind":"module","full_name":"Ameba::Formatter","name":"Formatter"},"doc":"A base formatter for all formatters. It uses `output` IO\nto report results and also implements stub methods for\ncallbacks in `Ameba::Runner#run` method.","summary":"

    A base formatter for all formatters.

    ","class_methods":[],"constructors":[{"id":"new(output=STDOUT)-class-method","html_id":"new(output=STDOUT)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"output","doc":null,"default_value":"STDOUT","external_name":"output","restriction":""}],"args_string":"(output = STDOUT)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/formatter/base_formatter.cr#L13","def":{"name":"new","args":[{"name":"output","doc":null,"default_value":"STDOUT","external_name":"output","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"_ = allocate\n_.initialize(output)\nif _.responds_to?(:finalize)\n ::GC.add_finalizer(_)\nend\n_\n"}}],"instance_methods":[{"id":"config:Hash(Symbol,Bool|String)-instance-method","html_id":"config:Hash(Symbol,Bool|String)-instance-method","name":"config","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Hash(Symbol, Bool | String)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/formatter/base_formatter.cr#L11","def":{"name":"config","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@config"}},{"id":"finished(sources)-instance-method","html_id":"finished(sources)-instance-method","name":"finished","doc":"Callback that indicates when inspection is finished.\nA list of inspected sources is passed as an argument.","summary":"

    Callback that indicates when inspection is finished.

    ","abstract":false,"args":[{"name":"sources","doc":null,"default_value":"","external_name":"sources","restriction":""}],"args_string":"(sources)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/formatter/base_formatter.cr#L30","def":{"name":"finished","args":[{"name":"sources","doc":null,"default_value":"","external_name":"sources","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":""}},{"id":"output:IO::FileDescriptor|IO::Memory-instance-method","html_id":"output:IO::FileDescriptor|IO::Memory-instance-method","name":"output","doc":"TODO: allow other IOs","summary":"

    TODO allow other IOs

    ","abstract":false,"args":[],"args_string":" : IO::FileDescriptor | IO::Memory","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/formatter/base_formatter.cr#L10","def":{"name":"output","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"IO::FileDescriptor | IO::Memory","visibility":"Public","body":"@output"}},{"id":"source_finished(source:Source)-instance-method","html_id":"source_finished(source:Source)-instance-method","name":"source_finished","doc":"Callback that indicates when source inspection is finished.\nA corresponding source is passed as an argument.","summary":"

    Callback that indicates when source inspection is finished.

    ","abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":"Source"}],"args_string":"(source : Source)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/formatter/base_formatter.cr#L22","def":{"name":"source_finished","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":"Source"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":""}},{"id":"source_started(source:Source)-instance-method","html_id":"source_started(source:Source)-instance-method","name":"source_started","doc":"Callback that indicates when source inspection is finished.\nA corresponding source is passed as an argument.","summary":"

    Callback that indicates when source inspection is finished.

    ","abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":"Source"}],"args_string":"(source : Source)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/formatter/base_formatter.cr#L26","def":{"name":"source_started","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":"Source"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":""}},{"id":"started(sources)-instance-method","html_id":"started(sources)-instance-method","name":"started","doc":"Callback that indicates when inspecting is started.\nA list of sources to inspect is passed as an argument.","summary":"

    Callback that indicates when inspecting is started.

    ","abstract":false,"args":[{"name":"sources","doc":null,"default_value":"","external_name":"sources","restriction":""}],"args_string":"(sources)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/formatter/base_formatter.cr#L18","def":{"name":"started","args":[{"name":"sources","doc":null,"default_value":"","external_name":"sources","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":""}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Formatter/DisabledFormatter","path":"Ameba/Formatter/DisabledFormatter.html","kind":"class","full_name":"Ameba::Formatter::DisabledFormatter","name":"DisabledFormatter","abstract":false,"superclass":{"html_id":"ameba/Ameba/Formatter/BaseFormatter","kind":"class","full_name":"Ameba::Formatter::BaseFormatter","name":"BaseFormatter"},"ancestors":[{"html_id":"ameba/Ameba/Formatter/BaseFormatter","kind":"class","full_name":"Ameba::Formatter::BaseFormatter","name":"BaseFormatter"},{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/formatter/disabled_formatter.cr","line_number":3,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/formatter/disabled_formatter.cr#L3"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Formatter","kind":"module","full_name":"Ameba::Formatter","name":"Formatter"},"doc":"A formatter that shows all disabled lines by inline directives.","summary":"

    A formatter that shows all disabled lines by inline directives.

    ","class_methods":[],"constructors":[],"instance_methods":[{"id":"finished(sources)-instance-method","html_id":"finished(sources)-instance-method","name":"finished","doc":"Callback that indicates when inspection is finished.\nA list of inspected sources is passed as an argument.","summary":"

    Callback that indicates when inspection is finished.

    ","abstract":false,"args":[{"name":"sources","doc":null,"default_value":"","external_name":"sources","restriction":""}],"args_string":"(sources)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/formatter/disabled_formatter.cr#L4","def":{"name":"finished","args":[{"name":"sources","doc":null,"default_value":"","external_name":"sources","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"output << \"Disabled rules using inline directives: \\n\\n\"\nsources.each do |source|\n source.issues.select(&.disabled?).each do |e|\n if loc = e.location\n output << (\"#{source.path}:#{loc.line_number}\".colorize(:cyan))\n output << \" #{e.rule.name}\\n\"\n end\n end\nend\n"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Formatter/DotFormatter","path":"Ameba/Formatter/DotFormatter.html","kind":"class","full_name":"Ameba::Formatter::DotFormatter","name":"DotFormatter","abstract":false,"superclass":{"html_id":"ameba/Ameba/Formatter/BaseFormatter","kind":"class","full_name":"Ameba::Formatter::BaseFormatter","name":"BaseFormatter"},"ancestors":[{"html_id":"ameba/Ameba/Formatter/Util","kind":"module","full_name":"Ameba::Formatter::Util","name":"Util"},{"html_id":"ameba/Ameba/Formatter/BaseFormatter","kind":"class","full_name":"Ameba::Formatter::BaseFormatter","name":"BaseFormatter"},{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/formatter/dot_formatter.cr","line_number":6,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/formatter/dot_formatter.cr#L6"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[{"html_id":"ameba/Ameba/Formatter/Util","kind":"module","full_name":"Ameba::Formatter::Util","name":"Util"}],"extended_modules":[],"subclasses":[{"html_id":"ameba/Ameba/Formatter/TODOFormatter","kind":"class","full_name":"Ameba::Formatter::TODOFormatter","name":"TODOFormatter"}],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Formatter","kind":"module","full_name":"Ameba::Formatter","name":"Formatter"},"doc":"A formatter that shows a progress of inspection in a terminal using dots.\nIt is similar to Crystal's dot formatter for specs.","summary":"

    A formatter that shows a progress of inspection in a terminal using dots.

    ","class_methods":[],"constructors":[],"instance_methods":[{"id":"finished(sources)-instance-method","html_id":"finished(sources)-instance-method","name":"finished","doc":"Reports a message when inspection is finished.","summary":"

    Reports a message when inspection is finished.

    ","abstract":false,"args":[{"name":"sources","doc":null,"default_value":"","external_name":"sources","restriction":""}],"args_string":"(sources)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/formatter/dot_formatter.cr#L26","def":{"name":"finished","args":[{"name":"sources","doc":null,"default_value":"","external_name":"sources","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"output.flush\noutput << \"\\n\\n\"\nshow_affected_code = !config[:without_affected_code]?\nfailed_sources = sources.reject(&.valid?)\nfailed_sources.each do |source|\n source.issues.each do |issue|\n if issue.disabled?\n next\n end\n if ( location = issue.location).nil?\n next\n end\n output << (\"#{location}\\n\".colorize(:cyan))\n output << (\"[#{issue.rule.severity.symbol}] #{issue.rule.name}: #{issue.message}\\n\".colorize(:red))\n if show_affected_code && (code = affected_code(source, location))\n output << (code.colorize(:default))\n end\n output << \"\\n\"\n end\nend\noutput << (finished_in_message(@started_at, Time.utc))\noutput << (final_message(sources, failed_sources))\n"}},{"id":"source_finished(source:Source)-instance-method","html_id":"source_finished(source:Source)-instance-method","name":"source_finished","doc":"Reports a result of the inspection of a corresponding source.","summary":"

    Reports a result of the inspection of a corresponding source.

    ","abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":"Source"}],"args_string":"(source : Source)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/formatter/dot_formatter.cr#L20","def":{"name":"source_finished","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":"Source"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"sym = source.valid? ? \".\".colorize(:green) : \"F\".colorize(:red)\n@mutex.synchronize do\n output << sym\nend\n"}},{"id":"started(sources)-instance-method","html_id":"started(sources)-instance-method","name":"started","doc":"Reports a message when inspection is started.","summary":"

    Reports a message when inspection is started.

    ","abstract":false,"args":[{"name":"sources","doc":null,"default_value":"","external_name":"sources","restriction":""}],"args_string":"(sources)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/formatter/dot_formatter.cr#L13","def":{"name":"started","args":[{"name":"sources","doc":null,"default_value":"","external_name":"sources","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@started_at = Time.utc\noutput << (started_message(sources.size))\n"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Formatter/ExplainFormatter","path":"Ameba/Formatter/ExplainFormatter.html","kind":"class","full_name":"Ameba::Formatter::ExplainFormatter","name":"ExplainFormatter","abstract":false,"superclass":{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},"ancestors":[{"html_id":"ameba/Ameba/Formatter/Util","kind":"module","full_name":"Ameba::Formatter::Util","name":"Util"},{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/formatter/explain_formatter.cr","line_number":6,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/formatter/explain_formatter.cr#L6"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"HEADING","name":"HEADING","value":"\"## \"","doc":null,"summary":null},{"id":"LINE_BREAK","name":"LINE_BREAK","value":"\"\\n\"","doc":null,"summary":null},{"id":"PREFIX","name":"PREFIX","value":"\" \"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/Ameba/Formatter/Util","kind":"module","full_name":"Ameba::Formatter::Util","name":"Util"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Formatter","kind":"module","full_name":"Ameba::Formatter","name":"Formatter"},"doc":"A formatter that shows the detailed explanation of the issue at\na specific location.","summary":"

    A formatter that shows the detailed explanation of the issue at a specific location.

    ","class_methods":[],"constructors":[{"id":"new(output,loc)-class-method","html_id":"new(output,loc)-class-method","name":"new","doc":"Creates a new instance of ExplainFormatter.\nAccepts *output* which indicates the io where the explanation will be wrtitten to.\nSecond argument is *location* which indicates the location to explain.\n\n```\nExplainFormatter.new output,\n {file: path, line: line_number, column: column_number}\n```\n","summary":"

    Creates a new instance of ExplainFormatter.

    ","abstract":false,"args":[{"name":"output","doc":null,"default_value":"","external_name":"output","restriction":""},{"name":"loc","doc":null,"default_value":"","external_name":"loc","restriction":""}],"args_string":"(output, loc)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/formatter/explain_formatter.cr#L25","def":{"name":"new","args":[{"name":"output","doc":null,"default_value":"","external_name":"output","restriction":""},{"name":"loc","doc":null,"default_value":"","external_name":"loc","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"_ = allocate\n_.initialize(output, loc)\nif _.responds_to?(:finalize)\n ::GC.add_finalizer(_)\nend\n_\n"}}],"instance_methods":[{"id":"finished(sources)-instance-method","html_id":"finished(sources)-instance-method","name":"finished","doc":"Reports the explainations at the *@location*.","summary":"

    Reports the explainations at the @location.

    ","abstract":false,"args":[{"name":"sources","doc":null,"default_value":"","external_name":"sources","restriction":""}],"args_string":"(sources)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/formatter/explain_formatter.cr#L30","def":{"name":"finished","args":[{"name":"sources","doc":null,"default_value":"","external_name":"sources","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"source = sources.find do |s|\n s.path == @location.filename\nend\nif source\nelse\n return\nend\nsource.issues.each do |issue|\n if ((location = issue.location) && (location.line_number == @location.line_number)) && (location.column_number == @location.column_number)\n explain(source, issue)\n end\nend\n"}},{"id":"location:Crystal::Location-instance-method","html_id":"location:Crystal::Location-instance-method","name":"location","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Crystal::Location","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/formatter/explain_formatter.cr#L14","def":{"name":"location","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Crystal::Location","visibility":"Public","body":"@location"}},{"id":"output:IO::FileDescriptor|IO::Memory-instance-method","html_id":"output:IO::FileDescriptor|IO::Memory-instance-method","name":"output","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : IO::FileDescriptor | IO::Memory","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/formatter/explain_formatter.cr#L13","def":{"name":"output","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"IO::FileDescriptor | IO::Memory","visibility":"Public","body":"@output"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Formatter/FlycheckFormatter","path":"Ameba/Formatter/FlycheckFormatter.html","kind":"class","full_name":"Ameba::Formatter::FlycheckFormatter","name":"FlycheckFormatter","abstract":false,"superclass":{"html_id":"ameba/Ameba/Formatter/BaseFormatter","kind":"class","full_name":"Ameba::Formatter::BaseFormatter","name":"BaseFormatter"},"ancestors":[{"html_id":"ameba/Ameba/Formatter/BaseFormatter","kind":"class","full_name":"Ameba::Formatter::BaseFormatter","name":"BaseFormatter"},{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/formatter/flycheck_formatter.cr","line_number":2,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/formatter/flycheck_formatter.cr#L2"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Formatter","kind":"module","full_name":"Ameba::Formatter","name":"Formatter"},"doc":null,"summary":null,"class_methods":[],"constructors":[],"instance_methods":[{"id":"source_finished(source:Source)-instance-method","html_id":"source_finished(source:Source)-instance-method","name":"source_finished","doc":"Callback that indicates when source inspection is finished.\nA corresponding source is passed as an argument.","summary":"

    Callback that indicates when source inspection is finished.

    ","abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":"Source"}],"args_string":"(source : Source)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/formatter/flycheck_formatter.cr#L5","def":{"name":"source_finished","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":"Source"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"source.issues.each do |e|\n if e.disabled?\n next\n end\n if loc = e.location\n @mutex.synchronize do\n output.printf(\"%s:%d:%d: %s: [%s] %s\\n\", source.path, loc.line_number, loc.column_number, e.rule.severity.symbol, e.rule.name, e.message.gsub(\"\\n\", \" \"))\n end\n end\nend"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Formatter/JSONFormatter","path":"Ameba/Formatter/JSONFormatter.html","kind":"class","full_name":"Ameba::Formatter::JSONFormatter","name":"JSONFormatter","abstract":false,"superclass":{"html_id":"ameba/Ameba/Formatter/BaseFormatter","kind":"class","full_name":"Ameba::Formatter::BaseFormatter","name":"BaseFormatter"},"ancestors":[{"html_id":"ameba/Ameba/Formatter/BaseFormatter","kind":"class","full_name":"Ameba::Formatter::BaseFormatter","name":"BaseFormatter"},{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/formatter/json_formatter.cr","line_number":66,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/formatter/json_formatter.cr#L66"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Formatter","kind":"module","full_name":"Ameba::Formatter","name":"Formatter"},"doc":"A formatter that produces the result in a json format.\n\nExample:\n\n```\n{\n \"metadata\": {\n \"ameba_version\": \"x.x.x\",\n \"crystal_version\": \"x.x.x\",\n },\n \"sources\": [\n {\n \"issues\": [\n {\n \"location\": {\n \"column\": 7,\n \"line\": 17,\n },\n \"end_location\": {\n \"column\": 20,\n \"line\": 17,\n },\n \"message\": \"Useless assignment to variable `a`\",\n \"rule_name\": \"UselessAssign\",\n \"severity\": \"Convention\",\n },\n {\n \"location\": {\n \"column\": 7,\n \"line\": 18,\n },\n \"end_location\": {\n \"column\": 8,\n \"line\": 18,\n },\n \"message\": \"Useless assignment to variable `a`\",\n \"rule_name\": \"UselessAssign\",\n },\n {\n \"location\": {\n \"column\": 7,\n \"line\": 19,\n },\n \"end_location\": {\n \"column\": 9,\n \"line\": 19,\n },\n \"message\": \"Useless assignment to variable `a`\",\n \"rule_name\": \"UselessAssign\",\n \"severity\": \"Convention\",\n },\n ],\n \"path\": \"src/ameba/formatter/json_formatter.cr\",\n },\n ],\n \"summary\": {\n \"issues_count\": 3,\n \"target_sources_count\": 1,\n },\n}\n```\n","summary":"

    A formatter that produces the result in a json format.

    ","class_methods":[],"constructors":[{"id":"new(output=STDOUT)-class-method","html_id":"new(output=STDOUT)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"output","doc":null,"default_value":"STDOUT","external_name":"output","restriction":""}],"args_string":"(output = STDOUT)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/formatter/json_formatter.cr#L67","def":{"name":"new","args":[{"name":"output","doc":null,"default_value":"STDOUT","external_name":"output","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"_ = allocate\n_.initialize(output)\nif _.responds_to?(:finalize)\n ::GC.add_finalizer(_)\nend\n_\n"}}],"instance_methods":[{"id":"finished(sources)-instance-method","html_id":"finished(sources)-instance-method","name":"finished","doc":"Callback that indicates when inspection is finished.\nA list of inspected sources is passed as an argument.","summary":"

    Callback that indicates when inspection is finished.

    ","abstract":false,"args":[{"name":"sources","doc":null,"default_value":"","external_name":"sources","restriction":""}],"args_string":"(sources)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/formatter/json_formatter.cr#L87","def":{"name":"finished","args":[{"name":"sources","doc":null,"default_value":"","external_name":"sources","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@result.to_json(@output)"}},{"id":"source_finished(source:Source)-instance-method","html_id":"source_finished(source:Source)-instance-method","name":"source_finished","doc":"Callback that indicates when source inspection is finished.\nA corresponding source is passed as an argument.","summary":"

    Callback that indicates when source inspection is finished.

    ","abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":"Source"}],"args_string":"(source : Source)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/formatter/json_formatter.cr#L75","def":{"name":"source_finished","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":"Source"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"json_source = AsJSON::Source.new(source.path)\nsource.issues.each do |e|\n if e.disabled?\n next\n end\n json_source.issues << (AsJSON::Issue.new(e.rule.name, e.rule.severity.to_s, e.location, e.end_location, e.message))\n __temp_28 = @result.summary\n __temp_28.issues_count = __temp_28.issues_count + 1\nend\n@result.sources << json_source\n"}},{"id":"started(sources)-instance-method","html_id":"started(sources)-instance-method","name":"started","doc":"Callback that indicates when inspecting is started.\nA list of sources to inspect is passed as an argument.","summary":"

    Callback that indicates when inspecting is started.

    ","abstract":false,"args":[{"name":"sources","doc":null,"default_value":"","external_name":"sources","restriction":""}],"args_string":"(sources)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/formatter/json_formatter.cr#L71","def":{"name":"started","args":[{"name":"sources","doc":null,"default_value":"","external_name":"sources","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@result.summary.target_sources_count = sources.size"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Formatter/TODOFormatter","path":"Ameba/Formatter/TODOFormatter.html","kind":"class","full_name":"Ameba::Formatter::TODOFormatter","name":"TODOFormatter","abstract":false,"superclass":{"html_id":"ameba/Ameba/Formatter/DotFormatter","kind":"class","full_name":"Ameba::Formatter::DotFormatter","name":"DotFormatter"},"ancestors":[{"html_id":"ameba/Ameba/Formatter/DotFormatter","kind":"class","full_name":"Ameba::Formatter::DotFormatter","name":"DotFormatter"},{"html_id":"ameba/Ameba/Formatter/Util","kind":"module","full_name":"Ameba::Formatter::Util","name":"Util"},{"html_id":"ameba/Ameba/Formatter/BaseFormatter","kind":"class","full_name":"Ameba::Formatter::BaseFormatter","name":"BaseFormatter"},{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/formatter/todo_formatter.cr","line_number":5,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/formatter/todo_formatter.cr#L5"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Formatter","kind":"module","full_name":"Ameba::Formatter","name":"Formatter"},"doc":"A formatter that creates a todo config.\nBasically, it takes all issues reported and disables corresponding rules\nor excludes failed sources from these rules.","summary":"

    A formatter that creates a todo config.

    ","class_methods":[],"constructors":[{"id":"new(output=STDOUT)-class-method","html_id":"new(output=STDOUT)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"output","doc":null,"default_value":"STDOUT","external_name":"output","restriction":""}],"args_string":"(output = STDOUT)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/formatter/todo_formatter.cr#L6","def":{"name":"new","args":[{"name":"output","doc":null,"default_value":"STDOUT","external_name":"output","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"_ = allocate\n_.initialize(output)\nif _.responds_to?(:finalize)\n ::GC.add_finalizer(_)\nend\n_\n"}}],"instance_methods":[{"id":"finished(sources)-instance-method","html_id":"finished(sources)-instance-method","name":"finished","doc":"Reports a message when inspection is finished.","summary":"

    Reports a message when inspection is finished.

    ","abstract":false,"args":[{"name":"sources","doc":null,"default_value":"","external_name":"sources","restriction":""}],"args_string":"(sources)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/formatter/todo_formatter.cr#L9","def":{"name":"finished","args":[{"name":"sources","doc":null,"default_value":"","external_name":"sources","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"super(sources)\nissues = sources.map(&.issues).flatten\nif issues.any? do |issue|\n !issue.disabled?\nend\nelse\n @output << \"No issues found. File is not generated.\\n\"\n return\nend\nif issues.any? do |issue|\n issue.syntax?\nend\n @output << \"Unable to generate TODO file. Please fix syntax issues.\\n\"\n return\nend\nfile = generate_todo_config(issues)\n@output << \"Created #{file.path}\\n\"\nfile\n"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Formatter/Util","path":"Ameba/Formatter/Util.html","kind":"module","full_name":"Ameba::Formatter::Util","name":"Util","abstract":false,"superclass":null,"ancestors":[],"locations":[{"filename":"src/ameba/formatter/util.cr","line_number":2,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/formatter/util.cr#L2"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[{"html_id":"ameba/Ameba/Formatter/DotFormatter","kind":"class","full_name":"Ameba::Formatter::DotFormatter","name":"DotFormatter"},{"html_id":"ameba/Ameba/Formatter/ExplainFormatter","kind":"class","full_name":"Ameba::Formatter::ExplainFormatter","name":"ExplainFormatter"}],"namespace":{"html_id":"ameba/Ameba/Formatter","kind":"module","full_name":"Ameba::Formatter","name":"Formatter"},"doc":null,"summary":null,"class_methods":[],"constructors":[],"instance_methods":[{"id":"affected_code(source,location,max_length=100,placeholder="...",prompt=">")-instance-method","html_id":"affected_code(source,location,max_length=100,placeholder="...",prompt=">")-instance-method","name":"affected_code","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"location","doc":null,"default_value":"","external_name":"location","restriction":""},{"name":"max_length","doc":null,"default_value":"100","external_name":"max_length","restriction":""},{"name":"placeholder","doc":null,"default_value":"\" ...\"","external_name":"placeholder","restriction":""},{"name":"prompt","doc":null,"default_value":"\"> \"","external_name":"prompt","restriction":""}],"args_string":"(source, location, max_length = 100, placeholder = " ...", prompt = "> ")","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/formatter/util.cr#L3","def":{"name":"affected_code","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"location","doc":null,"default_value":"","external_name":"location","restriction":""},{"name":"max_length","doc":null,"default_value":"100","external_name":"max_length","restriction":""},{"name":"placeholder","doc":null,"default_value":"\" ...\"","external_name":"placeholder","restriction":""},{"name":"prompt","doc":null,"default_value":"\"> \"","external_name":"prompt","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"line, column = location.line_number, location.column_number\naffected_line = source.lines[line - 1]?\nif affected_line.nil? || affected_line.strip.empty?\n return\nend\nif affected_line.size > max_length && column < max_length\n affected_line = affected_line[0, (max_length - placeholder.size) - 1] + placeholder\nend\nstripped = affected_line.lstrip\nposition = (column - (affected_line.size - stripped.size)) + prompt.size\nString.build do |str|\n ((str << prompt) << stripped) << \"\\n\"\n str << (\" \" * (position - 1))\n str << (\"^\".colorize(:yellow))\nend\n"}}],"macros":[],"types":[]}]},{"html_id":"ameba/Ameba/GlobUtils","path":"Ameba/GlobUtils.html","kind":"module","full_name":"Ameba::GlobUtils","name":"GlobUtils","abstract":false,"superclass":null,"ancestors":[],"locations":[{"filename":"src/ameba/glob_utils.cr","line_number":3,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/glob_utils.cr#L3"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[{"html_id":"ameba/Ameba/Config","kind":"class","full_name":"Ameba::Config","name":"Config"}],"namespace":{"html_id":"ameba/Ameba","kind":"module","full_name":"Ameba","name":"Ameba"},"doc":"Helper module that is utilizes helpers for working with globs.","summary":"

    Helper module that is utilizes helpers for working with globs.

    ","class_methods":[],"constructors":[],"instance_methods":[{"id":"expand(globs)-instance-method","html_id":"expand(globs)-instance-method","name":"expand","doc":"Expands globs. Globs can point to files or even directories.\n\n```\nexpand([\"spec/*.cr\", \"src\"]) # => all files in src folder + first level specs\n```\n","summary":"

    Expands globs.

    ","abstract":false,"args":[{"name":"globs","doc":null,"default_value":"","external_name":"globs","restriction":""}],"args_string":"(globs)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/glob_utils.cr#L24","def":{"name":"expand","args":[{"name":"globs","doc":null,"default_value":"","external_name":"globs","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"globs.map do |glob|\n if File.directory?(glob)\n glob = glob + \"/**/*.cr\"\n end\n Dir[glob]\nend.flatten.uniq!"}},{"id":"find_files_by_globs(globs)-instance-method","html_id":"find_files_by_globs(globs)-instance-method","name":"find_files_by_globs","doc":"Returns all files that match specified globs.\nGlobs can have wildcards or be rejected:\n\n```\nfind_files_by_globs([\"**/*.cr\", \"!lib\"])\n```\n","summary":"

    Returns all files that match specified globs.

    ","abstract":false,"args":[{"name":"globs","doc":null,"default_value":"","external_name":"globs","restriction":""}],"args_string":"(globs)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/glob_utils.cr#L11","def":{"name":"find_files_by_globs","args":[{"name":"globs","doc":null,"default_value":"","external_name":"globs","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"rejected = rejected_globs(globs)\nselected = globs - rejected\n(expand(selected)) - (expand(rejected.map! do |p|\n p[1..-1]\nend))\n"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/InlineComments","path":"Ameba/InlineComments.html","kind":"module","full_name":"Ameba::InlineComments","name":"InlineComments","abstract":false,"superclass":null,"ancestors":[],"locations":[{"filename":"src/ameba/inline_comments.cr","line_number":3,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/inline_comments.cr#L3"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"COMMENT_DIRECTIVE_REGEX","name":"COMMENT_DIRECTIVE_REGEX","value":"/# ameba:(?\\w+) (?\\w+(?:\\/\\w+)?(?:,? \\w+(?:\\/\\w+)?)*)/","doc":null,"summary":null}],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[{"html_id":"ameba/Ameba/Source","kind":"class","full_name":"Ameba::Source","name":"Source"}],"namespace":{"html_id":"ameba/Ameba","kind":"module","full_name":"Ameba","name":"Ameba"},"doc":"A module that utilizes inline comments parsing and processing logic.","summary":"

    A module that utilizes inline comments parsing and processing logic.

    ","class_methods":[],"constructors":[],"instance_methods":[{"id":"comment?(line_number:Int32)-instance-method","html_id":"comment?(line_number:Int32)-instance-method","name":"comment?","doc":"Returns true if the line at the given `line_number` is a comment.","summary":"

    Returns true if the line at the given line_number is a comment.

    ","abstract":false,"args":[{"name":"line_number","doc":null,"default_value":"","external_name":"line_number","restriction":"Int32"}],"args_string":"(line_number : Int32)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/inline_comments.cr#L80","def":{"name":"comment?","args":[{"name":"line_number","doc":null,"default_value":"","external_name":"line_number","restriction":"Int32"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if line = lines[line_number]?\n comment?(line)\nend"}},{"id":"location_disabled?(location,rule)-instance-method","html_id":"location_disabled?(location,rule)-instance-method","name":"location_disabled?","doc":"Returns true if current location is disabled for a particular rule,\nfalse otherwise.\n\nLocation is disabled in two cases:\n 1. The line of the location ends with a comment directive.\n 2. The line above the location is a comment directive.\n\nFor example, here are two examples of disabled location:\n\n```\n# ameba:disable Style/LargeNumbers\nTime.epoch(1483859302)\n\nTime.epoch(1483859302) # ameba:disable Style/LargeNumbers\n```\n\nBut here are examples which are not considered as disabled location:\n\n```\n# ameba:disable Style/LargeNumbers\n#\nTime.epoch(1483859302)\n\nif use_epoch? # ameba:disable Style/LargeNumbers\n Time.epoch(1483859302)\nend\n```\n","summary":"

    Returns true if current location is disabled for a particular rule, false otherwise.

    ","abstract":false,"args":[{"name":"location","doc":null,"default_value":"","external_name":"location","restriction":""},{"name":"rule","doc":null,"default_value":"","external_name":"rule","restriction":""}],"args_string":"(location, rule)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/inline_comments.cr#L40","def":{"name":"location_disabled?","args":[{"name":"location","doc":null,"default_value":"","external_name":"location","restriction":""},{"name":"rule","doc":null,"default_value":"","external_name":"rule","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if Rule::SPECIAL.includes?(rule.name)\n return false\nend\nif line_number = location.try do |__arg0|\n __arg0.line_number.try(&.-(1))\nend\nelse\n return false\nend\nif line = lines[line_number]?\nelse\n return false\nend\n(line_disabled?(line, rule)) || (((line_number > 0 && (prev_line = lines[line_number - 1])) && (comment?(prev_line))) && (line_disabled?(prev_line, rule)))\n"}},{"id":"parse_inline_directive(line)-instance-method","html_id":"parse_inline_directive(line)-instance-method","name":"parse_inline_directive","doc":"Parses inline comment directive. Returns a tuple that consists of\nan action and parsed rules if directive found, nil otherwise.\n\n```\nline = \"# ameba:disable Rule1, Rule2\"\ndirective = parse_inline_directive(line)\ndirective[:action] # => \"disable\"\ndirective[:rules] # => [\"Rule1\", \"Rule2\"]\n```\n\nIt ignores the directive if it is commented out.\n\n```\nline = \"# # ameba:disable Rule1, Rule2\"\nparse_inline_directive(line) # => nil\n```\n","summary":"

    Parses inline comment directive.

    ","abstract":false,"args":[{"name":"line","doc":null,"default_value":"","external_name":"line","restriction":""}],"args_string":"(line)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/inline_comments.cr#L69","def":{"name":"parse_inline_directive","args":[{"name":"line","doc":null,"default_value":"","external_name":"line","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if directive = COMMENT_DIRECTIVE_REGEX.match(line)\n if commented_out?(line.gsub(directive[0], \"\"))\n return\n end\n {action: directive[\"action\"], rules: directive[\"rules\"].split(/[\\s,]/, remove_empty: true)}\nend"}}],"macros":[],"types":[{"html_id":"ameba/Ameba/InlineComments/Action","path":"Ameba/InlineComments/Action.html","kind":"enum","full_name":"Ameba::InlineComments::Action","name":"Action","abstract":false,"superclass":null,"ancestors":[{"html_id":"ameba/Enum","kind":"struct","full_name":"Enum","name":"Enum"},{"html_id":"ameba/Comparable","kind":"module","full_name":"Comparable","name":"Comparable"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/inline_comments.cr","line_number":7,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/inline_comments.cr#L7"}],"repository_name":"ameba","program":false,"enum":true,"alias":false,"aliased":"","const":false,"constants":[{"id":"Disable","name":"Disable","value":"0","doc":null,"summary":null},{"id":"Enable","name":"Enable","value":"1","doc":null,"summary":null}],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/InlineComments","kind":"module","full_name":"Ameba::InlineComments","name":"InlineComments"},"doc":"Available actions in the inline comments","summary":"

    Available actions in the inline comments

    ","class_methods":[],"constructors":[],"instance_methods":[{"id":"disable?-instance-method","html_id":"disable?-instance-method","name":"disable?","doc":null,"summary":null,"abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/inline_comments.cr#L8","def":{"name":"disable?","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"self == Disable"}},{"id":"enable?-instance-method","html_id":"enable?-instance-method","name":"enable?","doc":null,"summary":null,"abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/inline_comments.cr#L9","def":{"name":"enable?","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"self == Enable"}}],"macros":[],"types":[]}]},{"html_id":"ameba/Ameba/Issue","path":"Ameba/Issue.html","kind":"struct","full_name":"Ameba::Issue","name":"Issue","abstract":false,"superclass":{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},"ancestors":[{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/issue.cr","line_number":3,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/issue.cr#L3"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba","kind":"module","full_name":"Ameba","name":"Ameba"},"doc":"Represents an issue reported by Ameba.","summary":"

    Represents an issue reported by Ameba.

    ","class_methods":[],"constructors":[{"id":"new(rule:Rule::Base,location:Crystal::Location?,end_location:Crystal::Location?,message:String,status:Symbol?)-class-method","html_id":"new(rule:Rule::Base,location:Crystal::Location?,end_location:Crystal::Location?,message:String,status:Symbol?)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"rule","doc":null,"default_value":"","external_name":"rule","restriction":"Rule::Base"},{"name":"location","doc":null,"default_value":"","external_name":"location","restriction":"Crystal::Location | ::Nil"},{"name":"end_location","doc":null,"default_value":"","external_name":"end_location","restriction":"Crystal::Location | ::Nil"},{"name":"message","doc":null,"default_value":"","external_name":"message","restriction":"String"},{"name":"status","doc":null,"default_value":"","external_name":"status","restriction":"Symbol | ::Nil"}],"args_string":"(rule : Rule::Base, location : Crystal::Location?, end_location : Crystal::Location?, message : String, status : Symbol?)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/issue.cr#L3","def":{"name":"new","args":[{"name":"rule","doc":null,"default_value":"","external_name":"rule","restriction":"Rule::Base"},{"name":"location","doc":null,"default_value":"","external_name":"location","restriction":"Crystal::Location | ::Nil"},{"name":"end_location","doc":null,"default_value":"","external_name":"end_location","restriction":"Crystal::Location | ::Nil"},{"name":"message","doc":null,"default_value":"","external_name":"message","restriction":"String"},{"name":"status","doc":null,"default_value":"","external_name":"status","restriction":"Symbol | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"_ = allocate\n_.initialize(rule, location, end_location, message, status)\nif _.responds_to?(:finalize)\n ::GC.add_finalizer(_)\nend\n_\n"}}],"instance_methods":[{"id":"clone-instance-method","html_id":"clone-instance-method","name":"clone","doc":null,"summary":null,"abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/issue.cr#L3","def":{"name":"clone","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"self.class.new(@rule.clone, @location.clone, @end_location.clone, @message.clone, @status.clone)"}},{"id":"copy_with(rule_rule=@rule,location_location=@location,end_location_end_location=@end_location,message_message=@message,status_status=@status)-instance-method","html_id":"copy_with(rule_rule=@rule,location_location=@location,end_location_end_location=@end_location,message_message=@message,status_status=@status)-instance-method","name":"copy_with","doc":null,"summary":null,"abstract":false,"args":[{"name":"_rule","doc":null,"default_value":"@rule","external_name":"rule","restriction":""},{"name":"_location","doc":null,"default_value":"@location","external_name":"location","restriction":""},{"name":"_end_location","doc":null,"default_value":"@end_location","external_name":"end_location","restriction":""},{"name":"_message","doc":null,"default_value":"@message","external_name":"message","restriction":""},{"name":"_status","doc":null,"default_value":"@status","external_name":"status","restriction":""}],"args_string":"(rule _rule = @rule, location _location = @location, end_location _end_location = @end_location, message _message = @message, status _status = @status)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/issue.cr#L3","def":{"name":"copy_with","args":[{"name":"_rule","doc":null,"default_value":"@rule","external_name":"rule","restriction":""},{"name":"_location","doc":null,"default_value":"@location","external_name":"location","restriction":""},{"name":"_end_location","doc":null,"default_value":"@end_location","external_name":"end_location","restriction":""},{"name":"_message","doc":null,"default_value":"@message","external_name":"message","restriction":""},{"name":"_status","doc":null,"default_value":"@status","external_name":"status","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"self.class.new(_rule, _location, _end_location, _message, _status)"}},{"id":"disabled?-instance-method","html_id":"disabled?-instance-method","name":"disabled?","doc":null,"summary":null,"abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/issue.cr#L18","def":{"name":"disabled?","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"status == (:disabled)"}},{"id":"end_location:Crystal::Location?-instance-method","html_id":"end_location:Crystal::Location?-instance-method","name":"end_location","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Crystal::Location?","source_link":null,"def":{"name":"end_location","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Crystal::Location | ::Nil","visibility":"Public","body":"@end_location"}},{"id":"location:Crystal::Location?-instance-method","html_id":"location:Crystal::Location?-instance-method","name":"location","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Crystal::Location?","source_link":null,"def":{"name":"location","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Crystal::Location | ::Nil","visibility":"Public","body":"@location"}},{"id":"message:String-instance-method","html_id":"message:String-instance-method","name":"message","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"message","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@message"}},{"id":"rule:Rule::Base-instance-method","html_id":"rule:Rule::Base-instance-method","name":"rule","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Rule::Base","source_link":null,"def":{"name":"rule","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Rule::Base","visibility":"Public","body":"@rule"}},{"id":"status:Symbol?-instance-method","html_id":"status:Symbol?-instance-method","name":"status","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Symbol?","source_link":null,"def":{"name":"status","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Symbol | ::Nil","visibility":"Public","body":"@status"}},{"id":"syntax?-instance-method","html_id":"syntax?-instance-method","name":"syntax?","doc":null,"summary":null,"abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/issue.cr#L22","def":{"name":"syntax?","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"rule.is_a?(Rule::Lint::Syntax)"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Reportable","path":"Ameba/Reportable.html","kind":"module","full_name":"Ameba::Reportable","name":"Reportable","abstract":false,"superclass":null,"ancestors":[],"locations":[{"filename":"src/ameba/reportable.cr","line_number":3,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/reportable.cr#L3"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[{"html_id":"ameba/Ameba/Source","kind":"class","full_name":"Ameba::Source","name":"Source"}],"namespace":{"html_id":"ameba/Ameba","kind":"module","full_name":"Ameba","name":"Ameba"},"doc":"Represents a module used to report issues.","summary":"

    Represents a module used to report issues.

    ","class_methods":[],"constructors":[],"instance_methods":[{"id":"add_issue(rule,location:Crystal::Location?,end_location:Crystal::Location?,message,status=nil)-instance-method","html_id":"add_issue(rule,location:Crystal::Location?,end_location:Crystal::Location?,message,status=nil)-instance-method","name":"add_issue","doc":"Adds a new issue to the list of issues.","summary":"

    Adds a new issue to the list of issues.

    ","abstract":false,"args":[{"name":"rule","doc":null,"default_value":"","external_name":"rule","restriction":""},{"name":"location","doc":null,"default_value":"","external_name":"location","restriction":"Crystal::Location | ::Nil"},{"name":"end_location","doc":null,"default_value":"","external_name":"end_location","restriction":"Crystal::Location | ::Nil"},{"name":"message","doc":null,"default_value":"","external_name":"message","restriction":""},{"name":"status","doc":null,"default_value":"nil","external_name":"status","restriction":""}],"args_string":"(rule, location : Crystal::Location?, end_location : Crystal::Location?, message, status = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/reportable.cr#L8","def":{"name":"add_issue","args":[{"name":"rule","doc":null,"default_value":"","external_name":"rule","restriction":""},{"name":"location","doc":null,"default_value":"","external_name":"location","restriction":"Crystal::Location | ::Nil"},{"name":"end_location","doc":null,"default_value":"","external_name":"end_location","restriction":"Crystal::Location | ::Nil"},{"name":"message","doc":null,"default_value":"","external_name":"message","restriction":""},{"name":"status","doc":null,"default_value":"nil","external_name":"status","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if location_disabled?(location, rule)\n status || (status = :disabled)\nend\nissues << (Issue.new(rule, location, end_location, message, status))\n"}},{"id":"add_issue(rule,location:Tuple(Int32,Int32),end_location:Tuple(Int32,Int32),message,**args)-instance-method","html_id":"add_issue(rule,location:Tuple(Int32,Int32),end_location:Tuple(Int32,Int32),message,**args)-instance-method","name":"add_issue","doc":"Adds a new issue for *location* and *end_location* defined by line and column numbers.","summary":"

    Adds a new issue for location and end_location defined by line and column numbers.

    ","abstract":false,"args":[{"name":"rule","doc":null,"default_value":"","external_name":"rule","restriction":""},{"name":"location","doc":null,"default_value":"","external_name":"location","restriction":"Tuple(Int32, Int32)"},{"name":"end_location","doc":null,"default_value":"","external_name":"end_location","restriction":"Tuple(Int32, Int32)"},{"name":"message","doc":null,"default_value":"","external_name":"message","restriction":""}],"args_string":"(rule, location : Tuple(Int32, Int32), end_location : Tuple(Int32, Int32), message, **args)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/reportable.cr#L30","def":{"name":"add_issue","args":[{"name":"rule","doc":null,"default_value":"","external_name":"rule","restriction":""},{"name":"location","doc":null,"default_value":"","external_name":"location","restriction":"Tuple(Int32, Int32)"},{"name":"end_location","doc":null,"default_value":"","external_name":"end_location","restriction":"Tuple(Int32, Int32)"},{"name":"message","doc":null,"default_value":"","external_name":"message","restriction":""}],"double_splat":{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""},"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"location = Crystal::Location.new(path, *location)\nend_location = Crystal::Location.new(path, *end_location)\nadd_issue(rule, location, end_location, message, **args)\n"}},{"id":"add_issue(rule,location:Tuple(Int32,Int32),message,**args)-instance-method","html_id":"add_issue(rule,location:Tuple(Int32,Int32),message,**args)-instance-method","name":"add_issue","doc":"Adds a new issue for *location* defined by line and column numbers.","summary":"

    Adds a new issue for location defined by line and column numbers.

    ","abstract":false,"args":[{"name":"rule","doc":null,"default_value":"","external_name":"rule","restriction":""},{"name":"location","doc":null,"default_value":"","external_name":"location","restriction":"Tuple(Int32, Int32)"},{"name":"message","doc":null,"default_value":"","external_name":"message","restriction":""}],"args_string":"(rule, location : Tuple(Int32, Int32), message, **args)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/reportable.cr#L24","def":{"name":"add_issue","args":[{"name":"rule","doc":null,"default_value":"","external_name":"rule","restriction":""},{"name":"location","doc":null,"default_value":"","external_name":"location","restriction":"Tuple(Int32, Int32)"},{"name":"message","doc":null,"default_value":"","external_name":"message","restriction":""}],"double_splat":{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""},"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"location = Crystal::Location.new(path, *location)\nadd_issue(rule, location, nil, message, **args)\n"}},{"id":"add_issue(rule,node:Crystal::ASTNode,message,**args)-instance-method","html_id":"add_issue(rule,node:Crystal::ASTNode,message,**args)-instance-method","name":"add_issue","doc":"Adds a new issue for AST *node*.","summary":"

    Adds a new issue for AST node.

    ","abstract":false,"args":[{"name":"rule","doc":null,"default_value":"","external_name":"rule","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ASTNode"},{"name":"message","doc":null,"default_value":"","external_name":"message","restriction":""}],"args_string":"(rule, node : Crystal::ASTNode, message, **args)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/reportable.cr#L14","def":{"name":"add_issue","args":[{"name":"rule","doc":null,"default_value":"","external_name":"rule","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ASTNode"},{"name":"message","doc":null,"default_value":"","external_name":"message","restriction":""}],"double_splat":{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""},"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"add_issue(rule, node.location, node.end_location, message, **args)"}},{"id":"add_issue(rule,token:Crystal::Token,message,**args)-instance-method","html_id":"add_issue(rule,token:Crystal::Token,message,**args)-instance-method","name":"add_issue","doc":"Adds a new issue for Crystal *token*.","summary":"

    Adds a new issue for Crystal token.

    ","abstract":false,"args":[{"name":"rule","doc":null,"default_value":"","external_name":"rule","restriction":""},{"name":"token","doc":null,"default_value":"","external_name":"token","restriction":"Crystal::Token"},{"name":"message","doc":null,"default_value":"","external_name":"message","restriction":""}],"args_string":"(rule, token : Crystal::Token, message, **args)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/reportable.cr#L19","def":{"name":"add_issue","args":[{"name":"rule","doc":null,"default_value":"","external_name":"rule","restriction":""},{"name":"token","doc":null,"default_value":"","external_name":"token","restriction":"Crystal::Token"},{"name":"message","doc":null,"default_value":"","external_name":"message","restriction":""}],"double_splat":{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""},"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"add_issue(rule, token.location, nil, message, **args)"}},{"id":"issues-instance-method","html_id":"issues-instance-method","name":"issues","doc":"List of reported issues.","summary":"

    List of reported issues.

    ","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/reportable.cr#L5","def":{"name":"issues","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@issues"}},{"id":"valid?-instance-method","html_id":"valid?-instance-method","name":"valid?","doc":"Returns true if the list of not disabled issues is empty, false otherwise.","summary":"

    Returns true if the list of not disabled issues is empty, false otherwise.

    ","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/reportable.cr#L37","def":{"name":"valid?","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"issues.reject(&.disabled?).empty?"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule","path":"Ameba/Rule.html","kind":"module","full_name":"Ameba::Rule","name":"Rule","abstract":false,"superclass":null,"ancestors":[],"locations":[{"filename":"src/ameba/rule/base.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/base.cr#L1"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"SPECIAL","name":"SPECIAL","value":"[Lint::Syntax.rule_name, Lint::UnneededDisableDirective.rule_name]","doc":"List of names of the special rules, which\nbehave differently than usual rules.","summary":"

    List of names of the special rules, which behave differently than usual rules.

    "}],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba","kind":"module","full_name":"Ameba","name":"Ameba"},"doc":null,"summary":null,"class_methods":[{"id":"rules-class-method","html_id":"rules-class-method","name":"rules","doc":"Returns a list of all available rules.\n\n```\nAmeba::Rule.rules # => [Rule1, Rule2, ....]\n```\n","summary":"

    Returns a list of all available rules.

    ","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/base.cr#L194","def":{"name":"rules","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"Base.subclasses"}}],"constructors":[],"instance_methods":[],"macros":[],"types":[{"html_id":"ameba/Ameba/Rule/Base","path":"Ameba/Rule/Base.html","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base","abstract":true,"superclass":{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},"ancestors":[{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/base.cr","line_number":30,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/base.cr#L30"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"}],"extended_modules":[],"subclasses":[{"html_id":"ameba/Ameba/Rule/Layout/LineLength","kind":"struct","full_name":"Ameba::Rule::Layout::LineLength","name":"LineLength"},{"html_id":"ameba/Ameba/Rule/Layout/TrailingBlankLines","kind":"struct","full_name":"Ameba::Rule::Layout::TrailingBlankLines","name":"TrailingBlankLines"},{"html_id":"ameba/Ameba/Rule/Layout/TrailingWhitespace","kind":"struct","full_name":"Ameba::Rule::Layout::TrailingWhitespace","name":"TrailingWhitespace"},{"html_id":"ameba/Ameba/Rule/Lint/BadDirective","kind":"struct","full_name":"Ameba::Rule::Lint::BadDirective","name":"BadDirective"},{"html_id":"ameba/Ameba/Rule/Lint/ComparisonToBoolean","kind":"struct","full_name":"Ameba::Rule::Lint::ComparisonToBoolean","name":"ComparisonToBoolean"},{"html_id":"ameba/Ameba/Rule/Lint/DebuggerStatement","kind":"struct","full_name":"Ameba::Rule::Lint::DebuggerStatement","name":"DebuggerStatement"},{"html_id":"ameba/Ameba/Rule/Lint/EmptyEnsure","kind":"struct","full_name":"Ameba::Rule::Lint::EmptyEnsure","name":"EmptyEnsure"},{"html_id":"ameba/Ameba/Rule/Lint/EmptyExpression","kind":"struct","full_name":"Ameba::Rule::Lint::EmptyExpression","name":"EmptyExpression"},{"html_id":"ameba/Ameba/Rule/Lint/EmptyLoop","kind":"struct","full_name":"Ameba::Rule::Lint::EmptyLoop","name":"EmptyLoop"},{"html_id":"ameba/Ameba/Rule/Lint/HashDuplicatedKey","kind":"struct","full_name":"Ameba::Rule::Lint::HashDuplicatedKey","name":"HashDuplicatedKey"},{"html_id":"ameba/Ameba/Rule/Lint/LiteralInCondition","kind":"struct","full_name":"Ameba::Rule::Lint::LiteralInCondition","name":"LiteralInCondition"},{"html_id":"ameba/Ameba/Rule/Lint/LiteralInInterpolation","kind":"struct","full_name":"Ameba::Rule::Lint::LiteralInInterpolation","name":"LiteralInInterpolation"},{"html_id":"ameba/Ameba/Rule/Lint/PercentArrays","kind":"struct","full_name":"Ameba::Rule::Lint::PercentArrays","name":"PercentArrays"},{"html_id":"ameba/Ameba/Rule/Lint/RandZero","kind":"struct","full_name":"Ameba::Rule::Lint::RandZero","name":"RandZero"},{"html_id":"ameba/Ameba/Rule/Lint/RedundantStringCoercion","kind":"struct","full_name":"Ameba::Rule::Lint::RedundantStringCoercion","name":"RedundantStringCoercion"},{"html_id":"ameba/Ameba/Rule/Lint/RedundantWithIndex","kind":"struct","full_name":"Ameba::Rule::Lint::RedundantWithIndex","name":"RedundantWithIndex"},{"html_id":"ameba/Ameba/Rule/Lint/RedundantWithObject","kind":"struct","full_name":"Ameba::Rule::Lint::RedundantWithObject","name":"RedundantWithObject"},{"html_id":"ameba/Ameba/Rule/Lint/ShadowedArgument","kind":"struct","full_name":"Ameba::Rule::Lint::ShadowedArgument","name":"ShadowedArgument"},{"html_id":"ameba/Ameba/Rule/Lint/ShadowedException","kind":"struct","full_name":"Ameba::Rule::Lint::ShadowedException","name":"ShadowedException"},{"html_id":"ameba/Ameba/Rule/Lint/ShadowingOuterLocalVar","kind":"struct","full_name":"Ameba::Rule::Lint::ShadowingOuterLocalVar","name":"ShadowingOuterLocalVar"},{"html_id":"ameba/Ameba/Rule/Lint/SharedVarInFiber","kind":"struct","full_name":"Ameba::Rule::Lint::SharedVarInFiber","name":"SharedVarInFiber"},{"html_id":"ameba/Ameba/Rule/Lint/Syntax","kind":"struct","full_name":"Ameba::Rule::Lint::Syntax","name":"Syntax"},{"html_id":"ameba/Ameba/Rule/Lint/UnneededDisableDirective","kind":"struct","full_name":"Ameba::Rule::Lint::UnneededDisableDirective","name":"UnneededDisableDirective"},{"html_id":"ameba/Ameba/Rule/Lint/UnreachableCode","kind":"struct","full_name":"Ameba::Rule::Lint::UnreachableCode","name":"UnreachableCode"},{"html_id":"ameba/Ameba/Rule/Lint/UnusedArgument","kind":"struct","full_name":"Ameba::Rule::Lint::UnusedArgument","name":"UnusedArgument"},{"html_id":"ameba/Ameba/Rule/Lint/UselessAssign","kind":"struct","full_name":"Ameba::Rule::Lint::UselessAssign","name":"UselessAssign"},{"html_id":"ameba/Ameba/Rule/Lint/UselessConditionInWhen","kind":"struct","full_name":"Ameba::Rule::Lint::UselessConditionInWhen","name":"UselessConditionInWhen"},{"html_id":"ameba/Ameba/Rule/Metrics/CyclomaticComplexity","kind":"struct","full_name":"Ameba::Rule::Metrics::CyclomaticComplexity","name":"CyclomaticComplexity"},{"html_id":"ameba/Ameba/Rule/Performance/AnyAfterFilter","kind":"struct","full_name":"Ameba::Rule::Performance::AnyAfterFilter","name":"AnyAfterFilter"},{"html_id":"ameba/Ameba/Rule/Performance/FirstLastAfterFilter","kind":"struct","full_name":"Ameba::Rule::Performance::FirstLastAfterFilter","name":"FirstLastAfterFilter"},{"html_id":"ameba/Ameba/Rule/Performance/SizeAfterFilter","kind":"struct","full_name":"Ameba::Rule::Performance::SizeAfterFilter","name":"SizeAfterFilter"},{"html_id":"ameba/Ameba/Rule/Style/ConstantNames","kind":"struct","full_name":"Ameba::Rule::Style::ConstantNames","name":"ConstantNames"},{"html_id":"ameba/Ameba/Rule/Style/IsANil","kind":"struct","full_name":"Ameba::Rule::Style::IsANil","name":"IsANil"},{"html_id":"ameba/Ameba/Rule/Style/LargeNumbers","kind":"struct","full_name":"Ameba::Rule::Style::LargeNumbers","name":"LargeNumbers"},{"html_id":"ameba/Ameba/Rule/Style/MethodNames","kind":"struct","full_name":"Ameba::Rule::Style::MethodNames","name":"MethodNames"},{"html_id":"ameba/Ameba/Rule/Style/NegatedConditionsInUnless","kind":"struct","full_name":"Ameba::Rule::Style::NegatedConditionsInUnless","name":"NegatedConditionsInUnless"},{"html_id":"ameba/Ameba/Rule/Style/PredicateName","kind":"struct","full_name":"Ameba::Rule::Style::PredicateName","name":"PredicateName"},{"html_id":"ameba/Ameba/Rule/Style/RedundantBegin","kind":"struct","full_name":"Ameba::Rule::Style::RedundantBegin","name":"RedundantBegin"},{"html_id":"ameba/Ameba/Rule/Style/RedundantNext","kind":"struct","full_name":"Ameba::Rule::Style::RedundantNext","name":"RedundantNext"},{"html_id":"ameba/Ameba/Rule/Style/RedundantReturn","kind":"struct","full_name":"Ameba::Rule::Style::RedundantReturn","name":"RedundantReturn"},{"html_id":"ameba/Ameba/Rule/Style/TypeNames","kind":"struct","full_name":"Ameba::Rule::Style::TypeNames","name":"TypeNames"},{"html_id":"ameba/Ameba/Rule/Style/UnlessElse","kind":"struct","full_name":"Ameba::Rule::Style::UnlessElse","name":"UnlessElse"},{"html_id":"ameba/Ameba/Rule/Style/VariableNames","kind":"struct","full_name":"Ameba::Rule::Style::VariableNames","name":"VariableNames"},{"html_id":"ameba/Ameba/Rule/Style/WhileTrue","kind":"struct","full_name":"Ameba::Rule::Style::WhileTrue","name":"WhileTrue"}],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule","kind":"module","full_name":"Ameba::Rule","name":"Rule"},"doc":"Represents a base of all rules. In other words, all rules\ninherits from this struct:\n\n```\nstruct MyRule < Ameba::Rule::Base\n def test(source)\n if invalid?(source)\n issue_for line, column, \"Something wrong.\"\n end\n end\n\n private def invalid?(source)\n # ...\n end\nend\n```\n\nEnforces rules to implement an abstract `#test` method which\nis designed to test the source passed in. If source has issues\nthat are tested by this rule, it should add an issue.\n","summary":"

    Represents a base of all rules.

    ","class_methods":[{"id":"parsed_doc-class-method","html_id":"parsed_doc-class-method","name":"parsed_doc","doc":"Returns documentation for this rule if any.\n\n```\nmodule Ameba\n # This is a test rule.\n # Does nothing.\n struct MyRule < Ameba::Rule::Base\n def test(source)\n end\n end\nend\n\nMyRule.parsed_doc # => \"This is a test rule.\\nDoes nothing.\"\n```","summary":"

    Returns documentation for this rule if any.

    ","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/base.cr#L157","def":{"name":"parsed_doc","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"source = File.read(path_to_source_file)\nnodes = (Crystal::Parser.new(source)).tap(&.wants_doc = true).parse\ntype_name = (rule_name.split(\"/\")).last?\n(DocFinder.new(nodes, type_name)).doc\n"}}],"constructors":[{"id":"new-class-method","html_id":"new-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/base.cr#L30","def":{"name":"new","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"x = allocate\nif x.responds_to?(:finalize)\n ::GC.add_finalizer(x)\nend\nx\n"}}],"instance_methods":[{"id":"==(other)-instance-method","html_id":"==(other)-instance-method","name":"==","doc":"Returns `true` if this struct is equal to *other*.\n\nBoth structs's instance vars are compared to each other. Thus, two\nstructs are considered equal if each of their instance variables are\nequal. Subclasses should override this method to provide specific\nequality semantics.\n\n```\nstruct Point\n def initialize(@x : Int32, @y : Int32)\n end\nend\n\np1 = Point.new 1, 2\np2 = Point.new 1, 2\np3 = Point.new 3, 4\n\np1 == p2 # => true\np1 == p3 # => false\n```","summary":"

    Returns true if this struct is equal to other.

    ","abstract":false,"args":[{"name":"other","doc":null,"default_value":"","external_name":"other","restriction":""}],"args_string":"(other)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/base.cr#L113","def":{"name":"==","args":[{"name":"other","doc":null,"default_value":"","external_name":"other","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"name == other.try(&.name)"}},{"id":"catch(source:Source)-instance-method","html_id":"catch(source:Source)-instance-method","name":"catch","doc":"A convenient addition to `#test` method that does the same\nbut returns a passed in `source` as an addition.\n\n```\nsource = MyRule.new.catch(source)\nsource.valid?\n```\n","summary":"

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

    ","abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":"Source"}],"args_string":"(source : Source)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/base.cr#L54","def":{"name":"catch","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":"Source"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"source.tap do |s|\n test(s)\nend"}},{"id":"excluded?(source)-instance-method","html_id":"excluded?(source)-instance-method","name":"excluded?","doc":"Checks whether the source is excluded from this rule.\nIt searches for a path in `excluded` property which matches\nthe one of the given source.\n\n```\nmy_rule.excluded?(source) # => true or false\n```\n","summary":"

    Checks whether the source is excluded from this rule.

    ","abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"args_string":"(source)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/base.cr#L95","def":{"name":"excluded?","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"excluded.try(&.any? do |path|\n (source.matches_path?(path)) || (Dir.glob(path)).any? do |glob|\n source.matches_path?(glob)\n end\nend)"}},{"id":"group-instance-method","html_id":"group-instance-method","name":"group","doc":"Returns a group this rule belong to.\n\n```\nstruct MyGroup::MyRule < Ameba::Rule::Base\n # ...\nend\n\nMyGroup::MyRule.new.group # => \"MyGroup\"\n```\n","summary":"

    Returns a group this rule belong to.

    ","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/base.cr#L83","def":{"name":"group","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"({{ @type }}).group_name"}},{"id":"hash-instance-method","html_id":"hash-instance-method","name":"hash","doc":"Generates an `UInt64` hash value for this object.\n\nThis method must have the property that `a == b` implies `a.hash == b.hash`.\n\nThe hash value is used along with `==` by the `Hash` class to determine if two objects\nreference the same hash key.\n\nSubclasses must not override this method. Instead, they must define `hash(hasher)`,\nthough usually the macro `def_hash` can be used to generate this method.","summary":"

    Generates an UInt64 hash value for this object.

    ","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/base.cr#L117","def":{"name":"hash","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"name.hash"}},{"id":"name-instance-method","html_id":"name-instance-method","name":"name","doc":"Returns a name of this rule, which is basically a class name.\n\n```\nstruct MyRule < Ameba::Rule::Base\n def test(source)\n end\nend\n\nMyRule.new.name # => \"MyRule\"\n```\n","summary":"

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

    ","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/base.cr#L69","def":{"name":"name","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"({{ @type }}).rule_name"}},{"id":"special?-instance-method","html_id":"special?-instance-method","name":"special?","doc":"Returns true if this rule is special and behaves differently than\nusual rules.\n\n```\nmy_rule.special? # => true or false\n```\n","summary":"

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

    ","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/base.cr#L109","def":{"name":"special?","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"SPECIAL.includes?(name)"}},{"id":"test(source:Source,node:Crystal::ASTNode,*opts)-instance-method","html_id":"test(source:Source,node:Crystal::ASTNode,*opts)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":"Source"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ASTNode"},{"name":"opts","doc":null,"default_value":"","external_name":"opts","restriction":""}],"args_string":"(source : Source, node : Crystal::ASTNode, *opts)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/base.cr#L42","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":"Source"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ASTNode"},{"name":"opts","doc":null,"default_value":"","external_name":"opts","restriction":""}],"double_splat":null,"splat_index":2,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":""}},{"id":"test(source:Source)-instance-method","html_id":"test(source:Source)-instance-method","name":"test","doc":"This method is designed to test the source passed in. If source has issues\nthat are tested by this rule, it should add an issue.\n\nBe default it uses a node visitor to traverse all the nodes in the source.\nMust be overriten for other type of rules.","summary":"

    This method is designed to test the source passed in.

    ","abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":"Source"}],"args_string":"(source : Source)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/base.cr#L38","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":"Source"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"AST::NodeVisitor.new(self, source)"}}],"macros":[{"id":"issue_for(*args)-macro","html_id":"issue_for(*args)-macro","name":"issue_for","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/base.cr#L121","def":{"name":"issue_for","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":null,"splat_index":0,"block_arg":null,"visibility":"Public","body":" source.add_issue self, \n{{ *args }}\n\n \n"}}],"types":[]},{"html_id":"ameba/Ameba/Rule/Layout","path":"Ameba/Rule/Layout.html","kind":"module","full_name":"Ameba::Rule::Layout","name":"Layout","abstract":false,"superclass":null,"ancestors":[],"locations":[{"filename":"src/ameba/rule/layout/line_length.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/layout/line_length.cr#L1"},{"filename":"src/ameba/rule/layout/trailing_blank_lines.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/layout/trailing_blank_lines.cr#L1"},{"filename":"src/ameba/rule/layout/trailing_whitespace.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/layout/trailing_whitespace.cr#L1"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule","kind":"module","full_name":"Ameba::Rule","name":"Rule"},"doc":null,"summary":null,"class_methods":[],"constructors":[],"instance_methods":[],"macros":[],"types":[{"html_id":"ameba/Ameba/Rule/Layout/LineLength","path":"Ameba/Rule/Layout/LineLength.html","kind":"struct","full_name":"Ameba::Rule::Layout::LineLength","name":"LineLength","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/layout/line_length.cr","line_number":12,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/layout/line_length.cr#L12"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Line too long\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Layout","kind":"module","full_name":"Ameba::Rule::Layout","name":"Layout"},"doc":"A rule that disallows lines longer than `max_length` number of symbols.\n\nYAML configuration example:\n\n```\nLayout/LineLength:\n Enabled: true\n MaxLength: 100\n```\n","summary":"

    A rule that disallows lines longer than #max_length number of symbols.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows lines longer than `max_length` number of symbols.\n\nYAML configuration example:\n\n```\nLayout/LineLength:\n Enabled: true\n MaxLength: 100\n```\n","summary":"

    A rule that disallows lines longer than #max_length number of symbols.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/layout/line_length.cr#L12","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Bool","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled:Bool)-instance-method","html_id":"enabled=(enabled:Bool)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":"Bool"}],"args_string":"(enabled : Bool)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":"Bool"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"max_length:Int32-instance-method","html_id":"max_length:Int32-instance-method","name":"max_length","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Int32","source_link":null,"def":{"name":"max_length","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Int32","visibility":"Public","body":"@max_length"}},{"id":"max_length=(max_length:Int32)-instance-method","html_id":"max_length=(max_length:Int32)-instance-method","name":"max_length=","doc":null,"summary":null,"abstract":false,"args":[{"name":"max_length","doc":null,"default_value":"","external_name":"max_length","restriction":"Int32"}],"args_string":"(max_length : Int32)","source_link":null,"def":{"name":"max_length=","args":[{"name":"max_length","doc":null,"default_value":"","external_name":"max_length","restriction":"Int32"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@max_length = max_length"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source)-instance-method","html_id":"test(source)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"args_string":"(source)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/layout/line_length.cr#L21","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"source.lines.each_with_index do |line, index|\n if line.size > max_length\n else\n next\n end\n issue_for({index + 1, max_length + 1}, MSG)\nend"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Layout/TrailingBlankLines","path":"Ameba/Rule/Layout/TrailingBlankLines.html","kind":"struct","full_name":"Ameba::Rule::Layout::TrailingBlankLines","name":"TrailingBlankLines","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/layout/trailing_blank_lines.cr","line_number":11,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/layout/trailing_blank_lines.cr#L11"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Excessive trailing newline detected\"","doc":null,"summary":null},{"id":"MSG_FINAL_NEWLINE","name":"MSG_FINAL_NEWLINE","value":"\"Trailing newline missing\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Layout","kind":"module","full_name":"Ameba::Rule::Layout","name":"Layout"},"doc":"A rule that disallows trailing blank lines at the end of the source file.\n\nYAML configuration example:\n\n```\nLayout/TrailingBlankLines:\n Enabled: true\n```\n","summary":"

    A rule that disallows trailing blank lines at the end of the source file.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows trailing blank lines at the end of the source file.\n\nYAML configuration example:\n\n```\nLayout/TrailingBlankLines:\n Enabled: true\n```\n","summary":"

    A rule that disallows trailing blank lines at the end of the source file.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/layout/trailing_blank_lines.cr#L11","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source)-instance-method","html_id":"test(source)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"args_string":"(source)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/layout/trailing_blank_lines.cr#L19","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"source_lines = source.lines\nif source_lines.empty?\n return\nend\nlast_source_line = source_lines.last\nsource_lines_size = source_lines.size\nif (source_lines_size == 1) && last_source_line.empty?\n return\nend\nlast_line_not_empty = !last_source_line.empty?\nif source_lines_size >= 1 && ((source_lines.last(2)).join.strip.empty? || last_line_not_empty)\n issue_for({source_lines_size - 1, 1}, last_line_not_empty ? MSG_FINAL_NEWLINE : MSG)\nend\n"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Layout/TrailingWhitespace","path":"Ameba/Rule/Layout/TrailingWhitespace.html","kind":"struct","full_name":"Ameba::Rule::Layout::TrailingWhitespace","name":"TrailingWhitespace","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/layout/trailing_whitespace.cr","line_number":11,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/layout/trailing_whitespace.cr#L11"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Trailing whitespace detected\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Layout","kind":"module","full_name":"Ameba::Rule::Layout","name":"Layout"},"doc":"A rule that disallows trailing whitespaces.\n\nYAML configuration example:\n\n```\nLayout/TrailingWhitespace:\n Enabled: true\n```\n","summary":"

    A rule that disallows trailing whitespaces.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows trailing whitespaces.\n\nYAML configuration example:\n\n```\nLayout/TrailingWhitespace:\n Enabled: true\n```\n","summary":"

    A rule that disallows trailing whitespaces.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/layout/trailing_whitespace.cr#L11","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source)-instance-method","html_id":"test(source)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"args_string":"(source)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/layout/trailing_whitespace.cr#L18","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"source.lines.each_with_index do |line, index|\n if line =~ (/\\s$/)\n else\n next\n end\n issue_for({index + 1, line.size}, MSG)\nend"}}],"macros":[],"types":[]}]},{"html_id":"ameba/Ameba/Rule/Lint","path":"Ameba/Rule/Lint.html","kind":"module","full_name":"Ameba::Rule::Lint","name":"Lint","abstract":false,"superclass":null,"ancestors":[],"locations":[{"filename":"src/ameba/rule/lint/bad_directive.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/bad_directive.cr#L1"},{"filename":"src/ameba/rule/lint/comparison_to_boolean.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/comparison_to_boolean.cr#L1"},{"filename":"src/ameba/rule/lint/debugger_statement.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/debugger_statement.cr#L1"},{"filename":"src/ameba/rule/lint/empty_ensure.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/empty_ensure.cr#L1"},{"filename":"src/ameba/rule/lint/empty_expression.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/empty_expression.cr#L1"},{"filename":"src/ameba/rule/lint/empty_loop.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/empty_loop.cr#L1"},{"filename":"src/ameba/rule/lint/hash_duplicated_key.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/hash_duplicated_key.cr#L1"},{"filename":"src/ameba/rule/lint/literal_in_condition.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/literal_in_condition.cr#L1"},{"filename":"src/ameba/rule/lint/literal_in_interpolation.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/literal_in_interpolation.cr#L1"},{"filename":"src/ameba/rule/lint/percent_array.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/percent_array.cr#L1"},{"filename":"src/ameba/rule/lint/rand_zero.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/rand_zero.cr#L1"},{"filename":"src/ameba/rule/lint/redundant_string_coercion.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/redundant_string_coercion.cr#L1"},{"filename":"src/ameba/rule/lint/redundant_with_index.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/redundant_with_index.cr#L1"},{"filename":"src/ameba/rule/lint/redundant_with_object.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/redundant_with_object.cr#L1"},{"filename":"src/ameba/rule/lint/shadowed_argument.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/shadowed_argument.cr#L1"},{"filename":"src/ameba/rule/lint/shadowed_exception.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/shadowed_exception.cr#L1"},{"filename":"src/ameba/rule/lint/shadowing_local_outer_var.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/shadowing_local_outer_var.cr#L1"},{"filename":"src/ameba/rule/lint/shared_var_in_fiber.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/shared_var_in_fiber.cr#L1"},{"filename":"src/ameba/rule/lint/syntax.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/syntax.cr#L1"},{"filename":"src/ameba/rule/lint/unneeded_disable_directive.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/unneeded_disable_directive.cr#L1"},{"filename":"src/ameba/rule/lint/unreachable_code.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/unreachable_code.cr#L1"},{"filename":"src/ameba/rule/lint/unused_argument.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/unused_argument.cr#L1"},{"filename":"src/ameba/rule/lint/useless_assign.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/useless_assign.cr#L1"},{"filename":"src/ameba/rule/lint/useless_condition_in_when.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/useless_condition_in_when.cr#L1"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule","kind":"module","full_name":"Ameba::Rule","name":"Rule"},"doc":null,"summary":null,"class_methods":[],"constructors":[],"instance_methods":[],"macros":[],"types":[{"html_id":"ameba/Ameba/Rule/Lint/BadDirective","path":"Ameba/Rule/Lint/BadDirective.html","kind":"struct","full_name":"Ameba::Rule::Lint::BadDirective","name":"BadDirective","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/lint/bad_directive.cr","line_number":21,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/bad_directive.cr#L21"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"ALL_GROUP_NAMES","name":"ALL_GROUP_NAMES","value":"Rule.rules.map(&.group_name).uniq!","doc":null,"summary":null},{"id":"ALL_RULE_NAMES","name":"ALL_RULE_NAMES","value":"Rule.rules.map(&.rule_name)","doc":null,"summary":null},{"id":"AVAILABLE_ACTIONS","name":"AVAILABLE_ACTIONS","value":"InlineComments::Action.names.map(&.downcase)","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Lint","kind":"module","full_name":"Ameba::Rule::Lint","name":"Lint"},"doc":"A rule that reports incorrect comment directives for Ameba.\n\nFor example, the user can mistakenly add a directive\nto disable a rule that even doesn't exist:\n\n```\n# ameba:disable BadRuleName\ndef foo\n :bar\nend\n```\n\nYAML configuration example:\n\n```\nLint/BadDirective:\n Enabled: true\n```\n","summary":"

    A rule that reports incorrect comment directives for Ameba.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that reports incorrect comment directives for Ameba.\n\nFor example, the user can mistakenly add a directive\nto disable a rule that even doesn't exist:\n\n```\n# ameba:disable BadRuleName\ndef foo\n :bar\nend\n```\n\nYAML configuration example:\n\n```\nLint/BadDirective:\n Enabled: true\n```\n","summary":"

    A rule that reports incorrect comment directives for Ameba.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/bad_directive.cr#L21","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source)-instance-method","html_id":"test(source)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"args_string":"(source)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/bad_directive.cr#L30","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"(Tokenizer.new(source)).run do |token|\n if token.type == (:COMMENT)\n else\n next\n end\n if directive = source.parse_inline_directive(token.value.to_s)\n else\n next\n end\n check_action(source, token, directive[:action])\n check_rules(source, token, directive[:rules])\nend"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Lint/ComparisonToBoolean","path":"Ameba/Rule/Lint/ComparisonToBoolean.html","kind":"struct","full_name":"Ameba::Rule::Lint::ComparisonToBoolean","name":"ComparisonToBoolean","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/lint/comparison_to_boolean.cr","line_number":23,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/comparison_to_boolean.cr#L23"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Comparison to a boolean is pointless\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Lint","kind":"module","full_name":"Ameba::Rule::Lint","name":"Lint"},"doc":"A rule that disallows comparison to booleans.\n\nFor example, these are considered invalid:\n\n```\nfoo == true\nbar != false\nfalse === baz\n```\n\nThis is because these expressions evaluate to `true` or `false`, so you\ncould get the same result by using either the variable directly,\nor negating the variable.\n\nYAML configuration example:\n\n```\nLint/ComparisonToBoolean:\n Enabled: true\n```\n","summary":"

    A rule that disallows comparison to booleans.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows comparison to booleans.\n\nFor example, these are considered invalid:\n\n```\nfoo == true\nbar != false\nfalse === baz\n```\n\nThis is because these expressions evaluate to `true` or `false`, so you\ncould get the same result by using either the variable directly,\nor negating the variable.\n\nYAML configuration example:\n\n```\nLint/ComparisonToBoolean:\n Enabled: true\n```\n","summary":"

    A rule that disallows comparison to booleans.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/comparison_to_boolean.cr#L23","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Bool","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled:Bool)-instance-method","html_id":"enabled=(enabled:Bool)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":"Bool"}],"args_string":"(enabled : Bool)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":"Bool"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node:Crystal::Call)-instance-method","html_id":"test(source,node:Crystal::Call)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Call"}],"args_string":"(source, node : Crystal::Call)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/comparison_to_boolean.cr#L31","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Call"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"comparison = ([\"==\", \"!=\", \"===\"] of ::String).includes?(node.name)\nto_boolean = node.args.first?.try do |__arg0|\n __arg0.is_a?(Crystal::BoolLiteral)\nend || node.obj.is_a?(Crystal::BoolLiteral)\nif comparison && to_boolean\nelse\n return\nend\nissue_for(node, MSG)\n"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Lint/DebuggerStatement","path":"Ameba/Rule/Lint/DebuggerStatement.html","kind":"struct","full_name":"Ameba::Rule::Lint::DebuggerStatement","name":"DebuggerStatement","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/lint/debugger_statement.cr","line_number":14,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/debugger_statement.cr#L14"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Possible forgotten debugger statement detected\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Lint","kind":"module","full_name":"Ameba::Rule::Lint","name":"Lint"},"doc":"A rule that disallows calls to debugger.\n\nThis is because we don't want debugger breakpoints accidentally being\ncommitted into our codebase.\n\nYAML configuration example:\n\n```\nLint/DebuggerStatement:\n Enabled: true\n```\n","summary":"

    A rule that disallows calls to debugger.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows calls to debugger.\n\nThis is because we don't want debugger breakpoints accidentally being\ncommitted into our codebase.\n\nYAML configuration example:\n\n```\nLint/DebuggerStatement:\n Enabled: true\n```\n","summary":"

    A rule that disallows calls to debugger.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/debugger_statement.cr#L14","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node:Crystal::Call)-instance-method","html_id":"test(source,node:Crystal::Call)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Call"}],"args_string":"(source, node : Crystal::Call)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/debugger_statement.cr#L21","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Call"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if ((node.name == \"debugger\") && node.args.empty?) && node.obj.nil?\nelse\n return\nend\nissue_for(node, MSG)\n"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Lint/EmptyEnsure","path":"Ameba/Rule/Lint/EmptyEnsure.html","kind":"struct","full_name":"Ameba::Rule::Lint::EmptyEnsure","name":"EmptyEnsure","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/lint/empty_ensure.cr","line_number":42,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/empty_ensure.cr#L42"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Empty `ensure` block detected\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Lint","kind":"module","full_name":"Ameba::Rule::Lint","name":"Lint"},"doc":"A rule that disallows empty ensure statement.\n\nFor example, this is considered invalid:\n\n```\ndef some_method\n do_some_stuff\nensure\nend\n\nbegin\n do_some_stuff\nensure\nend\n```\n\nAnd it should be written as this:\n\n\n```\ndef some_method\n do_some_stuff\nensure\n do_something_else\nend\n\nbegin\n do_some_stuff\nensure\n do_something_else\nend\n```\n\nYAML configuration example:\n\n```\nLint/EmptyEnsure\n Enabled: true\n```\n","summary":"

    A rule that disallows empty ensure statement.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows empty ensure statement.\n\nFor example, this is considered invalid:\n\n```\ndef some_method\n do_some_stuff\nensure\nend\n\nbegin\n do_some_stuff\nensure\nend\n```\n\nAnd it should be written as this:\n\n\n```\ndef some_method\n do_some_stuff\nensure\n do_something_else\nend\n\nbegin\n do_some_stuff\nensure\n do_something_else\nend\n```\n\nYAML configuration example:\n\n```\nLint/EmptyEnsure\n Enabled: true\n```\n","summary":"

    A rule that disallows empty ensure statement.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/empty_ensure.cr#L42","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node:Crystal::ExceptionHandler)-instance-method","html_id":"test(source,node:Crystal::ExceptionHandler)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ExceptionHandler"}],"args_string":"(source, node : Crystal::ExceptionHandler)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/empty_ensure.cr#L49","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ExceptionHandler"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"node_ensure = node.ensure\nif node_ensure.nil? || (!node_ensure.nop?)\n return\nend\nissue_for(node, MSG)\n"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Lint/EmptyExpression","path":"Ameba/Rule/Lint/EmptyExpression.html","kind":"struct","full_name":"Ameba::Rule::Lint::EmptyExpression","name":"EmptyExpression","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/Ameba/AST/Util","kind":"module","full_name":"Ameba::AST::Util","name":"Util"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/lint/empty_expression.cr","line_number":31,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/empty_expression.cr#L31"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Avoid empty expression %s\"","doc":null,"summary":null},{"id":"MSG_EXRS","name":"MSG_EXRS","value":"\"Avoid empty expressions\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/Ameba/AST/Util","kind":"module","full_name":"Ameba::AST::Util","name":"Util"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Lint","kind":"module","full_name":"Ameba::Rule::Lint","name":"Lint"},"doc":"A rule that disallows empty expressions.\n\nThis is considered invalid:\n\n```\nfoo = ()\n\nif ()\n bar\nend\n```\n\nAnd this is valid:\n\n```\nfoo = (some_expression)\n\nif (some_expression)\n bar\nend\n```\n\nYAML configuration example:\n\n```\nLint/EmptyExpression:\n Enabled: true\n```\n","summary":"

    A rule that disallows empty expressions.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows empty expressions.\n\nThis is considered invalid:\n\n```\nfoo = ()\n\nif ()\n bar\nend\n```\n\nAnd this is valid:\n\n```\nfoo = (some_expression)\n\nif (some_expression)\n bar\nend\n```\n\nYAML configuration example:\n\n```\nLint/EmptyExpression:\n Enabled: true\n```\n","summary":"

    A rule that disallows empty expressions.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/empty_expression.cr#L31","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Bool","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled:Bool)-instance-method","html_id":"enabled=(enabled:Bool)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":"Bool"}],"args_string":"(enabled : Bool)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":"Bool"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node:Crystal::NilLiteral)-instance-method","html_id":"test(source,node:Crystal::NilLiteral)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::NilLiteral"}],"args_string":"(source, node : Crystal::NilLiteral)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/empty_expression.cr#L42","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::NilLiteral"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"exp = (node_source(node, source.lines)).try(&.join)\nif exp.nil? || (exp == \"nil\")\n return\nend\nissue_for(node, MSG % exp)\n"}},{"id":"test(source,node:Crystal::Expressions)-instance-method","html_id":"test(source,node:Crystal::Expressions)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Expressions"}],"args_string":"(source, node : Crystal::Expressions)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/empty_expression.cr#L50","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Expressions"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (node.expressions.size == 1) && node.expressions.first.nop?\n issue_for(node, MSG_EXRS)\nend"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Lint/EmptyLoop","path":"Ameba/Rule/Lint/EmptyLoop.html","kind":"struct","full_name":"Ameba::Rule::Lint::EmptyLoop","name":"EmptyLoop","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/Ameba/AST/Util","kind":"module","full_name":"Ameba::AST::Util","name":"Util"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/lint/empty_loop.cr","line_number":40,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/empty_loop.cr#L40"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Empty loop detected\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/Ameba/AST/Util","kind":"module","full_name":"Ameba::AST::Util","name":"Util"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Lint","kind":"module","full_name":"Ameba::Rule::Lint","name":"Lint"},"doc":"A rule that disallows empty loops.\n\nThis is considered invalid:\n\n```\nwhile false\nend\n\nuntil 10\nend\n\nloop do\n # nothing here\nend\n```\n\nAnd this is valid:\n\n```\na = 1\nwhile a < 10\n a += 1\nend\n\nuntil socket_opened?\nend\n\nloop do\n do_something_here\nend\n```\n\nYAML configuration example:\n\n```\nLint/EmptyLoop:\n Enabled: true\n```","summary":"

    A rule that disallows empty loops.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows empty loops.\n\nThis is considered invalid:\n\n```\nwhile false\nend\n\nuntil 10\nend\n\nloop do\n # nothing here\nend\n```\n\nAnd this is valid:\n\n```\na = 1\nwhile a < 10\n a += 1\nend\n\nuntil socket_opened?\nend\n\nloop do\n do_something_here\nend\n```\n\nYAML configuration example:\n\n```\nLint/EmptyLoop:\n Enabled: true\n```","summary":"

    A rule that disallows empty loops.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/empty_loop.cr#L40","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node:Crystal::Call)-instance-method","html_id":"test(source,node:Crystal::Call)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Call"}],"args_string":"(source, node : Crystal::Call)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/empty_loop.cr#L49","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Call"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if loop?(node)\nelse\n return\nend\ncheck_node(source, node, node.block)\n"}},{"id":"test(source,node:Crystal::While)-instance-method","html_id":"test(source,node:Crystal::While)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::While"}],"args_string":"(source, node : Crystal::While)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/empty_loop.cr#L55","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::While"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if literal?(node.cond)\n check_node(source, node, node.body)\nend"}},{"id":"test(source,node:Crystal::Until)-instance-method","html_id":"test(source,node:Crystal::Until)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Until"}],"args_string":"(source, node : Crystal::Until)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/empty_loop.cr#L59","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Until"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if literal?(node.cond)\n check_node(source, node, node.body)\nend"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Lint/HashDuplicatedKey","path":"Ameba/Rule/Lint/HashDuplicatedKey.html","kind":"struct","full_name":"Ameba::Rule::Lint::HashDuplicatedKey","name":"HashDuplicatedKey","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/lint/hash_duplicated_key.cr","line_number":23,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/hash_duplicated_key.cr#L23"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Duplicated keys in hash literal: %s\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Lint","kind":"module","full_name":"Ameba::Rule::Lint","name":"Lint"},"doc":"A rule that disallows duplicated keys in hash literals.\n\nThis is considered invalid:\n\n```\nh = {\"foo\" => 1, \"bar\" => 2, \"foo\" => 3}\n```\n\nAnd it has to written as this instead:\n\n```\nh = {\"foo\" => 1, \"bar\" => 2}\n```\n\nYAML configuration example:\n\n```\nLint/HashDuplicatedKey:\n Enabled: true\n```\n","summary":"

    A rule that disallows duplicated keys in hash literals.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows duplicated keys in hash literals.\n\nThis is considered invalid:\n\n```\nh = {\"foo\" => 1, \"bar\" => 2, \"foo\" => 3}\n```\n\nAnd it has to written as this instead:\n\n```\nh = {\"foo\" => 1, \"bar\" => 2}\n```\n\nYAML configuration example:\n\n```\nLint/HashDuplicatedKey:\n Enabled: true\n```\n","summary":"

    A rule that disallows duplicated keys in hash literals.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/hash_duplicated_key.cr#L23","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node:Crystal::HashLiteral)-instance-method","html_id":"test(source,node:Crystal::HashLiteral)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::HashLiteral"}],"args_string":"(source, node : Crystal::HashLiteral)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/hash_duplicated_key.cr#L30","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::HashLiteral"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (keys = duplicated_keys(node.entries)).any?\nelse\n return\nend\nissue_for(node, MSG % (keys.join(\", \")))\n"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Lint/LiteralInCondition","path":"Ameba/Rule/Lint/LiteralInCondition.html","kind":"struct","full_name":"Ameba::Rule::Lint::LiteralInCondition","name":"LiteralInCondition","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/Ameba/AST/Util","kind":"module","full_name":"Ameba::AST::Util","name":"Util"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/lint/literal_in_condition.cr","line_number":23,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/literal_in_condition.cr#L23"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Literal value found in conditional\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/Ameba/AST/Util","kind":"module","full_name":"Ameba::AST::Util","name":"Util"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Lint","kind":"module","full_name":"Ameba::Rule::Lint","name":"Lint"},"doc":"A rule that disallows useless conditional statements that contain a literal\nin place of a variable or predicate function.\n\nThis is because a conditional construct with a literal predicate will\nalways result in the same behaviour at run time, meaning it can be\nreplaced with either the body of the construct, or deleted entirely.\n\nThis is considered invalid:\n```\nif \"something\"\n :ok\nend\n```\n\nYAML configuration example:\n\n```\nLint/LiteralInCondition:\n Enabled: true\n```\n","summary":"

    A rule that disallows useless conditional statements that contain a literal in place of a variable or predicate function.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows useless conditional statements that contain a literal\nin place of a variable or predicate function.\n\nThis is because a conditional construct with a literal predicate will\nalways result in the same behaviour at run time, meaning it can be\nreplaced with either the body of the construct, or deleted entirely.\n\nThis is considered invalid:\n```\nif \"something\"\n :ok\nend\n```\n\nYAML configuration example:\n\n```\nLint/LiteralInCondition:\n Enabled: true\n```\n","summary":"

    A rule that disallows useless conditional statements that contain a literal in place of a variable or predicate function.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/literal_in_condition.cr#L23","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"check_node(source,node)-instance-method","html_id":"check_node(source,node)-instance-method","name":"check_node","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"args_string":"(source, node)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/literal_in_condition.cr#L33","def":{"name":"check_node","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if literal?(node.cond)\nelse\n return\nend\nissue_for(node, MSG)\n"}},{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node:Crystal::If)-instance-method","html_id":"test(source,node:Crystal::If)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::If"}],"args_string":"(source, node : Crystal::If)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/literal_in_condition.cr#L38","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::If"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"check_node(source, node)"}},{"id":"test(source,node:Crystal::Unless)-instance-method","html_id":"test(source,node:Crystal::Unless)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Unless"}],"args_string":"(source, node : Crystal::Unless)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/literal_in_condition.cr#L42","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Unless"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"check_node(source, node)"}},{"id":"test(source,node:Crystal::Case)-instance-method","html_id":"test(source,node:Crystal::Case)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Case"}],"args_string":"(source, node : Crystal::Case)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/literal_in_condition.cr#L46","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Case"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"check_node(source, node)"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Lint/LiteralInInterpolation","path":"Ameba/Rule/Lint/LiteralInInterpolation.html","kind":"struct","full_name":"Ameba::Rule::Lint::LiteralInInterpolation","name":"LiteralInInterpolation","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/Ameba/AST/Util","kind":"module","full_name":"Ameba::AST::Util","name":"Util"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/lint/literal_in_interpolation.cr","line_number":19,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/literal_in_interpolation.cr#L19"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Literal value found in interpolation\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/Ameba/AST/Util","kind":"module","full_name":"Ameba::AST::Util","name":"Util"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Lint","kind":"module","full_name":"Ameba::Rule::Lint","name":"Lint"},"doc":"A rule that disallows useless string interpolations\nthat contain a literal value instead of a variable or function.\n\nFor example:\n\n```\n\"Hello, #{:Ary}\"\n\"There are #{4} cats\"\n```\n\nYAML configuration example:\n\n```\nLint/LiteralInInterpolation\n Enabled: true\n```\n","summary":"

    A rule that disallows useless string interpolations that contain a literal value instead of a variable or function.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows useless string interpolations\nthat contain a literal value instead of a variable or function.\n\nFor example:\n\n```\n\"Hello, #{:Ary}\"\n\"There are #{4} cats\"\n```\n\nYAML configuration example:\n\n```\nLint/LiteralInInterpolation\n Enabled: true\n```\n","summary":"

    A rule that disallows useless string interpolations that contain a literal value instead of a variable or function.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/literal_in_interpolation.cr#L19","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node:Crystal::StringInterpolation)-instance-method","html_id":"test(source,node:Crystal::StringInterpolation)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::StringInterpolation"}],"args_string":"(source, node : Crystal::StringInterpolation)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/literal_in_interpolation.cr#L28","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::StringInterpolation"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"node.expressions.select do |e|\n (!e.is_a?(Crystal::StringLiteral)) && (literal?(e))\nend.each do |n|\n issue_for(n, MSG)\nend"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Lint/PercentArrays","path":"Ameba/Rule/Lint/PercentArrays.html","kind":"struct","full_name":"Ameba::Rule::Lint::PercentArrays","name":"PercentArrays","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/lint/percent_array.cr","line_number":27,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/percent_array.cr#L27"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Symbols `%s` may be unwanted in %s array literals\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Lint","kind":"module","full_name":"Ameba::Rule::Lint","name":"Lint"},"doc":"A rule that disallows some unwanted symbols in percent array literals.\n\nFor example, this is usually written by mistake:\n\n```\n%i(:one, :two)\n%w(\"one\", \"two\")\n```\n\nAnd the expected example is:\n\n```\n%i(one two)\n%w(one two)\n```\n\nYAML configuration example:\n\n```\nLint/PercentArrays:\n Enabled: true\n StringArrayUnwantedSymbols: ',\"'\n SymbolArrayUnwantedSymbols: ',:'\n```\n","summary":"

    A rule that disallows some unwanted symbols in percent array literals.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows some unwanted symbols in percent array literals.\n\nFor example, this is usually written by mistake:\n\n```\n%i(:one, :two)\n%w(\"one\", \"two\")\n```\n\nAnd the expected example is:\n\n```\n%i(one two)\n%w(one two)\n```\n\nYAML configuration example:\n\n```\nLint/PercentArrays:\n Enabled: true\n StringArrayUnwantedSymbols: ',\"'\n SymbolArrayUnwantedSymbols: ',:'\n```\n","summary":"

    A rule that disallows some unwanted symbols in percent array literals.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/percent_array.cr#L27","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"string_array_unwanted_symbols:String-instance-method","html_id":"string_array_unwanted_symbols:String-instance-method","name":"string_array_unwanted_symbols","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"string_array_unwanted_symbols","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@string_array_unwanted_symbols"}},{"id":"string_array_unwanted_symbols=(string_array_unwanted_symbols:String)-instance-method","html_id":"string_array_unwanted_symbols=(string_array_unwanted_symbols:String)-instance-method","name":"string_array_unwanted_symbols=","doc":null,"summary":null,"abstract":false,"args":[{"name":"string_array_unwanted_symbols","doc":null,"default_value":"","external_name":"string_array_unwanted_symbols","restriction":"String"}],"args_string":"(string_array_unwanted_symbols : String)","source_link":null,"def":{"name":"string_array_unwanted_symbols=","args":[{"name":"string_array_unwanted_symbols","doc":null,"default_value":"","external_name":"string_array_unwanted_symbols","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@string_array_unwanted_symbols = string_array_unwanted_symbols"}},{"id":"symbol_array_unwanted_symbols:String-instance-method","html_id":"symbol_array_unwanted_symbols:String-instance-method","name":"symbol_array_unwanted_symbols","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"symbol_array_unwanted_symbols","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@symbol_array_unwanted_symbols"}},{"id":"symbol_array_unwanted_symbols=(symbol_array_unwanted_symbols:String)-instance-method","html_id":"symbol_array_unwanted_symbols=(symbol_array_unwanted_symbols:String)-instance-method","name":"symbol_array_unwanted_symbols=","doc":null,"summary":null,"abstract":false,"args":[{"name":"symbol_array_unwanted_symbols","doc":null,"default_value":"","external_name":"symbol_array_unwanted_symbols","restriction":"String"}],"args_string":"(symbol_array_unwanted_symbols : String)","source_link":null,"def":{"name":"symbol_array_unwanted_symbols=","args":[{"name":"symbol_array_unwanted_symbols","doc":null,"default_value":"","external_name":"symbol_array_unwanted_symbols","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@symbol_array_unwanted_symbols = symbol_array_unwanted_symbols"}},{"id":"test(source)-instance-method","html_id":"test(source)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"args_string":"(source)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/percent_array.cr#L36","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"issue = start_token = nil\n(Tokenizer.new(source)).run do |token|\n case token.type\n when :STRING_ARRAY_START, :SYMBOL_ARRAY_START\n start_token = token.dup\n when :STRING\n if start_token && issue.nil?\n issue = array_entry_invalid?(token.value, start_token.not_nil!.raw)\n end\n when :STRING_ARRAY_END, :SYMBOL_ARRAY_END\n if issue\n issue_for(start_token.not_nil!, issue.not_nil!)\n end\n issue = start_token = nil\n else\n end\nend\n"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Lint/RandZero","path":"Ameba/Rule/Lint/RandZero.html","kind":"struct","full_name":"Ameba::Rule::Lint::RandZero","name":"RandZero","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/lint/rand_zero.cr","line_number":26,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/rand_zero.cr#L26"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"%s always returns 0\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Lint","kind":"module","full_name":"Ameba::Rule::Lint","name":"Lint"},"doc":"A rule that disallows `rand(0)` and `rand(1)` calls.\nSuch calls always return `0`.\n\nFor example:\n\n```\nrand(1)\n```\n\nShould be written as:\n\n```\nrand\n# or\nrand(2)\n```\n\nYAML configuration example:\n\n```\nLint/RandZero:\n Enabled: true\n```\n","summary":"

    A rule that disallows rand(0) and rand(1) calls.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows `rand(0)` and `rand(1)` calls.\nSuch calls always return `0`.\n\nFor example:\n\n```\nrand(1)\n```\n\nShould be written as:\n\n```\nrand\n# or\nrand(2)\n```\n\nYAML configuration example:\n\n```\nLint/RandZero:\n Enabled: true\n```\n","summary":"

    A rule that disallows rand(0) and rand(1) calls.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/rand_zero.cr#L26","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node:Crystal::Call)-instance-method","html_id":"test(source,node:Crystal::Call)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Call"}],"args_string":"(source, node : Crystal::Call)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/rand_zero.cr#L33","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Call"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (((((node.name == \"rand\") && (node.args.size == 1)) && (arg = node.args.first)) && (arg.is_a?(Crystal::NumberLiteral))) && (value = arg.value)) && ((value == \"0\") || (value == \"1\"))\nelse\n return\nend\nissue_for(node, MSG % node)\n"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Lint/RedundantStringCoercion","path":"Ameba/Rule/Lint/RedundantStringCoercion.html","kind":"struct","full_name":"Ameba::Rule::Lint::RedundantStringCoercion","name":"RedundantStringCoercion","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/Ameba/AST/Util","kind":"module","full_name":"Ameba::AST::Util","name":"Util"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/lint/redundant_string_coercion.cr","line_number":24,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/redundant_string_coercion.cr#L24"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Redundant use of `Object#to_s` in interpolation\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/Ameba/AST/Util","kind":"module","full_name":"Ameba::AST::Util","name":"Util"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Lint","kind":"module","full_name":"Ameba::Rule::Lint","name":"Lint"},"doc":"A rule that disallows string conversion in string interpolation,\nwhich is redundant.\n\nFor example, this is considered invalid:\n\n```\n\"Hello, #{name.to_s}\"\n```\n\nAnd this is valid:\n\n```\n\"Hello, #{name}\"\n```\n\nYAML configuration example:\n\n```\nLint/RedundantStringCoersion\n Enabled: true\n```\n","summary":"

    A rule that disallows string conversion in string interpolation, which is redundant.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows string conversion in string interpolation,\nwhich is redundant.\n\nFor example, this is considered invalid:\n\n```\n\"Hello, #{name.to_s}\"\n```\n\nAnd this is valid:\n\n```\n\"Hello, #{name}\"\n```\n\nYAML configuration example:\n\n```\nLint/RedundantStringCoersion\n Enabled: true\n```\n","summary":"

    A rule that disallows string conversion in string interpolation, which is redundant.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/redundant_string_coercion.cr#L24","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node:Crystal::StringInterpolation)-instance-method","html_id":"test(source,node:Crystal::StringInterpolation)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::StringInterpolation"}],"args_string":"(source, node : Crystal::StringInterpolation)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/redundant_string_coercion.cr#L33","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::StringInterpolation"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"(string_coercion_nodes(node)).each do |n|\n issue_for(n.name_location, n.end_location, MSG)\nend"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Lint/RedundantWithIndex","path":"Ameba/Rule/Lint/RedundantWithIndex.html","kind":"struct","full_name":"Ameba::Rule::Lint::RedundantWithIndex","name":"RedundantWithIndex","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/lint/redundant_with_index.cr","line_number":30,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/redundant_with_index.cr#L30"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Lint","kind":"module","full_name":"Ameba::Rule::Lint","name":"Lint"},"doc":"A rule that disallows redundant `with_index` calls.\n\nFor example, this is considered invalid:\n```\ncollection.each.with_index do |e|\n # ...\nend\n\ncollection.each_with_index do |e, _|\n # ...\nend\n```\n\nand it should be written as follows:\n\n```\ncollection.each do |e|\n # ...\nend\n```\n\nYAML configuration example:\n\n```\nLint/RedundantWithIndex:\n Enabled: true\n```\n","summary":"

    A rule that disallows redundant with_index calls.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows redundant `with_index` calls.\n\nFor example, this is considered invalid:\n```\ncollection.each.with_index do |e|\n # ...\nend\n\ncollection.each_with_index do |e, _|\n # ...\nend\n```\n\nand it should be written as follows:\n\n```\ncollection.each do |e|\n # ...\nend\n```\n\nYAML configuration example:\n\n```\nLint/RedundantWithIndex:\n Enabled: true\n```\n","summary":"

    A rule that disallows redundant with_index calls.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/redundant_with_index.cr#L30","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node:Crystal::Call)-instance-method","html_id":"test(source,node:Crystal::Call)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Call"}],"args_string":"(source, node : Crystal::Call)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/redundant_with_index.cr#L35","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Call"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"args, block = node.args, node.block\nif (args.size > 1 || block.nil?) || (with_index_arg?(block.not_nil!))\n return\nend\ncase node.name\nwhen \"with_index\"\n report(source, node, \"Remove redundant with_index\")\nwhen \"each_with_index\"\n report(source, node, \"Use each instead of each_with_index\")\nelse\nend\n"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Lint/RedundantWithObject","path":"Ameba/Rule/Lint/RedundantWithObject.html","kind":"struct","full_name":"Ameba::Rule::Lint::RedundantWithObject","name":"RedundantWithObject","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/lint/redundant_with_object.cr","line_number":31,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/redundant_with_object.cr#L31"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Lint","kind":"module","full_name":"Ameba::Rule::Lint","name":"Lint"},"doc":"A rule that disallows redundant `each_with_object` calls.\n\nFor example, this is considered invalid:\n\n```\ncollection.each_with_object(0) do |e|\n # ...\nend\n\ncollection.each_with_object(0) do |e, _|\n # ...\nend\n```\n\nand it should be written as follows:\n\n```\ncollection.each do |e|\n # ...\nend\n```\n\nYAML configuration example:\n\n```\nLint/RedundantWithObject:\n Enabled: true\n```\n","summary":"

    A rule that disallows redundant each_with_object calls.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows redundant `each_with_object` calls.\n\nFor example, this is considered invalid:\n\n```\ncollection.each_with_object(0) do |e|\n # ...\nend\n\ncollection.each_with_object(0) do |e, _|\n # ...\nend\n```\n\nand it should be written as follows:\n\n```\ncollection.each do |e|\n # ...\nend\n```\n\nYAML configuration example:\n\n```\nLint/RedundantWithObject:\n Enabled: true\n```\n","summary":"

    A rule that disallows redundant each_with_object calls.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/redundant_with_object.cr#L31","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node:Crystal::Call)-instance-method","html_id":"test(source,node:Crystal::Call)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Call"}],"args_string":"(source, node : Crystal::Call)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/redundant_with_object.cr#L36","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Call"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (((node.name != \"each_with_object\") || (node.args.size != 1)) || node.block.nil?) || (with_index_arg?(node.block.not_nil!))\n return\nend\nissue_for(node.name_location, node.name_end_location, \"Use each instead of each_with_object\")\n"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Lint/ShadowedArgument","path":"Ameba/Rule/Lint/ShadowedArgument.html","kind":"struct","full_name":"Ameba::Rule::Lint::ShadowedArgument","name":"ShadowedArgument","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/lint/shadowed_argument.cr","line_number":39,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/shadowed_argument.cr#L39"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Argument `%s` is assigned before it is used\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Lint","kind":"module","full_name":"Ameba::Rule::Lint","name":"Lint"},"doc":"A rule that disallows shadowed arguments.\n\nFor example, this is considered invalid:\n\n```\ndo_something do |foo|\n foo = 1 # shadows block argument\n foo\nend\n\ndef do_something(foo)\n foo = 1 # shadows method argument\n foo\nend\n```\n\nand it should be written as follows:\n\n```\ndo_something do |foo|\n foo = foo + 42\n foo\nend\n\ndef do_something(foo)\n foo = foo + 42\n foo\nend\n```\n\nYAML configuration example:\n\n```\nLint/ShadowedArgument:\n Enabled: true\n```\n","summary":"

    A rule that disallows shadowed arguments.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows shadowed arguments.\n\nFor example, this is considered invalid:\n\n```\ndo_something do |foo|\n foo = 1 # shadows block argument\n foo\nend\n\ndef do_something(foo)\n foo = 1 # shadows method argument\n foo\nend\n```\n\nand it should be written as follows:\n\n```\ndo_something do |foo|\n foo = foo + 42\n foo\nend\n\ndef do_something(foo)\n foo = foo + 42\n foo\nend\n```\n\nYAML configuration example:\n\n```\nLint/ShadowedArgument:\n Enabled: true\n```\n","summary":"

    A rule that disallows shadowed arguments.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/shadowed_argument.cr#L39","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node,scope:AST::Scope)-instance-method","html_id":"test(source,node,scope:AST::Scope)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""},{"name":"scope","doc":null,"default_value":"","external_name":"scope","restriction":"AST::Scope"}],"args_string":"(source, node, scope : AST::Scope)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/shadowed_argument.cr#L50","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""},{"name":"scope","doc":null,"default_value":"","external_name":"scope","restriction":"AST::Scope"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"scope.arguments.each do |arg|\n if assign = arg.variable.assign_before_reference\n else\n next\n end\n issue_for(assign, MSG % arg.name)\nend"}},{"id":"test(source)-instance-method","html_id":"test(source)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"args_string":"(source)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/shadowed_argument.cr#L46","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"AST::ScopeVisitor.new(self, source)"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Lint/ShadowedException","path":"Ameba/Rule/Lint/ShadowedException.html","kind":"struct","full_name":"Ameba::Rule::Lint::ShadowedException","name":"ShadowedException","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/lint/shadowed_exception.cr","line_number":37,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/shadowed_exception.cr#L37"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Exception handler has shadowed exceptions: %s\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Lint","kind":"module","full_name":"Ameba::Rule::Lint","name":"Lint"},"doc":"A rule that disallows a rescued exception that get shadowed by a\nless specific exception being rescued before a more specific\nexception is rescued.\n\nFor example, this is invalid:\n\n```\nbegin\n do_something\nrescue Exception\n handle_exception\nrescue ArgumentError\n handle_argument_error_exception\nend\n```\n\nAnd it has to be written as follows:\n\n```\nbegin\n do_something\nrescue ArgumentError\n handle_argument_error_exception\nrescue Exception\n handle_exception\nend\n```\n\nYAML configuration example:\n\n```\nLint/ShadowedException:\n Enabled: true\n```\n","summary":"

    A rule that disallows a rescued exception that get shadowed by a less specific exception being rescued before a more specific exception is rescued.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows a rescued exception that get shadowed by a\nless specific exception being rescued before a more specific\nexception is rescued.\n\nFor example, this is invalid:\n\n```\nbegin\n do_something\nrescue Exception\n handle_exception\nrescue ArgumentError\n handle_argument_error_exception\nend\n```\n\nAnd it has to be written as follows:\n\n```\nbegin\n do_something\nrescue ArgumentError\n handle_argument_error_exception\nrescue Exception\n handle_exception\nend\n```\n\nYAML configuration example:\n\n```\nLint/ShadowedException:\n Enabled: true\n```\n","summary":"

    A rule that disallows a rescued exception that get shadowed by a less specific exception being rescued before a more specific exception is rescued.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/shadowed_exception.cr#L37","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node:Crystal::ExceptionHandler)-instance-method","html_id":"test(source,node:Crystal::ExceptionHandler)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ExceptionHandler"}],"args_string":"(source, node : Crystal::ExceptionHandler)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/shadowed_exception.cr#L44","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ExceptionHandler"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if excs = node.rescues\nelse\n return\nend\nif (excs = shadowed(excs.map(&.types))).any?\n issue_for(node, MSG % (excs.join(\", \")))\nend\n"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Lint/ShadowingOuterLocalVar","path":"Ameba/Rule/Lint/ShadowingOuterLocalVar.html","kind":"struct","full_name":"Ameba::Rule::Lint::ShadowingOuterLocalVar","name":"ShadowingOuterLocalVar","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/lint/shadowing_local_outer_var.cr","line_number":34,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/shadowing_local_outer_var.cr#L34"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Shadowing outer local variable `%s`\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Lint","kind":"module","full_name":"Ameba::Rule::Lint","name":"Lint"},"doc":"A rule that disallows the usage of the same name as outer local variables\nfor block or proc arguments.\n\nFor example, this is considered incorrect:\n\n```\ndef some_method\n foo = 1\n\n 3.times do |foo| # shadowing outer `foo`\n end\nend\n```\n\nand should be written as:\n\n```\ndef some_method\n foo = 1\n\n 3.times do |bar|\n end\nend\n```\n\nYAML configuration example:\n\n```\nLint/ShadowingOuterLocalVar:\n Enabled: true\n```\n","summary":"

    A rule that disallows the usage of the same name as outer local variables for block or proc arguments.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows the usage of the same name as outer local variables\nfor block or proc arguments.\n\nFor example, this is considered incorrect:\n\n```\ndef some_method\n foo = 1\n\n 3.times do |foo| # shadowing outer `foo`\n end\nend\n```\n\nand should be written as:\n\n```\ndef some_method\n foo = 1\n\n 3.times do |bar|\n end\nend\n```\n\nYAML configuration example:\n\n```\nLint/ShadowingOuterLocalVar:\n Enabled: true\n```\n","summary":"

    A rule that disallows the usage of the same name as outer local variables for block or proc arguments.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/shadowing_local_outer_var.cr#L34","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node:Crystal::ProcLiteral,scope:AST::Scope)-instance-method","html_id":"test(source,node:Crystal::ProcLiteral,scope:AST::Scope)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ProcLiteral"},{"name":"scope","doc":null,"default_value":"","external_name":"scope","restriction":"AST::Scope"}],"args_string":"(source, node : Crystal::ProcLiteral, scope : AST::Scope)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/shadowing_local_outer_var.cr#L46","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ProcLiteral"},{"name":"scope","doc":null,"default_value":"","external_name":"scope","restriction":"AST::Scope"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"find_shadowing(source, scope)"}},{"id":"test(source,node:Crystal::Block,scope:AST::Scope)-instance-method","html_id":"test(source,node:Crystal::Block,scope:AST::Scope)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Block"},{"name":"scope","doc":null,"default_value":"","external_name":"scope","restriction":"AST::Scope"}],"args_string":"(source, node : Crystal::Block, scope : AST::Scope)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/shadowing_local_outer_var.cr#L50","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Block"},{"name":"scope","doc":null,"default_value":"","external_name":"scope","restriction":"AST::Scope"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"find_shadowing(source, scope)"}},{"id":"test(source)-instance-method","html_id":"test(source)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"args_string":"(source)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/shadowing_local_outer_var.cr#L42","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"AST::ScopeVisitor.new(self, source)"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Lint/SharedVarInFiber","path":"Ameba/Rule/Lint/SharedVarInFiber.html","kind":"struct","full_name":"Ameba::Rule::Lint::SharedVarInFiber","name":"SharedVarInFiber","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/lint/shared_var_in_fiber.cr","line_number":53,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/shared_var_in_fiber.cr#L53"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Shared variable `%s` is used in fiber\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Lint","kind":"module","full_name":"Ameba::Rule::Lint","name":"Lint"},"doc":"A rule that disallows using shared variables in fibers,\nwhich are mutated during iterations.\n\nIn most cases it leads to unexpected behaviour and is undesired.\n\nFor example, having this example:\n\n```\nn = 0\nchannel = Channel(Int32).new\n\nwhile n < 3\n n = n + 1\n spawn { channel.send n }\nend\n\n3.times { puts channel.receive } # => # 3, 3, 3\n```\n\nThe problem is there is only one shared between fibers variable `n`\nand when `channel.receive` is executed its value is `3`.\n\nTo solve this, the code above needs to be rewritten to the following:\n\n```\nn = 0\nchannel = Channel(Int32).new\n\nwhile n < 3\n n = n + 1\n m = n\n spawn do { channel.send m }\nend\n\n3.times { puts channel.receive } # => # 1, 2, 3\n```\n\nThis rule is able to find the shared variables between fibers, which are mutated\nduring iterations. So it reports the issue on the first sample and passes on\nthe second one.\n\nThere are also other technics to solve the problem above which are\n[officially documented](https://crystal-lang.org/reference/guides/concurrency.html)\n\nYAML configuration example:\n\n```\nLint/SharedVarInFiber:\n Enabled: true\n```\n","summary":"

    A rule that disallows using shared variables in fibers, which are mutated during iterations.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows using shared variables in fibers,\nwhich are mutated during iterations.\n\nIn most cases it leads to unexpected behaviour and is undesired.\n\nFor example, having this example:\n\n```\nn = 0\nchannel = Channel(Int32).new\n\nwhile n < 3\n n = n + 1\n spawn { channel.send n }\nend\n\n3.times { puts channel.receive } # => # 3, 3, 3\n```\n\nThe problem is there is only one shared between fibers variable `n`\nand when `channel.receive` is executed its value is `3`.\n\nTo solve this, the code above needs to be rewritten to the following:\n\n```\nn = 0\nchannel = Channel(Int32).new\n\nwhile n < 3\n n = n + 1\n m = n\n spawn do { channel.send m }\nend\n\n3.times { puts channel.receive } # => # 1, 2, 3\n```\n\nThis rule is able to find the shared variables between fibers, which are mutated\nduring iterations. So it reports the issue on the first sample and passes on\nthe second one.\n\nThere are also other technics to solve the problem above which are\n[officially documented](https://crystal-lang.org/reference/guides/concurrency.html)\n\nYAML configuration example:\n\n```\nLint/SharedVarInFiber:\n Enabled: true\n```\n","summary":"

    A rule that disallows using shared variables in fibers, which are mutated during iterations.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/shared_var_in_fiber.cr#L53","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node,scope:AST::Scope)-instance-method","html_id":"test(source,node,scope:AST::Scope)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""},{"name":"scope","doc":null,"default_value":"","external_name":"scope","restriction":"AST::Scope"}],"args_string":"(source, node, scope : AST::Scope)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/shared_var_in_fiber.cr#L64","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""},{"name":"scope","doc":null,"default_value":"","external_name":"scope","restriction":"AST::Scope"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if scope.spawn_block?\nelse\n return\nend\nscope.references.each do |ref|\n if ( variable = scope.find_variable(ref.name)).nil?\n next\n end\n if (variable.scope == scope) || (!(mutated_in_loop?(variable)))\n next\n end\n issue_for(ref.node, MSG % variable.name)\nend\n"}},{"id":"test(source)-instance-method","html_id":"test(source)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"args_string":"(source)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/shared_var_in_fiber.cr#L60","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"AST::ScopeVisitor.new(self, source)"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Lint/Syntax","path":"Ameba/Rule/Lint/Syntax.html","kind":"struct","full_name":"Ameba::Rule::Lint::Syntax","name":"Syntax","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/lint/syntax.cr","line_number":22,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/syntax.cr#L22"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Lint","kind":"module","full_name":"Ameba::Rule::Lint","name":"Lint"},"doc":"A rule that reports invalid Crystal syntax.\n\nFor example, this syntax is invalid:\n\n```\ndef hello\n do_something\nrescue Exception => e\nend\n```\n\nAnd should be properly written:\n\n```\ndef hello\n do_something\nrescue e : Exception\nend\n```\n","summary":"

    A rule that reports invalid Crystal syntax.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that reports invalid Crystal syntax.\n\nFor example, this syntax is invalid:\n\n```\ndef hello\n do_something\nrescue Exception => e\nend\n```\n\nAnd should be properly written:\n\n```\ndef hello\n do_something\nrescue e : Exception\nend\n```\n","summary":"

    A rule that reports invalid Crystal syntax.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/syntax.cr#L22","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Ameba::Severity","visibility":"Public","body":"@severity"}},{"id":"severity=(severity:Ameba::Severity)-instance-method","html_id":"severity=(severity:Ameba::Severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":"Ameba::Severity"}],"args_string":"(severity : Ameba::Severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":"Ameba::Severity"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source)-instance-method","html_id":"test(source)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"args_string":"(source)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/syntax.cr#L28","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"begin\n source.ast\nrescue e : Crystal::SyntaxException\n issue_for({e.line_number, e.column_number}, e.message.to_s)\nend"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Lint/UnneededDisableDirective","path":"Ameba/Rule/Lint/UnneededDisableDirective.html","kind":"struct","full_name":"Ameba::Rule::Lint::UnneededDisableDirective","name":"UnneededDisableDirective","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/lint/unneeded_disable_directive.cr","line_number":28,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/unneeded_disable_directive.cr#L28"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Unnecessary disabling of %s\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Lint","kind":"module","full_name":"Ameba::Rule::Lint","name":"Lint"},"doc":"A rule that reports unneeded disable directives.\nFor example, this is considered invalid:\n\n```\n# ameba:disable Style/PredicateName\ndef comment?\n do_something\nend\n```\n\nas the predicate name is correct and the comment directive does not\nhave any effect, the snippet should be written as the following:\n\n```\ndef comment?\n do_something\nend\n```\n\nYAML configuration example:\n\n```\nLint/UnneededDisableDirective\n Enabled: true\n```\n","summary":"

    A rule that reports unneeded disable directives.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that reports unneeded disable directives.\nFor example, this is considered invalid:\n\n```\n# ameba:disable Style/PredicateName\ndef comment?\n do_something\nend\n```\n\nas the predicate name is correct and the comment directive does not\nhave any effect, the snippet should be written as the following:\n\n```\ndef comment?\n do_something\nend\n```\n\nYAML configuration example:\n\n```\nLint/UnneededDisableDirective\n Enabled: true\n```\n","summary":"

    A rule that reports unneeded disable directives.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/unneeded_disable_directive.cr#L28","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source)-instance-method","html_id":"test(source)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"args_string":"(source)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/unneeded_disable_directive.cr#L35","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"(Tokenizer.new(source)).run do |token|\n if token.type == (:COMMENT)\n else\n next\n end\n if directive = source.parse_inline_directive(token.value.to_s)\n else\n next\n end\n if names = unneeded_disables(source, directive, token.location)\n else\n next\n end\n if names.any?\n else\n next\n end\n issue_for(token, MSG % (names.join(\", \")))\nend"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Lint/UnreachableCode","path":"Ameba/Rule/Lint/UnreachableCode.html","kind":"struct","full_name":"Ameba::Rule::Lint::UnreachableCode","name":"UnreachableCode","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/Ameba/AST/Util","kind":"module","full_name":"Ameba::AST::Util","name":"Util"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/lint/unreachable_code.cr","line_number":45,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/unreachable_code.cr#L45"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Unreachable code detected\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/Ameba/AST/Util","kind":"module","full_name":"Ameba::AST::Util","name":"Util"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Lint","kind":"module","full_name":"Ameba::Rule::Lint","name":"Lint"},"doc":"A rule that reports unreachable code.\n\nFor example, this is considered invalid:\n\n```\ndef method(a)\n return 42\n a + 1\nend\n```\n\n```\na = 1\nloop do\n break\n a += 1\nend\n```\n\nAnd has to be written as the following:\n\n```\ndef method(a)\n return 42 if a == 0\n a + 1\nend\n```\n\n```\na = 1\nloop do\n break a > 3\n a += 1\nend\n```\n\nYAML configuration example:\n\n```\nLint/UnreachableCode:\n Enabled: true\n```\n","summary":"

    A rule that reports unreachable code.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that reports unreachable code.\n\nFor example, this is considered invalid:\n\n```\ndef method(a)\n return 42\n a + 1\nend\n```\n\n```\na = 1\nloop do\n break\n a += 1\nend\n```\n\nAnd has to be written as the following:\n\n```\ndef method(a)\n return 42 if a == 0\n a + 1\nend\n```\n\n```\na = 1\nloop do\n break a > 3\n a += 1\nend\n```\n\nYAML configuration example:\n\n```\nLint/UnreachableCode:\n Enabled: true\n```\n","summary":"

    A rule that reports unreachable code.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/unreachable_code.cr#L45","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node,flow_expression:AST::FlowExpression)-instance-method","html_id":"test(source,node,flow_expression:AST::FlowExpression)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""},{"name":"flow_expression","doc":null,"default_value":"","external_name":"flow_expression","restriction":"AST::FlowExpression"}],"args_string":"(source, node, flow_expression : AST::FlowExpression)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/unreachable_code.cr#L58","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""},{"name":"flow_expression","doc":null,"default_value":"","external_name":"flow_expression","restriction":"AST::FlowExpression"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if unreachable_node = flow_expression.unreachable_nodes.first?\n issue_for(unreachable_node, MSG)\nend"}},{"id":"test(source)-instance-method","html_id":"test(source)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"args_string":"(source)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/unreachable_code.cr#L54","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"AST::FlowExpressionVisitor.new(self, source)"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Lint/UnusedArgument","path":"Ameba/Rule/Lint/UnusedArgument.html","kind":"struct","full_name":"Ameba::Rule::Lint::UnusedArgument","name":"UnusedArgument","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/lint/unused_argument.cr","line_number":28,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/unused_argument.cr#L28"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Unused argument `%s`. If it's necessary, use `%s` as an argument name to indicate that it won't be used.\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Lint","kind":"module","full_name":"Ameba::Rule::Lint","name":"Lint"},"doc":"A rule that reports unused arguments.\nFor example, this is considered invalid:\n\n```\ndef method(a, b, c)\n a + b\nend\n```\nand should be written as:\n\n```\ndef method(a, b)\n a + b\nend\n```\n\nYAML configuration example:\n\n```\nLint/UnusedArgument:\n Enabled: true\n IgnoreDefs: true\n IgnoreBlocks: false\n IgnoreProcs: false\n```\n","summary":"

    A rule that reports unused arguments.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that reports unused arguments.\nFor example, this is considered invalid:\n\n```\ndef method(a, b, c)\n a + b\nend\n```\nand should be written as:\n\n```\ndef method(a, b)\n a + b\nend\n```\n\nYAML configuration example:\n\n```\nLint/UnusedArgument:\n Enabled: true\n IgnoreDefs: true\n IgnoreBlocks: false\n IgnoreProcs: false\n```\n","summary":"

    A rule that reports unused arguments.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/unused_argument.cr#L28","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"ignore_blocks:Bool-instance-method","html_id":"ignore_blocks:Bool-instance-method","name":"ignore_blocks","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"ignore_blocks","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Bool","visibility":"Public","body":"@ignore_blocks"}},{"id":"ignore_blocks=(ignore_blocks:Bool)-instance-method","html_id":"ignore_blocks=(ignore_blocks:Bool)-instance-method","name":"ignore_blocks=","doc":null,"summary":null,"abstract":false,"args":[{"name":"ignore_blocks","doc":null,"default_value":"","external_name":"ignore_blocks","restriction":"Bool"}],"args_string":"(ignore_blocks : Bool)","source_link":null,"def":{"name":"ignore_blocks=","args":[{"name":"ignore_blocks","doc":null,"default_value":"","external_name":"ignore_blocks","restriction":"Bool"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@ignore_blocks = ignore_blocks"}},{"id":"ignore_defs:Bool-instance-method","html_id":"ignore_defs:Bool-instance-method","name":"ignore_defs","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"ignore_defs","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Bool","visibility":"Public","body":"@ignore_defs"}},{"id":"ignore_defs=(ignore_defs:Bool)-instance-method","html_id":"ignore_defs=(ignore_defs:Bool)-instance-method","name":"ignore_defs=","doc":null,"summary":null,"abstract":false,"args":[{"name":"ignore_defs","doc":null,"default_value":"","external_name":"ignore_defs","restriction":"Bool"}],"args_string":"(ignore_defs : Bool)","source_link":null,"def":{"name":"ignore_defs=","args":[{"name":"ignore_defs","doc":null,"default_value":"","external_name":"ignore_defs","restriction":"Bool"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@ignore_defs = ignore_defs"}},{"id":"ignore_procs:Bool-instance-method","html_id":"ignore_procs:Bool-instance-method","name":"ignore_procs","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"ignore_procs","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Bool","visibility":"Public","body":"@ignore_procs"}},{"id":"ignore_procs=(ignore_procs:Bool)-instance-method","html_id":"ignore_procs=(ignore_procs:Bool)-instance-method","name":"ignore_procs=","doc":null,"summary":null,"abstract":false,"args":[{"name":"ignore_procs","doc":null,"default_value":"","external_name":"ignore_procs","restriction":"Bool"}],"args_string":"(ignore_procs : Bool)","source_link":null,"def":{"name":"ignore_procs=","args":[{"name":"ignore_procs","doc":null,"default_value":"","external_name":"ignore_procs","restriction":"Bool"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@ignore_procs = ignore_procs"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node:Crystal::ProcLiteral,scope:AST::Scope)-instance-method","html_id":"test(source,node:Crystal::ProcLiteral,scope:AST::Scope)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ProcLiteral"},{"name":"scope","doc":null,"default_value":"","external_name":"scope","restriction":"AST::Scope"}],"args_string":"(source, node : Crystal::ProcLiteral, scope : AST::Scope)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/unused_argument.cr#L44","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ProcLiteral"},{"name":"scope","doc":null,"default_value":"","external_name":"scope","restriction":"AST::Scope"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"ignore_procs || (find_unused_arguments(source, scope))"}},{"id":"test(source,node:Crystal::Block,scope:AST::Scope)-instance-method","html_id":"test(source,node:Crystal::Block,scope:AST::Scope)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Block"},{"name":"scope","doc":null,"default_value":"","external_name":"scope","restriction":"AST::Scope"}],"args_string":"(source, node : Crystal::Block, scope : AST::Scope)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/unused_argument.cr#L48","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Block"},{"name":"scope","doc":null,"default_value":"","external_name":"scope","restriction":"AST::Scope"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"ignore_blocks || (find_unused_arguments(source, scope))"}},{"id":"test(source,node:Crystal::Def,scope:AST::Scope)-instance-method","html_id":"test(source,node:Crystal::Def,scope:AST::Scope)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Def"},{"name":"scope","doc":null,"default_value":"","external_name":"scope","restriction":"AST::Scope"}],"args_string":"(source, node : Crystal::Def, scope : AST::Scope)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/unused_argument.cr#L52","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Def"},{"name":"scope","doc":null,"default_value":"","external_name":"scope","restriction":"AST::Scope"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"ignore_defs || (find_unused_arguments(source, scope))"}},{"id":"test(source)-instance-method","html_id":"test(source)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"args_string":"(source)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/unused_argument.cr#L40","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"AST::ScopeVisitor.new(self, source)"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Lint/UselessAssign","path":"Ameba/Rule/Lint/UselessAssign.html","kind":"struct","full_name":"Ameba::Rule::Lint::UselessAssign","name":"UselessAssign","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/lint/useless_assign.cr","line_number":29,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/useless_assign.cr#L29"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Useless assignment to variable `%s`\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Lint","kind":"module","full_name":"Ameba::Rule::Lint","name":"Lint"},"doc":"A rule that disallows useless assignments.\n\nFor example, this is considered invalid:\n\n```\ndef method\n var = 1\n do_something\nend\n```\n\nAnd has to be written as the following:\n\n```\ndef method\n var = 1\n do_something(var)\nend\n```\n\nYAML configuration example:\n\n```\nLint/UselessAssign:\n Enabled: true\n```\n","summary":"

    A rule that disallows useless assignments.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows useless assignments.\n\nFor example, this is considered invalid:\n\n```\ndef method\n var = 1\n do_something\nend\n```\n\nAnd has to be written as the following:\n\n```\ndef method\n var = 1\n do_something(var)\nend\n```\n\nYAML configuration example:\n\n```\nLint/UselessAssign:\n Enabled: true\n```\n","summary":"

    A rule that disallows useless assignments.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/useless_assign.cr#L29","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node,scope:AST::Scope)-instance-method","html_id":"test(source,node,scope:AST::Scope)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""},{"name":"scope","doc":null,"default_value":"","external_name":"scope","restriction":"AST::Scope"}],"args_string":"(source, node, scope : AST::Scope)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/useless_assign.cr#L40","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""},{"name":"scope","doc":null,"default_value":"","external_name":"scope","restriction":"AST::Scope"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"scope.variables.each do |var|\n if (var.captured_by_block? || var.used_in_macro?) || var.ignored?\n next\n end\n var.assignments.each do |assign|\n if assign.referenced? || assign.transformed?\n next\n end\n issue_for(assign.target_node, MSG % var.name)\n end\nend"}},{"id":"test(source)-instance-method","html_id":"test(source)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"args_string":"(source)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/useless_assign.cr#L36","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"AST::ScopeVisitor.new(self, source)"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Lint/UselessConditionInWhen","path":"Ameba/Rule/Lint/UselessConditionInWhen.html","kind":"struct","full_name":"Ameba::Rule::Lint::UselessConditionInWhen","name":"UselessConditionInWhen","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/lint/useless_condition_in_when.cr","line_number":34,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/useless_condition_in_when.cr#L34"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Useless condition in when detected\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Lint","kind":"module","full_name":"Ameba::Rule::Lint","name":"Lint"},"doc":"A rule that disallows useless conditions in when clause\nwhere it is guaranteed to always return the same result.\n\nFor example, this is considered invalid:\n\n```\ncase\nwhen utc?\n io << \" UTC\"\nwhen local?\n Format.new(\" %:z\").format(self, io) if local?\nend\n```\n\nAnd has to be written as the following:\n\n```\ncase\nwhen utc?\n io << \" UTC\"\nwhen local?\n Format.new(\" %:z\").format(self, io)\nend\n```\n\nYAML configuration example:\n\n```\nLint/UselessConditionInWhen:\n Enabled: true\n```\n","summary":"

    A rule that disallows useless conditions in when clause where it is guaranteed to always return the same result.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows useless conditions in when clause\nwhere it is guaranteed to always return the same result.\n\nFor example, this is considered invalid:\n\n```\ncase\nwhen utc?\n io << \" UTC\"\nwhen local?\n Format.new(\" %:z\").format(self, io) if local?\nend\n```\n\nAnd has to be written as the following:\n\n```\ncase\nwhen utc?\n io << \" UTC\"\nwhen local?\n Format.new(\" %:z\").format(self, io)\nend\n```\n\nYAML configuration example:\n\n```\nLint/UselessConditionInWhen:\n Enabled: true\n```\n","summary":"

    A rule that disallows useless conditions in when clause where it is guaranteed to always return the same result.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/useless_condition_in_when.cr#L34","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node:Crystal::When)-instance-method","html_id":"test(source,node:Crystal::When)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::When"}],"args_string":"(source, node : Crystal::When)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/lint/useless_condition_in_when.cr#L54","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::When"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"ConditionInWhenVisitor.new(self, source, node)"}}],"macros":[],"types":[]}]},{"html_id":"ameba/Ameba/Rule/Metrics","path":"Ameba/Rule/Metrics.html","kind":"module","full_name":"Ameba::Rule::Metrics","name":"Metrics","abstract":false,"superclass":null,"ancestors":[],"locations":[{"filename":"src/ameba/rule/metrics/cyclomatic_complexity.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/metrics/cyclomatic_complexity.cr#L1"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule","kind":"module","full_name":"Ameba::Rule","name":"Rule"},"doc":null,"summary":null,"class_methods":[],"constructors":[],"instance_methods":[],"macros":[],"types":[{"html_id":"ameba/Ameba/Rule/Metrics/CyclomaticComplexity","path":"Ameba/Rule/Metrics/CyclomaticComplexity.html","kind":"struct","full_name":"Ameba::Rule::Metrics::CyclomaticComplexity","name":"CyclomaticComplexity","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/metrics/cyclomatic_complexity.cr","line_number":12,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/metrics/cyclomatic_complexity.cr#L12"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Cyclomatic complexity too high [%d/%d]\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Metrics","kind":"module","full_name":"Ameba::Rule::Metrics","name":"Metrics"},"doc":"A rule that disallows methods with a cyclomatic complexity higher than `MaxComplexity`\n\nYAML configuration example:\n\n```\nMetrics/CyclomaticComplexity:\n Enabled: true\n MaxComplexity: 10\n```\n","summary":"

    A rule that disallows methods with a cyclomatic complexity higher than MaxComplexity

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows methods with a cyclomatic complexity higher than `MaxComplexity`\n\nYAML configuration example:\n\n```\nMetrics/CyclomaticComplexity:\n Enabled: true\n MaxComplexity: 10\n```\n","summary":"

    A rule that disallows methods with a cyclomatic complexity higher than MaxComplexity

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/metrics/cyclomatic_complexity.cr#L12","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"max_complexity:Int32-instance-method","html_id":"max_complexity:Int32-instance-method","name":"max_complexity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Int32","source_link":null,"def":{"name":"max_complexity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Int32","visibility":"Public","body":"@max_complexity"}},{"id":"max_complexity=(max_complexity:Int32)-instance-method","html_id":"max_complexity=(max_complexity:Int32)-instance-method","name":"max_complexity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"max_complexity","doc":null,"default_value":"","external_name":"max_complexity","restriction":"Int32"}],"args_string":"(max_complexity : Int32)","source_link":null,"def":{"name":"max_complexity=","args":[{"name":"max_complexity","doc":null,"default_value":"","external_name":"max_complexity","restriction":"Int32"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@max_complexity = max_complexity"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node:Crystal::Def)-instance-method","html_id":"test(source,node:Crystal::Def)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Def"}],"args_string":"(source, node : Crystal::Def)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/metrics/cyclomatic_complexity.cr#L20","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Def"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"complexity = (AST::CountingVisitor.new(node)).count\nif complexity > max_complexity && (location = node.name_location)\n issue_for(location, def_name_end_location(node), MSG % {complexity, max_complexity})\nend\n"}}],"macros":[],"types":[]}]},{"html_id":"ameba/Ameba/Rule/Performance","path":"Ameba/Rule/Performance.html","kind":"module","full_name":"Ameba::Rule::Performance","name":"Performance","abstract":false,"superclass":null,"ancestors":[],"locations":[{"filename":"src/ameba/rule/performance/any_after_filter.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/performance/any_after_filter.cr#L1"},{"filename":"src/ameba/rule/performance/first_last_after_filter.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/performance/first_last_after_filter.cr#L1"},{"filename":"src/ameba/rule/performance/size_after_filter.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/performance/size_after_filter.cr#L1"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule","kind":"module","full_name":"Ameba::Rule","name":"Rule"},"doc":null,"summary":null,"class_methods":[],"constructors":[],"instance_methods":[],"macros":[],"types":[{"html_id":"ameba/Ameba/Rule/Performance/AnyAfterFilter","path":"Ameba/Rule/Performance/AnyAfterFilter.html","kind":"struct","full_name":"Ameba::Rule::Performance::AnyAfterFilter","name":"AnyAfterFilter","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/performance/any_after_filter.cr","line_number":28,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/performance/any_after_filter.cr#L28"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"ANY_NAME","name":"ANY_NAME","value":"\"any?\"","doc":null,"summary":null},{"id":"MSG","name":"MSG","value":"\"Use `#{ANY_NAME} {...}` instead of `%s {...}.#{ANY_NAME}`\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Performance","kind":"module","full_name":"Ameba::Rule::Performance","name":"Performance"},"doc":"This rule is used to identify usage of `any?` calls that follow filters.\n\nFor example, this is considered invalid:\n\n```\n[1, 2, 3].select { |e| e > 2 }.any?\n[1, 2, 3].reject { |e| e >= 2 }.any?\n```\n\nAnd it should be written as this:\n\n```\n[1, 2, 3].any? { |e| e > 2 }\n[1, 2, 3].any? { |e| e < 2 }\n```\n\nYAML configuration example:\n\n```\nPerformance/AnyAfterFilter:\n Enabled: true\n FilterNames:\n - select\n - reject\n```\n","summary":"

    This rule is used to identify usage of any? calls that follow filters.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"This rule is used to identify usage of `any?` calls that follow filters.\n\nFor example, this is considered invalid:\n\n```\n[1, 2, 3].select { |e| e > 2 }.any?\n[1, 2, 3].reject { |e| e >= 2 }.any?\n```\n\nAnd it should be written as this:\n\n```\n[1, 2, 3].any? { |e| e > 2 }\n[1, 2, 3].any? { |e| e < 2 }\n```\n\nYAML configuration example:\n\n```\nPerformance/AnyAfterFilter:\n Enabled: true\n FilterNames:\n - select\n - reject\n```\n","summary":"

    This rule is used to identify usage of any? calls that follow filters.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/performance/any_after_filter.cr#L28","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"filter_names:Array(String)-instance-method","html_id":"filter_names:Array(String)-instance-method","name":"filter_names","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)","source_link":null,"def":{"name":"filter_names","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String)","visibility":"Public","body":"@filter_names"}},{"id":"filter_names=(filter_names:Array(String))-instance-method","html_id":"filter_names=(filter_names:Array(String))-instance-method","name":"filter_names=","doc":null,"summary":null,"abstract":false,"args":[{"name":"filter_names","doc":null,"default_value":"","external_name":"filter_names","restriction":"Array(String)"}],"args_string":"(filter_names : Array(String))","source_link":null,"def":{"name":"filter_names=","args":[{"name":"filter_names","doc":null,"default_value":"","external_name":"filter_names","restriction":"Array(String)"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@filter_names = filter_names"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node:Crystal::Call)-instance-method","html_id":"test(source,node:Crystal::Call)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Call"}],"args_string":"(source, node : Crystal::Call)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/performance/any_after_filter.cr#L37","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Call"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (node.name == ANY_NAME) && (obj = node.obj)\nelse\n return\nend\nif ((node.block.nil? && obj.is_a?(Crystal::Call)) && (filter_names.includes?(obj.name))) && (!obj.block.nil?)\n issue_for(obj.name_location, node.name_end_location, MSG % obj.name)\nend\n"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Performance/FirstLastAfterFilter","path":"Ameba/Rule/Performance/FirstLastAfterFilter.html","kind":"struct","full_name":"Ameba::Rule::Performance::FirstLastAfterFilter","name":"FirstLastAfterFilter","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/performance/first_last_after_filter.cr","line_number":27,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/performance/first_last_after_filter.cr#L27"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"CALL_NAMES","name":"CALL_NAMES","value":"[\"first\", \"last\", \"first?\", \"last?\"] of ::String","doc":null,"summary":null},{"id":"MSG","name":"MSG","value":"\"Use `find {...}` instead of `%s {...}.%s`\"","doc":null,"summary":null},{"id":"MSG_REVERSE","name":"MSG_REVERSE","value":"\"Use `reverse_each.find {...}` instead of `%s {...}.%s`\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Performance","kind":"module","full_name":"Ameba::Rule::Performance","name":"Performance"},"doc":"This rule is used to identify usage of `first/last/first?/last?` calls that follow filters.\n\nFor example, this is considered inefficient:\n\n```\n[-1, 0, 1, 2].select { |e| e > 0 }.first?\n[-1, 0, 1, 2].select { |e| e > 0 }.last?\n```\n\nAnd can be written as this:\n\n```\n[-1, 0, 1, 2].find { |e| e > 0 }\n[-1, 0, 1, 2].reverse_each.find { |e| e > 0 }\n```\n\nYAML configuration example:\n\n```\nPerformance/FirstLastAfterFilter\n Enabled: true\n FilterNames:\n - select\n```\n","summary":"

    This rule is used to identify usage of first/last/first?/last? calls that follow filters.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"This rule is used to identify usage of `first/last/first?/last?` calls that follow filters.\n\nFor example, this is considered inefficient:\n\n```\n[-1, 0, 1, 2].select { |e| e > 0 }.first?\n[-1, 0, 1, 2].select { |e| e > 0 }.last?\n```\n\nAnd can be written as this:\n\n```\n[-1, 0, 1, 2].find { |e| e > 0 }\n[-1, 0, 1, 2].reverse_each.find { |e| e > 0 }\n```\n\nYAML configuration example:\n\n```\nPerformance/FirstLastAfterFilter\n Enabled: true\n FilterNames:\n - select\n```\n","summary":"

    This rule is used to identify usage of first/last/first?/last? calls that follow filters.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/performance/first_last_after_filter.cr#L27","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"filter_names:Array(String)-instance-method","html_id":"filter_names:Array(String)-instance-method","name":"filter_names","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)","source_link":null,"def":{"name":"filter_names","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String)","visibility":"Public","body":"@filter_names"}},{"id":"filter_names=(filter_names:Array(String))-instance-method","html_id":"filter_names=(filter_names:Array(String))-instance-method","name":"filter_names=","doc":null,"summary":null,"abstract":false,"args":[{"name":"filter_names","doc":null,"default_value":"","external_name":"filter_names","restriction":"Array(String)"}],"args_string":"(filter_names : Array(String))","source_link":null,"def":{"name":"filter_names=","args":[{"name":"filter_names","doc":null,"default_value":"","external_name":"filter_names","restriction":"Array(String)"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@filter_names = filter_names"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node:Crystal::Call)-instance-method","html_id":"test(source,node:Crystal::Call)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Call"}],"args_string":"(source, node : Crystal::Call)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/performance/first_last_after_filter.cr#L46","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Call"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (CALL_NAMES.includes?(node.name)) && (obj = node.obj)\nelse\n return\nend\nif node.args.any?\n return\nend\nif ((node.block.nil? && obj.is_a?(Crystal::Call)) && (filter_names.includes?(obj.name))) && (!obj.block.nil?)\n message = node.name.includes?(CALL_NAMES.first) ? MSG : MSG_REVERSE\n issue_for(obj.name_location, node.name_end_location, message % {obj.name, node.name})\nend\n"}},{"id":"test(source)-instance-method","html_id":"test(source)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"args_string":"(source)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/performance/first_last_after_filter.cr#L37","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"AST::NodeVisitor.new(self, source, skip: [Crystal::Macro, Crystal::MacroExpression, Crystal::MacroIf, Crystal::MacroFor])"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Performance/SizeAfterFilter","path":"Ameba/Rule/Performance/SizeAfterFilter.html","kind":"struct","full_name":"Ameba::Rule::Performance::SizeAfterFilter","name":"SizeAfterFilter","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/performance/size_after_filter.cr","line_number":34,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/performance/size_after_filter.cr#L34"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Use `count {...}` instead of `%s {...}.#{SIZE_NAME}`.\"","doc":null,"summary":null},{"id":"SIZE_NAME","name":"SIZE_NAME","value":"\"size\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Performance","kind":"module","full_name":"Ameba::Rule::Performance","name":"Performance"},"doc":"This rule is used to identify usage of `size` calls that follow filter.\n\nFor example, this is considered invalid:\n\n```\n[1, 2, 3].select { |e| e > 2 }.size\n[1, 2, 3].reject { |e| e < 2 }.size\n[1, 2, 3].select(&.< 2).size\n[0, 1, 2].select(&.zero?).size\n[0, 1, 2].reject(&.zero?).size\n```\n\nAnd it should be written as this:\n\n```\n[1, 2, 3].count { |e| e > 2 }\n[1, 2, 3].count { |e| e >= 2 }\n[1, 2, 3].count(&.< 2)\n[0, 1, 2].count(&.zero?)\n[0, 1, 2].count(&.!= 0)\n```\n\nYAML configuration example:\n\n```\nPerformance/SizeAfterFilter:\n Enabled: true\n FilterNames:\n - select\n - reject\n```\n","summary":"

    This rule is used to identify usage of size calls that follow filter.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"This rule is used to identify usage of `size` calls that follow filter.\n\nFor example, this is considered invalid:\n\n```\n[1, 2, 3].select { |e| e > 2 }.size\n[1, 2, 3].reject { |e| e < 2 }.size\n[1, 2, 3].select(&.< 2).size\n[0, 1, 2].select(&.zero?).size\n[0, 1, 2].reject(&.zero?).size\n```\n\nAnd it should be written as this:\n\n```\n[1, 2, 3].count { |e| e > 2 }\n[1, 2, 3].count { |e| e >= 2 }\n[1, 2, 3].count(&.< 2)\n[0, 1, 2].count(&.zero?)\n[0, 1, 2].count(&.!= 0)\n```\n\nYAML configuration example:\n\n```\nPerformance/SizeAfterFilter:\n Enabled: true\n FilterNames:\n - select\n - reject\n```\n","summary":"

    This rule is used to identify usage of size calls that follow filter.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/performance/size_after_filter.cr#L34","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"filter_names:Array(String)-instance-method","html_id":"filter_names:Array(String)-instance-method","name":"filter_names","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)","source_link":null,"def":{"name":"filter_names","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String)","visibility":"Public","body":"@filter_names"}},{"id":"filter_names=(filter_names:Array(String))-instance-method","html_id":"filter_names=(filter_names:Array(String))-instance-method","name":"filter_names=","doc":null,"summary":null,"abstract":false,"args":[{"name":"filter_names","doc":null,"default_value":"","external_name":"filter_names","restriction":"Array(String)"}],"args_string":"(filter_names : Array(String))","source_link":null,"def":{"name":"filter_names=","args":[{"name":"filter_names","doc":null,"default_value":"","external_name":"filter_names","restriction":"Array(String)"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@filter_names = filter_names"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node:Crystal::Call)-instance-method","html_id":"test(source,node:Crystal::Call)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Call"}],"args_string":"(source, node : Crystal::Call)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/performance/size_after_filter.cr#L52","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Call"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (node.name == SIZE_NAME) && (obj = node.obj)\nelse\n return\nend\nif (obj.is_a?(Crystal::Call) && (filter_names.includes?(obj.name))) && (!obj.block.nil?)\n issue_for(obj.name_location, node.name_end_location, MSG % obj.name)\nend\n"}},{"id":"test(source)-instance-method","html_id":"test(source)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"args_string":"(source)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/performance/size_after_filter.cr#L43","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"AST::NodeVisitor.new(self, source, skip: [Crystal::Macro, Crystal::MacroExpression, Crystal::MacroIf, Crystal::MacroFor])"}}],"macros":[],"types":[]}]},{"html_id":"ameba/Ameba/Rule/Style","path":"Ameba/Rule/Style.html","kind":"module","full_name":"Ameba::Rule::Style","name":"Style","abstract":false,"superclass":null,"ancestors":[],"locations":[{"filename":"src/ameba/rule/style/constant_names.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/style/constant_names.cr#L1"},{"filename":"src/ameba/rule/style/is_a_nil.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/style/is_a_nil.cr#L1"},{"filename":"src/ameba/rule/style/large_numbers.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/style/large_numbers.cr#L1"},{"filename":"src/ameba/rule/style/method_names.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/style/method_names.cr#L1"},{"filename":"src/ameba/rule/style/negated_conditions_in_unless.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/style/negated_conditions_in_unless.cr#L1"},{"filename":"src/ameba/rule/style/predicate_name.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/style/predicate_name.cr#L1"},{"filename":"src/ameba/rule/style/redundant_begin.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/style/redundant_begin.cr#L1"},{"filename":"src/ameba/rule/style/redundant_next.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/style/redundant_next.cr#L1"},{"filename":"src/ameba/rule/style/redundant_return.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/style/redundant_return.cr#L1"},{"filename":"src/ameba/rule/style/type_names.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/style/type_names.cr#L1"},{"filename":"src/ameba/rule/style/unless_else.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/style/unless_else.cr#L1"},{"filename":"src/ameba/rule/style/variable_names.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/style/variable_names.cr#L1"},{"filename":"src/ameba/rule/style/while_true.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/style/while_true.cr#L1"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule","kind":"module","full_name":"Ameba::Rule","name":"Rule"},"doc":null,"summary":null,"class_methods":[],"constructors":[],"instance_methods":[],"macros":[],"types":[{"html_id":"ameba/Ameba/Rule/Style/ConstantNames","path":"Ameba/Rule/Style/ConstantNames.html","kind":"struct","full_name":"Ameba::Rule::Style::ConstantNames","name":"ConstantNames","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/style/constant_names.cr","line_number":25,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/style/constant_names.cr#L25"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Constant name should be screaming-cased: %s, not %s\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Style","kind":"module","full_name":"Ameba::Rule::Style","name":"Style"},"doc":"A rule that enforces constant names to be in screaming case.\n\nFor example, these constant names are considered valid:\n\n```\nLUCKY_NUMBERS = [3, 7, 11]\nDOCUMENTATION_URL = \"http://crystal-lang.org/docs\"\n```\n\nAnd these are invalid names:\n\n```\nmyBadConstant = 1\nWrong_NAME = 2\n```\n\nYAML configuration example:\n\n```\nStyle/ConstantNames:\n Enabled: true\n```\n","summary":"

    A rule that enforces constant names to be in screaming case.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that enforces constant names to be in screaming case.\n\nFor example, these constant names are considered valid:\n\n```\nLUCKY_NUMBERS = [3, 7, 11]\nDOCUMENTATION_URL = \"http://crystal-lang.org/docs\"\n```\n\nAnd these are invalid names:\n\n```\nmyBadConstant = 1\nWrong_NAME = 2\n```\n\nYAML configuration example:\n\n```\nStyle/ConstantNames:\n Enabled: true\n```\n","summary":"

    A rule that enforces constant names to be in screaming case.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/style/constant_names.cr#L25","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node:Crystal::Assign)-instance-method","html_id":"test(source,node:Crystal::Assign)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Assign"}],"args_string":"(source, node : Crystal::Assign)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/style/constant_names.cr#L32","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Assign"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (target = node.target).is_a?(Crystal::Path)\n name = target.names.first\n expected = name.upcase\n if (expected == name) || (name.camelcase == name)\n return\n end\n issue_for(target, MSG % {expected, name})\nend"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Style/IsANil","path":"Ameba/Rule/Style/IsANil.html","kind":"struct","full_name":"Ameba::Rule::Style::IsANil","name":"IsANil","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/style/is_a_nil.cr","line_number":23,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/style/is_a_nil.cr#L23"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Use `nil?` instead of `is_a?(Nil)`\"","doc":null,"summary":null},{"id":"PATH_NIL_NAMES","name":"PATH_NIL_NAMES","value":"[\"Nil\"] of ::String","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Style","kind":"module","full_name":"Ameba::Rule::Style","name":"Style"},"doc":"A rule that disallows calls to `is_a?(Nil)` in favor of `nil?`.\n\nThis is considered bad:\n\n```\nvar.is_a? Nil\n```\n\nAnd needs to be written as:\n\n```\nvar.nil?\n```\n\nYAML configuration example:\n\n```\nStyle/IsANil:\n Enabled: true\n```\n","summary":"

    A rule that disallows calls to is_a?(Nil) in favor of nil?.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows calls to `is_a?(Nil)` in favor of `nil?`.\n\nThis is considered bad:\n\n```\nvar.is_a? Nil\n```\n\nAnd needs to be written as:\n\n```\nvar.nil?\n```\n\nYAML configuration example:\n\n```\nStyle/IsANil:\n Enabled: true\n```\n","summary":"

    A rule that disallows calls to is_a?(Nil) in favor of nil?.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/style/is_a_nil.cr#L23","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node:Crystal::IsA)-instance-method","html_id":"test(source,node:Crystal::IsA)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::IsA"}],"args_string":"(source, node : Crystal::IsA)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/style/is_a_nil.cr#L31","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::IsA"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if node.nil_check?\n return\nend\nconst = node.const\nif const.is_a?(Crystal::Path) && (const.names == PATH_NIL_NAMES)\n issue_for(const, MSG)\nend\n"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Style/LargeNumbers","path":"Ameba/Rule/Style/LargeNumbers.html","kind":"struct","full_name":"Ameba::Rule::Style::LargeNumbers","name":"LargeNumbers","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/style/large_numbers.cr","line_number":30,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/style/large_numbers.cr#L30"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Large numbers should be written with underscores: %s\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Style","kind":"module","full_name":"Ameba::Rule::Style","name":"Style"},"doc":"A rule that disallows usage of large numbers without underscore.\nThese do not affect the value of the number, but can help read\nlarge numbers more easily.\n\nFor example, these are considered invalid:\n\n```\n10000\n141592654\n5.12345\n```\n\nAnd has to be rewritten as the following:\n\n```\n10_000\n141_592_654\n5.123_45\n```\n\nYAML configuration example:\n\n```\nStyle/LargeNumbers:\n Enabled: true\n IntMinDigits: 5 # i.e. integers higher than 9999\n```\n","summary":"

    A rule that disallows usage of large numbers without underscore.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows usage of large numbers without underscore.\nThese do not affect the value of the number, but can help read\nlarge numbers more easily.\n\nFor example, these are considered invalid:\n\n```\n10000\n141592654\n5.12345\n```\n\nAnd has to be rewritten as the following:\n\n```\n10_000\n141_592_654\n5.123_45\n```\n\nYAML configuration example:\n\n```\nStyle/LargeNumbers:\n Enabled: true\n IntMinDigits: 5 # i.e. integers higher than 9999\n```\n","summary":"

    A rule that disallows usage of large numbers without underscore.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/style/large_numbers.cr#L30","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Bool","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled:Bool)-instance-method","html_id":"enabled=(enabled:Bool)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":"Bool"}],"args_string":"(enabled : Bool)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":"Bool"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"int_min_digits:Int32-instance-method","html_id":"int_min_digits:Int32-instance-method","name":"int_min_digits","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Int32","source_link":null,"def":{"name":"int_min_digits","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Int32","visibility":"Public","body":"@int_min_digits"}},{"id":"int_min_digits=(int_min_digits:Int32)-instance-method","html_id":"int_min_digits=(int_min_digits:Int32)-instance-method","name":"int_min_digits=","doc":null,"summary":null,"abstract":false,"args":[{"name":"int_min_digits","doc":null,"default_value":"","external_name":"int_min_digits","restriction":"Int32"}],"args_string":"(int_min_digits : Int32)","source_link":null,"def":{"name":"int_min_digits=","args":[{"name":"int_min_digits","doc":null,"default_value":"","external_name":"int_min_digits","restriction":"Int32"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@int_min_digits = int_min_digits"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source)-instance-method","html_id":"test(source)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"args_string":"(source)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/style/large_numbers.cr#L39","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"(Tokenizer.new(source)).run do |token|\n if (token.type == (:NUMBER)) && (decimal?(token.raw))\n else\n next\n end\n parsed = parse_number(token.raw)\n if (allowed?(*parsed)) && ((expected = underscored(*parsed)) != token.raw)\n issue_for(token, MSG % expected)\n end\nend"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Style/MethodNames","path":"Ameba/Rule/Style/MethodNames.html","kind":"struct","full_name":"Ameba::Rule::Style::MethodNames","name":"MethodNames","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/style/method_names.cr","line_number":41,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/style/method_names.cr#L41"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Method name should be underscore-cased: %s, not %s\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Style","kind":"module","full_name":"Ameba::Rule::Style","name":"Style"},"doc":"A rule that enforces method names to be in underscored case.\n\nFor example, these are considered valid:\n\n```\nclass Person\n def first_name\n end\n\n def date_of_birth\n end\n\n def homepage_url\n end\nend\n```\n\nAnd these are invalid method names:\n\n```\nclass Person\n def firstName\n end\n\n def date_of_Birth\n end\n\n def homepageURL\n end\nend\n```\n\nYAML configuration example:\n\n```\nStyle/MethodNames:\n Enabled: true\n```\n","summary":"

    A rule that enforces method names to be in underscored case.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that enforces method names to be in underscored case.\n\nFor example, these are considered valid:\n\n```\nclass Person\n def first_name\n end\n\n def date_of_birth\n end\n\n def homepage_url\n end\nend\n```\n\nAnd these are invalid method names:\n\n```\nclass Person\n def firstName\n end\n\n def date_of_Birth\n end\n\n def homepageURL\n end\nend\n```\n\nYAML configuration example:\n\n```\nStyle/MethodNames:\n Enabled: true\n```\n","summary":"

    A rule that enforces method names to be in underscored case.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/style/method_names.cr#L41","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node:Crystal::Def)-instance-method","html_id":"test(source,node:Crystal::Def)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Def"}],"args_string":"(source, node : Crystal::Def)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/style/method_names.cr#L48","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Def"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (expected = node.name.underscore) == node.name\n return\nend\nline_number = node.location.try(&.line_number)\ncolumn_number = node.name_location.try(&.column_number)\nif line_number.nil? || column_number.nil?\n return\nend\nissue_for({line_number, column_number}, {line_number, (column_number + node.name.size) - 1}, MSG % {expected, node.name})\n"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Style/NegatedConditionsInUnless","path":"Ameba/Rule/Style/NegatedConditionsInUnless.html","kind":"struct","full_name":"Ameba::Rule::Style::NegatedConditionsInUnless","name":"NegatedConditionsInUnless","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/style/negated_conditions_in_unless.cr","line_number":30,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/style/negated_conditions_in_unless.cr#L30"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Avoid negated conditions in unless blocks\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Style","kind":"module","full_name":"Ameba::Rule::Style","name":"Style"},"doc":"A rule that disallows negated conditions in unless.\n\nFor example, this is considered invalid:\n\n```\nunless !s.empty?\n :ok\nend\n```\n\nAnd should be rewritten to the following:\n\n```\nif s.emtpy?\n :ok\nend\n```\n\nIt is pretty difficult to wrap your head around a block of code\nthat is executed if a negated condition is NOT met.\n\nYAML configuration example:\n\n```\nStyle/NegatedConditionsInUnless:\n Enabled: true\n```\n","summary":"

    A rule that disallows negated conditions in unless.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows negated conditions in unless.\n\nFor example, this is considered invalid:\n\n```\nunless !s.empty?\n :ok\nend\n```\n\nAnd should be rewritten to the following:\n\n```\nif s.emtpy?\n :ok\nend\n```\n\nIt is pretty difficult to wrap your head around a block of code\nthat is executed if a negated condition is NOT met.\n\nYAML configuration example:\n\n```\nStyle/NegatedConditionsInUnless:\n Enabled: true\n```\n","summary":"

    A rule that disallows negated conditions in unless.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/style/negated_conditions_in_unless.cr#L30","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node:Crystal::Unless)-instance-method","html_id":"test(source,node:Crystal::Unless)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Unless"}],"args_string":"(source, node : Crystal::Unless)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/style/negated_conditions_in_unless.cr#L37","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Unless"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if negated_condition?(node.cond)\nelse\n return\nend\nissue_for(node, MSG)\n"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Style/PredicateName","path":"Ameba/Rule/Style/PredicateName.html","kind":"struct","full_name":"Ameba::Rule::Style::PredicateName","name":"PredicateName","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/style/predicate_name.cr","line_number":32,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/style/predicate_name.cr#L32"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Favour method name '%s?' over '%s'\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Style","kind":"module","full_name":"Ameba::Rule::Style","name":"Style"},"doc":"A rule that disallows tautological predicate names, meaning those that\nstart with the prefix `has_` or the prefix `is_`. Ignores if the alternative isn't valid Crystal code (e.g. `is_404?`).\n\nFavour these:\n\n```\ndef valid?(x)\nend\n\ndef picture?(x)\nend\n```\n\nOver these:\n\n```\ndef is_valid?(x)\nend\n\ndef has_picture?(x)\nend\n```\n\nYAML configuration example:\n\n```\nStyle/PredicateName:\n Enabled: true\n```\n","summary":"

    A rule that disallows tautological predicate names, meaning those that start with the prefix has_ or the prefix is_.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows tautological predicate names, meaning those that\nstart with the prefix `has_` or the prefix `is_`. Ignores if the alternative isn't valid Crystal code (e.g. `is_404?`).\n\nFavour these:\n\n```\ndef valid?(x)\nend\n\ndef picture?(x)\nend\n```\n\nOver these:\n\n```\ndef is_valid?(x)\nend\n\ndef has_picture?(x)\nend\n```\n\nYAML configuration example:\n\n```\nStyle/PredicateName:\n Enabled: true\n```\n","summary":"

    A rule that disallows tautological predicate names, meaning those that start with the prefix has_ or the prefix is_.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/style/predicate_name.cr#L32","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Bool","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled:Bool)-instance-method","html_id":"enabled=(enabled:Bool)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":"Bool"}],"args_string":"(enabled : Bool)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":"Bool"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node:Crystal::Def)-instance-method","html_id":"test(source,node:Crystal::Def)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Def"}],"args_string":"(source, node : Crystal::Def)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/style/predicate_name.cr#L40","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Def"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if node.name =~ (/^(is|has)_(\\w+)\\?/)\n alternative = $~[2]\n if alternative =~ (/^[a-z][a-zA-Z_0-9]*$/)\n else\n return\n end\n issue_for(node, MSG % {alternative, node.name})\nend"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Style/RedundantBegin","path":"Ameba/Rule/Style/RedundantBegin.html","kind":"struct","full_name":"Ameba::Rule::Style::RedundantBegin","name":"RedundantBegin","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/Ameba/AST/Util","kind":"module","full_name":"Ameba::AST::Util","name":"Util"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/style/redundant_begin.cr","line_number":59,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/style/redundant_begin.cr#L59"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Redundant `begin` block detected\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/Ameba/AST/Util","kind":"module","full_name":"Ameba::AST::Util","name":"Util"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Style","kind":"module","full_name":"Ameba::Rule::Style","name":"Style"},"doc":"A rule that disallows redundant begin blocks.\n\nCurrently it is able to detect:\n\n1. Exception handler block that can be used as a part of the method.\n\nFor example, this:\n\n```\ndef method\n begin\n read_content\n rescue\n close_file\n end\nend\n```\n\nshould be rewritten as:\n\n```\ndef method\n read_content\nrescue\n close_file\nend\n```\n\n2. begin..end block as a top level block in a method.\n\nFor example this is considered invalid:\n\n```\ndef method\n begin\n a = 1\n b = 2\n end\nend\n```\n\nand has to be written as the following:\n\n```\ndef method\n a = 1\n b = 2\nend\n```\n\nYAML configuration example:\n\n```\nStyle/RedundantBegin:\n Enabled: true\n```\n","summary":"

    A rule that disallows redundant begin blocks.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows redundant begin blocks.\n\nCurrently it is able to detect:\n\n1. Exception handler block that can be used as a part of the method.\n\nFor example, this:\n\n```\ndef method\n begin\n read_content\n rescue\n close_file\n end\nend\n```\n\nshould be rewritten as:\n\n```\ndef method\n read_content\nrescue\n close_file\nend\n```\n\n2. begin..end block as a top level block in a method.\n\nFor example this is considered invalid:\n\n```\ndef method\n begin\n a = 1\n b = 2\n end\nend\n```\n\nand has to be written as the following:\n\n```\ndef method\n a = 1\n b = 2\nend\n```\n\nYAML configuration example:\n\n```\nStyle/RedundantBegin:\n Enabled: true\n```\n","summary":"

    A rule that disallows redundant begin blocks.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/style/redundant_begin.cr#L59","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node:Crystal::Def)-instance-method","html_id":"test(source,node:Crystal::Def)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Def"}],"args_string":"(source, node : Crystal::Def)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/style/redundant_begin.cr#L67","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Def"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if redundant_begin?(source, node)\nelse\n return\nend\nissue_for(node, MSG)\n"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Style/RedundantNext","path":"Ameba/Rule/Style/RedundantNext.html","kind":"struct","full_name":"Ameba::Rule::Style::RedundantNext","name":"RedundantNext","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/style/redundant_next.cr","line_number":99,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/style/redundant_next.cr#L99"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Redundant `next` detected\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Style","kind":"module","full_name":"Ameba::Rule::Style","name":"Style"},"doc":"A rule that disallows redundant next expressions. A `next` keyword allows\na block to skip to the next iteration early, however, it is considered\nredundant in cases where it is the last expression in a block or combines\ninto the node which is the last in a block.\n\nFor example, this is considered invalid:\n\n```\nblock do |v|\n next v + 1\nend\n```\n\n```\nblock do |v|\n case v\n when .nil?\n next \"nil\"\n when .blank?\n next \"blank\"\n else\n next \"empty\"\n end\nend\n```\n\nAnd has to be written as the following:\n\n```\nblock do |v|\n v + 1\nend\n```\n\n```\nblock do |v|\n case arg\n when .nil?\n \"nil\"\n when .blank?\n \"blank\"\n else\n \"empty\"\n end\nend\n```\n\n### Configuration params\n\n1. *allow_multi_next*, default: true\n\nAllows end-user to configure whether to report or not the next statements\nwhich yield tuple literals i.e.\n\n```\nblock do\n next a, b\nend\n```\n\nIf this param equals to `false`, the block above will be forced to be written as:\n\n```\nblock do\n {a, b}\nend\n```\n\n2. *allow_empty_next*, default: true\n\nAllows end-user to configure whether to report or not the next statements\nwithout arguments. Sometimes such statements are used to yild the `nil` value explicitly.\n\n```\nblock do\n @foo = :empty\n next\nend\n```\n\nIf this param equals to `false`, the block above will be forced to be written as:\n\n```\nblock do\n @foo = :empty\n nil\nend\n```\n\n### YAML config example\n\n```\nStyle/RedundantNext:\n Enabled: true\n AllowMultiNext: true\n AllowEmptyNext: true\n```","summary":"

    A rule that disallows redundant next expressions.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows redundant next expressions. A `next` keyword allows\na block to skip to the next iteration early, however, it is considered\nredundant in cases where it is the last expression in a block or combines\ninto the node which is the last in a block.\n\nFor example, this is considered invalid:\n\n```\nblock do |v|\n next v + 1\nend\n```\n\n```\nblock do |v|\n case v\n when .nil?\n next \"nil\"\n when .blank?\n next \"blank\"\n else\n next \"empty\"\n end\nend\n```\n\nAnd has to be written as the following:\n\n```\nblock do |v|\n v + 1\nend\n```\n\n```\nblock do |v|\n case arg\n when .nil?\n \"nil\"\n when .blank?\n \"blank\"\n else\n \"empty\"\n end\nend\n```\n\n### Configuration params\n\n1. *allow_multi_next*, default: true\n\nAllows end-user to configure whether to report or not the next statements\nwhich yield tuple literals i.e.\n\n```\nblock do\n next a, b\nend\n```\n\nIf this param equals to `false`, the block above will be forced to be written as:\n\n```\nblock do\n {a, b}\nend\n```\n\n2. *allow_empty_next*, default: true\n\nAllows end-user to configure whether to report or not the next statements\nwithout arguments. Sometimes such statements are used to yild the `nil` value explicitly.\n\n```\nblock do\n @foo = :empty\n next\nend\n```\n\nIf this param equals to `false`, the block above will be forced to be written as:\n\n```\nblock do\n @foo = :empty\n nil\nend\n```\n\n### YAML config example\n\n```\nStyle/RedundantNext:\n Enabled: true\n AllowMultiNext: true\n AllowEmptyNext: true\n```","summary":"

    A rule that disallows redundant next expressions.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/style/redundant_next.cr#L99","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"allow_empty_next:Bool-instance-method","html_id":"allow_empty_next:Bool-instance-method","name":"allow_empty_next","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"allow_empty_next","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Bool","visibility":"Public","body":"@allow_empty_next"}},{"id":"allow_empty_next=(allow_empty_next:Bool)-instance-method","html_id":"allow_empty_next=(allow_empty_next:Bool)-instance-method","name":"allow_empty_next=","doc":null,"summary":null,"abstract":false,"args":[{"name":"allow_empty_next","doc":null,"default_value":"","external_name":"allow_empty_next","restriction":"Bool"}],"args_string":"(allow_empty_next : Bool)","source_link":null,"def":{"name":"allow_empty_next=","args":[{"name":"allow_empty_next","doc":null,"default_value":"","external_name":"allow_empty_next","restriction":"Bool"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@allow_empty_next = allow_empty_next"}},{"id":"allow_multi_next:Bool-instance-method","html_id":"allow_multi_next:Bool-instance-method","name":"allow_multi_next","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"allow_multi_next","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Bool","visibility":"Public","body":"@allow_multi_next"}},{"id":"allow_multi_next=(allow_multi_next:Bool)-instance-method","html_id":"allow_multi_next=(allow_multi_next:Bool)-instance-method","name":"allow_multi_next=","doc":null,"summary":null,"abstract":false,"args":[{"name":"allow_multi_next","doc":null,"default_value":"","external_name":"allow_multi_next","restriction":"Bool"}],"args_string":"(allow_multi_next : Bool)","source_link":null,"def":{"name":"allow_multi_next=","args":[{"name":"allow_multi_next","doc":null,"default_value":"","external_name":"allow_multi_next","restriction":"Bool"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@allow_multi_next = allow_multi_next"}},{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node:Crystal::Next,visitor:AST::RedundantControlExpressionVisitor)-instance-method","html_id":"test(source,node:Crystal::Next,visitor:AST::RedundantControlExpressionVisitor)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Next"},{"name":"visitor","doc":null,"default_value":"","external_name":"visitor","restriction":"AST::RedundantControlExpressionVisitor"}],"args_string":"(source, node : Crystal::Next, visitor : AST::RedundantControlExpressionVisitor)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/style/redundant_next.cr#L112","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Next"},{"name":"visitor","doc":null,"default_value":"","external_name":"visitor","restriction":"AST::RedundantControlExpressionVisitor"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if allow_multi_next && node.exp.is_a?(Crystal::TupleLiteral)\n return\nend\nif allow_empty_next && (node.exp.nil? || node.exp.not_nil!.nop?)\n return\nend\nsource.try(&.add_issue(self, node, MSG))\n"}},{"id":"test(source,node:Crystal::Block)-instance-method","html_id":"test(source,node:Crystal::Block)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Block"}],"args_string":"(source, node : Crystal::Block)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/style/redundant_next.cr#L108","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Block"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"AST::RedundantControlExpressionVisitor.new(self, source, node.body)"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Style/RedundantReturn","path":"Ameba/Rule/Style/RedundantReturn.html","kind":"struct","full_name":"Ameba::Rule::Style::RedundantReturn","name":"RedundantReturn","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/style/redundant_return.cr","line_number":96,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/style/redundant_return.cr#L96"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Redundant `return` detected\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Style","kind":"module","full_name":"Ameba::Rule::Style","name":"Style"},"doc":"A rule that disallows redundant return expressions.\n\nFor example, this is considered invalid:\n\n```\ndef foo\n return :bar\nend\n```\n\n```\ndef bar(arg)\n case arg\n when .nil?\n return \"nil\"\n when .blank?\n return \"blank\"\n else\n return \"empty\"\n end\nend\n```\n\nAnd has to be written as the following:\n\n```\ndef foo\n :bar\nend\n```\n\n```\ndef bar(arg)\n case arg\n when .nil?\n \"nil\"\n when .blank?\n \"blank\"\n else\n \"empty\"\n end\nend\n```\n\n### Configuration params\n\n1. *allow_multi_return*, default: true\n\nAllows end-user to configure whether to report or not the return statements\nwhich return tuple literals i.e.\n\n```\ndef method(a, b)\n return a, b\nend\n```\n\nIf this param equals to `false`, the method above has to be written as:\n\n```\ndef method(a, b)\n {a, b}\nend\n```\n\n2. *allow_empty_return*, default: true\n\nAllows end-user to configure whether to report or not the return statements\nwithout arguments. Sometimes such returns are used to return the `nil` value explicitly.\n\n```\ndef method\n @foo = :empty\n return\nend\n```\n\nIf this param equals to `false`, the method above has to be written as:\n\n```\ndef method\n @foo = :empty\n nil\nend\n```\n\n### YAML config example\n\n```\nStyle/RedundantReturn:\n Enabled: true\n AllowMutliReturn: true\n AllowEmptyReturn: true\n```","summary":"

    A rule that disallows redundant return expressions.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows redundant return expressions.\n\nFor example, this is considered invalid:\n\n```\ndef foo\n return :bar\nend\n```\n\n```\ndef bar(arg)\n case arg\n when .nil?\n return \"nil\"\n when .blank?\n return \"blank\"\n else\n return \"empty\"\n end\nend\n```\n\nAnd has to be written as the following:\n\n```\ndef foo\n :bar\nend\n```\n\n```\ndef bar(arg)\n case arg\n when .nil?\n \"nil\"\n when .blank?\n \"blank\"\n else\n \"empty\"\n end\nend\n```\n\n### Configuration params\n\n1. *allow_multi_return*, default: true\n\nAllows end-user to configure whether to report or not the return statements\nwhich return tuple literals i.e.\n\n```\ndef method(a, b)\n return a, b\nend\n```\n\nIf this param equals to `false`, the method above has to be written as:\n\n```\ndef method(a, b)\n {a, b}\nend\n```\n\n2. *allow_empty_return*, default: true\n\nAllows end-user to configure whether to report or not the return statements\nwithout arguments. Sometimes such returns are used to return the `nil` value explicitly.\n\n```\ndef method\n @foo = :empty\n return\nend\n```\n\nIf this param equals to `false`, the method above has to be written as:\n\n```\ndef method\n @foo = :empty\n nil\nend\n```\n\n### YAML config example\n\n```\nStyle/RedundantReturn:\n Enabled: true\n AllowMutliReturn: true\n AllowEmptyReturn: true\n```","summary":"

    A rule that disallows redundant return expressions.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/style/redundant_return.cr#L96","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"allow_empty_return:Bool-instance-method","html_id":"allow_empty_return:Bool-instance-method","name":"allow_empty_return","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"allow_empty_return","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Bool","visibility":"Public","body":"@allow_empty_return"}},{"id":"allow_empty_return=(allow_empty_return:Bool)-instance-method","html_id":"allow_empty_return=(allow_empty_return:Bool)-instance-method","name":"allow_empty_return=","doc":null,"summary":null,"abstract":false,"args":[{"name":"allow_empty_return","doc":null,"default_value":"","external_name":"allow_empty_return","restriction":"Bool"}],"args_string":"(allow_empty_return : Bool)","source_link":null,"def":{"name":"allow_empty_return=","args":[{"name":"allow_empty_return","doc":null,"default_value":"","external_name":"allow_empty_return","restriction":"Bool"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@allow_empty_return = allow_empty_return"}},{"id":"allow_multi_return:Bool-instance-method","html_id":"allow_multi_return:Bool-instance-method","name":"allow_multi_return","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"allow_multi_return","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Bool","visibility":"Public","body":"@allow_multi_return"}},{"id":"allow_multi_return=(allow_multi_return:Bool)-instance-method","html_id":"allow_multi_return=(allow_multi_return:Bool)-instance-method","name":"allow_multi_return=","doc":null,"summary":null,"abstract":false,"args":[{"name":"allow_multi_return","doc":null,"default_value":"","external_name":"allow_multi_return","restriction":"Bool"}],"args_string":"(allow_multi_return : Bool)","source_link":null,"def":{"name":"allow_multi_return=","args":[{"name":"allow_multi_return","doc":null,"default_value":"","external_name":"allow_multi_return","restriction":"Bool"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@allow_multi_return = allow_multi_return"}},{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node:Crystal::Return,visitor:AST::RedundantControlExpressionVisitor)-instance-method","html_id":"test(source,node:Crystal::Return,visitor:AST::RedundantControlExpressionVisitor)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Return"},{"name":"visitor","doc":null,"default_value":"","external_name":"visitor","restriction":"AST::RedundantControlExpressionVisitor"}],"args_string":"(source, node : Crystal::Return, visitor : AST::RedundantControlExpressionVisitor)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/style/redundant_return.cr#L109","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Return"},{"name":"visitor","doc":null,"default_value":"","external_name":"visitor","restriction":"AST::RedundantControlExpressionVisitor"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if allow_multi_return && node.exp.is_a?(Crystal::TupleLiteral)\n return\nend\nif allow_empty_return && (node.exp.nil? || node.exp.not_nil!.nop?)\n return\nend\nsource.try(&.add_issue(self, node, MSG))\n"}},{"id":"test(source,node:Crystal::Def)-instance-method","html_id":"test(source,node:Crystal::Def)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Def"}],"args_string":"(source, node : Crystal::Def)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/style/redundant_return.cr#L105","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Def"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"AST::RedundantControlExpressionVisitor.new(self, source, node.body)"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Style/TypeNames","path":"Ameba/Rule/Style/TypeNames.html","kind":"struct","full_name":"Ameba::Rule::Style::TypeNames","name":"TypeNames","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/style/type_names.cr","line_number":55,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/style/type_names.cr#L55"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Type name should be camelcased: %s, but it was %s\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Style","kind":"module","full_name":"Ameba::Rule::Style","name":"Style"},"doc":"A rule that enforces type names in camelcase manner.\n\nFor example, these are considered valid:\n\n```\nclass ParseError < Exception\nend\n\nmodule HTTP\n class RequestHandler\n end\nend\n\nalias NumericValue = Float32 | Float64 | Int32 | Int64\n\nlib LibYAML\nend\n\nstruct TagDirective\nend\n\nenum Time::DayOfWeek\nend\n```\n\nAnd these are invalid type names\n\n```\nclass My_class\nend\n\nmodule HTT_p\nend\n\nalias Numeric_value = Int32\n\nlib Lib_YAML\nend\n\nstruct Tag_directive\nend\n\nenum Time_enum::Day_of_week\nend\n```\n\nYAML configuration example:\n\n```\nStyle/TypeNames:\n Enabled: true\n```\n","summary":"

    A rule that enforces type names in camelcase manner.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that enforces type names in camelcase manner.\n\nFor example, these are considered valid:\n\n```\nclass ParseError < Exception\nend\n\nmodule HTTP\n class RequestHandler\n end\nend\n\nalias NumericValue = Float32 | Float64 | Int32 | Int64\n\nlib LibYAML\nend\n\nstruct TagDirective\nend\n\nenum Time::DayOfWeek\nend\n```\n\nAnd these are invalid type names\n\n```\nclass My_class\nend\n\nmodule HTT_p\nend\n\nalias Numeric_value = Int32\n\nlib Lib_YAML\nend\n\nstruct Tag_directive\nend\n\nenum Time_enum::Day_of_week\nend\n```\n\nYAML configuration example:\n\n```\nStyle/TypeNames:\n Enabled: true\n```\n","summary":"

    A rule that enforces type names in camelcase manner.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/style/type_names.cr#L55","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node:Crystal::ClassDef)-instance-method","html_id":"test(source,node:Crystal::ClassDef)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ClassDef"}],"args_string":"(source, node : Crystal::ClassDef)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/style/type_names.cr#L70","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ClassDef"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"check_node(source, node)"}},{"id":"test(source,node:Crystal::Alias)-instance-method","html_id":"test(source,node:Crystal::Alias)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Alias"}],"args_string":"(source, node : Crystal::Alias)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/style/type_names.cr#L74","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Alias"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"check_node(source, node)"}},{"id":"test(source,node:Crystal::LibDef)-instance-method","html_id":"test(source,node:Crystal::LibDef)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::LibDef"}],"args_string":"(source, node : Crystal::LibDef)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/style/type_names.cr#L78","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::LibDef"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"check_node(source, node)"}},{"id":"test(source,node:Crystal::EnumDef)-instance-method","html_id":"test(source,node:Crystal::EnumDef)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::EnumDef"}],"args_string":"(source, node : Crystal::EnumDef)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/style/type_names.cr#L82","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::EnumDef"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"check_node(source, node)"}},{"id":"test(source,node:Crystal::ModuleDef)-instance-method","html_id":"test(source,node:Crystal::ModuleDef)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ModuleDef"}],"args_string":"(source, node : Crystal::ModuleDef)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/style/type_names.cr#L86","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ModuleDef"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"check_node(source, node)"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Style/UnlessElse","path":"Ameba/Rule/Style/UnlessElse.html","kind":"struct","full_name":"Ameba::Rule::Style::UnlessElse","name":"UnlessElse","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/style/unless_else.cr","line_number":46,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/style/unless_else.cr#L46"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Favour if over unless with else\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Style","kind":"module","full_name":"Ameba::Rule::Style","name":"Style"},"doc":"A rule that disallows the use of an `else` block with the `unless`.\n\nFor example, the rule considers these valid:\n\n```\nunless something\n :ok\nend\n\nif something\n :one\nelse\n :two\nend\n```\n\nBut it considers this one invalid as it is an `unless` with an `else`:\n\n```\nunless something\n :one\nelse\n :two\nend\n```\n\nThe solution is to swap the order of the blocks, and change the `unless` to\nan `if`, so the previous invalid example would become this:\n\n```\nif something\n :two\nelse\n :one\nend\n```\n\nYAML configuration example:\n\n```\nStyle/UnlessElse:\n Enabled: true\n```\n","summary":"

    A rule that disallows the use of an else block with the unless.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows the use of an `else` block with the `unless`.\n\nFor example, the rule considers these valid:\n\n```\nunless something\n :ok\nend\n\nif something\n :one\nelse\n :two\nend\n```\n\nBut it considers this one invalid as it is an `unless` with an `else`:\n\n```\nunless something\n :one\nelse\n :two\nend\n```\n\nThe solution is to swap the order of the blocks, and change the `unless` to\nan `if`, so the previous invalid example would become this:\n\n```\nif something\n :two\nelse\n :one\nend\n```\n\nYAML configuration example:\n\n```\nStyle/UnlessElse:\n Enabled: true\n```\n","summary":"

    A rule that disallows the use of an else block with the unless.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/style/unless_else.cr#L46","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node:Crystal::Unless)-instance-method","html_id":"test(source,node:Crystal::Unless)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Unless"}],"args_string":"(source, node : Crystal::Unless)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/style/unless_else.cr#L53","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Unless"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if node.else.nop?\n return\nend\nissue_for(node, MSG)\n"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Style/VariableNames","path":"Ameba/Rule/Style/VariableNames.html","kind":"struct","full_name":"Ameba::Rule::Style::VariableNames","name":"VariableNames","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/style/variable_names.cr","line_number":26,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/style/variable_names.cr#L26"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Var name should be underscore-cased: %s, not %s\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Style","kind":"module","full_name":"Ameba::Rule::Style","name":"Style"},"doc":"A rule that enforces variable names to be in underscored case.\n\nFor example, these variable names are considered valid:\n\n```\nvar_name = 1\nname = 2\n_another_good_name = 3\n```\n\nAnd these are invalid variable names:\n\n```\nmyBadNamedVar = 1\nwrong_Name = 2\n```\n\nYAML configuration example:\n\n```\nStyle/VariableNames:\n Enabled: true\n```\n","summary":"

    A rule that enforces variable names to be in underscored case.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that enforces variable names to be in underscored case.\n\nFor example, these variable names are considered valid:\n\n```\nvar_name = 1\nname = 2\n_another_good_name = 3\n```\n\nAnd these are invalid variable names:\n\n```\nmyBadNamedVar = 1\nwrong_Name = 2\n```\n\nYAML configuration example:\n\n```\nStyle/VariableNames:\n Enabled: true\n```\n","summary":"

    A rule that enforces variable names to be in underscored case.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/style/variable_names.cr#L26","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node:Crystal::Var)-instance-method","html_id":"test(source,node:Crystal::Var)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Var"}],"args_string":"(source, node : Crystal::Var)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/style/variable_names.cr#L39","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Var"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"check_node(source, node)"}},{"id":"test(source,node:Crystal::InstanceVar)-instance-method","html_id":"test(source,node:Crystal::InstanceVar)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::InstanceVar"}],"args_string":"(source, node : Crystal::InstanceVar)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/style/variable_names.cr#L43","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::InstanceVar"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"check_node(source, node)"}},{"id":"test(source,node:Crystal::ClassVar)-instance-method","html_id":"test(source,node:Crystal::ClassVar)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ClassVar"}],"args_string":"(source, node : Crystal::ClassVar)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/style/variable_names.cr#L47","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ClassVar"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"check_node(source, node)"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Style/WhileTrue","path":"Ameba/Rule/Style/WhileTrue.html","kind":"struct","full_name":"Ameba::Rule::Style::WhileTrue","name":"WhileTrue","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/style/while_true.cr","line_number":29,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/style/while_true.cr#L29"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"While statement using true literal as condition\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Style","kind":"module","full_name":"Ameba::Rule::Style","name":"Style"},"doc":"A rule that disallows the use of `while true` instead of using the idiomatic `loop`\n\nFor example, this is considered invalid:\n\n```\nwhile true\n do_something\n break if some_condition\nend\n```\n\nAnd should be replaced by the following:\n\n```\nloop do\n do_something\n break if some_condition\nend\n```\n\nYAML configuration example:\n\n```\nStyle/WhileTrue:\n Enabled: true\n```\n","summary":"

    A rule that disallows the use of while true instead of using the idiomatic loop

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows the use of `while true` instead of using the idiomatic `loop`\n\nFor example, this is considered invalid:\n\n```\nwhile true\n do_something\n break if some_condition\nend\n```\n\nAnd should be replaced by the following:\n\n```\nloop do\n do_something\n break if some_condition\nend\n```\n\nYAML configuration example:\n\n```\nStyle/WhileTrue:\n Enabled: true\n```\n","summary":"

    A rule that disallows the use of while true instead of using the idiomatic loop

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/style/while_true.cr#L29","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node:Crystal::While)-instance-method","html_id":"test(source,node:Crystal::While)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::While"}],"args_string":"(source, node : Crystal::While)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/rule/style/while_true.cr#L36","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::While"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if node.cond.true_literal?\nelse\n return\nend\nissue_for(node, MSG)\n"}}],"macros":[],"types":[]}]}]},{"html_id":"ameba/Ameba/Runner","path":"Ameba/Runner.html","kind":"class","full_name":"Ameba::Runner","name":"Runner","abstract":false,"superclass":{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},"ancestors":[{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/runner.cr","line_number":13,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/runner.cr#L13"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba","kind":"module","full_name":"Ameba","name":"Ameba"},"doc":"Represents a runner for inspecting sources files.\nHolds a list of rules to do inspection based on,\nlist of sources to run inspection on and a formatter\nto prepare a report.\n\n```\nconfig = Ameba::Config.load\nrunner = Ameba::Runner.new config\nrunner.run.success? # => true or false\n```\n","summary":"

    Represents a runner for inspecting sources files.

    ","class_methods":[],"constructors":[{"id":"new(config:Config)-class-method","html_id":"new(config:Config)-class-method","name":"new","doc":"Instantiates a runner using a `config`.\n\n```\nconfig = Ameba::Config.load\nconfig.files = files\nconfig.formatter = formatter\n\nAmeba::Runner.new config\n```\n","summary":"

    Instantiates a runner using a config.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"","external_name":"config","restriction":"Config"}],"args_string":"(config : Config)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/runner.cr#L42","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"","external_name":"config","restriction":"Config"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"_ = allocate\n_.initialize(config)\nif _.responds_to?(:finalize)\n ::GC.add_finalizer(_)\nend\n_\n"}}],"instance_methods":[{"id":"explain(location,output=STDOUT)-instance-method","html_id":"explain(location,output=STDOUT)-instance-method","name":"explain","doc":"Explains an issue at a specified *location*.\n\nRunner should perform inspection before doing the explain.\nThis is necessary to be able to find the issue at a specified location.\n\n```\nrunner = Ameba::Runner.new config\nrunner.run\nrunner.explain({file: file, line: l, column: c})\n```\n","summary":"

    Explains an issue at a specified location.

    ","abstract":false,"args":[{"name":"location","doc":null,"default_value":"","external_name":"location","restriction":""},{"name":"output","doc":null,"default_value":"STDOUT","external_name":"output","restriction":""}],"args_string":"(location, output = STDOUT)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/runner.cr#L118","def":{"name":"explain","args":[{"name":"location","doc":null,"default_value":"","external_name":"location","restriction":""},{"name":"output","doc":null,"default_value":"STDOUT","external_name":"output","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"(Formatter::ExplainFormatter.new(output, location)).finished(@sources)"}},{"id":"run-instance-method","html_id":"run-instance-method","name":"run","doc":"Performs the inspection. Iterates through all sources and test it using\nlist of rules. If a specific rule fails on a specific source, it adds\nan issue to that source.\n\nThis action also notifies formatter when inspection is started/finished,\nand when a specific source started/finished to be inspected.\n\n```\nrunner = Ameba::Runner.new config\nrunner.run # => returns runner again\n```\n","summary":"

    Performs the inspection.

    ","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/runner.cr#L69","def":{"name":"run","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"begin\n @formatter.started(@sources)\n channels = @sources.map do\n Channel(Exception | ::Nil).new\n end\n @sources.each_with_index do |source, idx|\n channel = channels[idx]\n spawn do\n begin\n run_source(source)\n rescue e\n channel.send(e)\n else\n channel.send(nil)\n end\n end\n end\n channels.each do |c|\n e = c.receive\n if e.nil?\n else\n raise(e)\n end\n end\n self\nensure\n @formatter.finished(@sources)\nend"}},{"id":"sources:Array(Source)-instance-method","html_id":"sources:Array(Source)-instance-method","name":"sources","doc":"A list of sources to run inspection on.","summary":"

    A list of sources to run inspection on.

    ","abstract":false,"args":[],"args_string":" : Array(Source)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/runner.cr#L18","def":{"name":"sources","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(Source)","visibility":"Public","body":"@sources"}},{"id":"success?-instance-method","html_id":"success?-instance-method","name":"success?","doc":"Indicates whether the last inspection successful or not.\nIt returns true if no issues matching severity in sources found, false otherwise.\n\n```\nrunner = Ameba::Runner.new config\nrunner.run\nrunner.success? # => true or false\n```\n","summary":"

    Indicates whether the last inspection successful or not.

    ","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/runner.cr#L131","def":{"name":"success?","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@sources.all? do |source|\n source.issues.reject(&.disabled?).none? do |issue|\n issue.rule.severity <= @severity\n end\nend"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Severity","path":"Ameba/Severity.html","kind":"enum","full_name":"Ameba::Severity","name":"Severity","abstract":false,"superclass":null,"ancestors":[{"html_id":"ameba/Enum","kind":"struct","full_name":"Enum","name":"Enum"},{"html_id":"ameba/Comparable","kind":"module","full_name":"Comparable","name":"Comparable"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/severity.cr","line_number":2,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/severity.cr#L2"}],"repository_name":"ameba","program":false,"enum":true,"alias":false,"aliased":"","const":false,"constants":[{"id":"Error","name":"Error","value":"0","doc":null,"summary":null},{"id":"Warning","name":"Warning","value":"1","doc":null,"summary":null},{"id":"Convention","name":"Convention","value":"2","doc":null,"summary":null}],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba","kind":"module","full_name":"Ameba","name":"Ameba"},"doc":null,"summary":null,"class_methods":[{"id":"parse(name:String)-class-method","html_id":"parse(name:String)-class-method","name":"parse","doc":"Creates Severity by the name.\n\n```\nSeverity.parse(\"convention\") # => Severity::Convention\nSeverity.parse(\"foo-bar\") # => Exception: Incorrect severity name\n```\n","summary":"

    Creates Severity by the name.

    ","abstract":false,"args":[{"name":"name","doc":null,"default_value":"","external_name":"name","restriction":"String"}],"args_string":"(name : String)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/severity.cr#L23","def":{"name":"parse","args":[{"name":"name","doc":null,"default_value":"","external_name":"name","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"begin\n super(name)\nrescue ArgumentError\n raise(\"Incorrect severity name #{name}. Try one of #{values}\")\nend"}}],"constructors":[],"instance_methods":[{"id":"convention?-instance-method","html_id":"convention?-instance-method","name":"convention?","doc":null,"summary":null,"abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/severity.cr#L5","def":{"name":"convention?","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"self == Convention"}},{"id":"error?-instance-method","html_id":"error?-instance-method","name":"error?","doc":null,"summary":null,"abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/severity.cr#L3","def":{"name":"error?","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"self == Error"}},{"id":"symbol-instance-method","html_id":"symbol-instance-method","name":"symbol","doc":"Returns a symbol uniquely indicating severity.\n\n```\nSeverity::Warning.symbol # => 'W'\n```","summary":"

    Returns a symbol uniquely indicating severity.

    ","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/severity.cr#L12","def":{"name":"symbol","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"to_s[0]"}},{"id":"warning?-instance-method","html_id":"warning?-instance-method","name":"warning?","doc":null,"summary":null,"abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/severity.cr#L4","def":{"name":"warning?","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"self == Warning"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/SeverityYamlConverter","path":"Ameba/SeverityYamlConverter.html","kind":"class","full_name":"Ameba::SeverityYamlConverter","name":"SeverityYamlConverter","abstract":false,"superclass":{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},"ancestors":[{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/severity.cr","line_number":31,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/severity.cr#L31"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba","kind":"module","full_name":"Ameba","name":"Ameba"},"doc":"Converter for `YAML.mapping` which converts severity enum to and from YAML.","summary":"

    Converter for YAML.mapping which converts severity enum to and from YAML.

    ","class_methods":[{"id":"from_yaml(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"from_yaml(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"from_yaml","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/severity.cr#L32","def":{"name":"from_yaml","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if node.is_a?(YAML::Nodes::Scalar)\nelse\n raise(\"Severity must be a scalar, not #{node.class}\")\nend\ncase value = node.value\nwhen String\n Severity.parse(value)\nwhen Nil\n nil\nelse\n raise(\"Incorrect severity: #{value}\")\nend\n"}},{"id":"to_yaml(value:Severity,yaml:YAML::Nodes::Builder)-class-method","html_id":"to_yaml(value:Severity,yaml:YAML::Nodes::Builder)-class-method","name":"to_yaml","doc":null,"summary":null,"abstract":false,"args":[{"name":"value","doc":null,"default_value":"","external_name":"value","restriction":"Severity"},{"name":"yaml","doc":null,"default_value":"","external_name":"yaml","restriction":"YAML::Nodes::Builder"}],"args_string":"(value : Severity, yaml : YAML::Nodes::Builder)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/severity.cr#L45","def":{"name":"to_yaml","args":[{"name":"value","doc":null,"default_value":"","external_name":"value","restriction":"Severity"},{"name":"yaml","doc":null,"default_value":"","external_name":"yaml","restriction":"YAML::Nodes::Builder"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"yaml.scalar(value)"}}],"constructors":[],"instance_methods":[],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Source","path":"Ameba/Source.html","kind":"class","full_name":"Ameba::Source","name":"Source","abstract":false,"superclass":{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},"ancestors":[{"html_id":"ameba/Ameba/Reportable","kind":"module","full_name":"Ameba::Reportable","name":"Reportable"},{"html_id":"ameba/Ameba/InlineComments","kind":"module","full_name":"Ameba::InlineComments","name":"InlineComments"},{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/source.cr","line_number":4,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/source.cr#L4"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[{"html_id":"ameba/Ameba/InlineComments","kind":"module","full_name":"Ameba::InlineComments","name":"InlineComments"},{"html_id":"ameba/Ameba/Reportable","kind":"module","full_name":"Ameba::Reportable","name":"Reportable"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba","kind":"module","full_name":"Ameba","name":"Ameba"},"doc":"An entity that represents a Crystal source file.\nHas path, lines of code and issues reported by rules.","summary":"

    An entity that represents a Crystal source file.

    ","class_methods":[],"constructors":[{"id":"new(code:String,path="")-class-method","html_id":"new(code:String,path="")-class-method","name":"new","doc":"Creates a new source by `code` and `path`.\n\nFor example:\n\n```\npath = \"./src/source.cr\"\nAmeba::Source.new File.read(path), path\n```\n","summary":"

    Creates a new source by #code and #path.

    ","abstract":false,"args":[{"name":"code","doc":null,"default_value":"","external_name":"code","restriction":"String"},{"name":"path","doc":null,"default_value":"\"\"","external_name":"path","restriction":""}],"args_string":"(code : String, path = "")","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/source.cr#L27","def":{"name":"new","args":[{"name":"code","doc":null,"default_value":"","external_name":"code","restriction":"String"},{"name":"path","doc":null,"default_value":"\"\"","external_name":"path","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"_ = allocate\n_.initialize(code, path)\nif _.responds_to?(:finalize)\n ::GC.add_finalizer(_)\nend\n_\n"}}],"instance_methods":[{"id":"ast-instance-method","html_id":"ast-instance-method","name":"ast","doc":"Returns AST nodes constructed by `Crystal::Parser`.\n\n```\nsource = Ameba::Source.new code, path\nsource.ast\n```\n","summary":"

    Returns AST nodes constructed by Crystal::Parser.

    ","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/source.cr#L52","def":{"name":"ast","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@ast || (@ast = (Crystal::Parser.new(code)).tap do |parser|\n parser.wants_doc = true\nend.tap do |parser|\n parser.filename = @path\nend.parse)"}},{"id":"code:String-instance-method","html_id":"code:String-instance-method","name":"code","doc":"Crystal code (content of a source file).","summary":"

    Crystal code (content of a source file).

    ","abstract":false,"args":[],"args_string":" : String","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/source.cr#L12","def":{"name":"code","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@code"}},{"id":"fullpath-instance-method","html_id":"fullpath-instance-method","name":"fullpath","doc":null,"summary":null,"abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/source.cr#L60","def":{"name":"fullpath","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@fullpath || (@fullpath = File.expand_path(@path))"}},{"id":"lines-instance-method","html_id":"lines-instance-method","name":"lines","doc":"Returns lines of code splitted by new line character.\nSince `code` is immutable and can't be changed, this\nmethod caches lines in an instance variable, so calling\nit second time will not perform a split, but will return\nlines instantly.\n\n```\nsource = Ameba::Source.new \"a = 1\\nb = 2\", path\nsource.lines # => [\"a = 1\", \"b = 2\"]\n```\n","summary":"

    Returns lines of code splitted by new line character.

    ","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/source.cr#L41","def":{"name":"lines","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@lines || (@lines = @code.split(\"\\n\"))"}},{"id":"matches_path?(filepath)-instance-method","html_id":"matches_path?(filepath)-instance-method","name":"matches_path?","doc":"Returns true if *filepath* matches the source's path, false if it does not.","summary":"

    Returns true if filepath matches the source's path, false if it does not.

    ","abstract":false,"args":[{"name":"filepath","doc":null,"default_value":"","external_name":"filepath","restriction":""}],"args_string":"(filepath)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/source.cr#L65","def":{"name":"matches_path?","args":[{"name":"filepath","doc":null,"default_value":"","external_name":"filepath","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"(path == filepath) || (path == (File.expand_path(filepath)))"}},{"id":"path:String-instance-method","html_id":"path:String-instance-method","name":"path","doc":"Path to the source file.","summary":"

    Path to the source file.

    ","abstract":false,"args":[],"args_string":" : String","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/source.cr#L9","def":{"name":"path","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@path"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Tokenizer","path":"Ameba/Tokenizer.html","kind":"class","full_name":"Ameba::Tokenizer","name":"Tokenizer","abstract":false,"superclass":{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},"ancestors":[{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/tokenizer.cr","line_number":14,"url":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/tokenizer.cr#L14"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba","kind":"module","full_name":"Ameba","name":"Ameba"},"doc":"Represents Crystal syntax tokenizer based on `Crystal::Lexer`.\n\n```\nsource = Ameba::Source.new code, path\ntokenizer = Ameba::Tokenizer.new(source)\ntokenizer.run do |token|\n puts token\nend\n```\n","summary":"

    Represents Crystal syntax tokenizer based on Crystal::Lexer.

    ","class_methods":[],"constructors":[{"id":"new(lexer:Crystal::Lexer)-class-method","html_id":"new(lexer:Crystal::Lexer)-class-method","name":"new","doc":"Instantiates Tokenizer using a `lexer`.\n\n```\nlexer = Crystal::Lexer.new(code)\nAmeba::Tokenizer.new(lexer)\n```\n","summary":"

    Instantiates Tokenizer using a lexer.

    ","abstract":false,"args":[{"name":"lexer","doc":null,"default_value":"","external_name":"lexer","restriction":"Crystal::Lexer"}],"args_string":"(lexer : Crystal::Lexer)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/tokenizer.cr#L37","def":{"name":"new","args":[{"name":"lexer","doc":null,"default_value":"","external_name":"lexer","restriction":"Crystal::Lexer"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"_ = allocate\n_.initialize(lexer)\nif _.responds_to?(:finalize)\n ::GC.add_finalizer(_)\nend\n_\n"}},{"id":"new(source)-class-method","html_id":"new(source)-class-method","name":"new","doc":"Instantiates Tokenizer using a `source`.\n\n```\nsource = Ameba::Source.new code, path\nAmeba::Tokenizer.new(source)\n```\n","summary":"

    Instantiates Tokenizer using a source.

    ","abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"args_string":"(source)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/tokenizer.cr#L22","def":{"name":"new","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"_ = allocate\n_.initialize(source)\nif _.responds_to?(:finalize)\n ::GC.add_finalizer(_)\nend\n_\n"}}],"instance_methods":[{"id":"run(&block:Crystal::Token->_)-instance-method","html_id":"run(&block:Crystal::Token->_)-instance-method","name":"run","doc":"Runs the tokenizer and yields each token as a block argument.\n\n```\nAmeba::Tokenizer.new(source).run do |token|\n puts token\nend\n```\n","summary":"

    Runs the tokenizer and yields each token as a block argument.

    ","abstract":false,"args":[],"args_string":"(&block : Crystal::Token -> _)","source_link":"https://github.com/crystal-ameba/ameba/blob/4958fa23/src/ameba/tokenizer.cr#L48","def":{"name":"run","args":[],"double_splat":null,"splat_index":null,"yields":1,"block_arg":{"name":"block","doc":null,"default_value":"","external_name":"block","restriction":"(Crystal::Token -> _)"},"return_type":"","visibility":"Public","body":"begin\n run_normal_state(@lexer, &block)\n true\nrescue e : Crystal::SyntaxException\n false\nend"}}],"macros":[],"types":[]}]}]}}) \ No newline at end of file +crystal_doc_search_index_callback({"repository_name":"ameba","body":"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n- [About](#about)\n- [Usage](#usage)\n * [Run in parallel](#run-in-parallel)\n- [Installation](#installation)\n * [As a project dependency:](#as-a-project-dependency)\n * [OS X](#os-x)\n * [Docker](#docker)\n * [From sources](#from-sources)\n- [Configuration](#configuration)\n * [Sources](#sources)\n * [Rules](#rules)\n * [Explain issues](#explain-issues)\n * [Inline disabling](#inline-disabling)\n- [Editors & integrations](#editors--integrations)\n- [Credits & inspirations](#credits--inspirations)\n- [Contributors](#contributors)\n\n## About\n\nAmeba is a static code analysis tool for the Crystal language.\nIt enforces a consistent [Crystal code style](https://crystal-lang.org/docs/conventions/coding_style.html),\nalso catches code smells and wrong code constructions.\n\nSee also [Roadmap](https://github.com/crystal-ameba/ameba/wiki).\n\n## Usage\n\nRun `ameba` binary within your project directory to catch code issues:\n\n```sh\n$ ameba\nInspecting 107 files.\n\n...............F.....................F....................................................................\n\nsrc/ameba/formatter/flycheck_formatter.cr:4:33\n[W] Lint/UnusedArgument: Unused argument `location`\n> source.issues.each do |e, location|\n ^\n\nsrc/ameba/formatter/base_formatter.cr:12:7\n[W] Lint/UselessAssign: Useless assignment to variable `s`\n> return s += issues.size\n ^\n\nFinished in 542.64 milliseconds\n\n129 inspected, 2 failures.\n\n```\n\n### Run in parallel\n\nStarting from 0.31.0 Crystal [supports parallelism](https://crystal-lang.org/2019/09/06/parallelism-in-crystal.html).\nIt allows to run linting in parallel too.\nIn order to take advantage of this feature you need to build ameba with preview_mt support:\n\n```sh\n$ crystal build src/cli.cr -Dpreview_mt -o bin/ameba\n$ make install\n```\n\nSome quick benchmark results measured while running Ameba on Crystal repo:\n\n```sh\n$ CRYSTAL_WORKERS=1 ameba #=> 29.11 seconds\n$ CRYSTAL_WORKERS=2 ameba #=> 19.49 seconds\n$ CRYSTAL_WORKERS=4 ameba #=> 13.48 seconds\n$ CRYSTAL_WORKERS=8 ameba #=> 10.14 seconds\n```\n\n## Installation\n\n### As a project dependency:\n\nAdd this to your application's `shard.yml`:\n\n```yaml\ndevelopment_dependencies:\n ameba:\n github: crystal-ameba/ameba\n version: ~> 0.13.0\n```\n\nBuild `bin/ameba` binary within your project directory while running `shards install`.\n\nYou may also want to use it on [Travis](travis-ci.org):\n\n```yaml\n# .travis.yml\nlanguage: crystal\ninstall:\n - shards install\nscript:\n - crystal spec\n - crystal bin/ameba.cr\n```\n\nUsing this config Ameba will inspect files just after the specs run. Travis will also fail\nthe build if some problems detected.\n\n### OS X\n\n```sh\n$ brew tap veelenga/tap\n$ brew install ameba\n```\n\n### Docker\n\nBuild the image:\n\n```sh\n$ docker build -t crystal-ameba/ameba .\n```\n\nTo use the resulting image on a local source folder, mount the current (or target) directory into `/src`:\n\n```sh\n$ docker run -v $(pwd):/src crystal-ameba/ameba\n```\n\nAlso available on DockerHub: https://hub.docker.com/r/veelenga/ameba\n\n### From sources\n\n```sh\n$ git clone https://github.com/crystal-ameba/ameba && cd ameba\n$ make install\n```\n\n## Configuration\n\nDefault configuration file is `.ameba.yml`.\nIt allows to configure rule properties, disable specific rules and exclude sources from the rules.\n\nGenerate new file by running `ameba --gen-config`.\n\n### Sources\n\n**List of sources to run Ameba on can be configured globally via:**\n\n- `Globs` section - an array of wildcards (or paths) to include to the\n inspection. Defaults to `%w(**/*.cr !lib)`, meaning it includes all project\n files with `*.cr` extension except those which exist in `lib` folder.\n- `Excluded` section - an array of wildcards (or paths) to exclude from the\n source list defined by `Globs`. Defaults to an empty array.\n\nIn this example we define default globs and exclude `src/compiler` folder:\n\n``` yaml\nGlobs:\n - **/*.cr\n - !lib\n\nExcluded:\n - src/compiler\n```\n\n**Specific sources can be excluded at rule level**:\n\n``` yaml\nStyle/RedundantBegin:\n Excluded:\n - src/server/processor.cr\n - src/server/api.cr\n```\n\n### Rules\n\nOne or more rules, or a one or more group of rules can be included or excluded\nvia command line arguments:\n\n```sh\n$ ameba --only Lint/Syntax # runs only Lint/Syntax rule\n$ ameba --only Style,Lint # runs only rules from Style and Lint groups\n$ ameba --except Lint/Syntax # runs all rules except Lint/Syntax\n$ ameba --except Style,Lint # runs all rules except rules in Style and Lint groups\n```\n\nOr through the configuration file:\n\n``` yaml\nStyle/RedundantBegin:\n Enabled: false\n```\n\n### Explain issues\n\nAmeba allows you to dig deeper into an issue, by showing you details about the issue\nand the reasoning by it being reported.\n\nTo be convenient, you can just copy-paste the `PATH:line:column` string from the\nreport and paste behind the `ameba` command to check it out.\n\n```sh\n$ ameba crystal/command/format.cr:26:83 # show explanation for the issue\n$ ameba --explain crystal/command/format.cr:26:83 # same thing\n```\n\n### Inline disabling\n\nOne or more rules or one or more group of rules can be disabled using inline directives:\n\n```crystal\n# ameba:disable Style/LargeNumbers\ntime = Time.epoch(1483859302)\n\ntime = Time.epoch(1483859302) # ameba:disable Style/LargeNumbers, Lint/UselessAssign\n\ntime = Time.epoch(1483859302) # ameba:disable Style, Lint\n```\n\n## Editors & integrations\n\n * Vim: [vim-crystal](https://github.com/rhysd/vim-crystal), [Ale](https://github.com/w0rp/ale)\n * Emacs: [ameba.el](https://github.com/crystal-ameba/ameba.el)\n * Sublime Text: [Sublime Linter Ameba](https://github.com/epergo/SublimeLinter-contrib-ameba)\n * VSCode: [vscode-crystal-ameba](https://github.com/crystal-ameba/vscode-crystal-ameba)\n * Codacy: [codacy-ameba](https://github.com/codacy/codacy-ameba)\n * GitHub Actions: [github-action](https://github.com/crystal-ameba/github-action)\n\n## Credits & inspirations\n\n- [Crystal Language](https://crystal-lang.org)\n- [Rubocop](https://rubocop.readthedocs.io/en/latest/)\n- [Credo](http://credo-ci.org/)\n- [Dogma](https://github.com/lpil/dogma)\n\n## Contributors\n\n- [veelenga](https://github.com/veelenga) Vitalii Elenhaupt - creator, maintainer\n","program":{"html_id":"ameba/toplevel","path":"toplevel.html","kind":"module","full_name":"Top Level Namespace","name":"Top Level Namespace","abstract":false,"superclass":null,"ancestors":[],"locations":[],"repository_name":"ameba","program":true,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":null,"doc":null,"summary":null,"class_methods":[],"constructors":[],"instance_methods":[],"macros":[],"types":[{"html_id":"ameba/Ameba","path":"Ameba.html","kind":"module","full_name":"Ameba","name":"Ameba","abstract":false,"superclass":null,"ancestors":[],"locations":[{"filename":"src/ameba.cr","line_number":24,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba.cr#L24"},{"filename":"src/ameba/glob_utils.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/glob_utils.cr#L1"},{"filename":"src/ameba/inline_comments.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/inline_comments.cr#L1"},{"filename":"src/ameba/issue.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/issue.cr#L1"},{"filename":"src/ameba/reportable.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/reportable.cr#L1"},{"filename":"src/ameba/runner.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/runner.cr#L1"},{"filename":"src/ameba/severity.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/severity.cr#L1"},{"filename":"src/ameba/source.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/source.cr#L1"},{"filename":"src/ameba/tokenizer.cr","line_number":3,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/tokenizer.cr#L3"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"VERSION","name":"VERSION","value":"{{ (`shards version \\\"/home/runner/work/ameba/ameba/src\\\"`).chomp.stringify }}","doc":null,"summary":null}],"included_modules":[],"extended_modules":[{"html_id":"ameba/Ameba","kind":"module","full_name":"Ameba","name":"Ameba"}],"subclasses":[],"including_types":[],"namespace":null,"doc":"Ameba's entry module.\n\nTo run the linter with default parameters:\n\n```\nAmeba.run\n```\n\nTo configure and run it:\n\n```\nconfig = Ameba::Config.load\nconfig.formatter = formatter\nconfig.files = file_paths\n\nAmeba.run config\n```\n","summary":"

    Ameba's entry module.

    ","class_methods":[],"constructors":[],"instance_methods":[{"id":"run(config=Config.load)-instance-method","html_id":"run(config=Config.load)-instance-method","name":"run","doc":"Initializes `Ameba::Runner` and runs it.\nCan be configured via `config` parameter.\n\nExamples:\n\n```\nAmeba.run\nAmeba.run config\n```\n","summary":"

    Initializes Ameba::Runner and runs it.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"Config.load","external_name":"config","restriction":""}],"args_string":"(config = Config.load)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba.cr#L39","def":{"name":"run","args":[{"name":"config","doc":null,"default_value":"Config.load","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"(Runner.new(config)).run"}}],"macros":[],"types":[{"html_id":"ameba/Ameba/AST","path":"Ameba/AST.html","kind":"module","full_name":"Ameba::AST","name":"AST","abstract":false,"superclass":null,"ancestors":[],"locations":[{"filename":"src/ameba/ast/branch.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/branch.cr#L1"},{"filename":"src/ameba/ast/branchable.cr","line_number":3,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/branchable.cr#L3"},{"filename":"src/ameba/ast/flow_expression.cr","line_number":3,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/flow_expression.cr#L3"},{"filename":"src/ameba/ast/scope.cr","line_number":3,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/scope.cr#L3"},{"filename":"src/ameba/ast/variabling/argument.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/variabling/argument.cr#L1"},{"filename":"src/ameba/ast/variabling/assignment.cr","line_number":4,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/variabling/assignment.cr#L4"},{"filename":"src/ameba/ast/variabling/ivariable.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/variabling/ivariable.cr#L1"},{"filename":"src/ameba/ast/variabling/reference.cr","line_number":3,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/variabling/reference.cr#L3"},{"filename":"src/ameba/ast/variabling/variable.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/variabling/variable.cr#L1"},{"filename":"src/ameba/ast/visitors/base_visitor.cr","line_number":4,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/visitors/base_visitor.cr#L4"},{"filename":"src/ameba/ast/visitors/counting_visitor.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/visitors/counting_visitor.cr#L1"},{"filename":"src/ameba/ast/visitors/flow_expression_visitor.cr","line_number":4,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/visitors/flow_expression_visitor.cr#L4"},{"filename":"src/ameba/ast/visitors/node_visitor.cr","line_number":3,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/visitors/node_visitor.cr#L3"},{"filename":"src/ameba/ast/visitors/redundant_control_expression_visitor.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/visitors/redundant_control_expression_visitor.cr#L1"},{"filename":"src/ameba/ast/visitors/scope_visitor.cr","line_number":3,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/visitors/scope_visitor.cr#L3"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"NODES","name":"NODES","value":"[Alias, IsA, Assign, Call, Block, Case, ClassDef, ClassVar, Def, EnumDef, ExceptionHandler, Expressions, HashLiteral, If, InstanceVar, LibDef, ModuleDef, NilLiteral, StringInterpolation, Unless, Var, When, While, Until]","doc":"List of nodes to be visited by Ameba's rules.","summary":"

    List of nodes to be visited by Ameba's rules.

    "}],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba","kind":"module","full_name":"Ameba","name":"Ameba"},"doc":"A module that helps to traverse Crystal AST using `Crystal::Visitor`.","summary":"

    A module that helps to traverse Crystal AST using Crystal::Visitor.

    ","class_methods":[],"constructors":[],"instance_methods":[],"macros":[],"types":[{"html_id":"ameba/Ameba/AST/Argument","path":"Ameba/AST/Argument.html","kind":"class","full_name":"Ameba::AST::Argument","name":"Argument","abstract":false,"superclass":{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},"ancestors":[{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/ast/variabling/argument.cr","line_number":15,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/variabling/argument.cr#L15"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/AST","kind":"module","full_name":"Ameba::AST","name":"AST"},"doc":"Represents the argument of some node.\nHolds the reference to the variable, thus to scope.\n\nFor example, all these vars are arguments:\n\n```\ndef method(a, b, c = 10, &block)\n 3.times do |i|\n end\n\n ->(x : Int32) {}\nend\n```","summary":"

    Represents the argument of some node.

    ","class_methods":[],"constructors":[{"id":"new(node,variable)-class-method","html_id":"new(node,variable)-class-method","name":"new","doc":"Creates a new argument.\n\n```\nArgument.new(node, variable)\n```","summary":"

    Creates a new argument.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""},{"name":"variable","doc":null,"default_value":"","external_name":"variable","restriction":""}],"args_string":"(node, variable)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/variabling/argument.cr#L31","def":{"name":"new","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""},{"name":"variable","doc":null,"default_value":"","external_name":"variable","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"_ = allocate\n_.initialize(node, variable)\nif _.responds_to?(:finalize)\n ::GC.add_finalizer(_)\nend\n_\n"}}],"instance_methods":[{"id":"end_location(*args,**options)-instance-method","html_id":"end_location(*args,**options)-instance-method","name":"end_location","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/variabling/argument.cr#L23","def":{"name":"end_location","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.end_location(*args, **options)"}},{"id":"end_location(*args,**options,&)-instance-method","html_id":"end_location(*args,**options,&)-instance-method","name":"end_location","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options, &)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/variabling/argument.cr#L23","def":{"name":"end_location","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":1,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.end_location(*args, **options) do |*yield_args|\n yield *yield_args\nend"}},{"id":"ignored?-instance-method","html_id":"ignored?-instance-method","name":"ignored?","doc":"Returns true if the name starts with '_', false if not.","summary":"

    Returns true if the name starts with '_', false if not.

    ","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/variabling/argument.cr#L35","def":{"name":"ignored?","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"name.starts_with?('_')"}},{"id":"location(*args,**options)-instance-method","html_id":"location(*args,**options)-instance-method","name":"location","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/variabling/argument.cr#L22","def":{"name":"location","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.location(*args, **options)"}},{"id":"location(*args,**options,&)-instance-method","html_id":"location(*args,**options,&)-instance-method","name":"location","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options, &)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/variabling/argument.cr#L22","def":{"name":"location","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":1,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.location(*args, **options) do |*yield_args|\n yield *yield_args\nend"}},{"id":"name-instance-method","html_id":"name-instance-method","name":"name","doc":"Name of the argument.","summary":"

    Name of the argument.

    ","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/variabling/argument.cr#L40","def":{"name":"name","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"case current_node = node\nwhen Crystal::Var\n current_node.name\nwhen Crystal::Arg\n current_node.name\nelse\n raise(ArgumentError.new(\"invalid node\"))\nend"}},{"id":"node:Crystal::Var|Crystal::Arg-instance-method","html_id":"node:Crystal::Var|Crystal::Arg-instance-method","name":"node","doc":"The actual node.","summary":"

    The actual node.

    ","abstract":false,"args":[],"args_string":" : Crystal::Var | Crystal::Arg","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/variabling/argument.cr#L17","def":{"name":"node","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Crystal::Var | Crystal::Arg","visibility":"Public","body":"@node"}},{"id":"to_s(*args,**options)-instance-method","html_id":"to_s(*args,**options)-instance-method","name":"to_s","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/variabling/argument.cr#L24","def":{"name":"to_s","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.to_s(*args, **options)"}},{"id":"to_s(*args,**options,&)-instance-method","html_id":"to_s(*args,**options,&)-instance-method","name":"to_s","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options, &)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/variabling/argument.cr#L24","def":{"name":"to_s","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":1,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.to_s(*args, **options) do |*yield_args|\n yield *yield_args\nend"}},{"id":"variable:Variable-instance-method","html_id":"variable:Variable-instance-method","name":"variable","doc":"Variable of this argument (may be the same node)","summary":"

    Variable of this argument (may be the same node)

    ","abstract":false,"args":[],"args_string":" : Variable","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/variabling/argument.cr#L20","def":{"name":"variable","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Variable","visibility":"Public","body":"@variable"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/AST/Assignment","path":"Ameba/AST/Assignment.html","kind":"class","full_name":"Ameba::AST::Assignment","name":"Assignment","abstract":false,"superclass":{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},"ancestors":[{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/ast/variabling/assignment.cr","line_number":7,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/variabling/assignment.cr#L7"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/AST","kind":"module","full_name":"Ameba::AST","name":"AST"},"doc":"Represents the assignment to the variable.\nHolds the assign node and the variable.","summary":"

    Represents the assignment to the variable.

    ","class_methods":[],"constructors":[{"id":"new(node,variable,scope)-class-method","html_id":"new(node,variable,scope)-class-method","name":"new","doc":"Creates a new assignment.\n\n```\nAssignment.new(node, variable, scope)\n```\n","summary":"

    Creates a new assignment.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""},{"name":"variable","doc":null,"default_value":"","external_name":"variable","restriction":""},{"name":"scope","doc":null,"default_value":"","external_name":"scope","restriction":""}],"args_string":"(node, variable, scope)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/variabling/assignment.cr#L32","def":{"name":"new","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""},{"name":"variable","doc":null,"default_value":"","external_name":"variable","restriction":""},{"name":"scope","doc":null,"default_value":"","external_name":"scope","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"_ = allocate\n_.initialize(node, variable, scope)\nif _.responds_to?(:finalize)\n ::GC.add_finalizer(_)\nend\n_\n"}}],"instance_methods":[{"id":"branch:Branch?-instance-method","html_id":"branch:Branch?-instance-method","name":"branch","doc":"Branch of this assignment.","summary":"

    Branch of this assignment.

    ","abstract":false,"args":[],"args_string":" : Branch?","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/variabling/assignment.cr#L17","def":{"name":"branch","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Branch | ::Nil","visibility":"Public","body":"@branch"}},{"id":"end_location(*args,**options,&)-instance-method","html_id":"end_location(*args,**options,&)-instance-method","name":"end_location","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options, &)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/variabling/assignment.cr#L24","def":{"name":"end_location","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":1,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.end_location(*args, **options) do |*yield_args|\n yield *yield_args\nend"}},{"id":"end_location(*args,**options)-instance-method","html_id":"end_location(*args,**options)-instance-method","name":"end_location","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/variabling/assignment.cr#L24","def":{"name":"end_location","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.end_location(*args, **options)"}},{"id":"in_branch?-instance-method","html_id":"in_branch?-instance-method","name":"in_branch?","doc":"Returns true if this assignment is in a branch, false if not.\nFor example, this assignment is in a branch:\n\n```\na = 1 if a.nil?\n```","summary":"

    Returns true if this assignment is in a branch, false if not.

    ","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/variabling/assignment.cr#L61","def":{"name":"in_branch?","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"!branch.nil?"}},{"id":"location(*args,**options)-instance-method","html_id":"location(*args,**options)-instance-method","name":"location","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/variabling/assignment.cr#L23","def":{"name":"location","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.location(*args, **options)"}},{"id":"location(*args,**options,&)-instance-method","html_id":"location(*args,**options,&)-instance-method","name":"location","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options, &)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/variabling/assignment.cr#L23","def":{"name":"location","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":1,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.location(*args, **options) do |*yield_args|\n yield *yield_args\nend"}},{"id":"node:Crystal::ASTNode-instance-method","html_id":"node:Crystal::ASTNode-instance-method","name":"node","doc":"The actual assignment node.","summary":"

    The actual assignment node.

    ","abstract":false,"args":[],"args_string":" : Crystal::ASTNode","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/variabling/assignment.cr#L11","def":{"name":"node","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Crystal::ASTNode","visibility":"Public","body":"@node"}},{"id":"op_assign?-instance-method","html_id":"op_assign?-instance-method","name":"op_assign?","doc":"Returns true if this assignment is an op assign, false if not.\nFor example, this is an op assign:\n\n```\na ||= 1\n```","summary":"

    Returns true if this assignment is an op assign, false if not.

    ","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/variabling/assignment.cr#L51","def":{"name":"op_assign?","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"node.is_a?(Crystal::OpAssign)"}},{"id":"referenced=(referenced)-instance-method","html_id":"referenced=(referenced)-instance-method","name":"referenced=","doc":null,"summary":null,"abstract":false,"args":[{"name":"referenced","doc":null,"default_value":"","external_name":"referenced","restriction":""}],"args_string":"(referenced)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/variabling/assignment.cr#L8","def":{"name":"referenced=","args":[{"name":"referenced","doc":null,"default_value":"","external_name":"referenced","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@referenced = referenced"}},{"id":"referenced?:Bool-instance-method","html_id":"referenced?:Bool-instance-method","name":"referenced?","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/variabling/assignment.cr#L8","def":{"name":"referenced?","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@referenced"}},{"id":"referenced_in_loop?-instance-method","html_id":"referenced_in_loop?-instance-method","name":"referenced_in_loop?","doc":null,"summary":null,"abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/variabling/assignment.cr#L41","def":{"name":"referenced_in_loop?","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@variable.referenced? && @branch.try(&.in_loop?)"}},{"id":"scope:Scope-instance-method","html_id":"scope:Scope-instance-method","name":"scope","doc":"A scope assignment belongs to","summary":"

    A scope assignment belongs to

    ","abstract":false,"args":[],"args_string":" : Scope","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/variabling/assignment.cr#L20","def":{"name":"scope","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Scope","visibility":"Public","body":"@scope"}},{"id":"target_node-instance-method","html_id":"target_node-instance-method","name":"target_node","doc":"Returns the target node of the variable in this assignment.","summary":"

    Returns the target node of the variable in this assignment.

    ","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/variabling/assignment.cr#L66","def":{"name":"target_node","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"case assign = node\nwhen Crystal::Assign\n assign.target\nwhen Crystal::OpAssign\n assign.target\nwhen Crystal::UninitializedVar\n assign.var\nwhen Crystal::MultiAssign\n assign.targets.find(node) do |target|\n target.is_a?(Crystal::Var) && (target.name == variable.name)\n end\nelse\n node\nend"}},{"id":"to_s(*args,**options,&)-instance-method","html_id":"to_s(*args,**options,&)-instance-method","name":"to_s","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options, &)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/variabling/assignment.cr#L22","def":{"name":"to_s","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":1,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.to_s(*args, **options) do |*yield_args|\n yield *yield_args\nend"}},{"id":"to_s(*args,**options)-instance-method","html_id":"to_s(*args,**options)-instance-method","name":"to_s","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/variabling/assignment.cr#L22","def":{"name":"to_s","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.to_s(*args, **options)"}},{"id":"transformed?-instance-method","html_id":"transformed?-instance-method","name":"transformed?","doc":"Indicates whether the node is a transformed assignment by the compiler.\ni.e.\n\n```\ncollection.each do |(a, b)|\n puts b\nend\n```\n\nis transformed to:\n\n```\ncollection.each do |__arg0|\n a = __arg0[0]\n b = __arg0[1]\n puts(b)\nend\n```\n","summary":"

    Indicates whether the node is a transformed assignment by the compiler.

    ","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/variabling/assignment.cr#L99","def":{"name":"transformed?","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (assign = node).is_a?(Crystal::Assign)\nelse\n return false\nend\nif (value = assign.value).is_a?(Crystal::Call)\nelse\n return false\nend\nif (obj = value.obj).is_a?(Crystal::Var)\nelse\n return false\nend\nobj.name.starts_with?(\"__arg\")\n"}},{"id":"variable:Variable-instance-method","html_id":"variable:Variable-instance-method","name":"variable","doc":"Variable of this assignment.","summary":"

    Variable of this assignment.

    ","abstract":false,"args":[],"args_string":" : Variable","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/variabling/assignment.cr#L14","def":{"name":"variable","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Variable","visibility":"Public","body":"@variable"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/AST/BaseVisitor","path":"Ameba/AST/BaseVisitor.html","kind":"class","full_name":"Ameba::AST::BaseVisitor","name":"BaseVisitor","abstract":true,"superclass":{"html_id":"ameba/Crystal/Visitor","kind":"class","full_name":"Crystal::Visitor","name":"Visitor"},"ancestors":[{"html_id":"ameba/Crystal/Visitor","kind":"class","full_name":"Crystal::Visitor","name":"Visitor"},{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/ast/visitors/base_visitor.cr","line_number":6,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/visitors/base_visitor.cr#L6"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[{"html_id":"ameba/Ameba/AST/FlowExpressionVisitor","kind":"class","full_name":"Ameba::AST::FlowExpressionVisitor","name":"FlowExpressionVisitor"},{"html_id":"ameba/Ameba/AST/NodeVisitor","kind":"class","full_name":"Ameba::AST::NodeVisitor","name":"NodeVisitor"},{"html_id":"ameba/Ameba/AST/ScopeVisitor","kind":"class","full_name":"Ameba::AST::ScopeVisitor","name":"ScopeVisitor"}],"including_types":[],"namespace":{"html_id":"ameba/Ameba/AST","kind":"module","full_name":"Ameba::AST","name":"AST"},"doc":"An abstract base visitor that utilizes general logic for all visitors.","summary":"

    An abstract base visitor that utilizes general logic for all visitors.

    ","class_methods":[],"constructors":[{"id":"new(rule,source)-class-method","html_id":"new(rule,source)-class-method","name":"new","doc":"Creates instance of this visitor.\n\n```\nvisitor = Ameba::AST::NodeVisitor.new(rule, source)\n```\n","summary":"

    Creates instance of this visitor.

    ","abstract":false,"args":[{"name":"rule","doc":null,"default_value":"","external_name":"rule","restriction":""},{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"args_string":"(rule, source)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/visitors/base_visitor.cr#L19","def":{"name":"new","args":[{"name":"rule","doc":null,"default_value":"","external_name":"rule","restriction":""},{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"_ = allocate\n_.initialize(rule, source)\nif _.responds_to?(:finalize)\n ::GC.add_finalizer(_)\nend\n_\n"}}],"instance_methods":[{"id":"visit(node:Crystal::ASTNode)-instance-method","html_id":"visit(node:Crystal::ASTNode)-instance-method","name":"visit","doc":"A main visit method that accepts `Crystal::ASTNode`.\nReturns true meaning all child nodes will be traversed.","summary":"

    A main visit method that accepts Crystal::ASTNode.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ASTNode"}],"args_string":"(node : Crystal::ASTNode)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/visitors/base_visitor.cr#L25","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ASTNode"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"true"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/AST/Branch","path":"Ameba/AST/Branch.html","kind":"class","full_name":"Ameba::AST::Branch","name":"Branch","abstract":false,"superclass":{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},"ancestors":[{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/ast/branch.cr","line_number":15,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/branch.cr#L15"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/AST","kind":"module","full_name":"Ameba::AST","name":"AST"},"doc":"Represents the branch in Crystal code.\nBranch is a part of a branchable statement.\nFor example, the branchable if statement contains 3 branches:\n\n```\nif a = something # --> Branch A\n a = 1 # --> Branch B\n put a if out # --> Branch C\nelse\n do_something a # --> Branch D\nend\n```\n","summary":"

    Represents the branch in Crystal code.

    ","class_methods":[{"id":"of(node:Crystal::ASTNode,parent_node:Crystal::ASTNode)-class-method","html_id":"of(node:Crystal::ASTNode,parent_node:Crystal::ASTNode)-class-method","name":"of","doc":"Constructs a new branch based on the node some parent scope.\n\n```\nBranch.of(assign_node, def_node)\n```","summary":"

    Constructs a new branch based on the node some parent scope.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ASTNode"},{"name":"parent_node","doc":null,"default_value":"","external_name":"parent_node","restriction":"Crystal::ASTNode"}],"args_string":"(node : Crystal::ASTNode, parent_node : Crystal::ASTNode)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/branch.cr#L66","def":{"name":"of","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ASTNode"},{"name":"parent_node","doc":null,"default_value":"","external_name":"parent_node","restriction":"Crystal::ASTNode"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"(BranchVisitor.new(node)).tap(&.accept(parent_node)).branch"}},{"id":"of(node:Crystal::ASTNode,scope:Scope)-class-method","html_id":"of(node:Crystal::ASTNode,scope:Scope)-class-method","name":"of","doc":"Constructs a new branch based on the node in scope.\n\n```\nBranch.of(assign_node, scope)\n```","summary":"

    Constructs a new branch based on the node in scope.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ASTNode"},{"name":"scope","doc":null,"default_value":"","external_name":"scope","restriction":"Scope"}],"args_string":"(node : Crystal::ASTNode, scope : Scope)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/branch.cr#L57","def":{"name":"of","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ASTNode"},{"name":"scope","doc":null,"default_value":"","external_name":"scope","restriction":"Scope"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"of(node, scope.node)"}}],"constructors":[{"id":"new(node,parent)-class-method","html_id":"new(node,parent)-class-method","name":"new","doc":"Creates a new branch.\n\n```\nBranch.new(if_node)\n```","summary":"

    Creates a new branch.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""},{"name":"parent","doc":null,"default_value":"","external_name":"parent","restriction":""}],"args_string":"(node, parent)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/branch.cr#L33","def":{"name":"new","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""},{"name":"parent","doc":null,"default_value":"","external_name":"parent","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"_ = allocate\n_.initialize(node, parent)\nif _.responds_to?(:finalize)\n ::GC.add_finalizer(_)\nend\n_\n"}}],"instance_methods":[{"id":"==(other:self)-instance-method","html_id":"==(other:self)-instance-method","name":"==","doc":"Returns `true` if this reference is the same as *other*. Invokes `same?`.","summary":"

    Returns true if this reference is the same as other.

    ","abstract":false,"args":[{"name":"other","doc":null,"default_value":"","external_name":"other","restriction":"self"}],"args_string":"(other : self)","source_link":null,"def":{"name":"==","args":[{"name":"other","doc":null,"default_value":"","external_name":"other","restriction":"self"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if node == other.node\nelse\n return false\nend\nif location == other.location\nelse\n return false\nend\ntrue\n"}},{"id":"end_location(*args,**options)-instance-method","html_id":"end_location(*args,**options)-instance-method","name":"end_location","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/branch.cr#L24","def":{"name":"end_location","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.end_location(*args, **options)"}},{"id":"end_location(*args,**options,&)-instance-method","html_id":"end_location(*args,**options,&)-instance-method","name":"end_location","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options, &)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/branch.cr#L24","def":{"name":"end_location","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":1,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.end_location(*args, **options) do |*yield_args|\n yield *yield_args\nend"}},{"id":"hash(hasher)-instance-method","html_id":"hash(hasher)-instance-method","name":"hash","doc":"See `Object#hash(hasher)`","summary":"

    See Object#hash(hasher)

    ","abstract":false,"args":[{"name":"hasher","doc":null,"default_value":"","external_name":"hasher","restriction":""}],"args_string":"(hasher)","source_link":null,"def":{"name":"hash","args":[{"name":"hasher","doc":null,"default_value":"","external_name":"hasher","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"hasher = node.hash(hasher)\nhasher = location.hash(hasher)\nhasher\n"}},{"id":"in_loop?-instance-method","html_id":"in_loop?-instance-method","name":"in_loop?","doc":"Returns true if current branch is in a loop, false - otherwise.\nFor example, this branch is in a loop:\n\n```\nwhile true\n handle_input # this branch is in a loop\n if wrong_input\n show_message # this branch is also in a loop.\n end\nend\n```\n","summary":"

    Returns true if current branch is in a loop, false - otherwise.

    ","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/branch.cr#L48","def":{"name":"in_loop?","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@parent.loop?"}},{"id":"location(*args,**options)-instance-method","html_id":"location(*args,**options)-instance-method","name":"location","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/branch.cr#L23","def":{"name":"location","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.location(*args, **options)"}},{"id":"location(*args,**options,&)-instance-method","html_id":"location(*args,**options,&)-instance-method","name":"location","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options, &)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/branch.cr#L23","def":{"name":"location","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":1,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.location(*args, **options) do |*yield_args|\n yield *yield_args\nend"}},{"id":"node:Crystal::ASTNode-instance-method","html_id":"node:Crystal::ASTNode-instance-method","name":"node","doc":"The actual branch node.","summary":"

    The actual branch node.

    ","abstract":false,"args":[],"args_string":" : Crystal::ASTNode","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/branch.cr#L17","def":{"name":"node","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Crystal::ASTNode","visibility":"Public","body":"@node"}},{"id":"parent:Branchable-instance-method","html_id":"parent:Branchable-instance-method","name":"parent","doc":"The parent branchable.","summary":"

    The parent branchable.

    ","abstract":false,"args":[],"args_string":" : Branchable","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/branch.cr#L20","def":{"name":"parent","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Branchable","visibility":"Public","body":"@parent"}},{"id":"to_s(*args,**options)-instance-method","html_id":"to_s(*args,**options)-instance-method","name":"to_s","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/branch.cr#L22","def":{"name":"to_s","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.to_s(*args, **options)"}},{"id":"to_s(*args,**options,&)-instance-method","html_id":"to_s(*args,**options,&)-instance-method","name":"to_s","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options, &)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/branch.cr#L22","def":{"name":"to_s","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":1,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.to_s(*args, **options) do |*yield_args|\n yield *yield_args\nend"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/AST/Branchable","path":"Ameba/AST/Branchable.html","kind":"class","full_name":"Ameba::AST::Branchable","name":"Branchable","abstract":false,"superclass":{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},"ancestors":[{"html_id":"ameba/Ameba/AST/Util","kind":"module","full_name":"Ameba::AST::Util","name":"Util"},{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/ast/branchable.cr","line_number":15,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/branchable.cr#L15"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[{"html_id":"ameba/Ameba/AST/Util","kind":"module","full_name":"Ameba::AST::Util","name":"Util"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/AST","kind":"module","full_name":"Ameba::AST","name":"AST"},"doc":"A generic entity to represent a branchable Crystal node.\nFor example, `Crystal::If`, `Crystal::Unless`, `Crystal::While`\nare branchables.\n\n```\nwhite a > 100 # Branchable A\n if b > 2 # Branchable B\n a += 1\n end\nend\n```","summary":"

    A generic entity to represent a branchable Crystal node.

    ","class_methods":[],"constructors":[{"id":"new(node,parent=nil)-class-method","html_id":"new(node,parent=nil)-class-method","name":"new","doc":"Creates a new branchable\n\n```\nBranchable.new(node, parent_branchable)\n```","summary":"

    Creates a new branchable

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""},{"name":"parent","doc":null,"default_value":"nil","external_name":"parent","restriction":""}],"args_string":"(node, parent = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/branchable.cr#L35","def":{"name":"new","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""},{"name":"parent","doc":null,"default_value":"nil","external_name":"parent","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"_ = allocate\n_.initialize(node, parent)\nif _.responds_to?(:finalize)\n ::GC.add_finalizer(_)\nend\n_\n"}}],"instance_methods":[{"id":"branches:Array(Crystal::ASTNode)-instance-method","html_id":"branches:Array(Crystal::ASTNode)-instance-method","name":"branches","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(Crystal::ASTNode)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/branchable.cr#L18","def":{"name":"branches","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@branches"}},{"id":"end_location(*args,**options)-instance-method","html_id":"end_location(*args,**options)-instance-method","name":"end_location","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/branchable.cr#L28","def":{"name":"end_location","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.end_location(*args, **options)"}},{"id":"end_location(*args,**options,&)-instance-method","html_id":"end_location(*args,**options,&)-instance-method","name":"end_location","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options, &)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/branchable.cr#L28","def":{"name":"end_location","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":1,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.end_location(*args, **options) do |*yield_args|\n yield *yield_args\nend"}},{"id":"location(*args,**options)-instance-method","html_id":"location(*args,**options)-instance-method","name":"location","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/branchable.cr#L27","def":{"name":"location","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.location(*args, **options)"}},{"id":"location(*args,**options,&)-instance-method","html_id":"location(*args,**options,&)-instance-method","name":"location","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options, &)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/branchable.cr#L27","def":{"name":"location","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":1,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.location(*args, **options) do |*yield_args|\n yield *yield_args\nend"}},{"id":"loop?-instance-method","html_id":"loop?-instance-method","name":"loop?","doc":"Returns true if this node or one of the parent branchables is a loop, false otherwise.","summary":"

    Returns true if this node or one of the parent branchables is a loop, false otherwise.

    ","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/branchable.cr#L39","def":{"name":"loop?","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if loop?(node)\n return true\nend\nparent.try(&.loop?) || false\n"}},{"id":"node:Crystal::ASTNode-instance-method","html_id":"node:Crystal::ASTNode-instance-method","name":"node","doc":"The actual Crystal node.","summary":"

    The actual Crystal node.

    ","abstract":false,"args":[],"args_string":" : Crystal::ASTNode","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/branchable.cr#L21","def":{"name":"node","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Crystal::ASTNode","visibility":"Public","body":"@node"}},{"id":"parent:Branchable?-instance-method","html_id":"parent:Branchable?-instance-method","name":"parent","doc":"Parent branchable (if any)","summary":"

    Parent branchable (if any)

    ","abstract":false,"args":[],"args_string":" : Branchable?","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/branchable.cr#L24","def":{"name":"parent","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Branchable | ::Nil","visibility":"Public","body":"@parent"}},{"id":"to_s(*args,**options)-instance-method","html_id":"to_s(*args,**options)-instance-method","name":"to_s","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/branchable.cr#L26","def":{"name":"to_s","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.to_s(*args, **options)"}},{"id":"to_s(*args,**options,&)-instance-method","html_id":"to_s(*args,**options,&)-instance-method","name":"to_s","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options, &)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/branchable.cr#L26","def":{"name":"to_s","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":1,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.to_s(*args, **options) do |*yield_args|\n yield *yield_args\nend"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/AST/CountingVisitor","path":"Ameba/AST/CountingVisitor.html","kind":"class","full_name":"Ameba::AST::CountingVisitor","name":"CountingVisitor","abstract":false,"superclass":{"html_id":"ameba/Crystal/Visitor","kind":"class","full_name":"Crystal::Visitor","name":"Visitor"},"ancestors":[{"html_id":"ameba/Crystal/Visitor","kind":"class","full_name":"Crystal::Visitor","name":"Visitor"},{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/ast/visitors/counting_visitor.cr","line_number":3,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/visitors/counting_visitor.cr#L3"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"DEFAULT_COMPLEXITY","name":"DEFAULT_COMPLEXITY","value":"1","doc":null,"summary":null}],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/AST","kind":"module","full_name":"Ameba::AST","name":"AST"},"doc":"AST Visitor that counts occurrences of certain keywords","summary":"

    AST Visitor that counts occurrences of certain keywords

    ","class_methods":[],"constructors":[{"id":"new(scope:Crystal::ASTNode)-class-method","html_id":"new(scope:Crystal::ASTNode)-class-method","name":"new","doc":"Creates a new counting visitor","summary":"

    Creates a new counting visitor

    ","abstract":false,"args":[{"name":"scope","doc":null,"default_value":"","external_name":"scope","restriction":"Crystal::ASTNode"}],"args_string":"(scope : Crystal::ASTNode)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/visitors/counting_visitor.cr#L8","def":{"name":"new","args":[{"name":"scope","doc":null,"default_value":"","external_name":"scope","restriction":"Crystal::ASTNode"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"_ = allocate\n_.initialize(scope)\nif _.responds_to?(:finalize)\n ::GC.add_finalizer(_)\nend\n_\n"}}],"instance_methods":[{"id":"count-instance-method","html_id":"count-instance-method","name":"count","doc":"Returns the number of keywords that were found in the node","summary":"

    Returns the number of keywords that were found in the node

    ","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/visitors/counting_visitor.cr#L18","def":{"name":"count","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@scope.accept(self)\n@complexity\n"}},{"id":"macro_condition:Bool-instance-method","html_id":"macro_condition:Bool-instance-method","name":"macro_condition","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/visitors/counting_visitor.cr#L5","def":{"name":"macro_condition","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@macro_condition"}},{"id":"visit(node:Crystal::MacroIf|Crystal::MacroFor)-instance-method","html_id":"visit(node:Crystal::MacroIf|Crystal::MacroFor)-instance-method","name":"visit","doc":null,"summary":null,"abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::MacroIf | Crystal::MacroFor"}],"args_string":"(node : Crystal::MacroIf | Crystal::MacroFor)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/visitors/counting_visitor.cr#L33","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::MacroIf | Crystal::MacroFor"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@macro_condition = true\n@complexity = DEFAULT_COMPLEXITY\nfalse\n"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/AST/FlowExpression","path":"Ameba/AST/FlowExpression.html","kind":"class","full_name":"Ameba::AST::FlowExpression","name":"FlowExpression","abstract":false,"superclass":{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},"ancestors":[{"html_id":"ameba/Ameba/AST/Util","kind":"module","full_name":"Ameba::AST::Util","name":"Util"},{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/ast/flow_expression.cr","line_number":18,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/flow_expression.cr#L18"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[{"html_id":"ameba/Ameba/AST/Util","kind":"module","full_name":"Ameba::AST::Util","name":"Util"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/AST","kind":"module","full_name":"Ameba::AST","name":"AST"},"doc":"Represents a flow expression in Crystal code.\nFor example,\n\n```\ndef foobar\n a = 3\n return 42 # => flow expression\n a + 1\nend\n```\n\nFlow expression contains an actual node of a control expression and\na parent node, which allows easily search through the related statement\n(i.e. find unreachable code)","summary":"

    Represents a flow expression in Crystal code.

    ","class_methods":[],"constructors":[{"id":"new(node,in_loop)-class-method","html_id":"new(node,in_loop)-class-method","name":"new","doc":"Creates a new flow expression.\n\n```\nFlowExpression.new(node, parent_node)\n```","summary":"

    Creates a new flow expression.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""},{"name":"in_loop","doc":null,"default_value":"","external_name":"in_loop","restriction":""}],"args_string":"(node, in_loop)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/flow_expression.cr#L36","def":{"name":"new","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""},{"name":"in_loop","doc":null,"default_value":"","external_name":"in_loop","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"_ = allocate\n_.initialize(node, in_loop)\nif _.responds_to?(:finalize)\n ::GC.add_finalizer(_)\nend\n_\n"}}],"instance_methods":[{"id":"end_location(*args,**options)-instance-method","html_id":"end_location(*args,**options)-instance-method","name":"end_location","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/flow_expression.cr#L29","def":{"name":"end_location","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.end_location(*args, **options)"}},{"id":"end_location(*args,**options,&)-instance-method","html_id":"end_location(*args,**options,&)-instance-method","name":"end_location","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options, &)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/flow_expression.cr#L29","def":{"name":"end_location","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":1,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.end_location(*args, **options) do |*yield_args|\n yield *yield_args\nend"}},{"id":"in_loop?:Bool-instance-method","html_id":"in_loop?:Bool-instance-method","name":"in_loop?","doc":"Is true only if some of the nodes parents is a loop.","summary":"

    Is true only if some of the nodes parents is a loop.

    ","abstract":false,"args":[],"args_string":" : Bool","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/flow_expression.cr#L22","def":{"name":"in_loop?","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Bool","visibility":"Public","body":"@in_loop"}},{"id":"location(*args,**options)-instance-method","html_id":"location(*args,**options)-instance-method","name":"location","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/flow_expression.cr#L28","def":{"name":"location","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.location(*args, **options)"}},{"id":"location(*args,**options,&)-instance-method","html_id":"location(*args,**options,&)-instance-method","name":"location","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options, &)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/flow_expression.cr#L28","def":{"name":"location","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":1,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.location(*args, **options) do |*yield_args|\n yield *yield_args\nend"}},{"id":"node:Crystal::ASTNode-instance-method","html_id":"node:Crystal::ASTNode-instance-method","name":"node","doc":"The actual node of the flow expression.","summary":"

    The actual node of the flow expression.

    ","abstract":false,"args":[],"args_string":" : Crystal::ASTNode","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/flow_expression.cr#L25","def":{"name":"node","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Crystal::ASTNode","visibility":"Public","body":"@node"}},{"id":"to_s(*args,**options)-instance-method","html_id":"to_s(*args,**options)-instance-method","name":"to_s","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/flow_expression.cr#L27","def":{"name":"to_s","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.to_s(*args, **options)"}},{"id":"to_s(*args,**options,&)-instance-method","html_id":"to_s(*args,**options,&)-instance-method","name":"to_s","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options, &)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/flow_expression.cr#L27","def":{"name":"to_s","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":1,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.to_s(*args, **options) do |*yield_args|\n yield *yield_args\nend"}},{"id":"unreachable_nodes-instance-method","html_id":"unreachable_nodes-instance-method","name":"unreachable_nodes","doc":"Returns nodes which can't be reached because of a flow command inside.\nFor example:\n\n```\ndef foobar\n a = 1\n return 42\n\n a + 2 # => unreachable assign node\nend\n```","summary":"

    Returns nodes which can't be reached because of a flow command inside.

    ","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/flow_expression.cr#L50","def":{"name":"unreachable_nodes","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"unreachable_nodes = [] of Crystal::ASTNode\ncase current_node = node\nwhen Crystal::Expressions\n control_flow_found = false\n current_node.expressions.each do |exp|\n if control_flow_found\n unreachable_nodes << exp\n end\n control_flow_found || (control_flow_found = flow_expression?(exp, in_loop?))\n end\nwhen Crystal::BinaryOp\n if flow_expression?(current_node.left, in_loop?)\n unreachable_nodes << current_node.right\n end\nelse\nend\nunreachable_nodes\n"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/AST/FlowExpressionVisitor","path":"Ameba/AST/FlowExpressionVisitor.html","kind":"class","full_name":"Ameba::AST::FlowExpressionVisitor","name":"FlowExpressionVisitor","abstract":false,"superclass":{"html_id":"ameba/Ameba/AST/BaseVisitor","kind":"class","full_name":"Ameba::AST::BaseVisitor","name":"BaseVisitor"},"ancestors":[{"html_id":"ameba/Ameba/AST/Util","kind":"module","full_name":"Ameba::AST::Util","name":"Util"},{"html_id":"ameba/Ameba/AST/BaseVisitor","kind":"class","full_name":"Ameba::AST::BaseVisitor","name":"BaseVisitor"},{"html_id":"ameba/Crystal/Visitor","kind":"class","full_name":"Crystal::Visitor","name":"Visitor"},{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/ast/visitors/flow_expression_visitor.cr","line_number":6,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/visitors/flow_expression_visitor.cr#L6"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[{"html_id":"ameba/Ameba/AST/Util","kind":"module","full_name":"Ameba::AST::Util","name":"Util"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/AST","kind":"module","full_name":"Ameba::AST","name":"AST"},"doc":"AST Visitor that traverses all the flow expressions.","summary":"

    AST Visitor that traverses all the flow expressions.

    ","class_methods":[],"constructors":[{"id":"new(rule,source)-class-method","html_id":"new(rule,source)-class-method","name":"new","doc":"Creates a new flow expression visitor.","summary":"

    Creates a new flow expression visitor.

    ","abstract":false,"args":[{"name":"rule","doc":null,"default_value":"","external_name":"rule","restriction":""},{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"args_string":"(rule, source)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/visitors/flow_expression_visitor.cr#L12","def":{"name":"new","args":[{"name":"rule","doc":null,"default_value":"","external_name":"rule","restriction":""},{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"_ = allocate\n_.initialize(rule, source)\nif _.responds_to?(:finalize)\n ::GC.add_finalizer(_)\nend\n_\n"}}],"instance_methods":[],"macros":[],"types":[]},{"html_id":"ameba/Ameba/AST/InstanceVariable","path":"Ameba/AST/InstanceVariable.html","kind":"class","full_name":"Ameba::AST::InstanceVariable","name":"InstanceVariable","abstract":false,"superclass":{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},"ancestors":[{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/ast/variabling/ivariable.cr","line_number":2,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/variabling/ivariable.cr#L2"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/AST","kind":"module","full_name":"Ameba::AST","name":"AST"},"doc":null,"summary":null,"class_methods":[],"constructors":[{"id":"new(node)-class-method","html_id":"new(node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"args_string":"(node)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/variabling/ivariable.cr#L10","def":{"name":"new","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"_ = allocate\n_.initialize(node)\nif _.responds_to?(:finalize)\n ::GC.add_finalizer(_)\nend\n_\n"}}],"instance_methods":[{"id":"end_location(*args,**options)-instance-method","html_id":"end_location(*args,**options)-instance-method","name":"end_location","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/variabling/ivariable.cr#L6","def":{"name":"end_location","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.end_location(*args, **options)"}},{"id":"end_location(*args,**options,&)-instance-method","html_id":"end_location(*args,**options,&)-instance-method","name":"end_location","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options, &)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/variabling/ivariable.cr#L6","def":{"name":"end_location","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":1,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.end_location(*args, **options) do |*yield_args|\n yield *yield_args\nend"}},{"id":"location(*args,**options)-instance-method","html_id":"location(*args,**options)-instance-method","name":"location","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/variabling/ivariable.cr#L5","def":{"name":"location","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.location(*args, **options)"}},{"id":"location(*args,**options,&)-instance-method","html_id":"location(*args,**options,&)-instance-method","name":"location","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options, &)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/variabling/ivariable.cr#L5","def":{"name":"location","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":1,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.location(*args, **options) do |*yield_args|\n yield *yield_args\nend"}},{"id":"name(*args,**options)-instance-method","html_id":"name(*args,**options)-instance-method","name":"name","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/variabling/ivariable.cr#L7","def":{"name":"name","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.name(*args, **options)"}},{"id":"name(*args,**options,&)-instance-method","html_id":"name(*args,**options,&)-instance-method","name":"name","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options, &)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/variabling/ivariable.cr#L7","def":{"name":"name","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":1,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.name(*args, **options) do |*yield_args|\n yield *yield_args\nend"}},{"id":"node:Crystal::InstanceVar-instance-method","html_id":"node:Crystal::InstanceVar-instance-method","name":"node","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Crystal::InstanceVar","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/variabling/ivariable.cr#L3","def":{"name":"node","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Crystal::InstanceVar","visibility":"Public","body":"@node"}},{"id":"to_s(*args,**options)-instance-method","html_id":"to_s(*args,**options)-instance-method","name":"to_s","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/variabling/ivariable.cr#L8","def":{"name":"to_s","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.to_s(*args, **options)"}},{"id":"to_s(*args,**options,&)-instance-method","html_id":"to_s(*args,**options,&)-instance-method","name":"to_s","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options, &)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/variabling/ivariable.cr#L8","def":{"name":"to_s","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":1,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.to_s(*args, **options) do |*yield_args|\n yield *yield_args\nend"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/AST/NodeVisitor","path":"Ameba/AST/NodeVisitor.html","kind":"class","full_name":"Ameba::AST::NodeVisitor","name":"NodeVisitor","abstract":false,"superclass":{"html_id":"ameba/Ameba/AST/BaseVisitor","kind":"class","full_name":"Ameba::AST::BaseVisitor","name":"BaseVisitor"},"ancestors":[{"html_id":"ameba/Ameba/AST/BaseVisitor","kind":"class","full_name":"Ameba::AST::BaseVisitor","name":"BaseVisitor"},{"html_id":"ameba/Crystal/Visitor","kind":"class","full_name":"Crystal::Visitor","name":"Visitor"},{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/ast/visitors/node_visitor.cr","line_number":39,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/visitors/node_visitor.cr#L39"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/AST","kind":"module","full_name":"Ameba::AST","name":"AST"},"doc":"An AST Visitor that traverses the source and allows all nodes\nto be inspected by rules.\n\n```\nvisitor = Ameba::AST::NodeVisitor.new(rule, source)\n```\n","summary":"

    An AST Visitor that traverses the source and allows all nodes to be inspected by rules.

    ","class_methods":[],"constructors":[{"id":"new(rule,source,skip=nil)-class-method","html_id":"new(rule,source,skip=nil)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"rule","doc":null,"default_value":"","external_name":"rule","restriction":""},{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"skip","doc":null,"default_value":"nil","external_name":"skip","restriction":""}],"args_string":"(rule, source, skip = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/visitors/node_visitor.cr#L42","def":{"name":"new","args":[{"name":"rule","doc":null,"default_value":"","external_name":"rule","restriction":""},{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"skip","doc":null,"default_value":"nil","external_name":"skip","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"_ = allocate\n_.initialize(rule, source, skip)\nif _.responds_to?(:finalize)\n ::GC.add_finalizer(_)\nend\n_\n"}}],"instance_methods":[{"id":"visit(node:Crystal::Alias)-instance-method","html_id":"visit(node:Crystal::Alias)-instance-method","name":"visit","doc":"A visit callback for `Crystal::Alias` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"

    A visit callback for Crystal::Alias node.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Alias"}],"args_string":"(node : Crystal::Alias)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/visitors/node_visitor.cr#L47","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Alias"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::Until)-instance-method","html_id":"visit(node:Crystal::Until)-instance-method","name":"visit","doc":"A visit callback for `Crystal::Until` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"

    A visit callback for Crystal::Until node.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Until"}],"args_string":"(node : Crystal::Until)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/visitors/node_visitor.cr#L47","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Until"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::While)-instance-method","html_id":"visit(node:Crystal::While)-instance-method","name":"visit","doc":"A visit callback for `Crystal::While` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"

    A visit callback for Crystal::While node.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::While"}],"args_string":"(node : Crystal::While)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/visitors/node_visitor.cr#L47","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::While"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::When)-instance-method","html_id":"visit(node:Crystal::When)-instance-method","name":"visit","doc":"A visit callback for `Crystal::When` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"

    A visit callback for Crystal::When node.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::When"}],"args_string":"(node : Crystal::When)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/visitors/node_visitor.cr#L47","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::When"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::Var)-instance-method","html_id":"visit(node:Crystal::Var)-instance-method","name":"visit","doc":"A visit callback for `Crystal::Var` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"

    A visit callback for Crystal::Var node.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Var"}],"args_string":"(node : Crystal::Var)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/visitors/node_visitor.cr#L47","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Var"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::Unless)-instance-method","html_id":"visit(node:Crystal::Unless)-instance-method","name":"visit","doc":"A visit callback for `Crystal::Unless` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"

    A visit callback for Crystal::Unless node.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Unless"}],"args_string":"(node : Crystal::Unless)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/visitors/node_visitor.cr#L47","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Unless"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::StringInterpolation)-instance-method","html_id":"visit(node:Crystal::StringInterpolation)-instance-method","name":"visit","doc":"A visit callback for `Crystal::StringInterpolation` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"

    A visit callback for Crystal::StringInterpolation node.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::StringInterpolation"}],"args_string":"(node : Crystal::StringInterpolation)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/visitors/node_visitor.cr#L47","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::StringInterpolation"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::NilLiteral)-instance-method","html_id":"visit(node:Crystal::NilLiteral)-instance-method","name":"visit","doc":"A visit callback for `Crystal::NilLiteral` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"

    A visit callback for Crystal::NilLiteral node.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::NilLiteral"}],"args_string":"(node : Crystal::NilLiteral)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/visitors/node_visitor.cr#L47","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::NilLiteral"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::ModuleDef)-instance-method","html_id":"visit(node:Crystal::ModuleDef)-instance-method","name":"visit","doc":"A visit callback for `Crystal::ModuleDef` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"

    A visit callback for Crystal::ModuleDef node.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ModuleDef"}],"args_string":"(node : Crystal::ModuleDef)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/visitors/node_visitor.cr#L47","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ModuleDef"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::LibDef)-instance-method","html_id":"visit(node:Crystal::LibDef)-instance-method","name":"visit","doc":"A visit callback for `Crystal::LibDef` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"

    A visit callback for Crystal::LibDef node.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::LibDef"}],"args_string":"(node : Crystal::LibDef)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/visitors/node_visitor.cr#L47","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::LibDef"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::InstanceVar)-instance-method","html_id":"visit(node:Crystal::InstanceVar)-instance-method","name":"visit","doc":"A visit callback for `Crystal::InstanceVar` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"

    A visit callback for Crystal::InstanceVar node.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::InstanceVar"}],"args_string":"(node : Crystal::InstanceVar)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/visitors/node_visitor.cr#L47","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::InstanceVar"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::If)-instance-method","html_id":"visit(node:Crystal::If)-instance-method","name":"visit","doc":"A visit callback for `Crystal::If` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"

    A visit callback for Crystal::If node.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::If"}],"args_string":"(node : Crystal::If)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/visitors/node_visitor.cr#L47","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::If"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::HashLiteral)-instance-method","html_id":"visit(node:Crystal::HashLiteral)-instance-method","name":"visit","doc":"A visit callback for `Crystal::HashLiteral` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"

    A visit callback for Crystal::HashLiteral node.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::HashLiteral"}],"args_string":"(node : Crystal::HashLiteral)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/visitors/node_visitor.cr#L47","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::HashLiteral"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::Expressions)-instance-method","html_id":"visit(node:Crystal::Expressions)-instance-method","name":"visit","doc":"A visit callback for `Crystal::Expressions` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"

    A visit callback for Crystal::Expressions node.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Expressions"}],"args_string":"(node : Crystal::Expressions)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/visitors/node_visitor.cr#L47","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Expressions"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::ExceptionHandler)-instance-method","html_id":"visit(node:Crystal::ExceptionHandler)-instance-method","name":"visit","doc":"A visit callback for `Crystal::ExceptionHandler` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"

    A visit callback for Crystal::ExceptionHandler node.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ExceptionHandler"}],"args_string":"(node : Crystal::ExceptionHandler)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/visitors/node_visitor.cr#L47","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ExceptionHandler"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::EnumDef)-instance-method","html_id":"visit(node:Crystal::EnumDef)-instance-method","name":"visit","doc":"A visit callback for `Crystal::EnumDef` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"

    A visit callback for Crystal::EnumDef node.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::EnumDef"}],"args_string":"(node : Crystal::EnumDef)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/visitors/node_visitor.cr#L47","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::EnumDef"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::Def)-instance-method","html_id":"visit(node:Crystal::Def)-instance-method","name":"visit","doc":"A visit callback for `Crystal::Def` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"

    A visit callback for Crystal::Def node.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Def"}],"args_string":"(node : Crystal::Def)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/visitors/node_visitor.cr#L47","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Def"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::ClassVar)-instance-method","html_id":"visit(node:Crystal::ClassVar)-instance-method","name":"visit","doc":"A visit callback for `Crystal::ClassVar` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"

    A visit callback for Crystal::ClassVar node.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ClassVar"}],"args_string":"(node : Crystal::ClassVar)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/visitors/node_visitor.cr#L47","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ClassVar"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::ClassDef)-instance-method","html_id":"visit(node:Crystal::ClassDef)-instance-method","name":"visit","doc":"A visit callback for `Crystal::ClassDef` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"

    A visit callback for Crystal::ClassDef node.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ClassDef"}],"args_string":"(node : Crystal::ClassDef)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/visitors/node_visitor.cr#L47","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ClassDef"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::Case)-instance-method","html_id":"visit(node:Crystal::Case)-instance-method","name":"visit","doc":"A visit callback for `Crystal::Case` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"

    A visit callback for Crystal::Case node.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Case"}],"args_string":"(node : Crystal::Case)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/visitors/node_visitor.cr#L47","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Case"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::Block)-instance-method","html_id":"visit(node:Crystal::Block)-instance-method","name":"visit","doc":"A visit callback for `Crystal::Block` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"

    A visit callback for Crystal::Block node.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Block"}],"args_string":"(node : Crystal::Block)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/visitors/node_visitor.cr#L47","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Block"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::Call)-instance-method","html_id":"visit(node:Crystal::Call)-instance-method","name":"visit","doc":"A visit callback for `Crystal::Call` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"

    A visit callback for Crystal::Call node.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Call"}],"args_string":"(node : Crystal::Call)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/visitors/node_visitor.cr#L47","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Call"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::Assign)-instance-method","html_id":"visit(node:Crystal::Assign)-instance-method","name":"visit","doc":"A visit callback for `Crystal::Assign` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"

    A visit callback for Crystal::Assign node.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Assign"}],"args_string":"(node : Crystal::Assign)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/visitors/node_visitor.cr#L47","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Assign"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::IsA)-instance-method","html_id":"visit(node:Crystal::IsA)-instance-method","name":"visit","doc":"A visit callback for `Crystal::IsA` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"

    A visit callback for Crystal::IsA node.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::IsA"}],"args_string":"(node : Crystal::IsA)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/visitors/node_visitor.cr#L47","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::IsA"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node)-instance-method","html_id":"visit(node)-instance-method","name":"visit","doc":null,"summary":null,"abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"args_string":"(node)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/visitors/node_visitor.cr#L56","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (skip = @skip)\nelse\n return true\nend\n!(skip.includes?(node.class))\n"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/AST/RedundantControlExpressionVisitor","path":"Ameba/AST/RedundantControlExpressionVisitor.html","kind":"class","full_name":"Ameba::AST::RedundantControlExpressionVisitor","name":"RedundantControlExpressionVisitor","abstract":false,"superclass":{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},"ancestors":[{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/ast/visitors/redundant_control_expression_visitor.cr","line_number":5,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/visitors/redundant_control_expression_visitor.cr#L5"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/AST","kind":"module","full_name":"Ameba::AST","name":"AST"},"doc":"A class that utilizes a logic to traverse AST nodes and\nfire a source test callback if a redundant `Crystal::ControlExpression`\nis reached.","summary":"

    A class that utilizes a logic to traverse AST nodes and fire a source test callback if a redundant Crystal::ControlExpression is reached.

    ","class_methods":[],"constructors":[{"id":"new(rule,source,node)-class-method","html_id":"new(rule,source,node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"rule","doc":null,"default_value":"","external_name":"rule","restriction":""},{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"args_string":"(rule, source, node)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/visitors/redundant_control_expression_visitor.cr#L15","def":{"name":"new","args":[{"name":"rule","doc":null,"default_value":"","external_name":"rule","restriction":""},{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"_ = allocate\n_.initialize(rule, source, node)\nif _.responds_to?(:finalize)\n ::GC.add_finalizer(_)\nend\n_\n"}}],"instance_methods":[{"id":"node:Crystal::ASTNode-instance-method","html_id":"node:Crystal::ASTNode-instance-method","name":"node","doc":"A node to run traversal on.","summary":"

    A node to run traversal on.

    ","abstract":false,"args":[],"args_string":" : Crystal::ASTNode","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/visitors/redundant_control_expression_visitor.cr#L13","def":{"name":"node","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Crystal::ASTNode","visibility":"Public","body":"@node"}},{"id":"rule:Rule::Base-instance-method","html_id":"rule:Rule::Base-instance-method","name":"rule","doc":"A corresponding rule that uses this visitor.","summary":"

    A corresponding rule that uses this visitor.

    ","abstract":false,"args":[],"args_string":" : Rule::Base","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/visitors/redundant_control_expression_visitor.cr#L7","def":{"name":"rule","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Rule::Base","visibility":"Public","body":"@rule"}},{"id":"source:Source-instance-method","html_id":"source:Source-instance-method","name":"source","doc":"A source that needs to be traversed.","summary":"

    A source that needs to be traversed.

    ","abstract":false,"args":[],"args_string":" : Source","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/visitors/redundant_control_expression_visitor.cr#L10","def":{"name":"source","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Source","visibility":"Public","body":"@source"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/AST/Reference","path":"Ameba/AST/Reference.html","kind":"class","full_name":"Ameba::AST::Reference","name":"Reference","abstract":false,"superclass":{"html_id":"ameba/Ameba/AST/Variable","kind":"class","full_name":"Ameba::AST::Variable","name":"Variable"},"ancestors":[{"html_id":"ameba/Ameba/AST/Variable","kind":"class","full_name":"Ameba::AST::Variable","name":"Variable"},{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/ast/variabling/reference.cr","line_number":7,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/variabling/reference.cr#L7"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/AST","kind":"module","full_name":"Ameba::AST","name":"AST"},"doc":"Represents a reference to the variable.\nIt behaves like a variable is used to distinguish a\nthe variable from its reference.","summary":"

    Represents a reference to the variable.

    ","class_methods":[],"constructors":[],"instance_methods":[{"id":"explicit=(explicit)-instance-method","html_id":"explicit=(explicit)-instance-method","name":"explicit=","doc":null,"summary":null,"abstract":false,"args":[{"name":"explicit","doc":null,"default_value":"","external_name":"explicit","restriction":""}],"args_string":"(explicit)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/variabling/reference.cr#L8","def":{"name":"explicit=","args":[{"name":"explicit","doc":null,"default_value":"","external_name":"explicit","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@explicit = explicit"}},{"id":"explicit?:Bool-instance-method","html_id":"explicit?:Bool-instance-method","name":"explicit?","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/variabling/reference.cr#L8","def":{"name":"explicit?","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@explicit"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/AST/Scope","path":"Ameba/AST/Scope.html","kind":"class","full_name":"Ameba::AST::Scope","name":"Scope","abstract":false,"superclass":{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},"ancestors":[{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/ast/scope.cr","line_number":6,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/scope.cr#L6"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/AST","kind":"module","full_name":"Ameba::AST","name":"AST"},"doc":"Represents a context of the local variable visibility.\nThis is where the local variables belong to.","summary":"

    Represents a context of the local variable visibility.

    ","class_methods":[],"constructors":[{"id":"new(node,outer_scope=nil)-class-method","html_id":"new(node,outer_scope=nil)-class-method","name":"new","doc":"Creates a new scope. Accepts the AST node and the outer scope.\n\n```\nscope = Scope.new(class_node, nil)\n```","summary":"

    Creates a new scope.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""},{"name":"outer_scope","doc":null,"default_value":"nil","external_name":"outer_scope","restriction":""}],"args_string":"(node, outer_scope = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/scope.cr#L39","def":{"name":"new","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""},{"name":"outer_scope","doc":null,"default_value":"nil","external_name":"outer_scope","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"_ = allocate\n_.initialize(node, outer_scope)\nif _.responds_to?(:finalize)\n ::GC.add_finalizer(_)\nend\n_\n"}}],"instance_methods":[{"id":"==(other:self)-instance-method","html_id":"==(other:self)-instance-method","name":"==","doc":"Returns `true` if this reference is the same as *other*. Invokes `same?`.","summary":"

    Returns true if this reference is the same as other.

    ","abstract":false,"args":[{"name":"other","doc":null,"default_value":"","external_name":"other","restriction":"self"}],"args_string":"(other : self)","source_link":null,"def":{"name":"==","args":[{"name":"other","doc":null,"default_value":"","external_name":"other","restriction":"self"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if node == other.node\nelse\n return false\nend\nif location == other.location\nelse\n return false\nend\ntrue\n"}},{"id":"add_argument(node)-instance-method","html_id":"add_argument(node)-instance-method","name":"add_argument","doc":"Creates a new argument in the current scope.\n\n```\nscope = Scope.new(class_node, nil)\nscope.add_argument(arg_node)\n```","summary":"

    Creates a new argument in the current scope.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"args_string":"(node)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/scope.cr#L59","def":{"name":"add_argument","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"add_variable((Crystal::Var.new(node.name)).at(node))\narguments << (Argument.new(node, variables.last))\n"}},{"id":"add_ivariable(node)-instance-method","html_id":"add_ivariable(node)-instance-method","name":"add_ivariable","doc":"Adds a new instance variable to the current scope.\n\n```\nscope = Scope.new(class_node, nil)\nscope.add_ivariable(ivar_node)\n```","summary":"

    Adds a new instance variable to the current scope.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"args_string":"(node)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/scope.cr#L70","def":{"name":"add_ivariable","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"ivariables << (InstanceVariable.new(node))"}},{"id":"add_variable(node)-instance-method","html_id":"add_variable(node)-instance-method","name":"add_variable","doc":"Creates a new variable in the current scope.\n\n```\nscope = Scope.new(class_node, nil)\nscope.add_variable(var_node)\n```","summary":"

    Creates a new variable in the current scope.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"args_string":"(node)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/scope.cr#L49","def":{"name":"add_variable","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"variables << (Variable.new(node, self))"}},{"id":"arg?(var)-instance-method","html_id":"arg?(var)-instance-method","name":"arg?","doc":"Returns true if var is an argument in current scope, false if not.","summary":"

    Returns true if var is an argument in current scope, false if not.

    ","abstract":false,"args":[{"name":"var","doc":null,"default_value":"","external_name":"var","restriction":""}],"args_string":"(var)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/scope.cr#L155","def":{"name":"arg?","args":[{"name":"var","doc":null,"default_value":"","external_name":"var","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"case current_node = node\nwhen Crystal::Def\n var.is_a?(Crystal::Arg) && (any_arg?(current_node.args, var))\nwhen Crystal::Block\n var.is_a?(Crystal::Var) && (any_arg?(current_node.args, var))\nwhen Crystal::ProcLiteral\n var.is_a?(Crystal::Var) && (any_arg?(current_node.def.args, var))\nelse\n false\nend"}},{"id":"arguments:Array(Ameba::AST::Argument)-instance-method","html_id":"arguments:Array(Ameba::AST::Argument)-instance-method","name":"arguments","doc":"Link to the arguments in current scope","summary":"

    Link to the arguments in current scope

    ","abstract":false,"args":[],"args_string":" : Array(Ameba::AST::Argument)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/scope.cr#L14","def":{"name":"arguments","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@arguments"}},{"id":"assign_variable(name,node)-instance-method","html_id":"assign_variable(name,node)-instance-method","name":"assign_variable","doc":"Creates a new assignment for the variable.\n\n```\nscope = Scope.new(class_node, nil)\nscope.assign_variable(var_name, assign_node)\n```","summary":"

    Creates a new assignment for the variable.

    ","abstract":false,"args":[{"name":"name","doc":null,"default_value":"","external_name":"name","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"args_string":"(name, node)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/scope.cr#L90","def":{"name":"assign_variable","args":[{"name":"name","doc":null,"default_value":"","external_name":"name","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"(find_variable(name)).try(&.assign(node, self))"}},{"id":"assigns_ivar?(name)-instance-method","html_id":"assigns_ivar?(name)-instance-method","name":"assigns_ivar?","doc":"Returns true instance variable assinged in this scope.","summary":"

    Returns true instance variable assinged in this scope.

    ","abstract":false,"args":[{"name":"name","doc":null,"default_value":"","external_name":"name","restriction":""}],"args_string":"(name)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/scope.cr#L119","def":{"name":"assigns_ivar?","args":[{"name":"name","doc":null,"default_value":"","external_name":"name","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"arguments.find do |arg|\n arg.name == name\nend && ivariables.find do |var|\n var.name == \"@#{name}\"\nend"}},{"id":"block?-instance-method","html_id":"block?-instance-method","name":"block?","doc":"Returns true if current scope represents a block (or proc),\nfalse if not.","summary":"

    Returns true if current scope represents a block (or proc), false if not.

    ","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/scope.cr#L96","def":{"name":"block?","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"node.is_a?(Crystal::Block) || node.is_a?(Crystal::ProcLiteral)"}},{"id":"def?-instance-method","html_id":"def?-instance-method","name":"def?","doc":"Returns true if current scope is a def, false if not.","summary":"

    Returns true if current scope is a def, false if not.

    ","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/scope.cr#L145","def":{"name":"def?","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"node.is_a?(Crystal::Def)"}},{"id":"end_location(*args,**options)-instance-method","html_id":"end_location(*args,**options)-instance-method","name":"end_location","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/scope.cr#L30","def":{"name":"end_location","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"node.end_location(*args, **options)"}},{"id":"end_location(*args,**options,&)-instance-method","html_id":"end_location(*args,**options,&)-instance-method","name":"end_location","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options, &)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/scope.cr#L30","def":{"name":"end_location","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":1,"block_arg":null,"return_type":"","visibility":"Public","body":"node.end_location(*args, **options) do |*yield_args|\n yield *yield_args\nend"}},{"id":"eql?(node)-instance-method","html_id":"eql?(node)-instance-method","name":"eql?","doc":"Returns true if the `node` represents exactly\nthe same Crystal node as `@node`.","summary":"

    Returns true if the #node represents exactly the same Crystal node as @node.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"args_string":"(node)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/scope.cr#L174","def":{"name":"eql?","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"((node == @node) && (!node.location.nil?)) && (node.location == @node.location)"}},{"id":"find_variable(name:String)-instance-method","html_id":"find_variable(name:String)-instance-method","name":"find_variable","doc":"Returns variable by its name or nil if it does not exist.\n\n```\nscope = Scope.new(class_node, nil)\nscope.find_variable(\"foo\")\n```","summary":"

    Returns variable by its name or nil if it does not exist.

    ","abstract":false,"args":[{"name":"name","doc":null,"default_value":"","external_name":"name","restriction":"String"}],"args_string":"(name : String)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/scope.cr#L80","def":{"name":"find_variable","args":[{"name":"name","doc":null,"default_value":"","external_name":"name","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"variables.find do |v|\n v.name == name\nend || outer_scope.try(&.find_variable(name))"}},{"id":"hash(hasher)-instance-method","html_id":"hash(hasher)-instance-method","name":"hash","doc":"See `Object#hash(hasher)`","summary":"

    See Object#hash(hasher)

    ","abstract":false,"args":[{"name":"hasher","doc":null,"default_value":"","external_name":"hasher","restriction":""}],"args_string":"(hasher)","source_link":null,"def":{"name":"hash","args":[{"name":"hasher","doc":null,"default_value":"","external_name":"hasher","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"hasher = node.hash(hasher)\nhasher = location.hash(hasher)\nhasher\n"}},{"id":"in_macro?-instance-method","html_id":"in_macro?-instance-method","name":"in_macro?","doc":"Returns true if current scope sits inside a macro.","summary":"

    Returns true if current scope sits inside a macro.

    ","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/scope.cr#L114","def":{"name":"in_macro?","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"node.is_a?(Crystal::Macro) || (!(!outer_scope.try(&.in_macro?)))"}},{"id":"inner_scopes:Array(Ameba::AST::Scope)-instance-method","html_id":"inner_scopes:Array(Ameba::AST::Scope)-instance-method","name":"inner_scopes","doc":"List of inner scopes","summary":"

    List of inner scopes

    ","abstract":false,"args":[],"args_string":" : Array(Ameba::AST::Scope)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/scope.cr#L23","def":{"name":"inner_scopes","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@inner_scopes"}},{"id":"ivariables:Array(Ameba::AST::InstanceVariable)-instance-method","html_id":"ivariables:Array(Ameba::AST::InstanceVariable)-instance-method","name":"ivariables","doc":"Link to the instance variables used in current scope","summary":"

    Link to the instance variables used in current scope

    ","abstract":false,"args":[],"args_string":" : Array(Ameba::AST::InstanceVariable)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/scope.cr#L17","def":{"name":"ivariables","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@ivariables"}},{"id":"location(*args,**options,&)-instance-method","html_id":"location(*args,**options,&)-instance-method","name":"location","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options, &)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/scope.cr#L29","def":{"name":"location","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":1,"block_arg":null,"return_type":"","visibility":"Public","body":"node.location(*args, **options) do |*yield_args|\n yield *yield_args\nend"}},{"id":"location(*args,**options)-instance-method","html_id":"location(*args,**options)-instance-method","name":"location","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/scope.cr#L29","def":{"name":"location","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"node.location(*args, **options)"}},{"id":"node:Crystal::ASTNode-instance-method","html_id":"node:Crystal::ASTNode-instance-method","name":"node","doc":"The actual AST node that represents a current scope.","summary":"

    The actual AST node that represents a current scope.

    ","abstract":false,"args":[],"args_string":" : Crystal::ASTNode","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/scope.cr#L26","def":{"name":"node","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Crystal::ASTNode","visibility":"Public","body":"@node"}},{"id":"outer_scope:Scope?-instance-method","html_id":"outer_scope:Scope?-instance-method","name":"outer_scope","doc":"Link to the outer scope","summary":"

    Link to the outer scope

    ","abstract":false,"args":[],"args_string":" : Scope?","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/scope.cr#L20","def":{"name":"outer_scope","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Scope | ::Nil","visibility":"Public","body":"@outer_scope"}},{"id":"references:Array(Ameba::AST::Reference)-instance-method","html_id":"references:Array(Ameba::AST::Reference)-instance-method","name":"references","doc":"Link to all variable references in currency scope","summary":"

    Link to all variable references in currency scope

    ","abstract":false,"args":[],"args_string":" : Array(Ameba::AST::Reference)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/scope.cr#L11","def":{"name":"references","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@references"}},{"id":"references?(variable:Variable)-instance-method","html_id":"references?(variable:Variable)-instance-method","name":"references?","doc":"Returns true if current scope (or any of inner scopes) references variable,\nfalse if not.","summary":"

    Returns true if current scope (or any of inner scopes) references variable, false if not.

    ","abstract":false,"args":[{"name":"variable","doc":null,"default_value":"","external_name":"variable","restriction":"Variable"}],"args_string":"(variable : Variable)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/scope.cr#L137","def":{"name":"references?","args":[{"name":"variable","doc":null,"default_value":"","external_name":"variable","restriction":"Variable"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"variable.references.any? do |reference|\n (reference.scope == self) || inner_scopes.any?(&.references?(variable))\nend || variable.used_in_macro?"}},{"id":"spawn_block?-instance-method","html_id":"spawn_block?-instance-method","name":"spawn_block?","doc":"Returns true if current scope represents a spawn block, e. g.\n\n```\nspawn do\n # ...\nend\n```","summary":"

    Returns true if current scope represents a spawn block, e.

    ","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/scope.cr#L107","def":{"name":"spawn_block?","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if node.is_a?(Crystal::Block)\nelse\n return false\nend\ncall = (node.as(Crystal::Block)).call\ncall.try(&.name) == \"spawn\"\n"}},{"id":"to_s(*args,**options)-instance-method","html_id":"to_s(*args,**options)-instance-method","name":"to_s","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/scope.cr#L28","def":{"name":"to_s","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"node.to_s(*args, **options)"}},{"id":"to_s(*args,**options,&)-instance-method","html_id":"to_s(*args,**options,&)-instance-method","name":"to_s","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options, &)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/scope.cr#L28","def":{"name":"to_s","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":1,"block_arg":null,"return_type":"","visibility":"Public","body":"node.to_s(*args, **options) do |*yield_args|\n yield *yield_args\nend"}},{"id":"top_level?-instance-method","html_id":"top_level?-instance-method","name":"top_level?","doc":"Returns true if this scope is a top level scope, false if not.","summary":"

    Returns true if this scope is a top level scope, false if not.

    ","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/scope.cr#L150","def":{"name":"top_level?","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"outer_scope.nil?"}},{"id":"type_definition?-instance-method","html_id":"type_definition?-instance-method","name":"type_definition?","doc":"Returns true if and only if current scope represents some\ntype definition, for example a class.","summary":"

    Returns true if and only if current scope represents some type definition, for example a class.

    ","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/scope.cr#L126","def":{"name":"type_definition?","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"((((node.is_a?(Crystal::ClassDef) || node.is_a?(Crystal::ModuleDef)) || node.is_a?(Crystal::LibDef)) || node.is_a?(Crystal::FunDef)) || node.is_a?(Crystal::TypeDef)) || node.is_a?(Crystal::CStructOrUnionDef)"}},{"id":"variables:Array(Ameba::AST::Variable)-instance-method","html_id":"variables:Array(Ameba::AST::Variable)-instance-method","name":"variables","doc":"Link to local variables","summary":"

    Link to local variables

    ","abstract":false,"args":[],"args_string":" : Array(Ameba::AST::Variable)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/scope.cr#L8","def":{"name":"variables","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@variables"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/AST/ScopeVisitor","path":"Ameba/AST/ScopeVisitor.html","kind":"class","full_name":"Ameba::AST::ScopeVisitor","name":"ScopeVisitor","abstract":false,"superclass":{"html_id":"ameba/Ameba/AST/BaseVisitor","kind":"class","full_name":"Ameba::AST::BaseVisitor","name":"BaseVisitor"},"ancestors":[{"html_id":"ameba/Ameba/AST/BaseVisitor","kind":"class","full_name":"Ameba::AST::BaseVisitor","name":"BaseVisitor"},{"html_id":"ameba/Crystal/Visitor","kind":"class","full_name":"Crystal::Visitor","name":"Visitor"},{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/ast/visitors/scope_visitor.cr","line_number":5,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/visitors/scope_visitor.cr#L5"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"RECORD_NODE_NAME","name":"RECORD_NODE_NAME","value":"\"record\"","doc":null,"summary":null},{"id":"SUPER_NODE_NAME","name":"SUPER_NODE_NAME","value":"\"super\"","doc":null,"summary":null}],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/AST","kind":"module","full_name":"Ameba::AST","name":"AST"},"doc":"AST Visitor that traverses the source and constructs scopes.","summary":"

    AST Visitor that traverses the source and constructs scopes.

    ","class_methods":[],"constructors":[{"id":"new(rule,source)-class-method","html_id":"new(rule,source)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"rule","doc":null,"default_value":"","external_name":"rule","restriction":""},{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"args_string":"(rule, source)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/visitors/scope_visitor.cr#L13","def":{"name":"new","args":[{"name":"rule","doc":null,"default_value":"","external_name":"rule","restriction":""},{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"_ = allocate\n_.initialize(rule, source)\nif _.responds_to?(:finalize)\n ::GC.add_finalizer(_)\nend\n_\n"}}],"instance_methods":[],"macros":[],"types":[]},{"html_id":"ameba/Ameba/AST/Util","path":"Ameba/AST/Util.html","kind":"module","full_name":"Ameba::AST::Util","name":"Util","abstract":false,"superclass":null,"ancestors":[],"locations":[{"filename":"src/ameba/ast/util.cr","line_number":2,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/util.cr#L2"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[{"html_id":"ameba/Ameba/AST/Branchable","kind":"class","full_name":"Ameba::AST::Branchable","name":"Branchable"},{"html_id":"ameba/Ameba/AST/FlowExpression","kind":"class","full_name":"Ameba::AST::FlowExpression","name":"FlowExpression"},{"html_id":"ameba/Ameba/AST/FlowExpressionVisitor","kind":"class","full_name":"Ameba::AST::FlowExpressionVisitor","name":"FlowExpressionVisitor"},{"html_id":"ameba/Ameba/Rule/Lint/EmptyExpression","kind":"struct","full_name":"Ameba::Rule::Lint::EmptyExpression","name":"EmptyExpression"},{"html_id":"ameba/Ameba/Rule/Lint/EmptyLoop","kind":"struct","full_name":"Ameba::Rule::Lint::EmptyLoop","name":"EmptyLoop"},{"html_id":"ameba/Ameba/Rule/Lint/LiteralInCondition","kind":"struct","full_name":"Ameba::Rule::Lint::LiteralInCondition","name":"LiteralInCondition"},{"html_id":"ameba/Ameba/Rule/Lint/LiteralInInterpolation","kind":"struct","full_name":"Ameba::Rule::Lint::LiteralInInterpolation","name":"LiteralInInterpolation"},{"html_id":"ameba/Ameba/Rule/Lint/RedundantStringCoercion","kind":"struct","full_name":"Ameba::Rule::Lint::RedundantStringCoercion","name":"RedundantStringCoercion"},{"html_id":"ameba/Ameba/Rule/Lint/UnreachableCode","kind":"struct","full_name":"Ameba::Rule::Lint::UnreachableCode","name":"UnreachableCode"},{"html_id":"ameba/Ameba/Rule/Style/RedundantBegin","kind":"struct","full_name":"Ameba::Rule::Style::RedundantBegin","name":"RedundantBegin"}],"namespace":{"html_id":"ameba/Ameba/AST","kind":"module","full_name":"Ameba::AST","name":"AST"},"doc":"Utility module for Ameba's rules.","summary":"

    Utility module for Ameba's rules.

    ","class_methods":[],"constructors":[],"instance_methods":[{"id":"abort?(node)-instance-method","html_id":"abort?(node)-instance-method","name":"abort?","doc":"Returns true if node represents `abort` method call.","summary":"

    Returns true if node represents abort method call.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"args_string":"(node)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/util.cr#L141","def":{"name":"abort?","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"((node.is_a?(Crystal::Call) && (node.name == \"abort\")) && node.args.size <= 2) && node.obj.nil?"}},{"id":"exit?(node)-instance-method","html_id":"exit?(node)-instance-method","name":"exit?","doc":"Returns true if node represents `exit` method call.","summary":"

    Returns true if node represents exit method call.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"args_string":"(node)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/util.cr#L135","def":{"name":"exit?","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"((node.is_a?(Crystal::Call) && (node.name == \"exit\")) && node.args.size <= 1) && node.obj.nil?"}},{"id":"flow_command?(node,in_loop)-instance-method","html_id":"flow_command?(node,in_loop)-instance-method","name":"flow_command?","doc":"Returns true if node is a flow command, false - otherwise.\nNode represents a flow command if it is a control expression,\nor special call node that interrupts execution (i.e. raise, exit, abort).","summary":"

    Returns true if node is a flow command, false - otherwise.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""},{"name":"in_loop","doc":null,"default_value":"","external_name":"in_loop","restriction":""}],"args_string":"(node, in_loop)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/util.cr#L62","def":{"name":"flow_command?","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""},{"name":"in_loop","doc":null,"default_value":"","external_name":"in_loop","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"case node\nwhen Crystal::Return\n true\nwhen Crystal::Break, Crystal::Next\n in_loop\nwhen Crystal::Call\n ((raise?(node)) || (exit?(node))) || (abort?(node))\nelse\n false\nend"}},{"id":"flow_expression?(node,in_loop=false)-instance-method","html_id":"flow_expression?(node,in_loop=false)-instance-method","name":"flow_expression?","doc":"Returns true if node is a flow expression, false if not.\nNode represents a flow expression if it is full-filled by a flow command.\n\nFor example, this node is a flow expression, because each branch contains\na flow command `return`:\n\n```\nif a > 0\n return :positive\nelsif a < 0\n return :negative\nelse\n return :zero\nend\n```\n\nThis node is a not a flow expression:\n\n```\nif a > 0\n return :positive\nend\n```\n\nThat's because not all branches return(i.e. `else` is missing).\n","summary":"

    Returns true if node is a flow expression, false if not.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""},{"name":"in_loop","doc":null,"default_value":"false","external_name":"in_loop","restriction":""}],"args_string":"(node, in_loop = false)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/util.cr#L101","def":{"name":"flow_expression?","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""},{"name":"in_loop","doc":null,"default_value":"false","external_name":"in_loop","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if flow_command?(node, in_loop)\n return true\nend\ncase node\nwhen Crystal::If, Crystal::Unless\n flow_expressions?([node.then, node.else], in_loop)\nwhen Crystal::BinaryOp\n flow_expression?(node.left, in_loop)\nwhen Crystal::Case\n flow_expressions?([node.whens, node.else].flatten, in_loop)\nwhen Crystal::ExceptionHandler\n flow_expressions?([node.else || node.body, node.rescues].flatten, in_loop)\nwhen Crystal::While, Crystal::Until\n flow_expression?(node.body, in_loop)\nwhen Crystal::Rescue, Crystal::When\n flow_expression?(node.body, in_loop)\nwhen Crystal::Expressions\n node.expressions.any? do |exp|\n flow_expression?(exp, in_loop)\n end\nelse\n false\nend\n"}},{"id":"literal?(node)-instance-method","html_id":"literal?(node)-instance-method","name":"literal?","doc":"Returns true if current `node` is a literal, false otherwise.","summary":"

    Returns true if current node is a literal, false otherwise.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"args_string":"(node)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/util.cr#L4","def":{"name":"literal?","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"case node\nwhen Crystal::NilLiteral, Crystal::BoolLiteral, Crystal::NumberLiteral, Crystal::CharLiteral, Crystal::StringLiteral, Crystal::SymbolLiteral, Crystal::RegexLiteral, Crystal::ProcLiteral, Crystal::MacroLiteral\n true\nwhen Crystal::RangeLiteral\n (literal?(node.from)) && (literal?(node.to))\nwhen Crystal::ArrayLiteral, Crystal::TupleLiteral\n node.elements.all? do |el|\n literal?(el)\n end\nwhen Crystal::HashLiteral\n node.entries.all? do |entry|\n (literal?(entry.key)) && (literal?(entry.value))\n end\nwhen Crystal::NamedTupleLiteral\n node.entries.all? do |entry|\n literal?(entry.value)\n end\nelse\n false\nend"}},{"id":"loop?(node)-instance-method","html_id":"loop?(node)-instance-method","name":"loop?","doc":"Returns true if node represents a loop.","summary":"

    Returns true if node represents a loop.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"args_string":"(node)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/util.cr#L147","def":{"name":"loop?","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"case node\nwhen Crystal::While, Crystal::Until\n true\nwhen Crystal::Call\n ((node.name == \"loop\") && (node.args.size == 0)) && node.obj.nil?\nelse\n false\nend"}},{"id":"node_source(node,code_lines)-instance-method","html_id":"node_source(node,code_lines)-instance-method","name":"node_source","doc":"Returns a source code for the current node.\nThis method uses `node.location` and `node.end_location`\nto determine and cut a piece of source of the node.","summary":"

    Returns a source code for the current node.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""},{"name":"code_lines","doc":null,"default_value":"","external_name":"code_lines","restriction":""}],"args_string":"(node, code_lines)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/util.cr#L33","def":{"name":"node_source","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""},{"name":"code_lines","doc":null,"default_value":"","external_name":"code_lines","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"loc, end_loc = node.location, node.end_location\nif loc && end_loc\nelse\n return\nend\nline, column = loc.line_number - 1, loc.column_number - 1\nend_line, end_column = end_loc.line_number - 1, end_loc.column_number - 1\nnode_lines = code_lines[line..end_line]\nfirst_line, last_line = node_lines[0]?, node_lines[-1]?\nif first_line.nil? || last_line.nil?\n return\nend\nif first_line.size < column\n return\nend\nnode_lines[0] = first_line.sub(0...column, \"\")\nif line == end_line\n end_column = end_column - column\n last_line = node_lines[0]\nend\nif last_line.size < (end_column + 1)\n return\nend\nnode_lines[-1] = last_line.sub((end_column + 1)...last_line.size, \"\")\nnode_lines\n"}},{"id":"raise?(node)-instance-method","html_id":"raise?(node)-instance-method","name":"raise?","doc":"Returns true if node represents `raise` method call.","summary":"

    Returns true if node represents raise method call.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"args_string":"(node)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/util.cr#L129","def":{"name":"raise?","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"((node.is_a?(Crystal::Call) && (node.name == \"raise\")) && (node.args.size == 1)) && node.obj.nil?"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/AST/Variable","path":"Ameba/AST/Variable.html","kind":"class","full_name":"Ameba::AST::Variable","name":"Variable","abstract":false,"superclass":{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},"ancestors":[{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/ast/variabling/variable.cr","line_number":4,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/variabling/variable.cr#L4"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[{"html_id":"ameba/Ameba/AST/Reference","kind":"class","full_name":"Ameba::AST::Reference","name":"Reference"}],"including_types":[],"namespace":{"html_id":"ameba/Ameba/AST","kind":"module","full_name":"Ameba::AST","name":"AST"},"doc":"Represents the existence of the local variable.\nHolds the var node and variable assigments.","summary":"

    Represents the existence of the local variable.

    ","class_methods":[],"constructors":[{"id":"new(node,scope)-class-method","html_id":"new(node,scope)-class-method","name":"new","doc":"Creates a new variable(in the scope).\n\n```\nVariable.new(node, scope)\n```\n","summary":"

    Creates a new variable(in the scope).

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""},{"name":"scope","doc":null,"default_value":"","external_name":"scope","restriction":""}],"args_string":"(node, scope)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/variabling/variable.cr#L31","def":{"name":"new","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""},{"name":"scope","doc":null,"default_value":"","external_name":"scope","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"_ = allocate\n_.initialize(node, scope)\nif _.responds_to?(:finalize)\n ::GC.add_finalizer(_)\nend\n_\n"}}],"instance_methods":[{"id":"assign(node,scope)-instance-method","html_id":"assign(node,scope)-instance-method","name":"assign","doc":"Assigns the variable (creates a new assignment).\nVariable may have multiple assignments.\n\n```\nvariable = Variable.new(node, scope)\nvariable.assign(node1)\nvariable.assign(node2)\nvariable.assignment.size # => 2\n```\n","summary":"

    Assigns the variable (creates a new assignment).

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""},{"name":"scope","doc":null,"default_value":"","external_name":"scope","restriction":""}],"args_string":"(node, scope)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/variabling/variable.cr#L49","def":{"name":"assign","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""},{"name":"scope","doc":null,"default_value":"","external_name":"scope","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"assignments << (Assignment.new(node, self, scope))\nupdate_assign_reference!\n"}},{"id":"assign_before_reference:Crystal::ASTNode?-instance-method","html_id":"assign_before_reference:Crystal::ASTNode?-instance-method","name":"assign_before_reference","doc":"Node of the first assignment which can be available before any reference.","summary":"

    Node of the first assignment which can be available before any reference.

    ","abstract":false,"args":[],"args_string":" : Crystal::ASTNode?","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/variabling/variable.cr#L18","def":{"name":"assign_before_reference","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Crystal::ASTNode | ::Nil","visibility":"Public","body":"@assign_before_reference"}},{"id":"assignments:Array(Ameba::AST::Assignment)-instance-method","html_id":"assignments:Array(Ameba::AST::Assignment)-instance-method","name":"assignments","doc":"List of the assigments of this variable.","summary":"

    List of the assigments of this variable.

    ","abstract":false,"args":[],"args_string":" : Array(Ameba::AST::Assignment)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/variabling/variable.cr#L6","def":{"name":"assignments","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@assignments"}},{"id":"captured_by_block?(scope=@scope)-instance-method","html_id":"captured_by_block?(scope=@scope)-instance-method","name":"captured_by_block?","doc":"Returns true if the current var is referenced in\nin the block. For example this variable is captured\nby block:\n\n```\na = 1\n3.times { |i| a = a + i }\n```\n\nAnd this variable is not captured by block.\n\n```\ni = 1\n3.times { |i| i + 1 }\n```","summary":"

    Returns true if the current var is referenced in in the block.

    ","abstract":false,"args":[{"name":"scope","doc":null,"default_value":"@scope","external_name":"scope","restriction":""}],"args_string":"(scope = @scope)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/variabling/variable.cr#L114","def":{"name":"captured_by_block?","args":[{"name":"scope","doc":null,"default_value":"@scope","external_name":"scope","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"scope.inner_scopes.each do |inner_scope|\n if inner_scope.block? && (inner_scope.references?(self))\n return true\n end\n if captured_by_block?(inner_scope)\n return true\n end\nend\nfalse\n"}},{"id":"declared_before?(node)-instance-method","html_id":"declared_before?(node)-instance-method","name":"declared_before?","doc":"Returns true if the variable is delcared before the `node`.","summary":"

    Returns true if the variable is delcared before the #node.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"args_string":"(node)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/variabling/variable.cr#L161","def":{"name":"declared_before?","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"var_location, node_location = location, node.location\nif var_location.nil? || node_location.nil?\n return\nend\n(var_location.line_number < node_location.line_number) || ((var_location.line_number == node_location.line_number) && var_location.column_number < node_location.column_number)\n"}},{"id":"end_location(*args,**options)-instance-method","html_id":"end_location(*args,**options)-instance-method","name":"end_location","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/variabling/variable.cr#L21","def":{"name":"end_location","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.end_location(*args, **options)"}},{"id":"end_location(*args,**options,&)-instance-method","html_id":"end_location(*args,**options,&)-instance-method","name":"end_location","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options, &)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/variabling/variable.cr#L21","def":{"name":"end_location","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":1,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.end_location(*args, **options) do |*yield_args|\n yield *yield_args\nend"}},{"id":"eql?(node)-instance-method","html_id":"eql?(node)-instance-method","name":"eql?","doc":"Returns true if the `node` represents exactly\nthe same Crystal node as `@node`.","summary":"

    Returns true if the #node represents exactly the same Crystal node as @node.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"args_string":"(node)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/variabling/variable.cr#L154","def":{"name":"eql?","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"(node.is_a?(Crystal::Var) && (node.name == @node.name)) && (node.location == @node.location)"}},{"id":"ignored?-instance-method","html_id":"ignored?-instance-method","name":"ignored?","doc":"Returns true if the name starts with '_', false if not.","summary":"

    Returns true if the name starts with '_', false if not.

    ","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/variabling/variable.cr#L148","def":{"name":"ignored?","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"name.starts_with?('_')"}},{"id":"location(*args,**options)-instance-method","html_id":"location(*args,**options)-instance-method","name":"location","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/variabling/variable.cr#L20","def":{"name":"location","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.location(*args, **options)"}},{"id":"location(*args,**options,&)-instance-method","html_id":"location(*args,**options,&)-instance-method","name":"location","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options, &)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/variabling/variable.cr#L20","def":{"name":"location","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":1,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.location(*args, **options) do |*yield_args|\n yield *yield_args\nend"}},{"id":"name(*args,**options)-instance-method","html_id":"name(*args,**options)-instance-method","name":"name","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/variabling/variable.cr#L22","def":{"name":"name","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.name(*args, **options)"}},{"id":"name(*args,**options,&)-instance-method","html_id":"name(*args,**options,&)-instance-method","name":"name","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options, &)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/variabling/variable.cr#L22","def":{"name":"name","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":1,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.name(*args, **options) do |*yield_args|\n yield *yield_args\nend"}},{"id":"node:Crystal::Var-instance-method","html_id":"node:Crystal::Var-instance-method","name":"node","doc":"The actual var node.","summary":"

    The actual var node.

    ","abstract":false,"args":[],"args_string":" : Crystal::Var","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/variabling/variable.cr#L12","def":{"name":"node","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Crystal::Var","visibility":"Public","body":"@node"}},{"id":"reference(node:Crystal::Var,scope:Scope)-instance-method","html_id":"reference(node:Crystal::Var,scope:Scope)-instance-method","name":"reference","doc":"Creates a reference to this variable in some scope.\n\n```\nvariable = Variable.new(node, scope)\nvariable.reference(var_node, some_scope)\n```\n","summary":"

    Creates a reference to this variable in some scope.

    ","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Var"},{"name":"scope","doc":null,"default_value":"","external_name":"scope","restriction":"Scope"}],"args_string":"(node : Crystal::Var, scope : Scope)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/variabling/variable.cr#L73","def":{"name":"reference","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Var"},{"name":"scope","doc":null,"default_value":"","external_name":"scope","restriction":"Scope"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"(Reference.new(node, scope)).tap do |reference|\n references << reference\n scope.references << reference\nend"}},{"id":"reference_assignments!-instance-method","html_id":"reference_assignments!-instance-method","name":"reference_assignments!","doc":"Reference variable's assignments.\n\n```\nvariable = Variable.new(node, scope)\nvariable.assign(assign_node)\nvariable.reference_assignments!\n```","summary":"

    Reference variable's assignments.

    ","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/variabling/variable.cr#L87","def":{"name":"reference_assignments!","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"consumed_branches = Set(Branch).new\nassignments.reverse_each do |assignment|\n if consumed_branches.includes?(assignment.branch)\n next\n end\n assignment.referenced = true\n if assignment.branch\n else\n break\n end\n consumed_branches << assignment.branch.not_nil!\nend\n"}},{"id":"referenced?-instance-method","html_id":"referenced?-instance-method","name":"referenced?","doc":"Returns true if variable has any reference.\n\n```\nvariable = Variable.new(node, scope)\nvariable.reference(var_node)\nvariable.referenced? # => true\n```","summary":"

    Returns true if variable has any reference.

    ","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/variabling/variable.cr#L62","def":{"name":"referenced?","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"references.any?"}},{"id":"references:Array(Ameba::AST::Reference)-instance-method","html_id":"references:Array(Ameba::AST::Reference)-instance-method","name":"references","doc":"List of the references of this variable.","summary":"

    List of the references of this variable.

    ","abstract":false,"args":[],"args_string":" : Array(Ameba::AST::Reference)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/variabling/variable.cr#L9","def":{"name":"references","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@references"}},{"id":"scope:Scope-instance-method","html_id":"scope:Scope-instance-method","name":"scope","doc":"Scope of this variable.","summary":"

    Scope of this variable.

    ","abstract":false,"args":[],"args_string":" : Scope","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/variabling/variable.cr#L15","def":{"name":"scope","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Scope","visibility":"Public","body":"@scope"}},{"id":"special?-instance-method","html_id":"special?-instance-method","name":"special?","doc":"Returns true if it is a special variable, i.e `$?`.","summary":"

    Returns true if it is a special variable, i.e $?.

    ","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/variabling/variable.cr#L35","def":{"name":"special?","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.special_var?"}},{"id":"target_of?(assign)-instance-method","html_id":"target_of?(assign)-instance-method","name":"target_of?","doc":"Returns true if the variable is a target (on the left) of the assignment,\nfalse otherwise.","summary":"

    Returns true if the variable is a target (on the left) of the assignment, false otherwise.

    ","abstract":false,"args":[{"name":"assign","doc":null,"default_value":"","external_name":"assign","restriction":""}],"args_string":"(assign)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/variabling/variable.cr#L136","def":{"name":"target_of?","args":[{"name":"assign","doc":null,"default_value":"","external_name":"assign","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"case assign\nwhen Crystal::Assign\n eql?(assign.target)\nwhen Crystal::OpAssign\n eql?(assign.target)\nwhen Crystal::MultiAssign\n assign.targets.any? do |t|\n eql?(t)\n end\nwhen Crystal::UninitializedVar\n eql?(assign.var)\nelse\n false\nend"}},{"id":"to_s(*args,**options)-instance-method","html_id":"to_s(*args,**options)-instance-method","name":"to_s","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/variabling/variable.cr#L23","def":{"name":"to_s","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.to_s(*args, **options)"}},{"id":"to_s(*args,**options,&)-instance-method","html_id":"to_s(*args,**options,&)-instance-method","name":"to_s","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options, &)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/variabling/variable.cr#L23","def":{"name":"to_s","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":1,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.to_s(*args, **options) do |*yield_args|\n yield *yield_args\nend"}},{"id":"used_in_macro?(scope=@scope)-instance-method","html_id":"used_in_macro?(scope=@scope)-instance-method","name":"used_in_macro?","doc":"Returns true if current variable potentially referenced in a macro,\nfalse if not.","summary":"

    Returns true if current variable potentially referenced in a macro, false if not.

    ","abstract":false,"args":[{"name":"scope","doc":null,"default_value":"@scope","external_name":"scope","restriction":""}],"args_string":"(scope = @scope)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/ast/variabling/variable.cr#L125","def":{"name":"used_in_macro?","args":[{"name":"scope","doc":null,"default_value":"@scope","external_name":"scope","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"scope.inner_scopes.each do |inner_scope|\n if (MacroReferenceFinder.new(inner_scope.node, node.name)).references\n return true\n end\nend\nif (MacroReferenceFinder.new(scope.node, node.name)).references\n return true\nend\nif (outer_scope = scope.outer_scope) && (used_in_macro?(outer_scope))\n return true\nend\nfalse\n"}}],"macros":[],"types":[]}]},{"html_id":"ameba/Ameba/Config","path":"Ameba/Config.html","kind":"class","full_name":"Ameba::Config","name":"Config","abstract":false,"superclass":{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},"ancestors":[{"html_id":"ameba/Ameba/GlobUtils","kind":"module","full_name":"Ameba::GlobUtils","name":"GlobUtils"},{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/config.cr","line_number":15,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/config.cr#L15"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"AVAILABLE_FORMATTERS","name":"AVAILABLE_FORMATTERS","value":"{progress: Formatter::DotFormatter, todo: Formatter::TODOFormatter, flycheck: Formatter::FlycheckFormatter, silent: Formatter::BaseFormatter, disabled: Formatter::DisabledFormatter, json: Formatter::JSONFormatter}","doc":null,"summary":null},{"id":"DEFAULT_GLOBS","name":"DEFAULT_GLOBS","value":"[\"**/*.cr\", \"!lib\"] of ::String","doc":null,"summary":null},{"id":"PATH","name":"PATH","value":"\".ameba.yml\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/Ameba/GlobUtils","kind":"module","full_name":"Ameba::GlobUtils","name":"GlobUtils"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba","kind":"module","full_name":"Ameba","name":"Ameba"},"doc":"A configuration entry for `Ameba::Runner`.\n\nConfig can be loaded from configuration YAML file and adjusted.\n\n```\nconfig = Config.load\nconfig.formatter = my_formatter\n```\n\nBy default config loads `.ameba.yml` file in a current directory.\n","summary":"

    A configuration entry for Ameba::Runner.

    ","class_methods":[{"id":"formatter_names-class-method","html_id":"formatter_names-class-method","name":"formatter_names","doc":null,"summary":null,"abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/config.cr#L86","def":{"name":"formatter_names","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"AVAILABLE_FORMATTERS.keys.join(\"|\")"}},{"id":"load(path=PATH,colors=true)-class-method","html_id":"load(path=PATH,colors=true)-class-method","name":"load","doc":"Loads YAML configuration file by `path`.\n\n```\nconfig = Ameba::Config.load\n```\n","summary":"

    Loads YAML configuration file by path.

    ","abstract":false,"args":[{"name":"path","doc":null,"default_value":"PATH","external_name":"path","restriction":""},{"name":"colors","doc":null,"default_value":"true","external_name":"colors","restriction":""}],"args_string":"(path = PATH, colors = true)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/config.cr#L78","def":{"name":"load","args":[{"name":"path","doc":null,"default_value":"PATH","external_name":"path","restriction":""},{"name":"colors","doc":null,"default_value":"true","external_name":"colors","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"begin\n Colorize.enabled = colors\n content = File.exists?(path) ? File.read(path) : \"{}\"\n Config.new(YAML.parse(content))\nrescue e\n raise(\"Config file is invalid: #{e.message}\")\nend"}}],"constructors":[],"instance_methods":[{"id":"excluded:Array(String)-instance-method","html_id":"excluded:Array(String)-instance-method","name":"excluded","doc":"Represents a list of paths to exclude from globs.\nCan have wildcards.\n\n```\nconfig = Ameba::Config.load\nconfig.excluded = [\"spec\", \"src/server/*.cr\"]\n```","summary":"

    Represents a list of paths to exclude from globs.

    ","abstract":false,"args":[],"args_string":" : Array(String)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/config.cr#L56","def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String)","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String))-instance-method","html_id":"excluded=(excluded:Array(String))-instance-method","name":"excluded=","doc":"Represents a list of paths to exclude from globs.\nCan have wildcards.\n\n```\nconfig = Ameba::Config.load\nconfig.excluded = [\"spec\", \"src/server/*.cr\"]\n```","summary":"

    Represents a list of paths to exclude from globs.

    ","abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String)"}],"args_string":"(excluded : Array(String))","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/config.cr#L56","def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String)"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"formatter-instance-method","html_id":"formatter-instance-method","name":"formatter","doc":"Returns a formatter to be used while inspecting files.\nIf formatter is not set, it will return default formatter.\n\n```\nconfig = Ameba::Config.load\nconfig.formatter = custom_formatter\nconfig.formatter\n```\n","summary":"

    Returns a formatter to be used while inspecting files.

    ","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/config.cr#L114","def":{"name":"formatter","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@formatter || (@formatter = Formatter::DotFormatter.new)"}},{"id":"formatter=(formatter:Formatter::BaseFormatter?)-instance-method","html_id":"formatter=(formatter:Formatter::BaseFormatter?)-instance-method","name":"formatter=","doc":null,"summary":null,"abstract":false,"args":[{"name":"formatter","doc":null,"default_value":"","external_name":"formatter","restriction":"Formatter::BaseFormatter | ::Nil"}],"args_string":"(formatter : Formatter::BaseFormatter?)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/config.cr#L34","def":{"name":"formatter=","args":[{"name":"formatter","doc":null,"default_value":"","external_name":"formatter","restriction":"Formatter::BaseFormatter | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@formatter = formatter"}},{"id":"formatter=(name:String|Symbol)-instance-method","html_id":"formatter=(name:String|Symbol)-instance-method","name":"formatter=","doc":"Sets formatter by name.\n\n```\nconfig = Ameba::Config.load\nconfig.formatter = :progress\n```\n","summary":"

    Sets formatter by name.

    ","abstract":false,"args":[{"name":"name","doc":null,"default_value":"","external_name":"name","restriction":"String | Symbol"}],"args_string":"(name : String | Symbol)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/config.cr#L125","def":{"name":"formatter=","args":[{"name":"name","doc":null,"default_value":"","external_name":"name","restriction":"String | Symbol"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if f = AVAILABLE_FORMATTERS[name]?\n @formatter = f.new\nelse\n raise(\"Unknown formatter `#{name}`. Use one of #{Config.formatter_names}.\")\nend"}},{"id":"globs:Array(String)-instance-method","html_id":"globs:Array(String)-instance-method","name":"globs","doc":"Returns a list of paths (with wildcards) to files.\nRepresents a list of sources to be inspected.\nIf globs are not set, it will return default list of files.\n\n```\nconfig = Ameba::Config.load\nconfig.globs = [\"**/*.cr\"]\nconfig.globs\n```","summary":"

    Returns a list of paths (with wildcards) to files.

    ","abstract":false,"args":[],"args_string":" : Array(String)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/config.cr#L47","def":{"name":"globs","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String)","visibility":"Public","body":"@globs"}},{"id":"globs=(globs:Array(String))-instance-method","html_id":"globs=(globs:Array(String))-instance-method","name":"globs=","doc":"Returns a list of paths (with wildcards) to files.\nRepresents a list of sources to be inspected.\nIf globs are not set, it will return default list of files.\n\n```\nconfig = Ameba::Config.load\nconfig.globs = [\"**/*.cr\"]\nconfig.globs\n```","summary":"

    Returns a list of paths (with wildcards) to files.

    ","abstract":false,"args":[{"name":"globs","doc":null,"default_value":"","external_name":"globs","restriction":"Array(String)"}],"args_string":"(globs : Array(String))","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/config.cr#L47","def":{"name":"globs=","args":[{"name":"globs","doc":null,"default_value":"","external_name":"globs","restriction":"Array(String)"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@globs = globs"}},{"id":"rules:Array(Rule::Base)-instance-method","html_id":"rules:Array(Rule::Base)-instance-method","name":"rules","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(Rule::Base)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/config.cr#L35","def":{"name":"rules","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(Rule::Base)","visibility":"Public","body":"@rules"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/config.cr#L36","def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/config.cr#L36","def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"sources-instance-method","html_id":"sources-instance-method","name":"sources","doc":"Returns a list of sources matching globs and excluded sections.\n\n```\nconfig = Ameba::Config.load\nconfig.sources # => list of default sources\nconfig.globs = [\"**/*.cr\"]\nconfig.excluded = [\"spec\"]\nconfig.sources # => list of sources pointing to files found by the wildcards\n```\n","summary":"

    Returns a list of sources matching globs and excluded sections.

    ","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/config.cr#L100","def":{"name":"sources","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"((find_files_by_globs(globs)) - (find_files_by_globs(excluded))).map do |path|\n Source.new(File.read(path), path)\nend"}},{"id":"update_rule(name,enabled=true,excluded=nil)-instance-method","html_id":"update_rule(name,enabled=true,excluded=nil)-instance-method","name":"update_rule","doc":"Updates rule properties.\n\n```\nconfig = Ameba::Config.load\nconfig.update_rule \"MyRuleName\", enabled: false\n```\n","summary":"

    Updates rule properties.

    ","abstract":false,"args":[{"name":"name","doc":null,"default_value":"","external_name":"name","restriction":""},{"name":"enabled","doc":null,"default_value":"true","external_name":"enabled","restriction":""},{"name":"excluded","doc":null,"default_value":"nil","external_name":"excluded","restriction":""}],"args_string":"(name, enabled = true, excluded = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/config.cr#L140","def":{"name":"update_rule","args":[{"name":"name","doc":null,"default_value":"","external_name":"name","restriction":""},{"name":"enabled","doc":null,"default_value":"true","external_name":"enabled","restriction":""},{"name":"excluded","doc":null,"default_value":"nil","external_name":"excluded","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"index = @rules.index do |r|\n r.name == name\nend\nif index\nelse\n raise(ArgumentError.new(\"Rule `#{name}` does not exist\"))\nend\nrule = @rules[index]\nrule.enabled = enabled\nrule.excluded = excluded\n@rules[index] = rule\n"}},{"id":"update_rules(names,**args)-instance-method","html_id":"update_rules(names,**args)-instance-method","name":"update_rules","doc":"Updates rules properties.\n\n```\nconfig = Ameba::Config.load\nconfig.update_rules %w(Rule1 Rule2), enabled: true\n```\n\nalso it allows to update groups of rules:\n\n```\nconfig.update_rules %w(Group1 Group2), enabled: true\n```\n","summary":"

    Updates rules properties.

    ","abstract":false,"args":[{"name":"names","doc":null,"default_value":"","external_name":"names","restriction":""}],"args_string":"(names, **args)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/config.cr#L163","def":{"name":"update_rules","args":[{"name":"names","doc":null,"default_value":"","external_name":"names","restriction":""}],"double_splat":{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""},"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"names.try(&.each do |name|\n if group = @rule_groups[name]?\n group.each do |rule|\n update_rule(rule.name, **args)\n end\n else\n update_rule(name, **args)\n end\nend)"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Formatter","path":"Ameba/Formatter.html","kind":"module","full_name":"Ameba::Formatter","name":"Formatter","abstract":false,"superclass":null,"ancestors":[],"locations":[{"filename":"src/ameba/formatter/base_formatter.cr","line_number":4,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/formatter/base_formatter.cr#L4"},{"filename":"src/ameba/formatter/disabled_formatter.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/formatter/disabled_formatter.cr#L1"},{"filename":"src/ameba/formatter/dot_formatter.cr","line_number":3,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/formatter/dot_formatter.cr#L3"},{"filename":"src/ameba/formatter/explain_formatter.cr","line_number":3,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/formatter/explain_formatter.cr#L3"},{"filename":"src/ameba/formatter/flycheck_formatter.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/formatter/flycheck_formatter.cr#L1"},{"filename":"src/ameba/formatter/json_formatter.cr","line_number":3,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/formatter/json_formatter.cr#L3"},{"filename":"src/ameba/formatter/todo_formatter.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/formatter/todo_formatter.cr#L1"},{"filename":"src/ameba/formatter/util.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/formatter/util.cr#L1"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba","kind":"module","full_name":"Ameba","name":"Ameba"},"doc":"A module that utilizes Ameba's formatters.","summary":"

    A module that utilizes Ameba's formatters.

    ","class_methods":[],"constructors":[],"instance_methods":[],"macros":[],"types":[{"html_id":"ameba/Ameba/Formatter/BaseFormatter","path":"Ameba/Formatter/BaseFormatter.html","kind":"class","full_name":"Ameba::Formatter::BaseFormatter","name":"BaseFormatter","abstract":false,"superclass":{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},"ancestors":[{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/formatter/base_formatter.cr","line_number":8,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/formatter/base_formatter.cr#L8"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[{"html_id":"ameba/Ameba/Formatter/DisabledFormatter","kind":"class","full_name":"Ameba::Formatter::DisabledFormatter","name":"DisabledFormatter"},{"html_id":"ameba/Ameba/Formatter/DotFormatter","kind":"class","full_name":"Ameba::Formatter::DotFormatter","name":"DotFormatter"},{"html_id":"ameba/Ameba/Formatter/FlycheckFormatter","kind":"class","full_name":"Ameba::Formatter::FlycheckFormatter","name":"FlycheckFormatter"},{"html_id":"ameba/Ameba/Formatter/JSONFormatter","kind":"class","full_name":"Ameba::Formatter::JSONFormatter","name":"JSONFormatter"}],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Formatter","kind":"module","full_name":"Ameba::Formatter","name":"Formatter"},"doc":"A base formatter for all formatters. It uses `output` IO\nto report results and also implements stub methods for\ncallbacks in `Ameba::Runner#run` method.","summary":"

    A base formatter for all formatters.

    ","class_methods":[],"constructors":[{"id":"new(output=STDOUT)-class-method","html_id":"new(output=STDOUT)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"output","doc":null,"default_value":"STDOUT","external_name":"output","restriction":""}],"args_string":"(output = STDOUT)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/formatter/base_formatter.cr#L13","def":{"name":"new","args":[{"name":"output","doc":null,"default_value":"STDOUT","external_name":"output","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"_ = allocate\n_.initialize(output)\nif _.responds_to?(:finalize)\n ::GC.add_finalizer(_)\nend\n_\n"}}],"instance_methods":[{"id":"config:Hash(Symbol,Bool|String)-instance-method","html_id":"config:Hash(Symbol,Bool|String)-instance-method","name":"config","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Hash(Symbol, Bool | String)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/formatter/base_formatter.cr#L11","def":{"name":"config","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@config"}},{"id":"finished(sources)-instance-method","html_id":"finished(sources)-instance-method","name":"finished","doc":"Callback that indicates when inspection is finished.\nA list of inspected sources is passed as an argument.","summary":"

    Callback that indicates when inspection is finished.

    ","abstract":false,"args":[{"name":"sources","doc":null,"default_value":"","external_name":"sources","restriction":""}],"args_string":"(sources)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/formatter/base_formatter.cr#L30","def":{"name":"finished","args":[{"name":"sources","doc":null,"default_value":"","external_name":"sources","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":""}},{"id":"output:IO::FileDescriptor|IO::Memory-instance-method","html_id":"output:IO::FileDescriptor|IO::Memory-instance-method","name":"output","doc":"TODO: allow other IOs","summary":"

    TODO allow other IOs

    ","abstract":false,"args":[],"args_string":" : IO::FileDescriptor | IO::Memory","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/formatter/base_formatter.cr#L10","def":{"name":"output","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"IO::FileDescriptor | IO::Memory","visibility":"Public","body":"@output"}},{"id":"source_finished(source:Source)-instance-method","html_id":"source_finished(source:Source)-instance-method","name":"source_finished","doc":"Callback that indicates when source inspection is finished.\nA corresponding source is passed as an argument.","summary":"

    Callback that indicates when source inspection is finished.

    ","abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":"Source"}],"args_string":"(source : Source)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/formatter/base_formatter.cr#L22","def":{"name":"source_finished","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":"Source"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":""}},{"id":"source_started(source:Source)-instance-method","html_id":"source_started(source:Source)-instance-method","name":"source_started","doc":"Callback that indicates when source inspection is finished.\nA corresponding source is passed as an argument.","summary":"

    Callback that indicates when source inspection is finished.

    ","abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":"Source"}],"args_string":"(source : Source)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/formatter/base_formatter.cr#L26","def":{"name":"source_started","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":"Source"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":""}},{"id":"started(sources)-instance-method","html_id":"started(sources)-instance-method","name":"started","doc":"Callback that indicates when inspecting is started.\nA list of sources to inspect is passed as an argument.","summary":"

    Callback that indicates when inspecting is started.

    ","abstract":false,"args":[{"name":"sources","doc":null,"default_value":"","external_name":"sources","restriction":""}],"args_string":"(sources)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/formatter/base_formatter.cr#L18","def":{"name":"started","args":[{"name":"sources","doc":null,"default_value":"","external_name":"sources","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":""}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Formatter/DisabledFormatter","path":"Ameba/Formatter/DisabledFormatter.html","kind":"class","full_name":"Ameba::Formatter::DisabledFormatter","name":"DisabledFormatter","abstract":false,"superclass":{"html_id":"ameba/Ameba/Formatter/BaseFormatter","kind":"class","full_name":"Ameba::Formatter::BaseFormatter","name":"BaseFormatter"},"ancestors":[{"html_id":"ameba/Ameba/Formatter/BaseFormatter","kind":"class","full_name":"Ameba::Formatter::BaseFormatter","name":"BaseFormatter"},{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/formatter/disabled_formatter.cr","line_number":3,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/formatter/disabled_formatter.cr#L3"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Formatter","kind":"module","full_name":"Ameba::Formatter","name":"Formatter"},"doc":"A formatter that shows all disabled lines by inline directives.","summary":"

    A formatter that shows all disabled lines by inline directives.

    ","class_methods":[],"constructors":[],"instance_methods":[{"id":"finished(sources)-instance-method","html_id":"finished(sources)-instance-method","name":"finished","doc":"Callback that indicates when inspection is finished.\nA list of inspected sources is passed as an argument.","summary":"

    Callback that indicates when inspection is finished.

    ","abstract":false,"args":[{"name":"sources","doc":null,"default_value":"","external_name":"sources","restriction":""}],"args_string":"(sources)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/formatter/disabled_formatter.cr#L4","def":{"name":"finished","args":[{"name":"sources","doc":null,"default_value":"","external_name":"sources","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"output << \"Disabled rules using inline directives: \\n\\n\"\nsources.each do |source|\n source.issues.select(&.disabled?).each do |e|\n if loc = e.location\n output << (\"#{source.path}:#{loc.line_number}\".colorize(:cyan))\n output << \" #{e.rule.name}\\n\"\n end\n end\nend\n"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Formatter/DotFormatter","path":"Ameba/Formatter/DotFormatter.html","kind":"class","full_name":"Ameba::Formatter::DotFormatter","name":"DotFormatter","abstract":false,"superclass":{"html_id":"ameba/Ameba/Formatter/BaseFormatter","kind":"class","full_name":"Ameba::Formatter::BaseFormatter","name":"BaseFormatter"},"ancestors":[{"html_id":"ameba/Ameba/Formatter/Util","kind":"module","full_name":"Ameba::Formatter::Util","name":"Util"},{"html_id":"ameba/Ameba/Formatter/BaseFormatter","kind":"class","full_name":"Ameba::Formatter::BaseFormatter","name":"BaseFormatter"},{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/formatter/dot_formatter.cr","line_number":6,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/formatter/dot_formatter.cr#L6"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[{"html_id":"ameba/Ameba/Formatter/Util","kind":"module","full_name":"Ameba::Formatter::Util","name":"Util"}],"extended_modules":[],"subclasses":[{"html_id":"ameba/Ameba/Formatter/TODOFormatter","kind":"class","full_name":"Ameba::Formatter::TODOFormatter","name":"TODOFormatter"}],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Formatter","kind":"module","full_name":"Ameba::Formatter","name":"Formatter"},"doc":"A formatter that shows a progress of inspection in a terminal using dots.\nIt is similar to Crystal's dot formatter for specs.","summary":"

    A formatter that shows a progress of inspection in a terminal using dots.

    ","class_methods":[],"constructors":[],"instance_methods":[{"id":"finished(sources)-instance-method","html_id":"finished(sources)-instance-method","name":"finished","doc":"Reports a message when inspection is finished.","summary":"

    Reports a message when inspection is finished.

    ","abstract":false,"args":[{"name":"sources","doc":null,"default_value":"","external_name":"sources","restriction":""}],"args_string":"(sources)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/formatter/dot_formatter.cr#L26","def":{"name":"finished","args":[{"name":"sources","doc":null,"default_value":"","external_name":"sources","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"output.flush\noutput << \"\\n\\n\"\nshow_affected_code = !config[:without_affected_code]?\nfailed_sources = sources.reject(&.valid?)\nfailed_sources.each do |source|\n source.issues.each do |issue|\n if issue.disabled?\n next\n end\n if ( location = issue.location).nil?\n next\n end\n output << (\"#{location}\\n\".colorize(:cyan))\n output << (\"[#{issue.rule.severity.symbol}] #{issue.rule.name}: #{issue.message}\\n\".colorize(:red))\n if show_affected_code && (code = affected_code(source, location))\n output << (code.colorize(:default))\n end\n output << \"\\n\"\n end\nend\noutput << (finished_in_message(@started_at, Time.utc))\noutput << (final_message(sources, failed_sources))\n"}},{"id":"source_finished(source:Source)-instance-method","html_id":"source_finished(source:Source)-instance-method","name":"source_finished","doc":"Reports a result of the inspection of a corresponding source.","summary":"

    Reports a result of the inspection of a corresponding source.

    ","abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":"Source"}],"args_string":"(source : Source)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/formatter/dot_formatter.cr#L20","def":{"name":"source_finished","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":"Source"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"sym = source.valid? ? \".\".colorize(:green) : \"F\".colorize(:red)\n@mutex.synchronize do\n output << sym\nend\n"}},{"id":"started(sources)-instance-method","html_id":"started(sources)-instance-method","name":"started","doc":"Reports a message when inspection is started.","summary":"

    Reports a message when inspection is started.

    ","abstract":false,"args":[{"name":"sources","doc":null,"default_value":"","external_name":"sources","restriction":""}],"args_string":"(sources)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/formatter/dot_formatter.cr#L13","def":{"name":"started","args":[{"name":"sources","doc":null,"default_value":"","external_name":"sources","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@started_at = Time.utc\noutput << (started_message(sources.size))\n"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Formatter/ExplainFormatter","path":"Ameba/Formatter/ExplainFormatter.html","kind":"class","full_name":"Ameba::Formatter::ExplainFormatter","name":"ExplainFormatter","abstract":false,"superclass":{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},"ancestors":[{"html_id":"ameba/Ameba/Formatter/Util","kind":"module","full_name":"Ameba::Formatter::Util","name":"Util"},{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/formatter/explain_formatter.cr","line_number":6,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/formatter/explain_formatter.cr#L6"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"HEADING","name":"HEADING","value":"\"## \"","doc":null,"summary":null},{"id":"LINE_BREAK","name":"LINE_BREAK","value":"\"\\n\"","doc":null,"summary":null},{"id":"PREFIX","name":"PREFIX","value":"\" \"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/Ameba/Formatter/Util","kind":"module","full_name":"Ameba::Formatter::Util","name":"Util"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Formatter","kind":"module","full_name":"Ameba::Formatter","name":"Formatter"},"doc":"A formatter that shows the detailed explanation of the issue at\na specific location.","summary":"

    A formatter that shows the detailed explanation of the issue at a specific location.

    ","class_methods":[],"constructors":[{"id":"new(output,loc)-class-method","html_id":"new(output,loc)-class-method","name":"new","doc":"Creates a new instance of ExplainFormatter.\nAccepts *output* which indicates the io where the explanation will be wrtitten to.\nSecond argument is *location* which indicates the location to explain.\n\n```\nExplainFormatter.new output,\n {file: path, line: line_number, column: column_number}\n```\n","summary":"

    Creates a new instance of ExplainFormatter.

    ","abstract":false,"args":[{"name":"output","doc":null,"default_value":"","external_name":"output","restriction":""},{"name":"loc","doc":null,"default_value":"","external_name":"loc","restriction":""}],"args_string":"(output, loc)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/formatter/explain_formatter.cr#L25","def":{"name":"new","args":[{"name":"output","doc":null,"default_value":"","external_name":"output","restriction":""},{"name":"loc","doc":null,"default_value":"","external_name":"loc","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"_ = allocate\n_.initialize(output, loc)\nif _.responds_to?(:finalize)\n ::GC.add_finalizer(_)\nend\n_\n"}}],"instance_methods":[{"id":"finished(sources)-instance-method","html_id":"finished(sources)-instance-method","name":"finished","doc":"Reports the explainations at the *@location*.","summary":"

    Reports the explainations at the @location.

    ","abstract":false,"args":[{"name":"sources","doc":null,"default_value":"","external_name":"sources","restriction":""}],"args_string":"(sources)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/formatter/explain_formatter.cr#L30","def":{"name":"finished","args":[{"name":"sources","doc":null,"default_value":"","external_name":"sources","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"source = sources.find do |s|\n s.path == @location.filename\nend\nif source\nelse\n return\nend\nsource.issues.each do |issue|\n if ((location = issue.location) && (location.line_number == @location.line_number)) && (location.column_number == @location.column_number)\n explain(source, issue)\n end\nend\n"}},{"id":"location:Crystal::Location-instance-method","html_id":"location:Crystal::Location-instance-method","name":"location","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Crystal::Location","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/formatter/explain_formatter.cr#L14","def":{"name":"location","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Crystal::Location","visibility":"Public","body":"@location"}},{"id":"output:IO::FileDescriptor|IO::Memory-instance-method","html_id":"output:IO::FileDescriptor|IO::Memory-instance-method","name":"output","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : IO::FileDescriptor | IO::Memory","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/formatter/explain_formatter.cr#L13","def":{"name":"output","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"IO::FileDescriptor | IO::Memory","visibility":"Public","body":"@output"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Formatter/FlycheckFormatter","path":"Ameba/Formatter/FlycheckFormatter.html","kind":"class","full_name":"Ameba::Formatter::FlycheckFormatter","name":"FlycheckFormatter","abstract":false,"superclass":{"html_id":"ameba/Ameba/Formatter/BaseFormatter","kind":"class","full_name":"Ameba::Formatter::BaseFormatter","name":"BaseFormatter"},"ancestors":[{"html_id":"ameba/Ameba/Formatter/BaseFormatter","kind":"class","full_name":"Ameba::Formatter::BaseFormatter","name":"BaseFormatter"},{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/formatter/flycheck_formatter.cr","line_number":2,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/formatter/flycheck_formatter.cr#L2"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Formatter","kind":"module","full_name":"Ameba::Formatter","name":"Formatter"},"doc":null,"summary":null,"class_methods":[],"constructors":[],"instance_methods":[{"id":"source_finished(source:Source)-instance-method","html_id":"source_finished(source:Source)-instance-method","name":"source_finished","doc":"Callback that indicates when source inspection is finished.\nA corresponding source is passed as an argument.","summary":"

    Callback that indicates when source inspection is finished.

    ","abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":"Source"}],"args_string":"(source : Source)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/formatter/flycheck_formatter.cr#L5","def":{"name":"source_finished","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":"Source"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"source.issues.each do |e|\n if e.disabled?\n next\n end\n if loc = e.location\n @mutex.synchronize do\n output.printf(\"%s:%d:%d: %s: [%s] %s\\n\", source.path, loc.line_number, loc.column_number, e.rule.severity.symbol, e.rule.name, e.message.gsub(\"\\n\", \" \"))\n end\n end\nend"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Formatter/JSONFormatter","path":"Ameba/Formatter/JSONFormatter.html","kind":"class","full_name":"Ameba::Formatter::JSONFormatter","name":"JSONFormatter","abstract":false,"superclass":{"html_id":"ameba/Ameba/Formatter/BaseFormatter","kind":"class","full_name":"Ameba::Formatter::BaseFormatter","name":"BaseFormatter"},"ancestors":[{"html_id":"ameba/Ameba/Formatter/BaseFormatter","kind":"class","full_name":"Ameba::Formatter::BaseFormatter","name":"BaseFormatter"},{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/formatter/json_formatter.cr","line_number":66,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/formatter/json_formatter.cr#L66"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Formatter","kind":"module","full_name":"Ameba::Formatter","name":"Formatter"},"doc":"A formatter that produces the result in a json format.\n\nExample:\n\n```\n{\n \"metadata\": {\n \"ameba_version\": \"x.x.x\",\n \"crystal_version\": \"x.x.x\",\n },\n \"sources\": [\n {\n \"issues\": [\n {\n \"location\": {\n \"column\": 7,\n \"line\": 17,\n },\n \"end_location\": {\n \"column\": 20,\n \"line\": 17,\n },\n \"message\": \"Useless assignment to variable `a`\",\n \"rule_name\": \"UselessAssign\",\n \"severity\": \"Convention\",\n },\n {\n \"location\": {\n \"column\": 7,\n \"line\": 18,\n },\n \"end_location\": {\n \"column\": 8,\n \"line\": 18,\n },\n \"message\": \"Useless assignment to variable `a`\",\n \"rule_name\": \"UselessAssign\",\n },\n {\n \"location\": {\n \"column\": 7,\n \"line\": 19,\n },\n \"end_location\": {\n \"column\": 9,\n \"line\": 19,\n },\n \"message\": \"Useless assignment to variable `a`\",\n \"rule_name\": \"UselessAssign\",\n \"severity\": \"Convention\",\n },\n ],\n \"path\": \"src/ameba/formatter/json_formatter.cr\",\n },\n ],\n \"summary\": {\n \"issues_count\": 3,\n \"target_sources_count\": 1,\n },\n}\n```\n","summary":"

    A formatter that produces the result in a json format.

    ","class_methods":[],"constructors":[{"id":"new(output=STDOUT)-class-method","html_id":"new(output=STDOUT)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"output","doc":null,"default_value":"STDOUT","external_name":"output","restriction":""}],"args_string":"(output = STDOUT)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/formatter/json_formatter.cr#L67","def":{"name":"new","args":[{"name":"output","doc":null,"default_value":"STDOUT","external_name":"output","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"_ = allocate\n_.initialize(output)\nif _.responds_to?(:finalize)\n ::GC.add_finalizer(_)\nend\n_\n"}}],"instance_methods":[{"id":"finished(sources)-instance-method","html_id":"finished(sources)-instance-method","name":"finished","doc":"Callback that indicates when inspection is finished.\nA list of inspected sources is passed as an argument.","summary":"

    Callback that indicates when inspection is finished.

    ","abstract":false,"args":[{"name":"sources","doc":null,"default_value":"","external_name":"sources","restriction":""}],"args_string":"(sources)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/formatter/json_formatter.cr#L87","def":{"name":"finished","args":[{"name":"sources","doc":null,"default_value":"","external_name":"sources","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@result.to_json(@output)"}},{"id":"source_finished(source:Source)-instance-method","html_id":"source_finished(source:Source)-instance-method","name":"source_finished","doc":"Callback that indicates when source inspection is finished.\nA corresponding source is passed as an argument.","summary":"

    Callback that indicates when source inspection is finished.

    ","abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":"Source"}],"args_string":"(source : Source)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/formatter/json_formatter.cr#L75","def":{"name":"source_finished","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":"Source"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"json_source = AsJSON::Source.new(source.path)\nsource.issues.each do |e|\n if e.disabled?\n next\n end\n json_source.issues << (AsJSON::Issue.new(e.rule.name, e.rule.severity.to_s, e.location, e.end_location, e.message))\n __temp_28 = @result.summary\n __temp_28.issues_count = __temp_28.issues_count + 1\nend\n@result.sources << json_source\n"}},{"id":"started(sources)-instance-method","html_id":"started(sources)-instance-method","name":"started","doc":"Callback that indicates when inspecting is started.\nA list of sources to inspect is passed as an argument.","summary":"

    Callback that indicates when inspecting is started.

    ","abstract":false,"args":[{"name":"sources","doc":null,"default_value":"","external_name":"sources","restriction":""}],"args_string":"(sources)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/formatter/json_formatter.cr#L71","def":{"name":"started","args":[{"name":"sources","doc":null,"default_value":"","external_name":"sources","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@result.summary.target_sources_count = sources.size"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Formatter/TODOFormatter","path":"Ameba/Formatter/TODOFormatter.html","kind":"class","full_name":"Ameba::Formatter::TODOFormatter","name":"TODOFormatter","abstract":false,"superclass":{"html_id":"ameba/Ameba/Formatter/DotFormatter","kind":"class","full_name":"Ameba::Formatter::DotFormatter","name":"DotFormatter"},"ancestors":[{"html_id":"ameba/Ameba/Formatter/DotFormatter","kind":"class","full_name":"Ameba::Formatter::DotFormatter","name":"DotFormatter"},{"html_id":"ameba/Ameba/Formatter/Util","kind":"module","full_name":"Ameba::Formatter::Util","name":"Util"},{"html_id":"ameba/Ameba/Formatter/BaseFormatter","kind":"class","full_name":"Ameba::Formatter::BaseFormatter","name":"BaseFormatter"},{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/formatter/todo_formatter.cr","line_number":5,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/formatter/todo_formatter.cr#L5"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Formatter","kind":"module","full_name":"Ameba::Formatter","name":"Formatter"},"doc":"A formatter that creates a todo config.\nBasically, it takes all issues reported and disables corresponding rules\nor excludes failed sources from these rules.","summary":"

    A formatter that creates a todo config.

    ","class_methods":[],"constructors":[{"id":"new(output=STDOUT)-class-method","html_id":"new(output=STDOUT)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"output","doc":null,"default_value":"STDOUT","external_name":"output","restriction":""}],"args_string":"(output = STDOUT)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/formatter/todo_formatter.cr#L6","def":{"name":"new","args":[{"name":"output","doc":null,"default_value":"STDOUT","external_name":"output","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"_ = allocate\n_.initialize(output)\nif _.responds_to?(:finalize)\n ::GC.add_finalizer(_)\nend\n_\n"}}],"instance_methods":[{"id":"finished(sources)-instance-method","html_id":"finished(sources)-instance-method","name":"finished","doc":"Reports a message when inspection is finished.","summary":"

    Reports a message when inspection is finished.

    ","abstract":false,"args":[{"name":"sources","doc":null,"default_value":"","external_name":"sources","restriction":""}],"args_string":"(sources)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/formatter/todo_formatter.cr#L9","def":{"name":"finished","args":[{"name":"sources","doc":null,"default_value":"","external_name":"sources","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"super(sources)\nissues = sources.map(&.issues).flatten\nif issues.any? do |issue|\n !issue.disabled?\nend\nelse\n @output << \"No issues found. File is not generated.\\n\"\n return\nend\nif issues.any? do |issue|\n issue.syntax?\nend\n @output << \"Unable to generate TODO file. Please fix syntax issues.\\n\"\n return\nend\nfile = generate_todo_config(issues)\n@output << \"Created #{file.path}\\n\"\nfile\n"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Formatter/Util","path":"Ameba/Formatter/Util.html","kind":"module","full_name":"Ameba::Formatter::Util","name":"Util","abstract":false,"superclass":null,"ancestors":[],"locations":[{"filename":"src/ameba/formatter/util.cr","line_number":2,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/formatter/util.cr#L2"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[{"html_id":"ameba/Ameba/Formatter/DotFormatter","kind":"class","full_name":"Ameba::Formatter::DotFormatter","name":"DotFormatter"},{"html_id":"ameba/Ameba/Formatter/ExplainFormatter","kind":"class","full_name":"Ameba::Formatter::ExplainFormatter","name":"ExplainFormatter"}],"namespace":{"html_id":"ameba/Ameba/Formatter","kind":"module","full_name":"Ameba::Formatter","name":"Formatter"},"doc":null,"summary":null,"class_methods":[],"constructors":[],"instance_methods":[{"id":"affected_code(source,location,max_length=100,placeholder="...",prompt=">")-instance-method","html_id":"affected_code(source,location,max_length=100,placeholder="...",prompt=">")-instance-method","name":"affected_code","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"location","doc":null,"default_value":"","external_name":"location","restriction":""},{"name":"max_length","doc":null,"default_value":"100","external_name":"max_length","restriction":""},{"name":"placeholder","doc":null,"default_value":"\" ...\"","external_name":"placeholder","restriction":""},{"name":"prompt","doc":null,"default_value":"\"> \"","external_name":"prompt","restriction":""}],"args_string":"(source, location, max_length = 100, placeholder = " ...", prompt = "> ")","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/formatter/util.cr#L3","def":{"name":"affected_code","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"location","doc":null,"default_value":"","external_name":"location","restriction":""},{"name":"max_length","doc":null,"default_value":"100","external_name":"max_length","restriction":""},{"name":"placeholder","doc":null,"default_value":"\" ...\"","external_name":"placeholder","restriction":""},{"name":"prompt","doc":null,"default_value":"\"> \"","external_name":"prompt","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"line, column = location.line_number, location.column_number\naffected_line = source.lines[line - 1]?\nif affected_line.nil? || affected_line.strip.empty?\n return\nend\nif affected_line.size > max_length && column < max_length\n affected_line = affected_line[0, (max_length - placeholder.size) - 1] + placeholder\nend\nstripped = affected_line.lstrip\nposition = (column - (affected_line.size - stripped.size)) + prompt.size\nString.build do |str|\n ((str << prompt) << stripped) << \"\\n\"\n str << (\" \" * (position - 1))\n str << (\"^\".colorize(:yellow))\nend\n"}}],"macros":[],"types":[]}]},{"html_id":"ameba/Ameba/GlobUtils","path":"Ameba/GlobUtils.html","kind":"module","full_name":"Ameba::GlobUtils","name":"GlobUtils","abstract":false,"superclass":null,"ancestors":[],"locations":[{"filename":"src/ameba/glob_utils.cr","line_number":3,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/glob_utils.cr#L3"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[{"html_id":"ameba/Ameba/Config","kind":"class","full_name":"Ameba::Config","name":"Config"}],"namespace":{"html_id":"ameba/Ameba","kind":"module","full_name":"Ameba","name":"Ameba"},"doc":"Helper module that is utilizes helpers for working with globs.","summary":"

    Helper module that is utilizes helpers for working with globs.

    ","class_methods":[],"constructors":[],"instance_methods":[{"id":"expand(globs)-instance-method","html_id":"expand(globs)-instance-method","name":"expand","doc":"Expands globs. Globs can point to files or even directories.\n\n```\nexpand([\"spec/*.cr\", \"src\"]) # => all files in src folder + first level specs\n```\n","summary":"

    Expands globs.

    ","abstract":false,"args":[{"name":"globs","doc":null,"default_value":"","external_name":"globs","restriction":""}],"args_string":"(globs)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/glob_utils.cr#L24","def":{"name":"expand","args":[{"name":"globs","doc":null,"default_value":"","external_name":"globs","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"globs.map do |glob|\n if File.directory?(glob)\n glob = glob + \"/**/*.cr\"\n end\n Dir[glob]\nend.flatten.uniq!"}},{"id":"find_files_by_globs(globs)-instance-method","html_id":"find_files_by_globs(globs)-instance-method","name":"find_files_by_globs","doc":"Returns all files that match specified globs.\nGlobs can have wildcards or be rejected:\n\n```\nfind_files_by_globs([\"**/*.cr\", \"!lib\"])\n```\n","summary":"

    Returns all files that match specified globs.

    ","abstract":false,"args":[{"name":"globs","doc":null,"default_value":"","external_name":"globs","restriction":""}],"args_string":"(globs)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/glob_utils.cr#L11","def":{"name":"find_files_by_globs","args":[{"name":"globs","doc":null,"default_value":"","external_name":"globs","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"rejected = rejected_globs(globs)\nselected = globs - rejected\n(expand(selected)) - (expand(rejected.map! do |p|\n p[1..-1]\nend))\n"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/InlineComments","path":"Ameba/InlineComments.html","kind":"module","full_name":"Ameba::InlineComments","name":"InlineComments","abstract":false,"superclass":null,"ancestors":[],"locations":[{"filename":"src/ameba/inline_comments.cr","line_number":3,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/inline_comments.cr#L3"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"COMMENT_DIRECTIVE_REGEX","name":"COMMENT_DIRECTIVE_REGEX","value":"/# ameba:(?\\w+) (?\\w+(?:\\/\\w+)?(?:,? \\w+(?:\\/\\w+)?)*)/","doc":null,"summary":null}],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[{"html_id":"ameba/Ameba/Source","kind":"class","full_name":"Ameba::Source","name":"Source"}],"namespace":{"html_id":"ameba/Ameba","kind":"module","full_name":"Ameba","name":"Ameba"},"doc":"A module that utilizes inline comments parsing and processing logic.","summary":"

    A module that utilizes inline comments parsing and processing logic.

    ","class_methods":[],"constructors":[],"instance_methods":[{"id":"comment?(line_number:Int32)-instance-method","html_id":"comment?(line_number:Int32)-instance-method","name":"comment?","doc":"Returns true if the line at the given `line_number` is a comment.","summary":"

    Returns true if the line at the given line_number is a comment.

    ","abstract":false,"args":[{"name":"line_number","doc":null,"default_value":"","external_name":"line_number","restriction":"Int32"}],"args_string":"(line_number : Int32)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/inline_comments.cr#L80","def":{"name":"comment?","args":[{"name":"line_number","doc":null,"default_value":"","external_name":"line_number","restriction":"Int32"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if line = lines[line_number]?\n comment?(line)\nend"}},{"id":"location_disabled?(location,rule)-instance-method","html_id":"location_disabled?(location,rule)-instance-method","name":"location_disabled?","doc":"Returns true if current location is disabled for a particular rule,\nfalse otherwise.\n\nLocation is disabled in two cases:\n 1. The line of the location ends with a comment directive.\n 2. The line above the location is a comment directive.\n\nFor example, here are two examples of disabled location:\n\n```\n# ameba:disable Style/LargeNumbers\nTime.epoch(1483859302)\n\nTime.epoch(1483859302) # ameba:disable Style/LargeNumbers\n```\n\nBut here are examples which are not considered as disabled location:\n\n```\n# ameba:disable Style/LargeNumbers\n#\nTime.epoch(1483859302)\n\nif use_epoch? # ameba:disable Style/LargeNumbers\n Time.epoch(1483859302)\nend\n```\n","summary":"

    Returns true if current location is disabled for a particular rule, false otherwise.

    ","abstract":false,"args":[{"name":"location","doc":null,"default_value":"","external_name":"location","restriction":""},{"name":"rule","doc":null,"default_value":"","external_name":"rule","restriction":""}],"args_string":"(location, rule)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/inline_comments.cr#L40","def":{"name":"location_disabled?","args":[{"name":"location","doc":null,"default_value":"","external_name":"location","restriction":""},{"name":"rule","doc":null,"default_value":"","external_name":"rule","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if Rule::SPECIAL.includes?(rule.name)\n return false\nend\nif line_number = location.try do |__arg0|\n __arg0.line_number.try(&.-(1))\nend\nelse\n return false\nend\nif line = lines[line_number]?\nelse\n return false\nend\n(line_disabled?(line, rule)) || (((line_number > 0 && (prev_line = lines[line_number - 1])) && (comment?(prev_line))) && (line_disabled?(prev_line, rule)))\n"}},{"id":"parse_inline_directive(line)-instance-method","html_id":"parse_inline_directive(line)-instance-method","name":"parse_inline_directive","doc":"Parses inline comment directive. Returns a tuple that consists of\nan action and parsed rules if directive found, nil otherwise.\n\n```\nline = \"# ameba:disable Rule1, Rule2\"\ndirective = parse_inline_directive(line)\ndirective[:action] # => \"disable\"\ndirective[:rules] # => [\"Rule1\", \"Rule2\"]\n```\n\nIt ignores the directive if it is commented out.\n\n```\nline = \"# # ameba:disable Rule1, Rule2\"\nparse_inline_directive(line) # => nil\n```\n","summary":"

    Parses inline comment directive.

    ","abstract":false,"args":[{"name":"line","doc":null,"default_value":"","external_name":"line","restriction":""}],"args_string":"(line)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/inline_comments.cr#L69","def":{"name":"parse_inline_directive","args":[{"name":"line","doc":null,"default_value":"","external_name":"line","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if directive = COMMENT_DIRECTIVE_REGEX.match(line)\n if commented_out?(line.gsub(directive[0], \"\"))\n return\n end\n {action: directive[\"action\"], rules: directive[\"rules\"].split(/[\\s,]/, remove_empty: true)}\nend"}}],"macros":[],"types":[{"html_id":"ameba/Ameba/InlineComments/Action","path":"Ameba/InlineComments/Action.html","kind":"enum","full_name":"Ameba::InlineComments::Action","name":"Action","abstract":false,"superclass":null,"ancestors":[{"html_id":"ameba/Enum","kind":"struct","full_name":"Enum","name":"Enum"},{"html_id":"ameba/Comparable","kind":"module","full_name":"Comparable","name":"Comparable"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/inline_comments.cr","line_number":7,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/inline_comments.cr#L7"}],"repository_name":"ameba","program":false,"enum":true,"alias":false,"aliased":"","const":false,"constants":[{"id":"Disable","name":"Disable","value":"0","doc":null,"summary":null},{"id":"Enable","name":"Enable","value":"1","doc":null,"summary":null}],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/InlineComments","kind":"module","full_name":"Ameba::InlineComments","name":"InlineComments"},"doc":"Available actions in the inline comments","summary":"

    Available actions in the inline comments

    ","class_methods":[],"constructors":[],"instance_methods":[{"id":"disable?-instance-method","html_id":"disable?-instance-method","name":"disable?","doc":null,"summary":null,"abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/inline_comments.cr#L8","def":{"name":"disable?","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"self == Disable"}},{"id":"enable?-instance-method","html_id":"enable?-instance-method","name":"enable?","doc":null,"summary":null,"abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/inline_comments.cr#L9","def":{"name":"enable?","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"self == Enable"}}],"macros":[],"types":[]}]},{"html_id":"ameba/Ameba/Issue","path":"Ameba/Issue.html","kind":"struct","full_name":"Ameba::Issue","name":"Issue","abstract":false,"superclass":{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},"ancestors":[{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/issue.cr","line_number":3,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/issue.cr#L3"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba","kind":"module","full_name":"Ameba","name":"Ameba"},"doc":"Represents an issue reported by Ameba.","summary":"

    Represents an issue reported by Ameba.

    ","class_methods":[],"constructors":[{"id":"new(rule:Rule::Base,location:Crystal::Location?,end_location:Crystal::Location?,message:String,status:Symbol?)-class-method","html_id":"new(rule:Rule::Base,location:Crystal::Location?,end_location:Crystal::Location?,message:String,status:Symbol?)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"rule","doc":null,"default_value":"","external_name":"rule","restriction":"Rule::Base"},{"name":"location","doc":null,"default_value":"","external_name":"location","restriction":"Crystal::Location | ::Nil"},{"name":"end_location","doc":null,"default_value":"","external_name":"end_location","restriction":"Crystal::Location | ::Nil"},{"name":"message","doc":null,"default_value":"","external_name":"message","restriction":"String"},{"name":"status","doc":null,"default_value":"","external_name":"status","restriction":"Symbol | ::Nil"}],"args_string":"(rule : Rule::Base, location : Crystal::Location?, end_location : Crystal::Location?, message : String, status : Symbol?)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/issue.cr#L3","def":{"name":"new","args":[{"name":"rule","doc":null,"default_value":"","external_name":"rule","restriction":"Rule::Base"},{"name":"location","doc":null,"default_value":"","external_name":"location","restriction":"Crystal::Location | ::Nil"},{"name":"end_location","doc":null,"default_value":"","external_name":"end_location","restriction":"Crystal::Location | ::Nil"},{"name":"message","doc":null,"default_value":"","external_name":"message","restriction":"String"},{"name":"status","doc":null,"default_value":"","external_name":"status","restriction":"Symbol | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"_ = allocate\n_.initialize(rule, location, end_location, message, status)\nif _.responds_to?(:finalize)\n ::GC.add_finalizer(_)\nend\n_\n"}}],"instance_methods":[{"id":"clone-instance-method","html_id":"clone-instance-method","name":"clone","doc":null,"summary":null,"abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/issue.cr#L3","def":{"name":"clone","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"self.class.new(@rule.clone, @location.clone, @end_location.clone, @message.clone, @status.clone)"}},{"id":"copy_with(rule_rule=@rule,location_location=@location,end_location_end_location=@end_location,message_message=@message,status_status=@status)-instance-method","html_id":"copy_with(rule_rule=@rule,location_location=@location,end_location_end_location=@end_location,message_message=@message,status_status=@status)-instance-method","name":"copy_with","doc":null,"summary":null,"abstract":false,"args":[{"name":"_rule","doc":null,"default_value":"@rule","external_name":"rule","restriction":""},{"name":"_location","doc":null,"default_value":"@location","external_name":"location","restriction":""},{"name":"_end_location","doc":null,"default_value":"@end_location","external_name":"end_location","restriction":""},{"name":"_message","doc":null,"default_value":"@message","external_name":"message","restriction":""},{"name":"_status","doc":null,"default_value":"@status","external_name":"status","restriction":""}],"args_string":"(rule _rule = @rule, location _location = @location, end_location _end_location = @end_location, message _message = @message, status _status = @status)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/issue.cr#L3","def":{"name":"copy_with","args":[{"name":"_rule","doc":null,"default_value":"@rule","external_name":"rule","restriction":""},{"name":"_location","doc":null,"default_value":"@location","external_name":"location","restriction":""},{"name":"_end_location","doc":null,"default_value":"@end_location","external_name":"end_location","restriction":""},{"name":"_message","doc":null,"default_value":"@message","external_name":"message","restriction":""},{"name":"_status","doc":null,"default_value":"@status","external_name":"status","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"self.class.new(_rule, _location, _end_location, _message, _status)"}},{"id":"disabled?-instance-method","html_id":"disabled?-instance-method","name":"disabled?","doc":null,"summary":null,"abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/issue.cr#L18","def":{"name":"disabled?","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"status == (:disabled)"}},{"id":"end_location:Crystal::Location?-instance-method","html_id":"end_location:Crystal::Location?-instance-method","name":"end_location","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Crystal::Location?","source_link":null,"def":{"name":"end_location","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Crystal::Location | ::Nil","visibility":"Public","body":"@end_location"}},{"id":"location:Crystal::Location?-instance-method","html_id":"location:Crystal::Location?-instance-method","name":"location","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Crystal::Location?","source_link":null,"def":{"name":"location","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Crystal::Location | ::Nil","visibility":"Public","body":"@location"}},{"id":"message:String-instance-method","html_id":"message:String-instance-method","name":"message","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"message","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@message"}},{"id":"rule:Rule::Base-instance-method","html_id":"rule:Rule::Base-instance-method","name":"rule","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Rule::Base","source_link":null,"def":{"name":"rule","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Rule::Base","visibility":"Public","body":"@rule"}},{"id":"status:Symbol?-instance-method","html_id":"status:Symbol?-instance-method","name":"status","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Symbol?","source_link":null,"def":{"name":"status","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Symbol | ::Nil","visibility":"Public","body":"@status"}},{"id":"syntax?-instance-method","html_id":"syntax?-instance-method","name":"syntax?","doc":null,"summary":null,"abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/issue.cr#L22","def":{"name":"syntax?","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"rule.is_a?(Rule::Lint::Syntax)"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Reportable","path":"Ameba/Reportable.html","kind":"module","full_name":"Ameba::Reportable","name":"Reportable","abstract":false,"superclass":null,"ancestors":[],"locations":[{"filename":"src/ameba/reportable.cr","line_number":3,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/reportable.cr#L3"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[{"html_id":"ameba/Ameba/Source","kind":"class","full_name":"Ameba::Source","name":"Source"}],"namespace":{"html_id":"ameba/Ameba","kind":"module","full_name":"Ameba","name":"Ameba"},"doc":"Represents a module used to report issues.","summary":"

    Represents a module used to report issues.

    ","class_methods":[],"constructors":[],"instance_methods":[{"id":"add_issue(rule,location:Crystal::Location?,end_location:Crystal::Location?,message,status=nil)-instance-method","html_id":"add_issue(rule,location:Crystal::Location?,end_location:Crystal::Location?,message,status=nil)-instance-method","name":"add_issue","doc":"Adds a new issue to the list of issues.","summary":"

    Adds a new issue to the list of issues.

    ","abstract":false,"args":[{"name":"rule","doc":null,"default_value":"","external_name":"rule","restriction":""},{"name":"location","doc":null,"default_value":"","external_name":"location","restriction":"Crystal::Location | ::Nil"},{"name":"end_location","doc":null,"default_value":"","external_name":"end_location","restriction":"Crystal::Location | ::Nil"},{"name":"message","doc":null,"default_value":"","external_name":"message","restriction":""},{"name":"status","doc":null,"default_value":"nil","external_name":"status","restriction":""}],"args_string":"(rule, location : Crystal::Location?, end_location : Crystal::Location?, message, status = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/reportable.cr#L8","def":{"name":"add_issue","args":[{"name":"rule","doc":null,"default_value":"","external_name":"rule","restriction":""},{"name":"location","doc":null,"default_value":"","external_name":"location","restriction":"Crystal::Location | ::Nil"},{"name":"end_location","doc":null,"default_value":"","external_name":"end_location","restriction":"Crystal::Location | ::Nil"},{"name":"message","doc":null,"default_value":"","external_name":"message","restriction":""},{"name":"status","doc":null,"default_value":"nil","external_name":"status","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if location_disabled?(location, rule)\n status || (status = :disabled)\nend\nissues << (Issue.new(rule, location, end_location, message, status))\n"}},{"id":"add_issue(rule,location:Tuple(Int32,Int32),end_location:Tuple(Int32,Int32),message,**args)-instance-method","html_id":"add_issue(rule,location:Tuple(Int32,Int32),end_location:Tuple(Int32,Int32),message,**args)-instance-method","name":"add_issue","doc":"Adds a new issue for *location* and *end_location* defined by line and column numbers.","summary":"

    Adds a new issue for location and end_location defined by line and column numbers.

    ","abstract":false,"args":[{"name":"rule","doc":null,"default_value":"","external_name":"rule","restriction":""},{"name":"location","doc":null,"default_value":"","external_name":"location","restriction":"Tuple(Int32, Int32)"},{"name":"end_location","doc":null,"default_value":"","external_name":"end_location","restriction":"Tuple(Int32, Int32)"},{"name":"message","doc":null,"default_value":"","external_name":"message","restriction":""}],"args_string":"(rule, location : Tuple(Int32, Int32), end_location : Tuple(Int32, Int32), message, **args)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/reportable.cr#L30","def":{"name":"add_issue","args":[{"name":"rule","doc":null,"default_value":"","external_name":"rule","restriction":""},{"name":"location","doc":null,"default_value":"","external_name":"location","restriction":"Tuple(Int32, Int32)"},{"name":"end_location","doc":null,"default_value":"","external_name":"end_location","restriction":"Tuple(Int32, Int32)"},{"name":"message","doc":null,"default_value":"","external_name":"message","restriction":""}],"double_splat":{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""},"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"location = Crystal::Location.new(path, *location)\nend_location = Crystal::Location.new(path, *end_location)\nadd_issue(rule, location, end_location, message, **args)\n"}},{"id":"add_issue(rule,location:Tuple(Int32,Int32),message,**args)-instance-method","html_id":"add_issue(rule,location:Tuple(Int32,Int32),message,**args)-instance-method","name":"add_issue","doc":"Adds a new issue for *location* defined by line and column numbers.","summary":"

    Adds a new issue for location defined by line and column numbers.

    ","abstract":false,"args":[{"name":"rule","doc":null,"default_value":"","external_name":"rule","restriction":""},{"name":"location","doc":null,"default_value":"","external_name":"location","restriction":"Tuple(Int32, Int32)"},{"name":"message","doc":null,"default_value":"","external_name":"message","restriction":""}],"args_string":"(rule, location : Tuple(Int32, Int32), message, **args)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/reportable.cr#L24","def":{"name":"add_issue","args":[{"name":"rule","doc":null,"default_value":"","external_name":"rule","restriction":""},{"name":"location","doc":null,"default_value":"","external_name":"location","restriction":"Tuple(Int32, Int32)"},{"name":"message","doc":null,"default_value":"","external_name":"message","restriction":""}],"double_splat":{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""},"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"location = Crystal::Location.new(path, *location)\nadd_issue(rule, location, nil, message, **args)\n"}},{"id":"add_issue(rule,node:Crystal::ASTNode,message,**args)-instance-method","html_id":"add_issue(rule,node:Crystal::ASTNode,message,**args)-instance-method","name":"add_issue","doc":"Adds a new issue for AST *node*.","summary":"

    Adds a new issue for AST node.

    ","abstract":false,"args":[{"name":"rule","doc":null,"default_value":"","external_name":"rule","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ASTNode"},{"name":"message","doc":null,"default_value":"","external_name":"message","restriction":""}],"args_string":"(rule, node : Crystal::ASTNode, message, **args)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/reportable.cr#L14","def":{"name":"add_issue","args":[{"name":"rule","doc":null,"default_value":"","external_name":"rule","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ASTNode"},{"name":"message","doc":null,"default_value":"","external_name":"message","restriction":""}],"double_splat":{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""},"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"add_issue(rule, node.location, node.end_location, message, **args)"}},{"id":"add_issue(rule,token:Crystal::Token,message,**args)-instance-method","html_id":"add_issue(rule,token:Crystal::Token,message,**args)-instance-method","name":"add_issue","doc":"Adds a new issue for Crystal *token*.","summary":"

    Adds a new issue for Crystal token.

    ","abstract":false,"args":[{"name":"rule","doc":null,"default_value":"","external_name":"rule","restriction":""},{"name":"token","doc":null,"default_value":"","external_name":"token","restriction":"Crystal::Token"},{"name":"message","doc":null,"default_value":"","external_name":"message","restriction":""}],"args_string":"(rule, token : Crystal::Token, message, **args)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/reportable.cr#L19","def":{"name":"add_issue","args":[{"name":"rule","doc":null,"default_value":"","external_name":"rule","restriction":""},{"name":"token","doc":null,"default_value":"","external_name":"token","restriction":"Crystal::Token"},{"name":"message","doc":null,"default_value":"","external_name":"message","restriction":""}],"double_splat":{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""},"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"add_issue(rule, token.location, nil, message, **args)"}},{"id":"issues-instance-method","html_id":"issues-instance-method","name":"issues","doc":"List of reported issues.","summary":"

    List of reported issues.

    ","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/reportable.cr#L5","def":{"name":"issues","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@issues"}},{"id":"valid?-instance-method","html_id":"valid?-instance-method","name":"valid?","doc":"Returns true if the list of not disabled issues is empty, false otherwise.","summary":"

    Returns true if the list of not disabled issues is empty, false otherwise.

    ","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/reportable.cr#L37","def":{"name":"valid?","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"issues.reject(&.disabled?).empty?"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule","path":"Ameba/Rule.html","kind":"module","full_name":"Ameba::Rule","name":"Rule","abstract":false,"superclass":null,"ancestors":[],"locations":[{"filename":"src/ameba/rule/base.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/base.cr#L1"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"SPECIAL","name":"SPECIAL","value":"[Lint::Syntax.rule_name, Lint::UnneededDisableDirective.rule_name]","doc":"List of names of the special rules, which\nbehave differently than usual rules.","summary":"

    List of names of the special rules, which behave differently than usual rules.

    "}],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba","kind":"module","full_name":"Ameba","name":"Ameba"},"doc":null,"summary":null,"class_methods":[{"id":"rules-class-method","html_id":"rules-class-method","name":"rules","doc":"Returns a list of all available rules.\n\n```\nAmeba::Rule.rules # => [Rule1, Rule2, ....]\n```\n","summary":"

    Returns a list of all available rules.

    ","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/base.cr#L194","def":{"name":"rules","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"Base.subclasses"}}],"constructors":[],"instance_methods":[],"macros":[],"types":[{"html_id":"ameba/Ameba/Rule/Base","path":"Ameba/Rule/Base.html","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base","abstract":true,"superclass":{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},"ancestors":[{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/base.cr","line_number":30,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/base.cr#L30"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"}],"extended_modules":[],"subclasses":[{"html_id":"ameba/Ameba/Rule/Layout/LineLength","kind":"struct","full_name":"Ameba::Rule::Layout::LineLength","name":"LineLength"},{"html_id":"ameba/Ameba/Rule/Layout/TrailingBlankLines","kind":"struct","full_name":"Ameba::Rule::Layout::TrailingBlankLines","name":"TrailingBlankLines"},{"html_id":"ameba/Ameba/Rule/Layout/TrailingWhitespace","kind":"struct","full_name":"Ameba::Rule::Layout::TrailingWhitespace","name":"TrailingWhitespace"},{"html_id":"ameba/Ameba/Rule/Lint/BadDirective","kind":"struct","full_name":"Ameba::Rule::Lint::BadDirective","name":"BadDirective"},{"html_id":"ameba/Ameba/Rule/Lint/ComparisonToBoolean","kind":"struct","full_name":"Ameba::Rule::Lint::ComparisonToBoolean","name":"ComparisonToBoolean"},{"html_id":"ameba/Ameba/Rule/Lint/DebuggerStatement","kind":"struct","full_name":"Ameba::Rule::Lint::DebuggerStatement","name":"DebuggerStatement"},{"html_id":"ameba/Ameba/Rule/Lint/EmptyEnsure","kind":"struct","full_name":"Ameba::Rule::Lint::EmptyEnsure","name":"EmptyEnsure"},{"html_id":"ameba/Ameba/Rule/Lint/EmptyExpression","kind":"struct","full_name":"Ameba::Rule::Lint::EmptyExpression","name":"EmptyExpression"},{"html_id":"ameba/Ameba/Rule/Lint/EmptyLoop","kind":"struct","full_name":"Ameba::Rule::Lint::EmptyLoop","name":"EmptyLoop"},{"html_id":"ameba/Ameba/Rule/Lint/HashDuplicatedKey","kind":"struct","full_name":"Ameba::Rule::Lint::HashDuplicatedKey","name":"HashDuplicatedKey"},{"html_id":"ameba/Ameba/Rule/Lint/LiteralInCondition","kind":"struct","full_name":"Ameba::Rule::Lint::LiteralInCondition","name":"LiteralInCondition"},{"html_id":"ameba/Ameba/Rule/Lint/LiteralInInterpolation","kind":"struct","full_name":"Ameba::Rule::Lint::LiteralInInterpolation","name":"LiteralInInterpolation"},{"html_id":"ameba/Ameba/Rule/Lint/PercentArrays","kind":"struct","full_name":"Ameba::Rule::Lint::PercentArrays","name":"PercentArrays"},{"html_id":"ameba/Ameba/Rule/Lint/RandZero","kind":"struct","full_name":"Ameba::Rule::Lint::RandZero","name":"RandZero"},{"html_id":"ameba/Ameba/Rule/Lint/RedundantStringCoercion","kind":"struct","full_name":"Ameba::Rule::Lint::RedundantStringCoercion","name":"RedundantStringCoercion"},{"html_id":"ameba/Ameba/Rule/Lint/RedundantWithIndex","kind":"struct","full_name":"Ameba::Rule::Lint::RedundantWithIndex","name":"RedundantWithIndex"},{"html_id":"ameba/Ameba/Rule/Lint/RedundantWithObject","kind":"struct","full_name":"Ameba::Rule::Lint::RedundantWithObject","name":"RedundantWithObject"},{"html_id":"ameba/Ameba/Rule/Lint/ShadowedArgument","kind":"struct","full_name":"Ameba::Rule::Lint::ShadowedArgument","name":"ShadowedArgument"},{"html_id":"ameba/Ameba/Rule/Lint/ShadowedException","kind":"struct","full_name":"Ameba::Rule::Lint::ShadowedException","name":"ShadowedException"},{"html_id":"ameba/Ameba/Rule/Lint/ShadowingOuterLocalVar","kind":"struct","full_name":"Ameba::Rule::Lint::ShadowingOuterLocalVar","name":"ShadowingOuterLocalVar"},{"html_id":"ameba/Ameba/Rule/Lint/SharedVarInFiber","kind":"struct","full_name":"Ameba::Rule::Lint::SharedVarInFiber","name":"SharedVarInFiber"},{"html_id":"ameba/Ameba/Rule/Lint/Syntax","kind":"struct","full_name":"Ameba::Rule::Lint::Syntax","name":"Syntax"},{"html_id":"ameba/Ameba/Rule/Lint/UnneededDisableDirective","kind":"struct","full_name":"Ameba::Rule::Lint::UnneededDisableDirective","name":"UnneededDisableDirective"},{"html_id":"ameba/Ameba/Rule/Lint/UnreachableCode","kind":"struct","full_name":"Ameba::Rule::Lint::UnreachableCode","name":"UnreachableCode"},{"html_id":"ameba/Ameba/Rule/Lint/UnusedArgument","kind":"struct","full_name":"Ameba::Rule::Lint::UnusedArgument","name":"UnusedArgument"},{"html_id":"ameba/Ameba/Rule/Lint/UselessAssign","kind":"struct","full_name":"Ameba::Rule::Lint::UselessAssign","name":"UselessAssign"},{"html_id":"ameba/Ameba/Rule/Lint/UselessConditionInWhen","kind":"struct","full_name":"Ameba::Rule::Lint::UselessConditionInWhen","name":"UselessConditionInWhen"},{"html_id":"ameba/Ameba/Rule/Metrics/CyclomaticComplexity","kind":"struct","full_name":"Ameba::Rule::Metrics::CyclomaticComplexity","name":"CyclomaticComplexity"},{"html_id":"ameba/Ameba/Rule/Performance/AnyAfterFilter","kind":"struct","full_name":"Ameba::Rule::Performance::AnyAfterFilter","name":"AnyAfterFilter"},{"html_id":"ameba/Ameba/Rule/Performance/FirstLastAfterFilter","kind":"struct","full_name":"Ameba::Rule::Performance::FirstLastAfterFilter","name":"FirstLastAfterFilter"},{"html_id":"ameba/Ameba/Rule/Performance/SizeAfterFilter","kind":"struct","full_name":"Ameba::Rule::Performance::SizeAfterFilter","name":"SizeAfterFilter"},{"html_id":"ameba/Ameba/Rule/Style/ConstantNames","kind":"struct","full_name":"Ameba::Rule::Style::ConstantNames","name":"ConstantNames"},{"html_id":"ameba/Ameba/Rule/Style/IsANil","kind":"struct","full_name":"Ameba::Rule::Style::IsANil","name":"IsANil"},{"html_id":"ameba/Ameba/Rule/Style/LargeNumbers","kind":"struct","full_name":"Ameba::Rule::Style::LargeNumbers","name":"LargeNumbers"},{"html_id":"ameba/Ameba/Rule/Style/MethodNames","kind":"struct","full_name":"Ameba::Rule::Style::MethodNames","name":"MethodNames"},{"html_id":"ameba/Ameba/Rule/Style/NegatedConditionsInUnless","kind":"struct","full_name":"Ameba::Rule::Style::NegatedConditionsInUnless","name":"NegatedConditionsInUnless"},{"html_id":"ameba/Ameba/Rule/Style/PredicateName","kind":"struct","full_name":"Ameba::Rule::Style::PredicateName","name":"PredicateName"},{"html_id":"ameba/Ameba/Rule/Style/RedundantBegin","kind":"struct","full_name":"Ameba::Rule::Style::RedundantBegin","name":"RedundantBegin"},{"html_id":"ameba/Ameba/Rule/Style/RedundantNext","kind":"struct","full_name":"Ameba::Rule::Style::RedundantNext","name":"RedundantNext"},{"html_id":"ameba/Ameba/Rule/Style/RedundantReturn","kind":"struct","full_name":"Ameba::Rule::Style::RedundantReturn","name":"RedundantReturn"},{"html_id":"ameba/Ameba/Rule/Style/TypeNames","kind":"struct","full_name":"Ameba::Rule::Style::TypeNames","name":"TypeNames"},{"html_id":"ameba/Ameba/Rule/Style/UnlessElse","kind":"struct","full_name":"Ameba::Rule::Style::UnlessElse","name":"UnlessElse"},{"html_id":"ameba/Ameba/Rule/Style/VariableNames","kind":"struct","full_name":"Ameba::Rule::Style::VariableNames","name":"VariableNames"},{"html_id":"ameba/Ameba/Rule/Style/WhileTrue","kind":"struct","full_name":"Ameba::Rule::Style::WhileTrue","name":"WhileTrue"}],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule","kind":"module","full_name":"Ameba::Rule","name":"Rule"},"doc":"Represents a base of all rules. In other words, all rules\ninherits from this struct:\n\n```\nstruct MyRule < Ameba::Rule::Base\n def test(source)\n if invalid?(source)\n issue_for line, column, \"Something wrong.\"\n end\n end\n\n private def invalid?(source)\n # ...\n end\nend\n```\n\nEnforces rules to implement an abstract `#test` method which\nis designed to test the source passed in. If source has issues\nthat are tested by this rule, it should add an issue.\n","summary":"

    Represents a base of all rules.

    ","class_methods":[{"id":"parsed_doc-class-method","html_id":"parsed_doc-class-method","name":"parsed_doc","doc":"Returns documentation for this rule if any.\n\n```\nmodule Ameba\n # This is a test rule.\n # Does nothing.\n struct MyRule < Ameba::Rule::Base\n def test(source)\n end\n end\nend\n\nMyRule.parsed_doc # => \"This is a test rule.\\nDoes nothing.\"\n```","summary":"

    Returns documentation for this rule if any.

    ","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/base.cr#L157","def":{"name":"parsed_doc","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"source = File.read(path_to_source_file)\nnodes = (Crystal::Parser.new(source)).tap(&.wants_doc = true).parse\ntype_name = (rule_name.split(\"/\")).last?\n(DocFinder.new(nodes, type_name)).doc\n"}}],"constructors":[{"id":"new-class-method","html_id":"new-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/base.cr#L30","def":{"name":"new","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"x = allocate\nif x.responds_to?(:finalize)\n ::GC.add_finalizer(x)\nend\nx\n"}}],"instance_methods":[{"id":"==(other)-instance-method","html_id":"==(other)-instance-method","name":"==","doc":"Returns `true` if this struct is equal to *other*.\n\nBoth structs's instance vars are compared to each other. Thus, two\nstructs are considered equal if each of their instance variables are\nequal. Subclasses should override this method to provide specific\nequality semantics.\n\n```\nstruct Point\n def initialize(@x : Int32, @y : Int32)\n end\nend\n\np1 = Point.new 1, 2\np2 = Point.new 1, 2\np3 = Point.new 3, 4\n\np1 == p2 # => true\np1 == p3 # => false\n```","summary":"

    Returns true if this struct is equal to other.

    ","abstract":false,"args":[{"name":"other","doc":null,"default_value":"","external_name":"other","restriction":""}],"args_string":"(other)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/base.cr#L113","def":{"name":"==","args":[{"name":"other","doc":null,"default_value":"","external_name":"other","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"name == other.try(&.name)"}},{"id":"catch(source:Source)-instance-method","html_id":"catch(source:Source)-instance-method","name":"catch","doc":"A convenient addition to `#test` method that does the same\nbut returns a passed in `source` as an addition.\n\n```\nsource = MyRule.new.catch(source)\nsource.valid?\n```\n","summary":"

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

    ","abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":"Source"}],"args_string":"(source : Source)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/base.cr#L54","def":{"name":"catch","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":"Source"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"source.tap do |s|\n test(s)\nend"}},{"id":"excluded?(source)-instance-method","html_id":"excluded?(source)-instance-method","name":"excluded?","doc":"Checks whether the source is excluded from this rule.\nIt searches for a path in `excluded` property which matches\nthe one of the given source.\n\n```\nmy_rule.excluded?(source) # => true or false\n```\n","summary":"

    Checks whether the source is excluded from this rule.

    ","abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"args_string":"(source)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/base.cr#L95","def":{"name":"excluded?","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"excluded.try(&.any? do |path|\n (source.matches_path?(path)) || (Dir.glob(path)).any? do |glob|\n source.matches_path?(glob)\n end\nend)"}},{"id":"group-instance-method","html_id":"group-instance-method","name":"group","doc":"Returns a group this rule belong to.\n\n```\nstruct MyGroup::MyRule < Ameba::Rule::Base\n # ...\nend\n\nMyGroup::MyRule.new.group # => \"MyGroup\"\n```\n","summary":"

    Returns a group this rule belong to.

    ","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/base.cr#L83","def":{"name":"group","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"({{ @type }}).group_name"}},{"id":"hash-instance-method","html_id":"hash-instance-method","name":"hash","doc":"Generates an `UInt64` hash value for this object.\n\nThis method must have the property that `a == b` implies `a.hash == b.hash`.\n\nThe hash value is used along with `==` by the `Hash` class to determine if two objects\nreference the same hash key.\n\nSubclasses must not override this method. Instead, they must define `hash(hasher)`,\nthough usually the macro `def_hash` can be used to generate this method.","summary":"

    Generates an UInt64 hash value for this object.

    ","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/base.cr#L117","def":{"name":"hash","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"name.hash"}},{"id":"name-instance-method","html_id":"name-instance-method","name":"name","doc":"Returns a name of this rule, which is basically a class name.\n\n```\nstruct MyRule < Ameba::Rule::Base\n def test(source)\n end\nend\n\nMyRule.new.name # => \"MyRule\"\n```\n","summary":"

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

    ","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/base.cr#L69","def":{"name":"name","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"({{ @type }}).rule_name"}},{"id":"special?-instance-method","html_id":"special?-instance-method","name":"special?","doc":"Returns true if this rule is special and behaves differently than\nusual rules.\n\n```\nmy_rule.special? # => true or false\n```\n","summary":"

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

    ","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/base.cr#L109","def":{"name":"special?","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"SPECIAL.includes?(name)"}},{"id":"test(source:Source,node:Crystal::ASTNode,*opts)-instance-method","html_id":"test(source:Source,node:Crystal::ASTNode,*opts)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":"Source"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ASTNode"},{"name":"opts","doc":null,"default_value":"","external_name":"opts","restriction":""}],"args_string":"(source : Source, node : Crystal::ASTNode, *opts)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/base.cr#L42","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":"Source"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ASTNode"},{"name":"opts","doc":null,"default_value":"","external_name":"opts","restriction":""}],"double_splat":null,"splat_index":2,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":""}},{"id":"test(source:Source)-instance-method","html_id":"test(source:Source)-instance-method","name":"test","doc":"This method is designed to test the source passed in. If source has issues\nthat are tested by this rule, it should add an issue.\n\nBe default it uses a node visitor to traverse all the nodes in the source.\nMust be overriten for other type of rules.","summary":"

    This method is designed to test the source passed in.

    ","abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":"Source"}],"args_string":"(source : Source)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/base.cr#L38","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":"Source"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"AST::NodeVisitor.new(self, source)"}}],"macros":[{"id":"issue_for(*args)-macro","html_id":"issue_for(*args)-macro","name":"issue_for","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/base.cr#L121","def":{"name":"issue_for","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":null,"splat_index":0,"block_arg":null,"visibility":"Public","body":" source.add_issue self, \n{{ *args }}\n\n \n"}}],"types":[]},{"html_id":"ameba/Ameba/Rule/Layout","path":"Ameba/Rule/Layout.html","kind":"module","full_name":"Ameba::Rule::Layout","name":"Layout","abstract":false,"superclass":null,"ancestors":[],"locations":[{"filename":"src/ameba/rule/layout/line_length.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/layout/line_length.cr#L1"},{"filename":"src/ameba/rule/layout/trailing_blank_lines.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/layout/trailing_blank_lines.cr#L1"},{"filename":"src/ameba/rule/layout/trailing_whitespace.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/layout/trailing_whitespace.cr#L1"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule","kind":"module","full_name":"Ameba::Rule","name":"Rule"},"doc":null,"summary":null,"class_methods":[],"constructors":[],"instance_methods":[],"macros":[],"types":[{"html_id":"ameba/Ameba/Rule/Layout/LineLength","path":"Ameba/Rule/Layout/LineLength.html","kind":"struct","full_name":"Ameba::Rule::Layout::LineLength","name":"LineLength","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/layout/line_length.cr","line_number":12,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/layout/line_length.cr#L12"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Line too long\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Layout","kind":"module","full_name":"Ameba::Rule::Layout","name":"Layout"},"doc":"A rule that disallows lines longer than `max_length` number of symbols.\n\nYAML configuration example:\n\n```\nLayout/LineLength:\n Enabled: true\n MaxLength: 100\n```\n","summary":"

    A rule that disallows lines longer than #max_length number of symbols.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows lines longer than `max_length` number of symbols.\n\nYAML configuration example:\n\n```\nLayout/LineLength:\n Enabled: true\n MaxLength: 100\n```\n","summary":"

    A rule that disallows lines longer than #max_length number of symbols.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/layout/line_length.cr#L12","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Bool","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled:Bool)-instance-method","html_id":"enabled=(enabled:Bool)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":"Bool"}],"args_string":"(enabled : Bool)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":"Bool"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"max_length:Int32-instance-method","html_id":"max_length:Int32-instance-method","name":"max_length","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Int32","source_link":null,"def":{"name":"max_length","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Int32","visibility":"Public","body":"@max_length"}},{"id":"max_length=(max_length:Int32)-instance-method","html_id":"max_length=(max_length:Int32)-instance-method","name":"max_length=","doc":null,"summary":null,"abstract":false,"args":[{"name":"max_length","doc":null,"default_value":"","external_name":"max_length","restriction":"Int32"}],"args_string":"(max_length : Int32)","source_link":null,"def":{"name":"max_length=","args":[{"name":"max_length","doc":null,"default_value":"","external_name":"max_length","restriction":"Int32"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@max_length = max_length"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source)-instance-method","html_id":"test(source)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"args_string":"(source)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/layout/line_length.cr#L21","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"source.lines.each_with_index do |line, index|\n if line.size > max_length\n else\n next\n end\n issue_for({index + 1, max_length + 1}, MSG)\nend"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Layout/TrailingBlankLines","path":"Ameba/Rule/Layout/TrailingBlankLines.html","kind":"struct","full_name":"Ameba::Rule::Layout::TrailingBlankLines","name":"TrailingBlankLines","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/layout/trailing_blank_lines.cr","line_number":11,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/layout/trailing_blank_lines.cr#L11"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Excessive trailing newline detected\"","doc":null,"summary":null},{"id":"MSG_FINAL_NEWLINE","name":"MSG_FINAL_NEWLINE","value":"\"Trailing newline missing\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Layout","kind":"module","full_name":"Ameba::Rule::Layout","name":"Layout"},"doc":"A rule that disallows trailing blank lines at the end of the source file.\n\nYAML configuration example:\n\n```\nLayout/TrailingBlankLines:\n Enabled: true\n```\n","summary":"

    A rule that disallows trailing blank lines at the end of the source file.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows trailing blank lines at the end of the source file.\n\nYAML configuration example:\n\n```\nLayout/TrailingBlankLines:\n Enabled: true\n```\n","summary":"

    A rule that disallows trailing blank lines at the end of the source file.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/layout/trailing_blank_lines.cr#L11","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source)-instance-method","html_id":"test(source)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"args_string":"(source)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/layout/trailing_blank_lines.cr#L19","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"source_lines = source.lines\nif source_lines.empty?\n return\nend\nlast_source_line = source_lines.last\nsource_lines_size = source_lines.size\nif (source_lines_size == 1) && last_source_line.empty?\n return\nend\nlast_line_not_empty = !last_source_line.empty?\nif source_lines_size >= 1 && ((source_lines.last(2)).join.strip.empty? || last_line_not_empty)\n issue_for({source_lines_size - 1, 1}, last_line_not_empty ? MSG_FINAL_NEWLINE : MSG)\nend\n"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Layout/TrailingWhitespace","path":"Ameba/Rule/Layout/TrailingWhitespace.html","kind":"struct","full_name":"Ameba::Rule::Layout::TrailingWhitespace","name":"TrailingWhitespace","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/layout/trailing_whitespace.cr","line_number":11,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/layout/trailing_whitespace.cr#L11"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Trailing whitespace detected\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Layout","kind":"module","full_name":"Ameba::Rule::Layout","name":"Layout"},"doc":"A rule that disallows trailing whitespaces.\n\nYAML configuration example:\n\n```\nLayout/TrailingWhitespace:\n Enabled: true\n```\n","summary":"

    A rule that disallows trailing whitespaces.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows trailing whitespaces.\n\nYAML configuration example:\n\n```\nLayout/TrailingWhitespace:\n Enabled: true\n```\n","summary":"

    A rule that disallows trailing whitespaces.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/layout/trailing_whitespace.cr#L11","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source)-instance-method","html_id":"test(source)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"args_string":"(source)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/layout/trailing_whitespace.cr#L18","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"source.lines.each_with_index do |line, index|\n if line =~ (/\\s$/)\n else\n next\n end\n issue_for({index + 1, line.size}, MSG)\nend"}}],"macros":[],"types":[]}]},{"html_id":"ameba/Ameba/Rule/Lint","path":"Ameba/Rule/Lint.html","kind":"module","full_name":"Ameba::Rule::Lint","name":"Lint","abstract":false,"superclass":null,"ancestors":[],"locations":[{"filename":"src/ameba/rule/lint/bad_directive.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/bad_directive.cr#L1"},{"filename":"src/ameba/rule/lint/comparison_to_boolean.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/comparison_to_boolean.cr#L1"},{"filename":"src/ameba/rule/lint/debugger_statement.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/debugger_statement.cr#L1"},{"filename":"src/ameba/rule/lint/empty_ensure.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/empty_ensure.cr#L1"},{"filename":"src/ameba/rule/lint/empty_expression.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/empty_expression.cr#L1"},{"filename":"src/ameba/rule/lint/empty_loop.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/empty_loop.cr#L1"},{"filename":"src/ameba/rule/lint/hash_duplicated_key.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/hash_duplicated_key.cr#L1"},{"filename":"src/ameba/rule/lint/literal_in_condition.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/literal_in_condition.cr#L1"},{"filename":"src/ameba/rule/lint/literal_in_interpolation.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/literal_in_interpolation.cr#L1"},{"filename":"src/ameba/rule/lint/percent_array.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/percent_array.cr#L1"},{"filename":"src/ameba/rule/lint/rand_zero.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/rand_zero.cr#L1"},{"filename":"src/ameba/rule/lint/redundant_string_coercion.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/redundant_string_coercion.cr#L1"},{"filename":"src/ameba/rule/lint/redundant_with_index.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/redundant_with_index.cr#L1"},{"filename":"src/ameba/rule/lint/redundant_with_object.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/redundant_with_object.cr#L1"},{"filename":"src/ameba/rule/lint/shadowed_argument.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/shadowed_argument.cr#L1"},{"filename":"src/ameba/rule/lint/shadowed_exception.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/shadowed_exception.cr#L1"},{"filename":"src/ameba/rule/lint/shadowing_local_outer_var.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/shadowing_local_outer_var.cr#L1"},{"filename":"src/ameba/rule/lint/shared_var_in_fiber.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/shared_var_in_fiber.cr#L1"},{"filename":"src/ameba/rule/lint/syntax.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/syntax.cr#L1"},{"filename":"src/ameba/rule/lint/unneeded_disable_directive.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/unneeded_disable_directive.cr#L1"},{"filename":"src/ameba/rule/lint/unreachable_code.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/unreachable_code.cr#L1"},{"filename":"src/ameba/rule/lint/unused_argument.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/unused_argument.cr#L1"},{"filename":"src/ameba/rule/lint/useless_assign.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/useless_assign.cr#L1"},{"filename":"src/ameba/rule/lint/useless_condition_in_when.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/useless_condition_in_when.cr#L1"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule","kind":"module","full_name":"Ameba::Rule","name":"Rule"},"doc":null,"summary":null,"class_methods":[],"constructors":[],"instance_methods":[],"macros":[],"types":[{"html_id":"ameba/Ameba/Rule/Lint/BadDirective","path":"Ameba/Rule/Lint/BadDirective.html","kind":"struct","full_name":"Ameba::Rule::Lint::BadDirective","name":"BadDirective","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/lint/bad_directive.cr","line_number":21,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/bad_directive.cr#L21"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"ALL_GROUP_NAMES","name":"ALL_GROUP_NAMES","value":"Rule.rules.map(&.group_name).uniq!","doc":null,"summary":null},{"id":"ALL_RULE_NAMES","name":"ALL_RULE_NAMES","value":"Rule.rules.map(&.rule_name)","doc":null,"summary":null},{"id":"AVAILABLE_ACTIONS","name":"AVAILABLE_ACTIONS","value":"InlineComments::Action.names.map(&.downcase)","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Lint","kind":"module","full_name":"Ameba::Rule::Lint","name":"Lint"},"doc":"A rule that reports incorrect comment directives for Ameba.\n\nFor example, the user can mistakenly add a directive\nto disable a rule that even doesn't exist:\n\n```\n# ameba:disable BadRuleName\ndef foo\n :bar\nend\n```\n\nYAML configuration example:\n\n```\nLint/BadDirective:\n Enabled: true\n```\n","summary":"

    A rule that reports incorrect comment directives for Ameba.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that reports incorrect comment directives for Ameba.\n\nFor example, the user can mistakenly add a directive\nto disable a rule that even doesn't exist:\n\n```\n# ameba:disable BadRuleName\ndef foo\n :bar\nend\n```\n\nYAML configuration example:\n\n```\nLint/BadDirective:\n Enabled: true\n```\n","summary":"

    A rule that reports incorrect comment directives for Ameba.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/bad_directive.cr#L21","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source)-instance-method","html_id":"test(source)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"args_string":"(source)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/bad_directive.cr#L30","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"(Tokenizer.new(source)).run do |token|\n if token.type == (:COMMENT)\n else\n next\n end\n if directive = source.parse_inline_directive(token.value.to_s)\n else\n next\n end\n check_action(source, token, directive[:action])\n check_rules(source, token, directive[:rules])\nend"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Lint/ComparisonToBoolean","path":"Ameba/Rule/Lint/ComparisonToBoolean.html","kind":"struct","full_name":"Ameba::Rule::Lint::ComparisonToBoolean","name":"ComparisonToBoolean","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/lint/comparison_to_boolean.cr","line_number":23,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/comparison_to_boolean.cr#L23"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Comparison to a boolean is pointless\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Lint","kind":"module","full_name":"Ameba::Rule::Lint","name":"Lint"},"doc":"A rule that disallows comparison to booleans.\n\nFor example, these are considered invalid:\n\n```\nfoo == true\nbar != false\nfalse === baz\n```\n\nThis is because these expressions evaluate to `true` or `false`, so you\ncould get the same result by using either the variable directly,\nor negating the variable.\n\nYAML configuration example:\n\n```\nLint/ComparisonToBoolean:\n Enabled: true\n```\n","summary":"

    A rule that disallows comparison to booleans.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows comparison to booleans.\n\nFor example, these are considered invalid:\n\n```\nfoo == true\nbar != false\nfalse === baz\n```\n\nThis is because these expressions evaluate to `true` or `false`, so you\ncould get the same result by using either the variable directly,\nor negating the variable.\n\nYAML configuration example:\n\n```\nLint/ComparisonToBoolean:\n Enabled: true\n```\n","summary":"

    A rule that disallows comparison to booleans.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/comparison_to_boolean.cr#L23","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Bool","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled:Bool)-instance-method","html_id":"enabled=(enabled:Bool)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":"Bool"}],"args_string":"(enabled : Bool)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":"Bool"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node:Crystal::Call)-instance-method","html_id":"test(source,node:Crystal::Call)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Call"}],"args_string":"(source, node : Crystal::Call)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/comparison_to_boolean.cr#L31","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Call"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"comparison = ([\"==\", \"!=\", \"===\"] of ::String).includes?(node.name)\nto_boolean = node.args.first?.try do |__arg0|\n __arg0.is_a?(Crystal::BoolLiteral)\nend || node.obj.is_a?(Crystal::BoolLiteral)\nif comparison && to_boolean\nelse\n return\nend\nissue_for(node, MSG)\n"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Lint/DebuggerStatement","path":"Ameba/Rule/Lint/DebuggerStatement.html","kind":"struct","full_name":"Ameba::Rule::Lint::DebuggerStatement","name":"DebuggerStatement","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/lint/debugger_statement.cr","line_number":14,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/debugger_statement.cr#L14"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Possible forgotten debugger statement detected\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Lint","kind":"module","full_name":"Ameba::Rule::Lint","name":"Lint"},"doc":"A rule that disallows calls to debugger.\n\nThis is because we don't want debugger breakpoints accidentally being\ncommitted into our codebase.\n\nYAML configuration example:\n\n```\nLint/DebuggerStatement:\n Enabled: true\n```\n","summary":"

    A rule that disallows calls to debugger.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows calls to debugger.\n\nThis is because we don't want debugger breakpoints accidentally being\ncommitted into our codebase.\n\nYAML configuration example:\n\n```\nLint/DebuggerStatement:\n Enabled: true\n```\n","summary":"

    A rule that disallows calls to debugger.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/debugger_statement.cr#L14","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node:Crystal::Call)-instance-method","html_id":"test(source,node:Crystal::Call)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Call"}],"args_string":"(source, node : Crystal::Call)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/debugger_statement.cr#L21","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Call"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if ((node.name == \"debugger\") && node.args.empty?) && node.obj.nil?\nelse\n return\nend\nissue_for(node, MSG)\n"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Lint/EmptyEnsure","path":"Ameba/Rule/Lint/EmptyEnsure.html","kind":"struct","full_name":"Ameba::Rule::Lint::EmptyEnsure","name":"EmptyEnsure","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/lint/empty_ensure.cr","line_number":42,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/empty_ensure.cr#L42"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Empty `ensure` block detected\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Lint","kind":"module","full_name":"Ameba::Rule::Lint","name":"Lint"},"doc":"A rule that disallows empty ensure statement.\n\nFor example, this is considered invalid:\n\n```\ndef some_method\n do_some_stuff\nensure\nend\n\nbegin\n do_some_stuff\nensure\nend\n```\n\nAnd it should be written as this:\n\n\n```\ndef some_method\n do_some_stuff\nensure\n do_something_else\nend\n\nbegin\n do_some_stuff\nensure\n do_something_else\nend\n```\n\nYAML configuration example:\n\n```\nLint/EmptyEnsure\n Enabled: true\n```\n","summary":"

    A rule that disallows empty ensure statement.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows empty ensure statement.\n\nFor example, this is considered invalid:\n\n```\ndef some_method\n do_some_stuff\nensure\nend\n\nbegin\n do_some_stuff\nensure\nend\n```\n\nAnd it should be written as this:\n\n\n```\ndef some_method\n do_some_stuff\nensure\n do_something_else\nend\n\nbegin\n do_some_stuff\nensure\n do_something_else\nend\n```\n\nYAML configuration example:\n\n```\nLint/EmptyEnsure\n Enabled: true\n```\n","summary":"

    A rule that disallows empty ensure statement.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/empty_ensure.cr#L42","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node:Crystal::ExceptionHandler)-instance-method","html_id":"test(source,node:Crystal::ExceptionHandler)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ExceptionHandler"}],"args_string":"(source, node : Crystal::ExceptionHandler)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/empty_ensure.cr#L49","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ExceptionHandler"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"node_ensure = node.ensure\nif node_ensure.nil? || (!node_ensure.nop?)\n return\nend\nissue_for(node, MSG)\n"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Lint/EmptyExpression","path":"Ameba/Rule/Lint/EmptyExpression.html","kind":"struct","full_name":"Ameba::Rule::Lint::EmptyExpression","name":"EmptyExpression","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/Ameba/AST/Util","kind":"module","full_name":"Ameba::AST::Util","name":"Util"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/lint/empty_expression.cr","line_number":31,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/empty_expression.cr#L31"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Avoid empty expression %s\"","doc":null,"summary":null},{"id":"MSG_EXRS","name":"MSG_EXRS","value":"\"Avoid empty expressions\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/Ameba/AST/Util","kind":"module","full_name":"Ameba::AST::Util","name":"Util"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Lint","kind":"module","full_name":"Ameba::Rule::Lint","name":"Lint"},"doc":"A rule that disallows empty expressions.\n\nThis is considered invalid:\n\n```\nfoo = ()\n\nif ()\n bar\nend\n```\n\nAnd this is valid:\n\n```\nfoo = (some_expression)\n\nif (some_expression)\n bar\nend\n```\n\nYAML configuration example:\n\n```\nLint/EmptyExpression:\n Enabled: true\n```\n","summary":"

    A rule that disallows empty expressions.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows empty expressions.\n\nThis is considered invalid:\n\n```\nfoo = ()\n\nif ()\n bar\nend\n```\n\nAnd this is valid:\n\n```\nfoo = (some_expression)\n\nif (some_expression)\n bar\nend\n```\n\nYAML configuration example:\n\n```\nLint/EmptyExpression:\n Enabled: true\n```\n","summary":"

    A rule that disallows empty expressions.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/empty_expression.cr#L31","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Bool","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled:Bool)-instance-method","html_id":"enabled=(enabled:Bool)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":"Bool"}],"args_string":"(enabled : Bool)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":"Bool"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node:Crystal::NilLiteral)-instance-method","html_id":"test(source,node:Crystal::NilLiteral)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::NilLiteral"}],"args_string":"(source, node : Crystal::NilLiteral)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/empty_expression.cr#L42","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::NilLiteral"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"exp = (node_source(node, source.lines)).try(&.join)\nif exp.nil? || (exp == \"nil\")\n return\nend\nissue_for(node, MSG % exp)\n"}},{"id":"test(source,node:Crystal::Expressions)-instance-method","html_id":"test(source,node:Crystal::Expressions)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Expressions"}],"args_string":"(source, node : Crystal::Expressions)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/empty_expression.cr#L50","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Expressions"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (node.expressions.size == 1) && node.expressions.first.nop?\n issue_for(node, MSG_EXRS)\nend"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Lint/EmptyLoop","path":"Ameba/Rule/Lint/EmptyLoop.html","kind":"struct","full_name":"Ameba::Rule::Lint::EmptyLoop","name":"EmptyLoop","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/Ameba/AST/Util","kind":"module","full_name":"Ameba::AST::Util","name":"Util"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/lint/empty_loop.cr","line_number":40,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/empty_loop.cr#L40"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Empty loop detected\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/Ameba/AST/Util","kind":"module","full_name":"Ameba::AST::Util","name":"Util"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Lint","kind":"module","full_name":"Ameba::Rule::Lint","name":"Lint"},"doc":"A rule that disallows empty loops.\n\nThis is considered invalid:\n\n```\nwhile false\nend\n\nuntil 10\nend\n\nloop do\n # nothing here\nend\n```\n\nAnd this is valid:\n\n```\na = 1\nwhile a < 10\n a += 1\nend\n\nuntil socket_opened?\nend\n\nloop do\n do_something_here\nend\n```\n\nYAML configuration example:\n\n```\nLint/EmptyLoop:\n Enabled: true\n```","summary":"

    A rule that disallows empty loops.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows empty loops.\n\nThis is considered invalid:\n\n```\nwhile false\nend\n\nuntil 10\nend\n\nloop do\n # nothing here\nend\n```\n\nAnd this is valid:\n\n```\na = 1\nwhile a < 10\n a += 1\nend\n\nuntil socket_opened?\nend\n\nloop do\n do_something_here\nend\n```\n\nYAML configuration example:\n\n```\nLint/EmptyLoop:\n Enabled: true\n```","summary":"

    A rule that disallows empty loops.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/empty_loop.cr#L40","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node:Crystal::Call)-instance-method","html_id":"test(source,node:Crystal::Call)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Call"}],"args_string":"(source, node : Crystal::Call)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/empty_loop.cr#L49","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Call"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if loop?(node)\nelse\n return\nend\ncheck_node(source, node, node.block)\n"}},{"id":"test(source,node:Crystal::While)-instance-method","html_id":"test(source,node:Crystal::While)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::While"}],"args_string":"(source, node : Crystal::While)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/empty_loop.cr#L55","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::While"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if literal?(node.cond)\n check_node(source, node, node.body)\nend"}},{"id":"test(source,node:Crystal::Until)-instance-method","html_id":"test(source,node:Crystal::Until)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Until"}],"args_string":"(source, node : Crystal::Until)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/empty_loop.cr#L59","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Until"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if literal?(node.cond)\n check_node(source, node, node.body)\nend"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Lint/HashDuplicatedKey","path":"Ameba/Rule/Lint/HashDuplicatedKey.html","kind":"struct","full_name":"Ameba::Rule::Lint::HashDuplicatedKey","name":"HashDuplicatedKey","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/lint/hash_duplicated_key.cr","line_number":23,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/hash_duplicated_key.cr#L23"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Duplicated keys in hash literal: %s\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Lint","kind":"module","full_name":"Ameba::Rule::Lint","name":"Lint"},"doc":"A rule that disallows duplicated keys in hash literals.\n\nThis is considered invalid:\n\n```\nh = {\"foo\" => 1, \"bar\" => 2, \"foo\" => 3}\n```\n\nAnd it has to written as this instead:\n\n```\nh = {\"foo\" => 1, \"bar\" => 2}\n```\n\nYAML configuration example:\n\n```\nLint/HashDuplicatedKey:\n Enabled: true\n```\n","summary":"

    A rule that disallows duplicated keys in hash literals.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows duplicated keys in hash literals.\n\nThis is considered invalid:\n\n```\nh = {\"foo\" => 1, \"bar\" => 2, \"foo\" => 3}\n```\n\nAnd it has to written as this instead:\n\n```\nh = {\"foo\" => 1, \"bar\" => 2}\n```\n\nYAML configuration example:\n\n```\nLint/HashDuplicatedKey:\n Enabled: true\n```\n","summary":"

    A rule that disallows duplicated keys in hash literals.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/hash_duplicated_key.cr#L23","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node:Crystal::HashLiteral)-instance-method","html_id":"test(source,node:Crystal::HashLiteral)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::HashLiteral"}],"args_string":"(source, node : Crystal::HashLiteral)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/hash_duplicated_key.cr#L30","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::HashLiteral"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (keys = duplicated_keys(node.entries)).any?\nelse\n return\nend\nissue_for(node, MSG % (keys.join(\", \")))\n"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Lint/LiteralInCondition","path":"Ameba/Rule/Lint/LiteralInCondition.html","kind":"struct","full_name":"Ameba::Rule::Lint::LiteralInCondition","name":"LiteralInCondition","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/Ameba/AST/Util","kind":"module","full_name":"Ameba::AST::Util","name":"Util"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/lint/literal_in_condition.cr","line_number":23,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/literal_in_condition.cr#L23"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Literal value found in conditional\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/Ameba/AST/Util","kind":"module","full_name":"Ameba::AST::Util","name":"Util"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Lint","kind":"module","full_name":"Ameba::Rule::Lint","name":"Lint"},"doc":"A rule that disallows useless conditional statements that contain a literal\nin place of a variable or predicate function.\n\nThis is because a conditional construct with a literal predicate will\nalways result in the same behaviour at run time, meaning it can be\nreplaced with either the body of the construct, or deleted entirely.\n\nThis is considered invalid:\n```\nif \"something\"\n :ok\nend\n```\n\nYAML configuration example:\n\n```\nLint/LiteralInCondition:\n Enabled: true\n```\n","summary":"

    A rule that disallows useless conditional statements that contain a literal in place of a variable or predicate function.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows useless conditional statements that contain a literal\nin place of a variable or predicate function.\n\nThis is because a conditional construct with a literal predicate will\nalways result in the same behaviour at run time, meaning it can be\nreplaced with either the body of the construct, or deleted entirely.\n\nThis is considered invalid:\n```\nif \"something\"\n :ok\nend\n```\n\nYAML configuration example:\n\n```\nLint/LiteralInCondition:\n Enabled: true\n```\n","summary":"

    A rule that disallows useless conditional statements that contain a literal in place of a variable or predicate function.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/literal_in_condition.cr#L23","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"check_node(source,node)-instance-method","html_id":"check_node(source,node)-instance-method","name":"check_node","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"args_string":"(source, node)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/literal_in_condition.cr#L33","def":{"name":"check_node","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if literal?(node.cond)\nelse\n return\nend\nissue_for(node, MSG)\n"}},{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node:Crystal::If)-instance-method","html_id":"test(source,node:Crystal::If)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::If"}],"args_string":"(source, node : Crystal::If)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/literal_in_condition.cr#L38","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::If"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"check_node(source, node)"}},{"id":"test(source,node:Crystal::Unless)-instance-method","html_id":"test(source,node:Crystal::Unless)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Unless"}],"args_string":"(source, node : Crystal::Unless)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/literal_in_condition.cr#L42","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Unless"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"check_node(source, node)"}},{"id":"test(source,node:Crystal::Case)-instance-method","html_id":"test(source,node:Crystal::Case)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Case"}],"args_string":"(source, node : Crystal::Case)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/literal_in_condition.cr#L46","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Case"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"check_node(source, node)"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Lint/LiteralInInterpolation","path":"Ameba/Rule/Lint/LiteralInInterpolation.html","kind":"struct","full_name":"Ameba::Rule::Lint::LiteralInInterpolation","name":"LiteralInInterpolation","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/Ameba/AST/Util","kind":"module","full_name":"Ameba::AST::Util","name":"Util"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/lint/literal_in_interpolation.cr","line_number":19,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/literal_in_interpolation.cr#L19"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Literal value found in interpolation\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/Ameba/AST/Util","kind":"module","full_name":"Ameba::AST::Util","name":"Util"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Lint","kind":"module","full_name":"Ameba::Rule::Lint","name":"Lint"},"doc":"A rule that disallows useless string interpolations\nthat contain a literal value instead of a variable or function.\n\nFor example:\n\n```\n\"Hello, #{:Ary}\"\n\"There are #{4} cats\"\n```\n\nYAML configuration example:\n\n```\nLint/LiteralInInterpolation\n Enabled: true\n```\n","summary":"

    A rule that disallows useless string interpolations that contain a literal value instead of a variable or function.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows useless string interpolations\nthat contain a literal value instead of a variable or function.\n\nFor example:\n\n```\n\"Hello, #{:Ary}\"\n\"There are #{4} cats\"\n```\n\nYAML configuration example:\n\n```\nLint/LiteralInInterpolation\n Enabled: true\n```\n","summary":"

    A rule that disallows useless string interpolations that contain a literal value instead of a variable or function.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/literal_in_interpolation.cr#L19","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node:Crystal::StringInterpolation)-instance-method","html_id":"test(source,node:Crystal::StringInterpolation)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::StringInterpolation"}],"args_string":"(source, node : Crystal::StringInterpolation)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/literal_in_interpolation.cr#L28","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::StringInterpolation"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"node.expressions.select do |e|\n (!e.is_a?(Crystal::StringLiteral)) && (literal?(e))\nend.each do |n|\n issue_for(n, MSG)\nend"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Lint/PercentArrays","path":"Ameba/Rule/Lint/PercentArrays.html","kind":"struct","full_name":"Ameba::Rule::Lint::PercentArrays","name":"PercentArrays","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/lint/percent_array.cr","line_number":27,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/percent_array.cr#L27"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Symbols `%s` may be unwanted in %s array literals\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Lint","kind":"module","full_name":"Ameba::Rule::Lint","name":"Lint"},"doc":"A rule that disallows some unwanted symbols in percent array literals.\n\nFor example, this is usually written by mistake:\n\n```\n%i(:one, :two)\n%w(\"one\", \"two\")\n```\n\nAnd the expected example is:\n\n```\n%i(one two)\n%w(one two)\n```\n\nYAML configuration example:\n\n```\nLint/PercentArrays:\n Enabled: true\n StringArrayUnwantedSymbols: ',\"'\n SymbolArrayUnwantedSymbols: ',:'\n```\n","summary":"

    A rule that disallows some unwanted symbols in percent array literals.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows some unwanted symbols in percent array literals.\n\nFor example, this is usually written by mistake:\n\n```\n%i(:one, :two)\n%w(\"one\", \"two\")\n```\n\nAnd the expected example is:\n\n```\n%i(one two)\n%w(one two)\n```\n\nYAML configuration example:\n\n```\nLint/PercentArrays:\n Enabled: true\n StringArrayUnwantedSymbols: ',\"'\n SymbolArrayUnwantedSymbols: ',:'\n```\n","summary":"

    A rule that disallows some unwanted symbols in percent array literals.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/percent_array.cr#L27","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"string_array_unwanted_symbols:String-instance-method","html_id":"string_array_unwanted_symbols:String-instance-method","name":"string_array_unwanted_symbols","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"string_array_unwanted_symbols","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@string_array_unwanted_symbols"}},{"id":"string_array_unwanted_symbols=(string_array_unwanted_symbols:String)-instance-method","html_id":"string_array_unwanted_symbols=(string_array_unwanted_symbols:String)-instance-method","name":"string_array_unwanted_symbols=","doc":null,"summary":null,"abstract":false,"args":[{"name":"string_array_unwanted_symbols","doc":null,"default_value":"","external_name":"string_array_unwanted_symbols","restriction":"String"}],"args_string":"(string_array_unwanted_symbols : String)","source_link":null,"def":{"name":"string_array_unwanted_symbols=","args":[{"name":"string_array_unwanted_symbols","doc":null,"default_value":"","external_name":"string_array_unwanted_symbols","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@string_array_unwanted_symbols = string_array_unwanted_symbols"}},{"id":"symbol_array_unwanted_symbols:String-instance-method","html_id":"symbol_array_unwanted_symbols:String-instance-method","name":"symbol_array_unwanted_symbols","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"symbol_array_unwanted_symbols","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@symbol_array_unwanted_symbols"}},{"id":"symbol_array_unwanted_symbols=(symbol_array_unwanted_symbols:String)-instance-method","html_id":"symbol_array_unwanted_symbols=(symbol_array_unwanted_symbols:String)-instance-method","name":"symbol_array_unwanted_symbols=","doc":null,"summary":null,"abstract":false,"args":[{"name":"symbol_array_unwanted_symbols","doc":null,"default_value":"","external_name":"symbol_array_unwanted_symbols","restriction":"String"}],"args_string":"(symbol_array_unwanted_symbols : String)","source_link":null,"def":{"name":"symbol_array_unwanted_symbols=","args":[{"name":"symbol_array_unwanted_symbols","doc":null,"default_value":"","external_name":"symbol_array_unwanted_symbols","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@symbol_array_unwanted_symbols = symbol_array_unwanted_symbols"}},{"id":"test(source)-instance-method","html_id":"test(source)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"args_string":"(source)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/percent_array.cr#L36","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"issue = start_token = nil\n(Tokenizer.new(source)).run do |token|\n case token.type\n when :STRING_ARRAY_START, :SYMBOL_ARRAY_START\n start_token = token.dup\n when :STRING\n if start_token && issue.nil?\n issue = array_entry_invalid?(token.value, start_token.not_nil!.raw)\n end\n when :STRING_ARRAY_END, :SYMBOL_ARRAY_END\n if issue\n issue_for(start_token.not_nil!, issue.not_nil!)\n end\n issue = start_token = nil\n else\n end\nend\n"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Lint/RandZero","path":"Ameba/Rule/Lint/RandZero.html","kind":"struct","full_name":"Ameba::Rule::Lint::RandZero","name":"RandZero","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/lint/rand_zero.cr","line_number":26,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/rand_zero.cr#L26"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"%s always returns 0\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Lint","kind":"module","full_name":"Ameba::Rule::Lint","name":"Lint"},"doc":"A rule that disallows `rand(0)` and `rand(1)` calls.\nSuch calls always return `0`.\n\nFor example:\n\n```\nrand(1)\n```\n\nShould be written as:\n\n```\nrand\n# or\nrand(2)\n```\n\nYAML configuration example:\n\n```\nLint/RandZero:\n Enabled: true\n```\n","summary":"

    A rule that disallows rand(0) and rand(1) calls.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows `rand(0)` and `rand(1)` calls.\nSuch calls always return `0`.\n\nFor example:\n\n```\nrand(1)\n```\n\nShould be written as:\n\n```\nrand\n# or\nrand(2)\n```\n\nYAML configuration example:\n\n```\nLint/RandZero:\n Enabled: true\n```\n","summary":"

    A rule that disallows rand(0) and rand(1) calls.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/rand_zero.cr#L26","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node:Crystal::Call)-instance-method","html_id":"test(source,node:Crystal::Call)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Call"}],"args_string":"(source, node : Crystal::Call)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/rand_zero.cr#L33","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Call"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (((((node.name == \"rand\") && (node.args.size == 1)) && (arg = node.args.first)) && (arg.is_a?(Crystal::NumberLiteral))) && (value = arg.value)) && ((value == \"0\") || (value == \"1\"))\nelse\n return\nend\nissue_for(node, MSG % node)\n"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Lint/RedundantStringCoercion","path":"Ameba/Rule/Lint/RedundantStringCoercion.html","kind":"struct","full_name":"Ameba::Rule::Lint::RedundantStringCoercion","name":"RedundantStringCoercion","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/Ameba/AST/Util","kind":"module","full_name":"Ameba::AST::Util","name":"Util"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/lint/redundant_string_coercion.cr","line_number":24,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/redundant_string_coercion.cr#L24"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Redundant use of `Object#to_s` in interpolation\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/Ameba/AST/Util","kind":"module","full_name":"Ameba::AST::Util","name":"Util"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Lint","kind":"module","full_name":"Ameba::Rule::Lint","name":"Lint"},"doc":"A rule that disallows string conversion in string interpolation,\nwhich is redundant.\n\nFor example, this is considered invalid:\n\n```\n\"Hello, #{name.to_s}\"\n```\n\nAnd this is valid:\n\n```\n\"Hello, #{name}\"\n```\n\nYAML configuration example:\n\n```\nLint/RedundantStringCoersion\n Enabled: true\n```\n","summary":"

    A rule that disallows string conversion in string interpolation, which is redundant.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows string conversion in string interpolation,\nwhich is redundant.\n\nFor example, this is considered invalid:\n\n```\n\"Hello, #{name.to_s}\"\n```\n\nAnd this is valid:\n\n```\n\"Hello, #{name}\"\n```\n\nYAML configuration example:\n\n```\nLint/RedundantStringCoersion\n Enabled: true\n```\n","summary":"

    A rule that disallows string conversion in string interpolation, which is redundant.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/redundant_string_coercion.cr#L24","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node:Crystal::StringInterpolation)-instance-method","html_id":"test(source,node:Crystal::StringInterpolation)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::StringInterpolation"}],"args_string":"(source, node : Crystal::StringInterpolation)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/redundant_string_coercion.cr#L33","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::StringInterpolation"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"(string_coercion_nodes(node)).each do |n|\n issue_for(n.name_location, n.end_location, MSG)\nend"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Lint/RedundantWithIndex","path":"Ameba/Rule/Lint/RedundantWithIndex.html","kind":"struct","full_name":"Ameba::Rule::Lint::RedundantWithIndex","name":"RedundantWithIndex","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/lint/redundant_with_index.cr","line_number":30,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/redundant_with_index.cr#L30"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Lint","kind":"module","full_name":"Ameba::Rule::Lint","name":"Lint"},"doc":"A rule that disallows redundant `with_index` calls.\n\nFor example, this is considered invalid:\n```\ncollection.each.with_index do |e|\n # ...\nend\n\ncollection.each_with_index do |e, _|\n # ...\nend\n```\n\nand it should be written as follows:\n\n```\ncollection.each do |e|\n # ...\nend\n```\n\nYAML configuration example:\n\n```\nLint/RedundantWithIndex:\n Enabled: true\n```\n","summary":"

    A rule that disallows redundant with_index calls.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows redundant `with_index` calls.\n\nFor example, this is considered invalid:\n```\ncollection.each.with_index do |e|\n # ...\nend\n\ncollection.each_with_index do |e, _|\n # ...\nend\n```\n\nand it should be written as follows:\n\n```\ncollection.each do |e|\n # ...\nend\n```\n\nYAML configuration example:\n\n```\nLint/RedundantWithIndex:\n Enabled: true\n```\n","summary":"

    A rule that disallows redundant with_index calls.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/redundant_with_index.cr#L30","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node:Crystal::Call)-instance-method","html_id":"test(source,node:Crystal::Call)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Call"}],"args_string":"(source, node : Crystal::Call)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/redundant_with_index.cr#L35","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Call"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"args, block = node.args, node.block\nif (args.size > 1 || block.nil?) || (with_index_arg?(block.not_nil!))\n return\nend\ncase node.name\nwhen \"with_index\"\n report(source, node, \"Remove redundant with_index\")\nwhen \"each_with_index\"\n report(source, node, \"Use each instead of each_with_index\")\nelse\nend\n"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Lint/RedundantWithObject","path":"Ameba/Rule/Lint/RedundantWithObject.html","kind":"struct","full_name":"Ameba::Rule::Lint::RedundantWithObject","name":"RedundantWithObject","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/lint/redundant_with_object.cr","line_number":31,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/redundant_with_object.cr#L31"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Lint","kind":"module","full_name":"Ameba::Rule::Lint","name":"Lint"},"doc":"A rule that disallows redundant `each_with_object` calls.\n\nFor example, this is considered invalid:\n\n```\ncollection.each_with_object(0) do |e|\n # ...\nend\n\ncollection.each_with_object(0) do |e, _|\n # ...\nend\n```\n\nand it should be written as follows:\n\n```\ncollection.each do |e|\n # ...\nend\n```\n\nYAML configuration example:\n\n```\nLint/RedundantWithObject:\n Enabled: true\n```\n","summary":"

    A rule that disallows redundant each_with_object calls.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows redundant `each_with_object` calls.\n\nFor example, this is considered invalid:\n\n```\ncollection.each_with_object(0) do |e|\n # ...\nend\n\ncollection.each_with_object(0) do |e, _|\n # ...\nend\n```\n\nand it should be written as follows:\n\n```\ncollection.each do |e|\n # ...\nend\n```\n\nYAML configuration example:\n\n```\nLint/RedundantWithObject:\n Enabled: true\n```\n","summary":"

    A rule that disallows redundant each_with_object calls.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/redundant_with_object.cr#L31","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node:Crystal::Call)-instance-method","html_id":"test(source,node:Crystal::Call)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Call"}],"args_string":"(source, node : Crystal::Call)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/redundant_with_object.cr#L36","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Call"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (((node.name != \"each_with_object\") || (node.args.size != 1)) || node.block.nil?) || (with_index_arg?(node.block.not_nil!))\n return\nend\nissue_for(node.name_location, node.name_end_location, \"Use each instead of each_with_object\")\n"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Lint/ShadowedArgument","path":"Ameba/Rule/Lint/ShadowedArgument.html","kind":"struct","full_name":"Ameba::Rule::Lint::ShadowedArgument","name":"ShadowedArgument","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/lint/shadowed_argument.cr","line_number":39,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/shadowed_argument.cr#L39"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Argument `%s` is assigned before it is used\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Lint","kind":"module","full_name":"Ameba::Rule::Lint","name":"Lint"},"doc":"A rule that disallows shadowed arguments.\n\nFor example, this is considered invalid:\n\n```\ndo_something do |foo|\n foo = 1 # shadows block argument\n foo\nend\n\ndef do_something(foo)\n foo = 1 # shadows method argument\n foo\nend\n```\n\nand it should be written as follows:\n\n```\ndo_something do |foo|\n foo = foo + 42\n foo\nend\n\ndef do_something(foo)\n foo = foo + 42\n foo\nend\n```\n\nYAML configuration example:\n\n```\nLint/ShadowedArgument:\n Enabled: true\n```\n","summary":"

    A rule that disallows shadowed arguments.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows shadowed arguments.\n\nFor example, this is considered invalid:\n\n```\ndo_something do |foo|\n foo = 1 # shadows block argument\n foo\nend\n\ndef do_something(foo)\n foo = 1 # shadows method argument\n foo\nend\n```\n\nand it should be written as follows:\n\n```\ndo_something do |foo|\n foo = foo + 42\n foo\nend\n\ndef do_something(foo)\n foo = foo + 42\n foo\nend\n```\n\nYAML configuration example:\n\n```\nLint/ShadowedArgument:\n Enabled: true\n```\n","summary":"

    A rule that disallows shadowed arguments.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/shadowed_argument.cr#L39","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node,scope:AST::Scope)-instance-method","html_id":"test(source,node,scope:AST::Scope)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""},{"name":"scope","doc":null,"default_value":"","external_name":"scope","restriction":"AST::Scope"}],"args_string":"(source, node, scope : AST::Scope)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/shadowed_argument.cr#L50","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""},{"name":"scope","doc":null,"default_value":"","external_name":"scope","restriction":"AST::Scope"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"scope.arguments.each do |arg|\n if assign = arg.variable.assign_before_reference\n else\n next\n end\n issue_for(assign, MSG % arg.name)\nend"}},{"id":"test(source)-instance-method","html_id":"test(source)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"args_string":"(source)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/shadowed_argument.cr#L46","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"AST::ScopeVisitor.new(self, source)"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Lint/ShadowedException","path":"Ameba/Rule/Lint/ShadowedException.html","kind":"struct","full_name":"Ameba::Rule::Lint::ShadowedException","name":"ShadowedException","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/lint/shadowed_exception.cr","line_number":37,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/shadowed_exception.cr#L37"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Exception handler has shadowed exceptions: %s\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Lint","kind":"module","full_name":"Ameba::Rule::Lint","name":"Lint"},"doc":"A rule that disallows a rescued exception that get shadowed by a\nless specific exception being rescued before a more specific\nexception is rescued.\n\nFor example, this is invalid:\n\n```\nbegin\n do_something\nrescue Exception\n handle_exception\nrescue ArgumentError\n handle_argument_error_exception\nend\n```\n\nAnd it has to be written as follows:\n\n```\nbegin\n do_something\nrescue ArgumentError\n handle_argument_error_exception\nrescue Exception\n handle_exception\nend\n```\n\nYAML configuration example:\n\n```\nLint/ShadowedException:\n Enabled: true\n```\n","summary":"

    A rule that disallows a rescued exception that get shadowed by a less specific exception being rescued before a more specific exception is rescued.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows a rescued exception that get shadowed by a\nless specific exception being rescued before a more specific\nexception is rescued.\n\nFor example, this is invalid:\n\n```\nbegin\n do_something\nrescue Exception\n handle_exception\nrescue ArgumentError\n handle_argument_error_exception\nend\n```\n\nAnd it has to be written as follows:\n\n```\nbegin\n do_something\nrescue ArgumentError\n handle_argument_error_exception\nrescue Exception\n handle_exception\nend\n```\n\nYAML configuration example:\n\n```\nLint/ShadowedException:\n Enabled: true\n```\n","summary":"

    A rule that disallows a rescued exception that get shadowed by a less specific exception being rescued before a more specific exception is rescued.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/shadowed_exception.cr#L37","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node:Crystal::ExceptionHandler)-instance-method","html_id":"test(source,node:Crystal::ExceptionHandler)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ExceptionHandler"}],"args_string":"(source, node : Crystal::ExceptionHandler)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/shadowed_exception.cr#L44","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ExceptionHandler"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if excs = node.rescues\nelse\n return\nend\nif (excs = shadowed(excs.map(&.types))).any?\n issue_for(node, MSG % (excs.join(\", \")))\nend\n"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Lint/ShadowingOuterLocalVar","path":"Ameba/Rule/Lint/ShadowingOuterLocalVar.html","kind":"struct","full_name":"Ameba::Rule::Lint::ShadowingOuterLocalVar","name":"ShadowingOuterLocalVar","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/lint/shadowing_local_outer_var.cr","line_number":34,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/shadowing_local_outer_var.cr#L34"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Shadowing outer local variable `%s`\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Lint","kind":"module","full_name":"Ameba::Rule::Lint","name":"Lint"},"doc":"A rule that disallows the usage of the same name as outer local variables\nfor block or proc arguments.\n\nFor example, this is considered incorrect:\n\n```\ndef some_method\n foo = 1\n\n 3.times do |foo| # shadowing outer `foo`\n end\nend\n```\n\nand should be written as:\n\n```\ndef some_method\n foo = 1\n\n 3.times do |bar|\n end\nend\n```\n\nYAML configuration example:\n\n```\nLint/ShadowingOuterLocalVar:\n Enabled: true\n```\n","summary":"

    A rule that disallows the usage of the same name as outer local variables for block or proc arguments.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows the usage of the same name as outer local variables\nfor block or proc arguments.\n\nFor example, this is considered incorrect:\n\n```\ndef some_method\n foo = 1\n\n 3.times do |foo| # shadowing outer `foo`\n end\nend\n```\n\nand should be written as:\n\n```\ndef some_method\n foo = 1\n\n 3.times do |bar|\n end\nend\n```\n\nYAML configuration example:\n\n```\nLint/ShadowingOuterLocalVar:\n Enabled: true\n```\n","summary":"

    A rule that disallows the usage of the same name as outer local variables for block or proc arguments.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/shadowing_local_outer_var.cr#L34","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node:Crystal::ProcLiteral,scope:AST::Scope)-instance-method","html_id":"test(source,node:Crystal::ProcLiteral,scope:AST::Scope)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ProcLiteral"},{"name":"scope","doc":null,"default_value":"","external_name":"scope","restriction":"AST::Scope"}],"args_string":"(source, node : Crystal::ProcLiteral, scope : AST::Scope)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/shadowing_local_outer_var.cr#L46","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ProcLiteral"},{"name":"scope","doc":null,"default_value":"","external_name":"scope","restriction":"AST::Scope"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"find_shadowing(source, scope)"}},{"id":"test(source,node:Crystal::Block,scope:AST::Scope)-instance-method","html_id":"test(source,node:Crystal::Block,scope:AST::Scope)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Block"},{"name":"scope","doc":null,"default_value":"","external_name":"scope","restriction":"AST::Scope"}],"args_string":"(source, node : Crystal::Block, scope : AST::Scope)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/shadowing_local_outer_var.cr#L50","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Block"},{"name":"scope","doc":null,"default_value":"","external_name":"scope","restriction":"AST::Scope"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"find_shadowing(source, scope)"}},{"id":"test(source)-instance-method","html_id":"test(source)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"args_string":"(source)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/shadowing_local_outer_var.cr#L42","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"AST::ScopeVisitor.new(self, source)"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Lint/SharedVarInFiber","path":"Ameba/Rule/Lint/SharedVarInFiber.html","kind":"struct","full_name":"Ameba::Rule::Lint::SharedVarInFiber","name":"SharedVarInFiber","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/lint/shared_var_in_fiber.cr","line_number":53,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/shared_var_in_fiber.cr#L53"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Shared variable `%s` is used in fiber\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Lint","kind":"module","full_name":"Ameba::Rule::Lint","name":"Lint"},"doc":"A rule that disallows using shared variables in fibers,\nwhich are mutated during iterations.\n\nIn most cases it leads to unexpected behaviour and is undesired.\n\nFor example, having this example:\n\n```\nn = 0\nchannel = Channel(Int32).new\n\nwhile n < 3\n n = n + 1\n spawn { channel.send n }\nend\n\n3.times { puts channel.receive } # => # 3, 3, 3\n```\n\nThe problem is there is only one shared between fibers variable `n`\nand when `channel.receive` is executed its value is `3`.\n\nTo solve this, the code above needs to be rewritten to the following:\n\n```\nn = 0\nchannel = Channel(Int32).new\n\nwhile n < 3\n n = n + 1\n m = n\n spawn do { channel.send m }\nend\n\n3.times { puts channel.receive } # => # 1, 2, 3\n```\n\nThis rule is able to find the shared variables between fibers, which are mutated\nduring iterations. So it reports the issue on the first sample and passes on\nthe second one.\n\nThere are also other technics to solve the problem above which are\n[officially documented](https://crystal-lang.org/reference/guides/concurrency.html)\n\nYAML configuration example:\n\n```\nLint/SharedVarInFiber:\n Enabled: true\n```\n","summary":"

    A rule that disallows using shared variables in fibers, which are mutated during iterations.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows using shared variables in fibers,\nwhich are mutated during iterations.\n\nIn most cases it leads to unexpected behaviour and is undesired.\n\nFor example, having this example:\n\n```\nn = 0\nchannel = Channel(Int32).new\n\nwhile n < 3\n n = n + 1\n spawn { channel.send n }\nend\n\n3.times { puts channel.receive } # => # 3, 3, 3\n```\n\nThe problem is there is only one shared between fibers variable `n`\nand when `channel.receive` is executed its value is `3`.\n\nTo solve this, the code above needs to be rewritten to the following:\n\n```\nn = 0\nchannel = Channel(Int32).new\n\nwhile n < 3\n n = n + 1\n m = n\n spawn do { channel.send m }\nend\n\n3.times { puts channel.receive } # => # 1, 2, 3\n```\n\nThis rule is able to find the shared variables between fibers, which are mutated\nduring iterations. So it reports the issue on the first sample and passes on\nthe second one.\n\nThere are also other technics to solve the problem above which are\n[officially documented](https://crystal-lang.org/reference/guides/concurrency.html)\n\nYAML configuration example:\n\n```\nLint/SharedVarInFiber:\n Enabled: true\n```\n","summary":"

    A rule that disallows using shared variables in fibers, which are mutated during iterations.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/shared_var_in_fiber.cr#L53","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node,scope:AST::Scope)-instance-method","html_id":"test(source,node,scope:AST::Scope)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""},{"name":"scope","doc":null,"default_value":"","external_name":"scope","restriction":"AST::Scope"}],"args_string":"(source, node, scope : AST::Scope)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/shared_var_in_fiber.cr#L64","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""},{"name":"scope","doc":null,"default_value":"","external_name":"scope","restriction":"AST::Scope"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if scope.spawn_block?\nelse\n return\nend\nscope.references.each do |ref|\n if ( variable = scope.find_variable(ref.name)).nil?\n next\n end\n if (variable.scope == scope) || (!(mutated_in_loop?(variable)))\n next\n end\n issue_for(ref.node, MSG % variable.name)\nend\n"}},{"id":"test(source)-instance-method","html_id":"test(source)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"args_string":"(source)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/shared_var_in_fiber.cr#L60","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"AST::ScopeVisitor.new(self, source)"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Lint/Syntax","path":"Ameba/Rule/Lint/Syntax.html","kind":"struct","full_name":"Ameba::Rule::Lint::Syntax","name":"Syntax","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/lint/syntax.cr","line_number":22,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/syntax.cr#L22"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Lint","kind":"module","full_name":"Ameba::Rule::Lint","name":"Lint"},"doc":"A rule that reports invalid Crystal syntax.\n\nFor example, this syntax is invalid:\n\n```\ndef hello\n do_something\nrescue Exception => e\nend\n```\n\nAnd should be properly written:\n\n```\ndef hello\n do_something\nrescue e : Exception\nend\n```\n","summary":"

    A rule that reports invalid Crystal syntax.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that reports invalid Crystal syntax.\n\nFor example, this syntax is invalid:\n\n```\ndef hello\n do_something\nrescue Exception => e\nend\n```\n\nAnd should be properly written:\n\n```\ndef hello\n do_something\nrescue e : Exception\nend\n```\n","summary":"

    A rule that reports invalid Crystal syntax.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/syntax.cr#L22","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Ameba::Severity","visibility":"Public","body":"@severity"}},{"id":"severity=(severity:Ameba::Severity)-instance-method","html_id":"severity=(severity:Ameba::Severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":"Ameba::Severity"}],"args_string":"(severity : Ameba::Severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":"Ameba::Severity"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source)-instance-method","html_id":"test(source)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"args_string":"(source)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/syntax.cr#L28","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"begin\n source.ast\nrescue e : Crystal::SyntaxException\n issue_for({e.line_number, e.column_number}, e.message.to_s)\nend"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Lint/UnneededDisableDirective","path":"Ameba/Rule/Lint/UnneededDisableDirective.html","kind":"struct","full_name":"Ameba::Rule::Lint::UnneededDisableDirective","name":"UnneededDisableDirective","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/lint/unneeded_disable_directive.cr","line_number":28,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/unneeded_disable_directive.cr#L28"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Unnecessary disabling of %s\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Lint","kind":"module","full_name":"Ameba::Rule::Lint","name":"Lint"},"doc":"A rule that reports unneeded disable directives.\nFor example, this is considered invalid:\n\n```\n# ameba:disable Style/PredicateName\ndef comment?\n do_something\nend\n```\n\nas the predicate name is correct and the comment directive does not\nhave any effect, the snippet should be written as the following:\n\n```\ndef comment?\n do_something\nend\n```\n\nYAML configuration example:\n\n```\nLint/UnneededDisableDirective\n Enabled: true\n```\n","summary":"

    A rule that reports unneeded disable directives.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that reports unneeded disable directives.\nFor example, this is considered invalid:\n\n```\n# ameba:disable Style/PredicateName\ndef comment?\n do_something\nend\n```\n\nas the predicate name is correct and the comment directive does not\nhave any effect, the snippet should be written as the following:\n\n```\ndef comment?\n do_something\nend\n```\n\nYAML configuration example:\n\n```\nLint/UnneededDisableDirective\n Enabled: true\n```\n","summary":"

    A rule that reports unneeded disable directives.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/unneeded_disable_directive.cr#L28","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source)-instance-method","html_id":"test(source)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"args_string":"(source)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/unneeded_disable_directive.cr#L35","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"(Tokenizer.new(source)).run do |token|\n if token.type == (:COMMENT)\n else\n next\n end\n if directive = source.parse_inline_directive(token.value.to_s)\n else\n next\n end\n if names = unneeded_disables(source, directive, token.location)\n else\n next\n end\n if names.any?\n else\n next\n end\n issue_for(token, MSG % (names.join(\", \")))\nend"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Lint/UnreachableCode","path":"Ameba/Rule/Lint/UnreachableCode.html","kind":"struct","full_name":"Ameba::Rule::Lint::UnreachableCode","name":"UnreachableCode","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/Ameba/AST/Util","kind":"module","full_name":"Ameba::AST::Util","name":"Util"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/lint/unreachable_code.cr","line_number":45,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/unreachable_code.cr#L45"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Unreachable code detected\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/Ameba/AST/Util","kind":"module","full_name":"Ameba::AST::Util","name":"Util"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Lint","kind":"module","full_name":"Ameba::Rule::Lint","name":"Lint"},"doc":"A rule that reports unreachable code.\n\nFor example, this is considered invalid:\n\n```\ndef method(a)\n return 42\n a + 1\nend\n```\n\n```\na = 1\nloop do\n break\n a += 1\nend\n```\n\nAnd has to be written as the following:\n\n```\ndef method(a)\n return 42 if a == 0\n a + 1\nend\n```\n\n```\na = 1\nloop do\n break a > 3\n a += 1\nend\n```\n\nYAML configuration example:\n\n```\nLint/UnreachableCode:\n Enabled: true\n```\n","summary":"

    A rule that reports unreachable code.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that reports unreachable code.\n\nFor example, this is considered invalid:\n\n```\ndef method(a)\n return 42\n a + 1\nend\n```\n\n```\na = 1\nloop do\n break\n a += 1\nend\n```\n\nAnd has to be written as the following:\n\n```\ndef method(a)\n return 42 if a == 0\n a + 1\nend\n```\n\n```\na = 1\nloop do\n break a > 3\n a += 1\nend\n```\n\nYAML configuration example:\n\n```\nLint/UnreachableCode:\n Enabled: true\n```\n","summary":"

    A rule that reports unreachable code.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/unreachable_code.cr#L45","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node,flow_expression:AST::FlowExpression)-instance-method","html_id":"test(source,node,flow_expression:AST::FlowExpression)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""},{"name":"flow_expression","doc":null,"default_value":"","external_name":"flow_expression","restriction":"AST::FlowExpression"}],"args_string":"(source, node, flow_expression : AST::FlowExpression)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/unreachable_code.cr#L58","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""},{"name":"flow_expression","doc":null,"default_value":"","external_name":"flow_expression","restriction":"AST::FlowExpression"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if unreachable_node = flow_expression.unreachable_nodes.first?\n issue_for(unreachable_node, MSG)\nend"}},{"id":"test(source)-instance-method","html_id":"test(source)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"args_string":"(source)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/unreachable_code.cr#L54","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"AST::FlowExpressionVisitor.new(self, source)"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Lint/UnusedArgument","path":"Ameba/Rule/Lint/UnusedArgument.html","kind":"struct","full_name":"Ameba::Rule::Lint::UnusedArgument","name":"UnusedArgument","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/lint/unused_argument.cr","line_number":28,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/unused_argument.cr#L28"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Unused argument `%s`. If it's necessary, use `%s` as an argument name to indicate that it won't be used.\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Lint","kind":"module","full_name":"Ameba::Rule::Lint","name":"Lint"},"doc":"A rule that reports unused arguments.\nFor example, this is considered invalid:\n\n```\ndef method(a, b, c)\n a + b\nend\n```\nand should be written as:\n\n```\ndef method(a, b)\n a + b\nend\n```\n\nYAML configuration example:\n\n```\nLint/UnusedArgument:\n Enabled: true\n IgnoreDefs: true\n IgnoreBlocks: false\n IgnoreProcs: false\n```\n","summary":"

    A rule that reports unused arguments.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that reports unused arguments.\nFor example, this is considered invalid:\n\n```\ndef method(a, b, c)\n a + b\nend\n```\nand should be written as:\n\n```\ndef method(a, b)\n a + b\nend\n```\n\nYAML configuration example:\n\n```\nLint/UnusedArgument:\n Enabled: true\n IgnoreDefs: true\n IgnoreBlocks: false\n IgnoreProcs: false\n```\n","summary":"

    A rule that reports unused arguments.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/unused_argument.cr#L28","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"ignore_blocks:Bool-instance-method","html_id":"ignore_blocks:Bool-instance-method","name":"ignore_blocks","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"ignore_blocks","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Bool","visibility":"Public","body":"@ignore_blocks"}},{"id":"ignore_blocks=(ignore_blocks:Bool)-instance-method","html_id":"ignore_blocks=(ignore_blocks:Bool)-instance-method","name":"ignore_blocks=","doc":null,"summary":null,"abstract":false,"args":[{"name":"ignore_blocks","doc":null,"default_value":"","external_name":"ignore_blocks","restriction":"Bool"}],"args_string":"(ignore_blocks : Bool)","source_link":null,"def":{"name":"ignore_blocks=","args":[{"name":"ignore_blocks","doc":null,"default_value":"","external_name":"ignore_blocks","restriction":"Bool"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@ignore_blocks = ignore_blocks"}},{"id":"ignore_defs:Bool-instance-method","html_id":"ignore_defs:Bool-instance-method","name":"ignore_defs","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"ignore_defs","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Bool","visibility":"Public","body":"@ignore_defs"}},{"id":"ignore_defs=(ignore_defs:Bool)-instance-method","html_id":"ignore_defs=(ignore_defs:Bool)-instance-method","name":"ignore_defs=","doc":null,"summary":null,"abstract":false,"args":[{"name":"ignore_defs","doc":null,"default_value":"","external_name":"ignore_defs","restriction":"Bool"}],"args_string":"(ignore_defs : Bool)","source_link":null,"def":{"name":"ignore_defs=","args":[{"name":"ignore_defs","doc":null,"default_value":"","external_name":"ignore_defs","restriction":"Bool"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@ignore_defs = ignore_defs"}},{"id":"ignore_procs:Bool-instance-method","html_id":"ignore_procs:Bool-instance-method","name":"ignore_procs","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"ignore_procs","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Bool","visibility":"Public","body":"@ignore_procs"}},{"id":"ignore_procs=(ignore_procs:Bool)-instance-method","html_id":"ignore_procs=(ignore_procs:Bool)-instance-method","name":"ignore_procs=","doc":null,"summary":null,"abstract":false,"args":[{"name":"ignore_procs","doc":null,"default_value":"","external_name":"ignore_procs","restriction":"Bool"}],"args_string":"(ignore_procs : Bool)","source_link":null,"def":{"name":"ignore_procs=","args":[{"name":"ignore_procs","doc":null,"default_value":"","external_name":"ignore_procs","restriction":"Bool"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@ignore_procs = ignore_procs"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node:Crystal::ProcLiteral,scope:AST::Scope)-instance-method","html_id":"test(source,node:Crystal::ProcLiteral,scope:AST::Scope)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ProcLiteral"},{"name":"scope","doc":null,"default_value":"","external_name":"scope","restriction":"AST::Scope"}],"args_string":"(source, node : Crystal::ProcLiteral, scope : AST::Scope)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/unused_argument.cr#L44","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ProcLiteral"},{"name":"scope","doc":null,"default_value":"","external_name":"scope","restriction":"AST::Scope"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"ignore_procs || (find_unused_arguments(source, scope))"}},{"id":"test(source,node:Crystal::Block,scope:AST::Scope)-instance-method","html_id":"test(source,node:Crystal::Block,scope:AST::Scope)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Block"},{"name":"scope","doc":null,"default_value":"","external_name":"scope","restriction":"AST::Scope"}],"args_string":"(source, node : Crystal::Block, scope : AST::Scope)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/unused_argument.cr#L48","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Block"},{"name":"scope","doc":null,"default_value":"","external_name":"scope","restriction":"AST::Scope"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"ignore_blocks || (find_unused_arguments(source, scope))"}},{"id":"test(source,node:Crystal::Def,scope:AST::Scope)-instance-method","html_id":"test(source,node:Crystal::Def,scope:AST::Scope)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Def"},{"name":"scope","doc":null,"default_value":"","external_name":"scope","restriction":"AST::Scope"}],"args_string":"(source, node : Crystal::Def, scope : AST::Scope)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/unused_argument.cr#L52","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Def"},{"name":"scope","doc":null,"default_value":"","external_name":"scope","restriction":"AST::Scope"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"ignore_defs || (find_unused_arguments(source, scope))"}},{"id":"test(source)-instance-method","html_id":"test(source)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"args_string":"(source)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/unused_argument.cr#L40","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"AST::ScopeVisitor.new(self, source)"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Lint/UselessAssign","path":"Ameba/Rule/Lint/UselessAssign.html","kind":"struct","full_name":"Ameba::Rule::Lint::UselessAssign","name":"UselessAssign","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/lint/useless_assign.cr","line_number":29,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/useless_assign.cr#L29"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Useless assignment to variable `%s`\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Lint","kind":"module","full_name":"Ameba::Rule::Lint","name":"Lint"},"doc":"A rule that disallows useless assignments.\n\nFor example, this is considered invalid:\n\n```\ndef method\n var = 1\n do_something\nend\n```\n\nAnd has to be written as the following:\n\n```\ndef method\n var = 1\n do_something(var)\nend\n```\n\nYAML configuration example:\n\n```\nLint/UselessAssign:\n Enabled: true\n```\n","summary":"

    A rule that disallows useless assignments.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows useless assignments.\n\nFor example, this is considered invalid:\n\n```\ndef method\n var = 1\n do_something\nend\n```\n\nAnd has to be written as the following:\n\n```\ndef method\n var = 1\n do_something(var)\nend\n```\n\nYAML configuration example:\n\n```\nLint/UselessAssign:\n Enabled: true\n```\n","summary":"

    A rule that disallows useless assignments.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/useless_assign.cr#L29","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node,scope:AST::Scope)-instance-method","html_id":"test(source,node,scope:AST::Scope)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""},{"name":"scope","doc":null,"default_value":"","external_name":"scope","restriction":"AST::Scope"}],"args_string":"(source, node, scope : AST::Scope)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/useless_assign.cr#L40","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""},{"name":"scope","doc":null,"default_value":"","external_name":"scope","restriction":"AST::Scope"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"scope.variables.each do |var|\n if (var.captured_by_block? || var.used_in_macro?) || var.ignored?\n next\n end\n var.assignments.each do |assign|\n if assign.referenced? || assign.transformed?\n next\n end\n issue_for(assign.target_node, MSG % var.name)\n end\nend"}},{"id":"test(source)-instance-method","html_id":"test(source)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"args_string":"(source)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/useless_assign.cr#L36","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"AST::ScopeVisitor.new(self, source)"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Lint/UselessConditionInWhen","path":"Ameba/Rule/Lint/UselessConditionInWhen.html","kind":"struct","full_name":"Ameba::Rule::Lint::UselessConditionInWhen","name":"UselessConditionInWhen","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/lint/useless_condition_in_when.cr","line_number":34,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/useless_condition_in_when.cr#L34"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Useless condition in when detected\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Lint","kind":"module","full_name":"Ameba::Rule::Lint","name":"Lint"},"doc":"A rule that disallows useless conditions in when clause\nwhere it is guaranteed to always return the same result.\n\nFor example, this is considered invalid:\n\n```\ncase\nwhen utc?\n io << \" UTC\"\nwhen local?\n Format.new(\" %:z\").format(self, io) if local?\nend\n```\n\nAnd has to be written as the following:\n\n```\ncase\nwhen utc?\n io << \" UTC\"\nwhen local?\n Format.new(\" %:z\").format(self, io)\nend\n```\n\nYAML configuration example:\n\n```\nLint/UselessConditionInWhen:\n Enabled: true\n```\n","summary":"

    A rule that disallows useless conditions in when clause where it is guaranteed to always return the same result.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows useless conditions in when clause\nwhere it is guaranteed to always return the same result.\n\nFor example, this is considered invalid:\n\n```\ncase\nwhen utc?\n io << \" UTC\"\nwhen local?\n Format.new(\" %:z\").format(self, io) if local?\nend\n```\n\nAnd has to be written as the following:\n\n```\ncase\nwhen utc?\n io << \" UTC\"\nwhen local?\n Format.new(\" %:z\").format(self, io)\nend\n```\n\nYAML configuration example:\n\n```\nLint/UselessConditionInWhen:\n Enabled: true\n```\n","summary":"

    A rule that disallows useless conditions in when clause where it is guaranteed to always return the same result.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/useless_condition_in_when.cr#L34","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node:Crystal::When)-instance-method","html_id":"test(source,node:Crystal::When)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::When"}],"args_string":"(source, node : Crystal::When)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/lint/useless_condition_in_when.cr#L54","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::When"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"ConditionInWhenVisitor.new(self, source, node)"}}],"macros":[],"types":[]}]},{"html_id":"ameba/Ameba/Rule/Metrics","path":"Ameba/Rule/Metrics.html","kind":"module","full_name":"Ameba::Rule::Metrics","name":"Metrics","abstract":false,"superclass":null,"ancestors":[],"locations":[{"filename":"src/ameba/rule/metrics/cyclomatic_complexity.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/metrics/cyclomatic_complexity.cr#L1"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule","kind":"module","full_name":"Ameba::Rule","name":"Rule"},"doc":null,"summary":null,"class_methods":[],"constructors":[],"instance_methods":[],"macros":[],"types":[{"html_id":"ameba/Ameba/Rule/Metrics/CyclomaticComplexity","path":"Ameba/Rule/Metrics/CyclomaticComplexity.html","kind":"struct","full_name":"Ameba::Rule::Metrics::CyclomaticComplexity","name":"CyclomaticComplexity","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/metrics/cyclomatic_complexity.cr","line_number":12,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/metrics/cyclomatic_complexity.cr#L12"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Cyclomatic complexity too high [%d/%d]\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Metrics","kind":"module","full_name":"Ameba::Rule::Metrics","name":"Metrics"},"doc":"A rule that disallows methods with a cyclomatic complexity higher than `MaxComplexity`\n\nYAML configuration example:\n\n```\nMetrics/CyclomaticComplexity:\n Enabled: true\n MaxComplexity: 10\n```\n","summary":"

    A rule that disallows methods with a cyclomatic complexity higher than MaxComplexity

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows methods with a cyclomatic complexity higher than `MaxComplexity`\n\nYAML configuration example:\n\n```\nMetrics/CyclomaticComplexity:\n Enabled: true\n MaxComplexity: 10\n```\n","summary":"

    A rule that disallows methods with a cyclomatic complexity higher than MaxComplexity

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/metrics/cyclomatic_complexity.cr#L12","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"max_complexity:Int32-instance-method","html_id":"max_complexity:Int32-instance-method","name":"max_complexity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Int32","source_link":null,"def":{"name":"max_complexity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Int32","visibility":"Public","body":"@max_complexity"}},{"id":"max_complexity=(max_complexity:Int32)-instance-method","html_id":"max_complexity=(max_complexity:Int32)-instance-method","name":"max_complexity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"max_complexity","doc":null,"default_value":"","external_name":"max_complexity","restriction":"Int32"}],"args_string":"(max_complexity : Int32)","source_link":null,"def":{"name":"max_complexity=","args":[{"name":"max_complexity","doc":null,"default_value":"","external_name":"max_complexity","restriction":"Int32"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@max_complexity = max_complexity"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node:Crystal::Def)-instance-method","html_id":"test(source,node:Crystal::Def)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Def"}],"args_string":"(source, node : Crystal::Def)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/metrics/cyclomatic_complexity.cr#L20","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Def"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"complexity = (AST::CountingVisitor.new(node)).count\nif complexity > max_complexity && (location = node.name_location)\n issue_for(location, def_name_end_location(node), MSG % {complexity, max_complexity})\nend\n"}}],"macros":[],"types":[]}]},{"html_id":"ameba/Ameba/Rule/Performance","path":"Ameba/Rule/Performance.html","kind":"module","full_name":"Ameba::Rule::Performance","name":"Performance","abstract":false,"superclass":null,"ancestors":[],"locations":[{"filename":"src/ameba/rule/performance/any_after_filter.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/performance/any_after_filter.cr#L1"},{"filename":"src/ameba/rule/performance/first_last_after_filter.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/performance/first_last_after_filter.cr#L1"},{"filename":"src/ameba/rule/performance/size_after_filter.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/performance/size_after_filter.cr#L1"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule","kind":"module","full_name":"Ameba::Rule","name":"Rule"},"doc":null,"summary":null,"class_methods":[],"constructors":[],"instance_methods":[],"macros":[],"types":[{"html_id":"ameba/Ameba/Rule/Performance/AnyAfterFilter","path":"Ameba/Rule/Performance/AnyAfterFilter.html","kind":"struct","full_name":"Ameba::Rule::Performance::AnyAfterFilter","name":"AnyAfterFilter","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/performance/any_after_filter.cr","line_number":28,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/performance/any_after_filter.cr#L28"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"ANY_NAME","name":"ANY_NAME","value":"\"any?\"","doc":null,"summary":null},{"id":"MSG","name":"MSG","value":"\"Use `#{ANY_NAME} {...}` instead of `%s {...}.#{ANY_NAME}`\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Performance","kind":"module","full_name":"Ameba::Rule::Performance","name":"Performance"},"doc":"This rule is used to identify usage of `any?` calls that follow filters.\n\nFor example, this is considered invalid:\n\n```\n[1, 2, 3].select { |e| e > 2 }.any?\n[1, 2, 3].reject { |e| e >= 2 }.any?\n```\n\nAnd it should be written as this:\n\n```\n[1, 2, 3].any? { |e| e > 2 }\n[1, 2, 3].any? { |e| e < 2 }\n```\n\nYAML configuration example:\n\n```\nPerformance/AnyAfterFilter:\n Enabled: true\n FilterNames:\n - select\n - reject\n```\n","summary":"

    This rule is used to identify usage of any? calls that follow filters.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"This rule is used to identify usage of `any?` calls that follow filters.\n\nFor example, this is considered invalid:\n\n```\n[1, 2, 3].select { |e| e > 2 }.any?\n[1, 2, 3].reject { |e| e >= 2 }.any?\n```\n\nAnd it should be written as this:\n\n```\n[1, 2, 3].any? { |e| e > 2 }\n[1, 2, 3].any? { |e| e < 2 }\n```\n\nYAML configuration example:\n\n```\nPerformance/AnyAfterFilter:\n Enabled: true\n FilterNames:\n - select\n - reject\n```\n","summary":"

    This rule is used to identify usage of any? calls that follow filters.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/performance/any_after_filter.cr#L28","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"filter_names:Array(String)-instance-method","html_id":"filter_names:Array(String)-instance-method","name":"filter_names","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)","source_link":null,"def":{"name":"filter_names","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String)","visibility":"Public","body":"@filter_names"}},{"id":"filter_names=(filter_names:Array(String))-instance-method","html_id":"filter_names=(filter_names:Array(String))-instance-method","name":"filter_names=","doc":null,"summary":null,"abstract":false,"args":[{"name":"filter_names","doc":null,"default_value":"","external_name":"filter_names","restriction":"Array(String)"}],"args_string":"(filter_names : Array(String))","source_link":null,"def":{"name":"filter_names=","args":[{"name":"filter_names","doc":null,"default_value":"","external_name":"filter_names","restriction":"Array(String)"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@filter_names = filter_names"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node:Crystal::Call)-instance-method","html_id":"test(source,node:Crystal::Call)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Call"}],"args_string":"(source, node : Crystal::Call)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/performance/any_after_filter.cr#L37","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Call"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (node.name == ANY_NAME) && (obj = node.obj)\nelse\n return\nend\nif ((node.block.nil? && obj.is_a?(Crystal::Call)) && (filter_names.includes?(obj.name))) && (!obj.block.nil?)\n issue_for(obj.name_location, node.name_end_location, MSG % obj.name)\nend\n"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Performance/FirstLastAfterFilter","path":"Ameba/Rule/Performance/FirstLastAfterFilter.html","kind":"struct","full_name":"Ameba::Rule::Performance::FirstLastAfterFilter","name":"FirstLastAfterFilter","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/performance/first_last_after_filter.cr","line_number":27,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/performance/first_last_after_filter.cr#L27"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"CALL_NAMES","name":"CALL_NAMES","value":"[\"first\", \"last\", \"first?\", \"last?\"] of ::String","doc":null,"summary":null},{"id":"MSG","name":"MSG","value":"\"Use `find {...}` instead of `%s {...}.%s`\"","doc":null,"summary":null},{"id":"MSG_REVERSE","name":"MSG_REVERSE","value":"\"Use `reverse_each.find {...}` instead of `%s {...}.%s`\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Performance","kind":"module","full_name":"Ameba::Rule::Performance","name":"Performance"},"doc":"This rule is used to identify usage of `first/last/first?/last?` calls that follow filters.\n\nFor example, this is considered inefficient:\n\n```\n[-1, 0, 1, 2].select { |e| e > 0 }.first?\n[-1, 0, 1, 2].select { |e| e > 0 }.last?\n```\n\nAnd can be written as this:\n\n```\n[-1, 0, 1, 2].find { |e| e > 0 }\n[-1, 0, 1, 2].reverse_each.find { |e| e > 0 }\n```\n\nYAML configuration example:\n\n```\nPerformance/FirstLastAfterFilter\n Enabled: true\n FilterNames:\n - select\n```\n","summary":"

    This rule is used to identify usage of first/last/first?/last? calls that follow filters.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"This rule is used to identify usage of `first/last/first?/last?` calls that follow filters.\n\nFor example, this is considered inefficient:\n\n```\n[-1, 0, 1, 2].select { |e| e > 0 }.first?\n[-1, 0, 1, 2].select { |e| e > 0 }.last?\n```\n\nAnd can be written as this:\n\n```\n[-1, 0, 1, 2].find { |e| e > 0 }\n[-1, 0, 1, 2].reverse_each.find { |e| e > 0 }\n```\n\nYAML configuration example:\n\n```\nPerformance/FirstLastAfterFilter\n Enabled: true\n FilterNames:\n - select\n```\n","summary":"

    This rule is used to identify usage of first/last/first?/last? calls that follow filters.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/performance/first_last_after_filter.cr#L27","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"filter_names:Array(String)-instance-method","html_id":"filter_names:Array(String)-instance-method","name":"filter_names","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)","source_link":null,"def":{"name":"filter_names","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String)","visibility":"Public","body":"@filter_names"}},{"id":"filter_names=(filter_names:Array(String))-instance-method","html_id":"filter_names=(filter_names:Array(String))-instance-method","name":"filter_names=","doc":null,"summary":null,"abstract":false,"args":[{"name":"filter_names","doc":null,"default_value":"","external_name":"filter_names","restriction":"Array(String)"}],"args_string":"(filter_names : Array(String))","source_link":null,"def":{"name":"filter_names=","args":[{"name":"filter_names","doc":null,"default_value":"","external_name":"filter_names","restriction":"Array(String)"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@filter_names = filter_names"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node:Crystal::Call)-instance-method","html_id":"test(source,node:Crystal::Call)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Call"}],"args_string":"(source, node : Crystal::Call)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/performance/first_last_after_filter.cr#L46","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Call"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (CALL_NAMES.includes?(node.name)) && (obj = node.obj)\nelse\n return\nend\nif node.args.any?\n return\nend\nif ((node.block.nil? && obj.is_a?(Crystal::Call)) && (filter_names.includes?(obj.name))) && (!obj.block.nil?)\n message = node.name.includes?(CALL_NAMES.first) ? MSG : MSG_REVERSE\n issue_for(obj.name_location, node.name_end_location, message % {obj.name, node.name})\nend\n"}},{"id":"test(source)-instance-method","html_id":"test(source)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"args_string":"(source)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/performance/first_last_after_filter.cr#L37","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"AST::NodeVisitor.new(self, source, skip: [Crystal::Macro, Crystal::MacroExpression, Crystal::MacroIf, Crystal::MacroFor])"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Performance/SizeAfterFilter","path":"Ameba/Rule/Performance/SizeAfterFilter.html","kind":"struct","full_name":"Ameba::Rule::Performance::SizeAfterFilter","name":"SizeAfterFilter","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/performance/size_after_filter.cr","line_number":34,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/performance/size_after_filter.cr#L34"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Use `count {...}` instead of `%s {...}.#{SIZE_NAME}`.\"","doc":null,"summary":null},{"id":"SIZE_NAME","name":"SIZE_NAME","value":"\"size\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Performance","kind":"module","full_name":"Ameba::Rule::Performance","name":"Performance"},"doc":"This rule is used to identify usage of `size` calls that follow filter.\n\nFor example, this is considered invalid:\n\n```\n[1, 2, 3].select { |e| e > 2 }.size\n[1, 2, 3].reject { |e| e < 2 }.size\n[1, 2, 3].select(&.< 2).size\n[0, 1, 2].select(&.zero?).size\n[0, 1, 2].reject(&.zero?).size\n```\n\nAnd it should be written as this:\n\n```\n[1, 2, 3].count { |e| e > 2 }\n[1, 2, 3].count { |e| e >= 2 }\n[1, 2, 3].count(&.< 2)\n[0, 1, 2].count(&.zero?)\n[0, 1, 2].count(&.!= 0)\n```\n\nYAML configuration example:\n\n```\nPerformance/SizeAfterFilter:\n Enabled: true\n FilterNames:\n - select\n - reject\n```\n","summary":"

    This rule is used to identify usage of size calls that follow filter.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"This rule is used to identify usage of `size` calls that follow filter.\n\nFor example, this is considered invalid:\n\n```\n[1, 2, 3].select { |e| e > 2 }.size\n[1, 2, 3].reject { |e| e < 2 }.size\n[1, 2, 3].select(&.< 2).size\n[0, 1, 2].select(&.zero?).size\n[0, 1, 2].reject(&.zero?).size\n```\n\nAnd it should be written as this:\n\n```\n[1, 2, 3].count { |e| e > 2 }\n[1, 2, 3].count { |e| e >= 2 }\n[1, 2, 3].count(&.< 2)\n[0, 1, 2].count(&.zero?)\n[0, 1, 2].count(&.!= 0)\n```\n\nYAML configuration example:\n\n```\nPerformance/SizeAfterFilter:\n Enabled: true\n FilterNames:\n - select\n - reject\n```\n","summary":"

    This rule is used to identify usage of size calls that follow filter.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/performance/size_after_filter.cr#L34","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"filter_names:Array(String)-instance-method","html_id":"filter_names:Array(String)-instance-method","name":"filter_names","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)","source_link":null,"def":{"name":"filter_names","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String)","visibility":"Public","body":"@filter_names"}},{"id":"filter_names=(filter_names:Array(String))-instance-method","html_id":"filter_names=(filter_names:Array(String))-instance-method","name":"filter_names=","doc":null,"summary":null,"abstract":false,"args":[{"name":"filter_names","doc":null,"default_value":"","external_name":"filter_names","restriction":"Array(String)"}],"args_string":"(filter_names : Array(String))","source_link":null,"def":{"name":"filter_names=","args":[{"name":"filter_names","doc":null,"default_value":"","external_name":"filter_names","restriction":"Array(String)"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@filter_names = filter_names"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node:Crystal::Call)-instance-method","html_id":"test(source,node:Crystal::Call)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Call"}],"args_string":"(source, node : Crystal::Call)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/performance/size_after_filter.cr#L52","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Call"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (node.name == SIZE_NAME) && (obj = node.obj)\nelse\n return\nend\nif (obj.is_a?(Crystal::Call) && (filter_names.includes?(obj.name))) && (!obj.block.nil?)\n issue_for(obj.name_location, node.name_end_location, MSG % obj.name)\nend\n"}},{"id":"test(source)-instance-method","html_id":"test(source)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"args_string":"(source)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/performance/size_after_filter.cr#L43","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"AST::NodeVisitor.new(self, source, skip: [Crystal::Macro, Crystal::MacroExpression, Crystal::MacroIf, Crystal::MacroFor])"}}],"macros":[],"types":[]}]},{"html_id":"ameba/Ameba/Rule/Style","path":"Ameba/Rule/Style.html","kind":"module","full_name":"Ameba::Rule::Style","name":"Style","abstract":false,"superclass":null,"ancestors":[],"locations":[{"filename":"src/ameba/rule/style/constant_names.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/style/constant_names.cr#L1"},{"filename":"src/ameba/rule/style/is_a_nil.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/style/is_a_nil.cr#L1"},{"filename":"src/ameba/rule/style/large_numbers.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/style/large_numbers.cr#L1"},{"filename":"src/ameba/rule/style/method_names.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/style/method_names.cr#L1"},{"filename":"src/ameba/rule/style/negated_conditions_in_unless.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/style/negated_conditions_in_unless.cr#L1"},{"filename":"src/ameba/rule/style/predicate_name.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/style/predicate_name.cr#L1"},{"filename":"src/ameba/rule/style/redundant_begin.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/style/redundant_begin.cr#L1"},{"filename":"src/ameba/rule/style/redundant_next.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/style/redundant_next.cr#L1"},{"filename":"src/ameba/rule/style/redundant_return.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/style/redundant_return.cr#L1"},{"filename":"src/ameba/rule/style/type_names.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/style/type_names.cr#L1"},{"filename":"src/ameba/rule/style/unless_else.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/style/unless_else.cr#L1"},{"filename":"src/ameba/rule/style/variable_names.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/style/variable_names.cr#L1"},{"filename":"src/ameba/rule/style/while_true.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/style/while_true.cr#L1"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule","kind":"module","full_name":"Ameba::Rule","name":"Rule"},"doc":null,"summary":null,"class_methods":[],"constructors":[],"instance_methods":[],"macros":[],"types":[{"html_id":"ameba/Ameba/Rule/Style/ConstantNames","path":"Ameba/Rule/Style/ConstantNames.html","kind":"struct","full_name":"Ameba::Rule::Style::ConstantNames","name":"ConstantNames","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/style/constant_names.cr","line_number":25,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/style/constant_names.cr#L25"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Constant name should be screaming-cased: %s, not %s\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Style","kind":"module","full_name":"Ameba::Rule::Style","name":"Style"},"doc":"A rule that enforces constant names to be in screaming case.\n\nFor example, these constant names are considered valid:\n\n```\nLUCKY_NUMBERS = [3, 7, 11]\nDOCUMENTATION_URL = \"http://crystal-lang.org/docs\"\n```\n\nAnd these are invalid names:\n\n```\nmyBadConstant = 1\nWrong_NAME = 2\n```\n\nYAML configuration example:\n\n```\nStyle/ConstantNames:\n Enabled: true\n```\n","summary":"

    A rule that enforces constant names to be in screaming case.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that enforces constant names to be in screaming case.\n\nFor example, these constant names are considered valid:\n\n```\nLUCKY_NUMBERS = [3, 7, 11]\nDOCUMENTATION_URL = \"http://crystal-lang.org/docs\"\n```\n\nAnd these are invalid names:\n\n```\nmyBadConstant = 1\nWrong_NAME = 2\n```\n\nYAML configuration example:\n\n```\nStyle/ConstantNames:\n Enabled: true\n```\n","summary":"

    A rule that enforces constant names to be in screaming case.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/style/constant_names.cr#L25","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node:Crystal::Assign)-instance-method","html_id":"test(source,node:Crystal::Assign)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Assign"}],"args_string":"(source, node : Crystal::Assign)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/style/constant_names.cr#L32","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Assign"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (target = node.target).is_a?(Crystal::Path)\n name = target.names.first\n expected = name.upcase\n if (expected == name) || (name.camelcase == name)\n return\n end\n issue_for(target, MSG % {expected, name})\nend"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Style/IsANil","path":"Ameba/Rule/Style/IsANil.html","kind":"struct","full_name":"Ameba::Rule::Style::IsANil","name":"IsANil","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/style/is_a_nil.cr","line_number":23,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/style/is_a_nil.cr#L23"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Use `nil?` instead of `is_a?(Nil)`\"","doc":null,"summary":null},{"id":"PATH_NIL_NAMES","name":"PATH_NIL_NAMES","value":"[\"Nil\"] of ::String","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Style","kind":"module","full_name":"Ameba::Rule::Style","name":"Style"},"doc":"A rule that disallows calls to `is_a?(Nil)` in favor of `nil?`.\n\nThis is considered bad:\n\n```\nvar.is_a? Nil\n```\n\nAnd needs to be written as:\n\n```\nvar.nil?\n```\n\nYAML configuration example:\n\n```\nStyle/IsANil:\n Enabled: true\n```\n","summary":"

    A rule that disallows calls to is_a?(Nil) in favor of nil?.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows calls to `is_a?(Nil)` in favor of `nil?`.\n\nThis is considered bad:\n\n```\nvar.is_a? Nil\n```\n\nAnd needs to be written as:\n\n```\nvar.nil?\n```\n\nYAML configuration example:\n\n```\nStyle/IsANil:\n Enabled: true\n```\n","summary":"

    A rule that disallows calls to is_a?(Nil) in favor of nil?.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/style/is_a_nil.cr#L23","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node:Crystal::IsA)-instance-method","html_id":"test(source,node:Crystal::IsA)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::IsA"}],"args_string":"(source, node : Crystal::IsA)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/style/is_a_nil.cr#L31","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::IsA"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if node.nil_check?\n return\nend\nconst = node.const\nif const.is_a?(Crystal::Path) && (const.names == PATH_NIL_NAMES)\n issue_for(const, MSG)\nend\n"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Style/LargeNumbers","path":"Ameba/Rule/Style/LargeNumbers.html","kind":"struct","full_name":"Ameba::Rule::Style::LargeNumbers","name":"LargeNumbers","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/style/large_numbers.cr","line_number":30,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/style/large_numbers.cr#L30"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Large numbers should be written with underscores: %s\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Style","kind":"module","full_name":"Ameba::Rule::Style","name":"Style"},"doc":"A rule that disallows usage of large numbers without underscore.\nThese do not affect the value of the number, but can help read\nlarge numbers more easily.\n\nFor example, these are considered invalid:\n\n```\n10000\n141592654\n5.12345\n```\n\nAnd has to be rewritten as the following:\n\n```\n10_000\n141_592_654\n5.123_45\n```\n\nYAML configuration example:\n\n```\nStyle/LargeNumbers:\n Enabled: true\n IntMinDigits: 5 # i.e. integers higher than 9999\n```\n","summary":"

    A rule that disallows usage of large numbers without underscore.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows usage of large numbers without underscore.\nThese do not affect the value of the number, but can help read\nlarge numbers more easily.\n\nFor example, these are considered invalid:\n\n```\n10000\n141592654\n5.12345\n```\n\nAnd has to be rewritten as the following:\n\n```\n10_000\n141_592_654\n5.123_45\n```\n\nYAML configuration example:\n\n```\nStyle/LargeNumbers:\n Enabled: true\n IntMinDigits: 5 # i.e. integers higher than 9999\n```\n","summary":"

    A rule that disallows usage of large numbers without underscore.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/style/large_numbers.cr#L30","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Bool","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled:Bool)-instance-method","html_id":"enabled=(enabled:Bool)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":"Bool"}],"args_string":"(enabled : Bool)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":"Bool"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"int_min_digits:Int32-instance-method","html_id":"int_min_digits:Int32-instance-method","name":"int_min_digits","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Int32","source_link":null,"def":{"name":"int_min_digits","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Int32","visibility":"Public","body":"@int_min_digits"}},{"id":"int_min_digits=(int_min_digits:Int32)-instance-method","html_id":"int_min_digits=(int_min_digits:Int32)-instance-method","name":"int_min_digits=","doc":null,"summary":null,"abstract":false,"args":[{"name":"int_min_digits","doc":null,"default_value":"","external_name":"int_min_digits","restriction":"Int32"}],"args_string":"(int_min_digits : Int32)","source_link":null,"def":{"name":"int_min_digits=","args":[{"name":"int_min_digits","doc":null,"default_value":"","external_name":"int_min_digits","restriction":"Int32"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@int_min_digits = int_min_digits"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source)-instance-method","html_id":"test(source)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"args_string":"(source)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/style/large_numbers.cr#L39","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"(Tokenizer.new(source)).run do |token|\n if (token.type == (:NUMBER)) && (decimal?(token.raw))\n else\n next\n end\n parsed = parse_number(token.raw)\n if (allowed?(*parsed)) && ((expected = underscored(*parsed)) != token.raw)\n issue_for(token, MSG % expected)\n end\nend"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Style/MethodNames","path":"Ameba/Rule/Style/MethodNames.html","kind":"struct","full_name":"Ameba::Rule::Style::MethodNames","name":"MethodNames","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/style/method_names.cr","line_number":41,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/style/method_names.cr#L41"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Method name should be underscore-cased: %s, not %s\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Style","kind":"module","full_name":"Ameba::Rule::Style","name":"Style"},"doc":"A rule that enforces method names to be in underscored case.\n\nFor example, these are considered valid:\n\n```\nclass Person\n def first_name\n end\n\n def date_of_birth\n end\n\n def homepage_url\n end\nend\n```\n\nAnd these are invalid method names:\n\n```\nclass Person\n def firstName\n end\n\n def date_of_Birth\n end\n\n def homepageURL\n end\nend\n```\n\nYAML configuration example:\n\n```\nStyle/MethodNames:\n Enabled: true\n```\n","summary":"

    A rule that enforces method names to be in underscored case.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that enforces method names to be in underscored case.\n\nFor example, these are considered valid:\n\n```\nclass Person\n def first_name\n end\n\n def date_of_birth\n end\n\n def homepage_url\n end\nend\n```\n\nAnd these are invalid method names:\n\n```\nclass Person\n def firstName\n end\n\n def date_of_Birth\n end\n\n def homepageURL\n end\nend\n```\n\nYAML configuration example:\n\n```\nStyle/MethodNames:\n Enabled: true\n```\n","summary":"

    A rule that enforces method names to be in underscored case.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/style/method_names.cr#L41","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node:Crystal::Def)-instance-method","html_id":"test(source,node:Crystal::Def)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Def"}],"args_string":"(source, node : Crystal::Def)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/style/method_names.cr#L48","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Def"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (expected = node.name.underscore) == node.name\n return\nend\nline_number = node.location.try(&.line_number)\ncolumn_number = node.name_location.try(&.column_number)\nif line_number.nil? || column_number.nil?\n return\nend\nissue_for({line_number, column_number}, {line_number, (column_number + node.name.size) - 1}, MSG % {expected, node.name})\n"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Style/NegatedConditionsInUnless","path":"Ameba/Rule/Style/NegatedConditionsInUnless.html","kind":"struct","full_name":"Ameba::Rule::Style::NegatedConditionsInUnless","name":"NegatedConditionsInUnless","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/style/negated_conditions_in_unless.cr","line_number":30,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/style/negated_conditions_in_unless.cr#L30"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Avoid negated conditions in unless blocks\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Style","kind":"module","full_name":"Ameba::Rule::Style","name":"Style"},"doc":"A rule that disallows negated conditions in unless.\n\nFor example, this is considered invalid:\n\n```\nunless !s.empty?\n :ok\nend\n```\n\nAnd should be rewritten to the following:\n\n```\nif s.emtpy?\n :ok\nend\n```\n\nIt is pretty difficult to wrap your head around a block of code\nthat is executed if a negated condition is NOT met.\n\nYAML configuration example:\n\n```\nStyle/NegatedConditionsInUnless:\n Enabled: true\n```\n","summary":"

    A rule that disallows negated conditions in unless.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows negated conditions in unless.\n\nFor example, this is considered invalid:\n\n```\nunless !s.empty?\n :ok\nend\n```\n\nAnd should be rewritten to the following:\n\n```\nif s.emtpy?\n :ok\nend\n```\n\nIt is pretty difficult to wrap your head around a block of code\nthat is executed if a negated condition is NOT met.\n\nYAML configuration example:\n\n```\nStyle/NegatedConditionsInUnless:\n Enabled: true\n```\n","summary":"

    A rule that disallows negated conditions in unless.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/style/negated_conditions_in_unless.cr#L30","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node:Crystal::Unless)-instance-method","html_id":"test(source,node:Crystal::Unless)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Unless"}],"args_string":"(source, node : Crystal::Unless)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/style/negated_conditions_in_unless.cr#L37","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Unless"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if negated_condition?(node.cond)\nelse\n return\nend\nissue_for(node, MSG)\n"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Style/PredicateName","path":"Ameba/Rule/Style/PredicateName.html","kind":"struct","full_name":"Ameba::Rule::Style::PredicateName","name":"PredicateName","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/style/predicate_name.cr","line_number":32,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/style/predicate_name.cr#L32"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Favour method name '%s?' over '%s'\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Style","kind":"module","full_name":"Ameba::Rule::Style","name":"Style"},"doc":"A rule that disallows tautological predicate names, meaning those that\nstart with the prefix `has_` or the prefix `is_`. Ignores if the alternative isn't valid Crystal code (e.g. `is_404?`).\n\nFavour these:\n\n```\ndef valid?(x)\nend\n\ndef picture?(x)\nend\n```\n\nOver these:\n\n```\ndef is_valid?(x)\nend\n\ndef has_picture?(x)\nend\n```\n\nYAML configuration example:\n\n```\nStyle/PredicateName:\n Enabled: true\n```\n","summary":"

    A rule that disallows tautological predicate names, meaning those that start with the prefix has_ or the prefix is_.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows tautological predicate names, meaning those that\nstart with the prefix `has_` or the prefix `is_`. Ignores if the alternative isn't valid Crystal code (e.g. `is_404?`).\n\nFavour these:\n\n```\ndef valid?(x)\nend\n\ndef picture?(x)\nend\n```\n\nOver these:\n\n```\ndef is_valid?(x)\nend\n\ndef has_picture?(x)\nend\n```\n\nYAML configuration example:\n\n```\nStyle/PredicateName:\n Enabled: true\n```\n","summary":"

    A rule that disallows tautological predicate names, meaning those that start with the prefix has_ or the prefix is_.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/style/predicate_name.cr#L32","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Bool","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled:Bool)-instance-method","html_id":"enabled=(enabled:Bool)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":"Bool"}],"args_string":"(enabled : Bool)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":"Bool"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node:Crystal::Def)-instance-method","html_id":"test(source,node:Crystal::Def)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Def"}],"args_string":"(source, node : Crystal::Def)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/style/predicate_name.cr#L40","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Def"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if node.name =~ (/^(is|has)_(\\w+)\\?/)\n alternative = $~[2]\n if alternative =~ (/^[a-z][a-zA-Z_0-9]*$/)\n else\n return\n end\n issue_for(node, MSG % {alternative, node.name})\nend"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Style/RedundantBegin","path":"Ameba/Rule/Style/RedundantBegin.html","kind":"struct","full_name":"Ameba::Rule::Style::RedundantBegin","name":"RedundantBegin","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/Ameba/AST/Util","kind":"module","full_name":"Ameba::AST::Util","name":"Util"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/style/redundant_begin.cr","line_number":59,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/style/redundant_begin.cr#L59"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Redundant `begin` block detected\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/Ameba/AST/Util","kind":"module","full_name":"Ameba::AST::Util","name":"Util"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Style","kind":"module","full_name":"Ameba::Rule::Style","name":"Style"},"doc":"A rule that disallows redundant begin blocks.\n\nCurrently it is able to detect:\n\n1. Exception handler block that can be used as a part of the method.\n\nFor example, this:\n\n```\ndef method\n begin\n read_content\n rescue\n close_file\n end\nend\n```\n\nshould be rewritten as:\n\n```\ndef method\n read_content\nrescue\n close_file\nend\n```\n\n2. begin..end block as a top level block in a method.\n\nFor example this is considered invalid:\n\n```\ndef method\n begin\n a = 1\n b = 2\n end\nend\n```\n\nand has to be written as the following:\n\n```\ndef method\n a = 1\n b = 2\nend\n```\n\nYAML configuration example:\n\n```\nStyle/RedundantBegin:\n Enabled: true\n```\n","summary":"

    A rule that disallows redundant begin blocks.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows redundant begin blocks.\n\nCurrently it is able to detect:\n\n1. Exception handler block that can be used as a part of the method.\n\nFor example, this:\n\n```\ndef method\n begin\n read_content\n rescue\n close_file\n end\nend\n```\n\nshould be rewritten as:\n\n```\ndef method\n read_content\nrescue\n close_file\nend\n```\n\n2. begin..end block as a top level block in a method.\n\nFor example this is considered invalid:\n\n```\ndef method\n begin\n a = 1\n b = 2\n end\nend\n```\n\nand has to be written as the following:\n\n```\ndef method\n a = 1\n b = 2\nend\n```\n\nYAML configuration example:\n\n```\nStyle/RedundantBegin:\n Enabled: true\n```\n","summary":"

    A rule that disallows redundant begin blocks.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/style/redundant_begin.cr#L59","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node:Crystal::Def)-instance-method","html_id":"test(source,node:Crystal::Def)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Def"}],"args_string":"(source, node : Crystal::Def)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/style/redundant_begin.cr#L67","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Def"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if redundant_begin?(source, node)\nelse\n return\nend\nissue_for(node, MSG)\n"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Style/RedundantNext","path":"Ameba/Rule/Style/RedundantNext.html","kind":"struct","full_name":"Ameba::Rule::Style::RedundantNext","name":"RedundantNext","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/style/redundant_next.cr","line_number":99,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/style/redundant_next.cr#L99"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Redundant `next` detected\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Style","kind":"module","full_name":"Ameba::Rule::Style","name":"Style"},"doc":"A rule that disallows redundant next expressions. A `next` keyword allows\na block to skip to the next iteration early, however, it is considered\nredundant in cases where it is the last expression in a block or combines\ninto the node which is the last in a block.\n\nFor example, this is considered invalid:\n\n```\nblock do |v|\n next v + 1\nend\n```\n\n```\nblock do |v|\n case v\n when .nil?\n next \"nil\"\n when .blank?\n next \"blank\"\n else\n next \"empty\"\n end\nend\n```\n\nAnd has to be written as the following:\n\n```\nblock do |v|\n v + 1\nend\n```\n\n```\nblock do |v|\n case arg\n when .nil?\n \"nil\"\n when .blank?\n \"blank\"\n else\n \"empty\"\n end\nend\n```\n\n### Configuration params\n\n1. *allow_multi_next*, default: true\n\nAllows end-user to configure whether to report or not the next statements\nwhich yield tuple literals i.e.\n\n```\nblock do\n next a, b\nend\n```\n\nIf this param equals to `false`, the block above will be forced to be written as:\n\n```\nblock do\n {a, b}\nend\n```\n\n2. *allow_empty_next*, default: true\n\nAllows end-user to configure whether to report or not the next statements\nwithout arguments. Sometimes such statements are used to yild the `nil` value explicitly.\n\n```\nblock do\n @foo = :empty\n next\nend\n```\n\nIf this param equals to `false`, the block above will be forced to be written as:\n\n```\nblock do\n @foo = :empty\n nil\nend\n```\n\n### YAML config example\n\n```\nStyle/RedundantNext:\n Enabled: true\n AllowMultiNext: true\n AllowEmptyNext: true\n```","summary":"

    A rule that disallows redundant next expressions.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows redundant next expressions. A `next` keyword allows\na block to skip to the next iteration early, however, it is considered\nredundant in cases where it is the last expression in a block or combines\ninto the node which is the last in a block.\n\nFor example, this is considered invalid:\n\n```\nblock do |v|\n next v + 1\nend\n```\n\n```\nblock do |v|\n case v\n when .nil?\n next \"nil\"\n when .blank?\n next \"blank\"\n else\n next \"empty\"\n end\nend\n```\n\nAnd has to be written as the following:\n\n```\nblock do |v|\n v + 1\nend\n```\n\n```\nblock do |v|\n case arg\n when .nil?\n \"nil\"\n when .blank?\n \"blank\"\n else\n \"empty\"\n end\nend\n```\n\n### Configuration params\n\n1. *allow_multi_next*, default: true\n\nAllows end-user to configure whether to report or not the next statements\nwhich yield tuple literals i.e.\n\n```\nblock do\n next a, b\nend\n```\n\nIf this param equals to `false`, the block above will be forced to be written as:\n\n```\nblock do\n {a, b}\nend\n```\n\n2. *allow_empty_next*, default: true\n\nAllows end-user to configure whether to report or not the next statements\nwithout arguments. Sometimes such statements are used to yild the `nil` value explicitly.\n\n```\nblock do\n @foo = :empty\n next\nend\n```\n\nIf this param equals to `false`, the block above will be forced to be written as:\n\n```\nblock do\n @foo = :empty\n nil\nend\n```\n\n### YAML config example\n\n```\nStyle/RedundantNext:\n Enabled: true\n AllowMultiNext: true\n AllowEmptyNext: true\n```","summary":"

    A rule that disallows redundant next expressions.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/style/redundant_next.cr#L99","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"allow_empty_next:Bool-instance-method","html_id":"allow_empty_next:Bool-instance-method","name":"allow_empty_next","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"allow_empty_next","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Bool","visibility":"Public","body":"@allow_empty_next"}},{"id":"allow_empty_next=(allow_empty_next:Bool)-instance-method","html_id":"allow_empty_next=(allow_empty_next:Bool)-instance-method","name":"allow_empty_next=","doc":null,"summary":null,"abstract":false,"args":[{"name":"allow_empty_next","doc":null,"default_value":"","external_name":"allow_empty_next","restriction":"Bool"}],"args_string":"(allow_empty_next : Bool)","source_link":null,"def":{"name":"allow_empty_next=","args":[{"name":"allow_empty_next","doc":null,"default_value":"","external_name":"allow_empty_next","restriction":"Bool"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@allow_empty_next = allow_empty_next"}},{"id":"allow_multi_next:Bool-instance-method","html_id":"allow_multi_next:Bool-instance-method","name":"allow_multi_next","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"allow_multi_next","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Bool","visibility":"Public","body":"@allow_multi_next"}},{"id":"allow_multi_next=(allow_multi_next:Bool)-instance-method","html_id":"allow_multi_next=(allow_multi_next:Bool)-instance-method","name":"allow_multi_next=","doc":null,"summary":null,"abstract":false,"args":[{"name":"allow_multi_next","doc":null,"default_value":"","external_name":"allow_multi_next","restriction":"Bool"}],"args_string":"(allow_multi_next : Bool)","source_link":null,"def":{"name":"allow_multi_next=","args":[{"name":"allow_multi_next","doc":null,"default_value":"","external_name":"allow_multi_next","restriction":"Bool"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@allow_multi_next = allow_multi_next"}},{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node:Crystal::Next,visitor:AST::RedundantControlExpressionVisitor)-instance-method","html_id":"test(source,node:Crystal::Next,visitor:AST::RedundantControlExpressionVisitor)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Next"},{"name":"visitor","doc":null,"default_value":"","external_name":"visitor","restriction":"AST::RedundantControlExpressionVisitor"}],"args_string":"(source, node : Crystal::Next, visitor : AST::RedundantControlExpressionVisitor)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/style/redundant_next.cr#L112","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Next"},{"name":"visitor","doc":null,"default_value":"","external_name":"visitor","restriction":"AST::RedundantControlExpressionVisitor"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if allow_multi_next && node.exp.is_a?(Crystal::TupleLiteral)\n return\nend\nif allow_empty_next && (node.exp.nil? || node.exp.not_nil!.nop?)\n return\nend\nsource.try(&.add_issue(self, node, MSG))\n"}},{"id":"test(source,node:Crystal::Block)-instance-method","html_id":"test(source,node:Crystal::Block)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Block"}],"args_string":"(source, node : Crystal::Block)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/style/redundant_next.cr#L108","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Block"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"AST::RedundantControlExpressionVisitor.new(self, source, node.body)"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Style/RedundantReturn","path":"Ameba/Rule/Style/RedundantReturn.html","kind":"struct","full_name":"Ameba::Rule::Style::RedundantReturn","name":"RedundantReturn","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/style/redundant_return.cr","line_number":96,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/style/redundant_return.cr#L96"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Redundant `return` detected\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Style","kind":"module","full_name":"Ameba::Rule::Style","name":"Style"},"doc":"A rule that disallows redundant return expressions.\n\nFor example, this is considered invalid:\n\n```\ndef foo\n return :bar\nend\n```\n\n```\ndef bar(arg)\n case arg\n when .nil?\n return \"nil\"\n when .blank?\n return \"blank\"\n else\n return \"empty\"\n end\nend\n```\n\nAnd has to be written as the following:\n\n```\ndef foo\n :bar\nend\n```\n\n```\ndef bar(arg)\n case arg\n when .nil?\n \"nil\"\n when .blank?\n \"blank\"\n else\n \"empty\"\n end\nend\n```\n\n### Configuration params\n\n1. *allow_multi_return*, default: true\n\nAllows end-user to configure whether to report or not the return statements\nwhich return tuple literals i.e.\n\n```\ndef method(a, b)\n return a, b\nend\n```\n\nIf this param equals to `false`, the method above has to be written as:\n\n```\ndef method(a, b)\n {a, b}\nend\n```\n\n2. *allow_empty_return*, default: true\n\nAllows end-user to configure whether to report or not the return statements\nwithout arguments. Sometimes such returns are used to return the `nil` value explicitly.\n\n```\ndef method\n @foo = :empty\n return\nend\n```\n\nIf this param equals to `false`, the method above has to be written as:\n\n```\ndef method\n @foo = :empty\n nil\nend\n```\n\n### YAML config example\n\n```\nStyle/RedundantReturn:\n Enabled: true\n AllowMutliReturn: true\n AllowEmptyReturn: true\n```","summary":"

    A rule that disallows redundant return expressions.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows redundant return expressions.\n\nFor example, this is considered invalid:\n\n```\ndef foo\n return :bar\nend\n```\n\n```\ndef bar(arg)\n case arg\n when .nil?\n return \"nil\"\n when .blank?\n return \"blank\"\n else\n return \"empty\"\n end\nend\n```\n\nAnd has to be written as the following:\n\n```\ndef foo\n :bar\nend\n```\n\n```\ndef bar(arg)\n case arg\n when .nil?\n \"nil\"\n when .blank?\n \"blank\"\n else\n \"empty\"\n end\nend\n```\n\n### Configuration params\n\n1. *allow_multi_return*, default: true\n\nAllows end-user to configure whether to report or not the return statements\nwhich return tuple literals i.e.\n\n```\ndef method(a, b)\n return a, b\nend\n```\n\nIf this param equals to `false`, the method above has to be written as:\n\n```\ndef method(a, b)\n {a, b}\nend\n```\n\n2. *allow_empty_return*, default: true\n\nAllows end-user to configure whether to report or not the return statements\nwithout arguments. Sometimes such returns are used to return the `nil` value explicitly.\n\n```\ndef method\n @foo = :empty\n return\nend\n```\n\nIf this param equals to `false`, the method above has to be written as:\n\n```\ndef method\n @foo = :empty\n nil\nend\n```\n\n### YAML config example\n\n```\nStyle/RedundantReturn:\n Enabled: true\n AllowMutliReturn: true\n AllowEmptyReturn: true\n```","summary":"

    A rule that disallows redundant return expressions.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/style/redundant_return.cr#L96","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"allow_empty_return:Bool-instance-method","html_id":"allow_empty_return:Bool-instance-method","name":"allow_empty_return","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"allow_empty_return","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Bool","visibility":"Public","body":"@allow_empty_return"}},{"id":"allow_empty_return=(allow_empty_return:Bool)-instance-method","html_id":"allow_empty_return=(allow_empty_return:Bool)-instance-method","name":"allow_empty_return=","doc":null,"summary":null,"abstract":false,"args":[{"name":"allow_empty_return","doc":null,"default_value":"","external_name":"allow_empty_return","restriction":"Bool"}],"args_string":"(allow_empty_return : Bool)","source_link":null,"def":{"name":"allow_empty_return=","args":[{"name":"allow_empty_return","doc":null,"default_value":"","external_name":"allow_empty_return","restriction":"Bool"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@allow_empty_return = allow_empty_return"}},{"id":"allow_multi_return:Bool-instance-method","html_id":"allow_multi_return:Bool-instance-method","name":"allow_multi_return","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"allow_multi_return","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Bool","visibility":"Public","body":"@allow_multi_return"}},{"id":"allow_multi_return=(allow_multi_return:Bool)-instance-method","html_id":"allow_multi_return=(allow_multi_return:Bool)-instance-method","name":"allow_multi_return=","doc":null,"summary":null,"abstract":false,"args":[{"name":"allow_multi_return","doc":null,"default_value":"","external_name":"allow_multi_return","restriction":"Bool"}],"args_string":"(allow_multi_return : Bool)","source_link":null,"def":{"name":"allow_multi_return=","args":[{"name":"allow_multi_return","doc":null,"default_value":"","external_name":"allow_multi_return","restriction":"Bool"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@allow_multi_return = allow_multi_return"}},{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node:Crystal::Return,visitor:AST::RedundantControlExpressionVisitor)-instance-method","html_id":"test(source,node:Crystal::Return,visitor:AST::RedundantControlExpressionVisitor)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Return"},{"name":"visitor","doc":null,"default_value":"","external_name":"visitor","restriction":"AST::RedundantControlExpressionVisitor"}],"args_string":"(source, node : Crystal::Return, visitor : AST::RedundantControlExpressionVisitor)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/style/redundant_return.cr#L109","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Return"},{"name":"visitor","doc":null,"default_value":"","external_name":"visitor","restriction":"AST::RedundantControlExpressionVisitor"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if allow_multi_return && node.exp.is_a?(Crystal::TupleLiteral)\n return\nend\nif allow_empty_return && (node.exp.nil? || node.exp.not_nil!.nop?)\n return\nend\nsource.try(&.add_issue(self, node, MSG))\n"}},{"id":"test(source,node:Crystal::Def)-instance-method","html_id":"test(source,node:Crystal::Def)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Def"}],"args_string":"(source, node : Crystal::Def)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/style/redundant_return.cr#L105","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Def"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"AST::RedundantControlExpressionVisitor.new(self, source, node.body)"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Style/TypeNames","path":"Ameba/Rule/Style/TypeNames.html","kind":"struct","full_name":"Ameba::Rule::Style::TypeNames","name":"TypeNames","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/style/type_names.cr","line_number":55,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/style/type_names.cr#L55"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Type name should be camelcased: %s, but it was %s\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Style","kind":"module","full_name":"Ameba::Rule::Style","name":"Style"},"doc":"A rule that enforces type names in camelcase manner.\n\nFor example, these are considered valid:\n\n```\nclass ParseError < Exception\nend\n\nmodule HTTP\n class RequestHandler\n end\nend\n\nalias NumericValue = Float32 | Float64 | Int32 | Int64\n\nlib LibYAML\nend\n\nstruct TagDirective\nend\n\nenum Time::DayOfWeek\nend\n```\n\nAnd these are invalid type names\n\n```\nclass My_class\nend\n\nmodule HTT_p\nend\n\nalias Numeric_value = Int32\n\nlib Lib_YAML\nend\n\nstruct Tag_directive\nend\n\nenum Time_enum::Day_of_week\nend\n```\n\nYAML configuration example:\n\n```\nStyle/TypeNames:\n Enabled: true\n```\n","summary":"

    A rule that enforces type names in camelcase manner.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that enforces type names in camelcase manner.\n\nFor example, these are considered valid:\n\n```\nclass ParseError < Exception\nend\n\nmodule HTTP\n class RequestHandler\n end\nend\n\nalias NumericValue = Float32 | Float64 | Int32 | Int64\n\nlib LibYAML\nend\n\nstruct TagDirective\nend\n\nenum Time::DayOfWeek\nend\n```\n\nAnd these are invalid type names\n\n```\nclass My_class\nend\n\nmodule HTT_p\nend\n\nalias Numeric_value = Int32\n\nlib Lib_YAML\nend\n\nstruct Tag_directive\nend\n\nenum Time_enum::Day_of_week\nend\n```\n\nYAML configuration example:\n\n```\nStyle/TypeNames:\n Enabled: true\n```\n","summary":"

    A rule that enforces type names in camelcase manner.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/style/type_names.cr#L55","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node:Crystal::ClassDef)-instance-method","html_id":"test(source,node:Crystal::ClassDef)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ClassDef"}],"args_string":"(source, node : Crystal::ClassDef)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/style/type_names.cr#L70","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ClassDef"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"check_node(source, node)"}},{"id":"test(source,node:Crystal::Alias)-instance-method","html_id":"test(source,node:Crystal::Alias)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Alias"}],"args_string":"(source, node : Crystal::Alias)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/style/type_names.cr#L74","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Alias"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"check_node(source, node)"}},{"id":"test(source,node:Crystal::LibDef)-instance-method","html_id":"test(source,node:Crystal::LibDef)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::LibDef"}],"args_string":"(source, node : Crystal::LibDef)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/style/type_names.cr#L78","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::LibDef"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"check_node(source, node)"}},{"id":"test(source,node:Crystal::EnumDef)-instance-method","html_id":"test(source,node:Crystal::EnumDef)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::EnumDef"}],"args_string":"(source, node : Crystal::EnumDef)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/style/type_names.cr#L82","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::EnumDef"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"check_node(source, node)"}},{"id":"test(source,node:Crystal::ModuleDef)-instance-method","html_id":"test(source,node:Crystal::ModuleDef)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ModuleDef"}],"args_string":"(source, node : Crystal::ModuleDef)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/style/type_names.cr#L86","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ModuleDef"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"check_node(source, node)"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Style/UnlessElse","path":"Ameba/Rule/Style/UnlessElse.html","kind":"struct","full_name":"Ameba::Rule::Style::UnlessElse","name":"UnlessElse","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/style/unless_else.cr","line_number":46,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/style/unless_else.cr#L46"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Favour if over unless with else\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Style","kind":"module","full_name":"Ameba::Rule::Style","name":"Style"},"doc":"A rule that disallows the use of an `else` block with the `unless`.\n\nFor example, the rule considers these valid:\n\n```\nunless something\n :ok\nend\n\nif something\n :one\nelse\n :two\nend\n```\n\nBut it considers this one invalid as it is an `unless` with an `else`:\n\n```\nunless something\n :one\nelse\n :two\nend\n```\n\nThe solution is to swap the order of the blocks, and change the `unless` to\nan `if`, so the previous invalid example would become this:\n\n```\nif something\n :two\nelse\n :one\nend\n```\n\nYAML configuration example:\n\n```\nStyle/UnlessElse:\n Enabled: true\n```\n","summary":"

    A rule that disallows the use of an else block with the unless.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows the use of an `else` block with the `unless`.\n\nFor example, the rule considers these valid:\n\n```\nunless something\n :ok\nend\n\nif something\n :one\nelse\n :two\nend\n```\n\nBut it considers this one invalid as it is an `unless` with an `else`:\n\n```\nunless something\n :one\nelse\n :two\nend\n```\n\nThe solution is to swap the order of the blocks, and change the `unless` to\nan `if`, so the previous invalid example would become this:\n\n```\nif something\n :two\nelse\n :one\nend\n```\n\nYAML configuration example:\n\n```\nStyle/UnlessElse:\n Enabled: true\n```\n","summary":"

    A rule that disallows the use of an else block with the unless.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/style/unless_else.cr#L46","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node:Crystal::Unless)-instance-method","html_id":"test(source,node:Crystal::Unless)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Unless"}],"args_string":"(source, node : Crystal::Unless)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/style/unless_else.cr#L53","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Unless"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if node.else.nop?\n return\nend\nissue_for(node, MSG)\n"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Style/VariableNames","path":"Ameba/Rule/Style/VariableNames.html","kind":"struct","full_name":"Ameba::Rule::Style::VariableNames","name":"VariableNames","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/style/variable_names.cr","line_number":26,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/style/variable_names.cr#L26"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Var name should be underscore-cased: %s, not %s\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Style","kind":"module","full_name":"Ameba::Rule::Style","name":"Style"},"doc":"A rule that enforces variable names to be in underscored case.\n\nFor example, these variable names are considered valid:\n\n```\nvar_name = 1\nname = 2\n_another_good_name = 3\n```\n\nAnd these are invalid variable names:\n\n```\nmyBadNamedVar = 1\nwrong_Name = 2\n```\n\nYAML configuration example:\n\n```\nStyle/VariableNames:\n Enabled: true\n```\n","summary":"

    A rule that enforces variable names to be in underscored case.

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that enforces variable names to be in underscored case.\n\nFor example, these variable names are considered valid:\n\n```\nvar_name = 1\nname = 2\n_another_good_name = 3\n```\n\nAnd these are invalid variable names:\n\n```\nmyBadNamedVar = 1\nwrong_Name = 2\n```\n\nYAML configuration example:\n\n```\nStyle/VariableNames:\n Enabled: true\n```\n","summary":"

    A rule that enforces variable names to be in underscored case.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/style/variable_names.cr#L26","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node:Crystal::Var)-instance-method","html_id":"test(source,node:Crystal::Var)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Var"}],"args_string":"(source, node : Crystal::Var)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/style/variable_names.cr#L39","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Var"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"check_node(source, node)"}},{"id":"test(source,node:Crystal::InstanceVar)-instance-method","html_id":"test(source,node:Crystal::InstanceVar)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::InstanceVar"}],"args_string":"(source, node : Crystal::InstanceVar)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/style/variable_names.cr#L43","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::InstanceVar"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"check_node(source, node)"}},{"id":"test(source,node:Crystal::ClassVar)-instance-method","html_id":"test(source,node:Crystal::ClassVar)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ClassVar"}],"args_string":"(source, node : Crystal::ClassVar)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/style/variable_names.cr#L47","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ClassVar"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"check_node(source, node)"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Style/WhileTrue","path":"Ameba/Rule/Style/WhileTrue.html","kind":"struct","full_name":"Ameba::Rule::Style::WhileTrue","name":"WhileTrue","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/style/while_true.cr","line_number":29,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/style/while_true.cr#L29"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"While statement using true literal as condition\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Style","kind":"module","full_name":"Ameba::Rule::Style","name":"Style"},"doc":"A rule that disallows the use of `while true` instead of using the idiomatic `loop`\n\nFor example, this is considered invalid:\n\n```\nwhile true\n do_something\n break if some_condition\nend\n```\n\nAnd should be replaced by the following:\n\n```\nloop do\n do_something\n break if some_condition\nend\n```\n\nYAML configuration example:\n\n```\nStyle/WhileTrue:\n Enabled: true\n```\n","summary":"

    A rule that disallows the use of while true instead of using the idiomatic loop

    ","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows the use of `while true` instead of using the idiomatic `loop`\n\nFor example, this is considered invalid:\n\n```\nwhile true\n do_something\n break if some_condition\nend\n```\n\nAnd should be replaced by the following:\n\n```\nloop do\n do_something\n break if some_condition\nend\n```\n\nYAML configuration example:\n\n```\nStyle/WhileTrue:\n Enabled: true\n```\n","summary":"

    A rule that disallows the use of while true instead of using the idiomatic loop

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/style/while_true.cr#L29","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node:Crystal::While)-instance-method","html_id":"test(source,node:Crystal::While)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::While"}],"args_string":"(source, node : Crystal::While)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/rule/style/while_true.cr#L36","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::While"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if node.cond.true_literal?\nelse\n return\nend\nissue_for(node, MSG)\n"}}],"macros":[],"types":[]}]}]},{"html_id":"ameba/Ameba/Runner","path":"Ameba/Runner.html","kind":"class","full_name":"Ameba::Runner","name":"Runner","abstract":false,"superclass":{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},"ancestors":[{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/runner.cr","line_number":13,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/runner.cr#L13"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba","kind":"module","full_name":"Ameba","name":"Ameba"},"doc":"Represents a runner for inspecting sources files.\nHolds a list of rules to do inspection based on,\nlist of sources to run inspection on and a formatter\nto prepare a report.\n\n```\nconfig = Ameba::Config.load\nrunner = Ameba::Runner.new config\nrunner.run.success? # => true or false\n```\n","summary":"

    Represents a runner for inspecting sources files.

    ","class_methods":[],"constructors":[{"id":"new(config:Config)-class-method","html_id":"new(config:Config)-class-method","name":"new","doc":"Instantiates a runner using a `config`.\n\n```\nconfig = Ameba::Config.load\nconfig.files = files\nconfig.formatter = formatter\n\nAmeba::Runner.new config\n```\n","summary":"

    Instantiates a runner using a config.

    ","abstract":false,"args":[{"name":"config","doc":null,"default_value":"","external_name":"config","restriction":"Config"}],"args_string":"(config : Config)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/runner.cr#L42","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"","external_name":"config","restriction":"Config"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"_ = allocate\n_.initialize(config)\nif _.responds_to?(:finalize)\n ::GC.add_finalizer(_)\nend\n_\n"}}],"instance_methods":[{"id":"explain(location,output=STDOUT)-instance-method","html_id":"explain(location,output=STDOUT)-instance-method","name":"explain","doc":"Explains an issue at a specified *location*.\n\nRunner should perform inspection before doing the explain.\nThis is necessary to be able to find the issue at a specified location.\n\n```\nrunner = Ameba::Runner.new config\nrunner.run\nrunner.explain({file: file, line: l, column: c})\n```\n","summary":"

    Explains an issue at a specified location.

    ","abstract":false,"args":[{"name":"location","doc":null,"default_value":"","external_name":"location","restriction":""},{"name":"output","doc":null,"default_value":"STDOUT","external_name":"output","restriction":""}],"args_string":"(location, output = STDOUT)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/runner.cr#L118","def":{"name":"explain","args":[{"name":"location","doc":null,"default_value":"","external_name":"location","restriction":""},{"name":"output","doc":null,"default_value":"STDOUT","external_name":"output","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"(Formatter::ExplainFormatter.new(output, location)).finished(@sources)"}},{"id":"run-instance-method","html_id":"run-instance-method","name":"run","doc":"Performs the inspection. Iterates through all sources and test it using\nlist of rules. If a specific rule fails on a specific source, it adds\nan issue to that source.\n\nThis action also notifies formatter when inspection is started/finished,\nand when a specific source started/finished to be inspected.\n\n```\nrunner = Ameba::Runner.new config\nrunner.run # => returns runner again\n```\n","summary":"

    Performs the inspection.

    ","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/runner.cr#L69","def":{"name":"run","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"begin\n @formatter.started(@sources)\n channels = @sources.map do\n Channel(Exception | ::Nil).new\n end\n @sources.each_with_index do |source, idx|\n channel = channels[idx]\n spawn do\n begin\n run_source(source)\n rescue e\n channel.send(e)\n else\n channel.send(nil)\n end\n end\n end\n channels.each do |c|\n e = c.receive\n if e.nil?\n else\n raise(e)\n end\n end\n self\nensure\n @formatter.finished(@sources)\nend"}},{"id":"sources:Array(Source)-instance-method","html_id":"sources:Array(Source)-instance-method","name":"sources","doc":"A list of sources to run inspection on.","summary":"

    A list of sources to run inspection on.

    ","abstract":false,"args":[],"args_string":" : Array(Source)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/runner.cr#L18","def":{"name":"sources","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(Source)","visibility":"Public","body":"@sources"}},{"id":"success?-instance-method","html_id":"success?-instance-method","name":"success?","doc":"Indicates whether the last inspection successful or not.\nIt returns true if no issues matching severity in sources found, false otherwise.\n\n```\nrunner = Ameba::Runner.new config\nrunner.run\nrunner.success? # => true or false\n```\n","summary":"

    Indicates whether the last inspection successful or not.

    ","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/runner.cr#L131","def":{"name":"success?","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@sources.all? do |source|\n source.issues.reject(&.disabled?).none? do |issue|\n issue.rule.severity <= @severity\n end\nend"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Severity","path":"Ameba/Severity.html","kind":"enum","full_name":"Ameba::Severity","name":"Severity","abstract":false,"superclass":null,"ancestors":[{"html_id":"ameba/Enum","kind":"struct","full_name":"Enum","name":"Enum"},{"html_id":"ameba/Comparable","kind":"module","full_name":"Comparable","name":"Comparable"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/severity.cr","line_number":2,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/severity.cr#L2"}],"repository_name":"ameba","program":false,"enum":true,"alias":false,"aliased":"","const":false,"constants":[{"id":"Error","name":"Error","value":"0","doc":null,"summary":null},{"id":"Warning","name":"Warning","value":"1","doc":null,"summary":null},{"id":"Convention","name":"Convention","value":"2","doc":null,"summary":null}],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba","kind":"module","full_name":"Ameba","name":"Ameba"},"doc":null,"summary":null,"class_methods":[{"id":"parse(name:String)-class-method","html_id":"parse(name:String)-class-method","name":"parse","doc":"Creates Severity by the name.\n\n```\nSeverity.parse(\"convention\") # => Severity::Convention\nSeverity.parse(\"foo-bar\") # => Exception: Incorrect severity name\n```\n","summary":"

    Creates Severity by the name.

    ","abstract":false,"args":[{"name":"name","doc":null,"default_value":"","external_name":"name","restriction":"String"}],"args_string":"(name : String)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/severity.cr#L23","def":{"name":"parse","args":[{"name":"name","doc":null,"default_value":"","external_name":"name","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"begin\n super(name)\nrescue ArgumentError\n raise(\"Incorrect severity name #{name}. Try one of #{values}\")\nend"}}],"constructors":[],"instance_methods":[{"id":"convention?-instance-method","html_id":"convention?-instance-method","name":"convention?","doc":null,"summary":null,"abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/severity.cr#L5","def":{"name":"convention?","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"self == Convention"}},{"id":"error?-instance-method","html_id":"error?-instance-method","name":"error?","doc":null,"summary":null,"abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/severity.cr#L3","def":{"name":"error?","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"self == Error"}},{"id":"symbol-instance-method","html_id":"symbol-instance-method","name":"symbol","doc":"Returns a symbol uniquely indicating severity.\n\n```\nSeverity::Warning.symbol # => 'W'\n```","summary":"

    Returns a symbol uniquely indicating severity.

    ","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/severity.cr#L12","def":{"name":"symbol","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"to_s[0]"}},{"id":"warning?-instance-method","html_id":"warning?-instance-method","name":"warning?","doc":null,"summary":null,"abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/severity.cr#L4","def":{"name":"warning?","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"self == Warning"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/SeverityYamlConverter","path":"Ameba/SeverityYamlConverter.html","kind":"class","full_name":"Ameba::SeverityYamlConverter","name":"SeverityYamlConverter","abstract":false,"superclass":{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},"ancestors":[{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/severity.cr","line_number":31,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/severity.cr#L31"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba","kind":"module","full_name":"Ameba","name":"Ameba"},"doc":"Converter for `YAML.mapping` which converts severity enum to and from YAML.","summary":"

    Converter for YAML.mapping which converts severity enum to and from YAML.

    ","class_methods":[{"id":"from_yaml(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"from_yaml(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"from_yaml","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/severity.cr#L32","def":{"name":"from_yaml","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if node.is_a?(YAML::Nodes::Scalar)\nelse\n raise(\"Severity must be a scalar, not #{node.class}\")\nend\ncase value = node.value\nwhen String\n Severity.parse(value)\nwhen Nil\n nil\nelse\n raise(\"Incorrect severity: #{value}\")\nend\n"}},{"id":"to_yaml(value:Severity,yaml:YAML::Nodes::Builder)-class-method","html_id":"to_yaml(value:Severity,yaml:YAML::Nodes::Builder)-class-method","name":"to_yaml","doc":null,"summary":null,"abstract":false,"args":[{"name":"value","doc":null,"default_value":"","external_name":"value","restriction":"Severity"},{"name":"yaml","doc":null,"default_value":"","external_name":"yaml","restriction":"YAML::Nodes::Builder"}],"args_string":"(value : Severity, yaml : YAML::Nodes::Builder)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/severity.cr#L45","def":{"name":"to_yaml","args":[{"name":"value","doc":null,"default_value":"","external_name":"value","restriction":"Severity"},{"name":"yaml","doc":null,"default_value":"","external_name":"yaml","restriction":"YAML::Nodes::Builder"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"yaml.scalar(value)"}}],"constructors":[],"instance_methods":[],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Source","path":"Ameba/Source.html","kind":"class","full_name":"Ameba::Source","name":"Source","abstract":false,"superclass":{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},"ancestors":[{"html_id":"ameba/Ameba/Reportable","kind":"module","full_name":"Ameba::Reportable","name":"Reportable"},{"html_id":"ameba/Ameba/InlineComments","kind":"module","full_name":"Ameba::InlineComments","name":"InlineComments"},{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/source.cr","line_number":4,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/source.cr#L4"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[{"html_id":"ameba/Ameba/InlineComments","kind":"module","full_name":"Ameba::InlineComments","name":"InlineComments"},{"html_id":"ameba/Ameba/Reportable","kind":"module","full_name":"Ameba::Reportable","name":"Reportable"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba","kind":"module","full_name":"Ameba","name":"Ameba"},"doc":"An entity that represents a Crystal source file.\nHas path, lines of code and issues reported by rules.","summary":"

    An entity that represents a Crystal source file.

    ","class_methods":[],"constructors":[{"id":"new(code:String,path="")-class-method","html_id":"new(code:String,path="")-class-method","name":"new","doc":"Creates a new source by `code` and `path`.\n\nFor example:\n\n```\npath = \"./src/source.cr\"\nAmeba::Source.new File.read(path), path\n```\n","summary":"

    Creates a new source by #code and #path.

    ","abstract":false,"args":[{"name":"code","doc":null,"default_value":"","external_name":"code","restriction":"String"},{"name":"path","doc":null,"default_value":"\"\"","external_name":"path","restriction":""}],"args_string":"(code : String, path = "")","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/source.cr#L27","def":{"name":"new","args":[{"name":"code","doc":null,"default_value":"","external_name":"code","restriction":"String"},{"name":"path","doc":null,"default_value":"\"\"","external_name":"path","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"_ = allocate\n_.initialize(code, path)\nif _.responds_to?(:finalize)\n ::GC.add_finalizer(_)\nend\n_\n"}}],"instance_methods":[{"id":"ast-instance-method","html_id":"ast-instance-method","name":"ast","doc":"Returns AST nodes constructed by `Crystal::Parser`.\n\n```\nsource = Ameba::Source.new code, path\nsource.ast\n```\n","summary":"

    Returns AST nodes constructed by Crystal::Parser.

    ","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/source.cr#L52","def":{"name":"ast","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@ast || (@ast = (Crystal::Parser.new(code)).tap do |parser|\n parser.wants_doc = true\nend.tap do |parser|\n parser.filename = @path\nend.parse)"}},{"id":"code:String-instance-method","html_id":"code:String-instance-method","name":"code","doc":"Crystal code (content of a source file).","summary":"

    Crystal code (content of a source file).

    ","abstract":false,"args":[],"args_string":" : String","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/source.cr#L12","def":{"name":"code","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@code"}},{"id":"fullpath-instance-method","html_id":"fullpath-instance-method","name":"fullpath","doc":null,"summary":null,"abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/source.cr#L60","def":{"name":"fullpath","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@fullpath || (@fullpath = File.expand_path(@path))"}},{"id":"lines-instance-method","html_id":"lines-instance-method","name":"lines","doc":"Returns lines of code splitted by new line character.\nSince `code` is immutable and can't be changed, this\nmethod caches lines in an instance variable, so calling\nit second time will not perform a split, but will return\nlines instantly.\n\n```\nsource = Ameba::Source.new \"a = 1\\nb = 2\", path\nsource.lines # => [\"a = 1\", \"b = 2\"]\n```\n","summary":"

    Returns lines of code splitted by new line character.

    ","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/source.cr#L41","def":{"name":"lines","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@lines || (@lines = @code.split(\"\\n\"))"}},{"id":"matches_path?(filepath)-instance-method","html_id":"matches_path?(filepath)-instance-method","name":"matches_path?","doc":"Returns true if *filepath* matches the source's path, false if it does not.","summary":"

    Returns true if filepath matches the source's path, false if it does not.

    ","abstract":false,"args":[{"name":"filepath","doc":null,"default_value":"","external_name":"filepath","restriction":""}],"args_string":"(filepath)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/source.cr#L65","def":{"name":"matches_path?","args":[{"name":"filepath","doc":null,"default_value":"","external_name":"filepath","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"(path == filepath) || (path == (File.expand_path(filepath)))"}},{"id":"path:String-instance-method","html_id":"path:String-instance-method","name":"path","doc":"Path to the source file.","summary":"

    Path to the source file.

    ","abstract":false,"args":[],"args_string":" : String","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/source.cr#L9","def":{"name":"path","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@path"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Tokenizer","path":"Ameba/Tokenizer.html","kind":"class","full_name":"Ameba::Tokenizer","name":"Tokenizer","abstract":false,"superclass":{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},"ancestors":[{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/tokenizer.cr","line_number":14,"url":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/tokenizer.cr#L14"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba","kind":"module","full_name":"Ameba","name":"Ameba"},"doc":"Represents Crystal syntax tokenizer based on `Crystal::Lexer`.\n\n```\nsource = Ameba::Source.new code, path\ntokenizer = Ameba::Tokenizer.new(source)\ntokenizer.run do |token|\n puts token\nend\n```\n","summary":"

    Represents Crystal syntax tokenizer based on Crystal::Lexer.

    ","class_methods":[],"constructors":[{"id":"new(lexer:Crystal::Lexer)-class-method","html_id":"new(lexer:Crystal::Lexer)-class-method","name":"new","doc":"Instantiates Tokenizer using a `lexer`.\n\n```\nlexer = Crystal::Lexer.new(code)\nAmeba::Tokenizer.new(lexer)\n```\n","summary":"

    Instantiates Tokenizer using a lexer.

    ","abstract":false,"args":[{"name":"lexer","doc":null,"default_value":"","external_name":"lexer","restriction":"Crystal::Lexer"}],"args_string":"(lexer : Crystal::Lexer)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/tokenizer.cr#L37","def":{"name":"new","args":[{"name":"lexer","doc":null,"default_value":"","external_name":"lexer","restriction":"Crystal::Lexer"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"_ = allocate\n_.initialize(lexer)\nif _.responds_to?(:finalize)\n ::GC.add_finalizer(_)\nend\n_\n"}},{"id":"new(source)-class-method","html_id":"new(source)-class-method","name":"new","doc":"Instantiates Tokenizer using a `source`.\n\n```\nsource = Ameba::Source.new code, path\nAmeba::Tokenizer.new(source)\n```\n","summary":"

    Instantiates Tokenizer using a source.

    ","abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"args_string":"(source)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/tokenizer.cr#L22","def":{"name":"new","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"_ = allocate\n_.initialize(source)\nif _.responds_to?(:finalize)\n ::GC.add_finalizer(_)\nend\n_\n"}}],"instance_methods":[{"id":"run(&block:Crystal::Token->_)-instance-method","html_id":"run(&block:Crystal::Token->_)-instance-method","name":"run","doc":"Runs the tokenizer and yields each token as a block argument.\n\n```\nAmeba::Tokenizer.new(source).run do |token|\n puts token\nend\n```\n","summary":"

    Runs the tokenizer and yields each token as a block argument.

    ","abstract":false,"args":[],"args_string":"(&block : Crystal::Token -> _)","source_link":"https://github.com/crystal-ameba/ameba/blob/7aa7efd4/src/ameba/tokenizer.cr#L48","def":{"name":"run","args":[],"double_splat":null,"splat_index":null,"yields":1,"block_arg":{"name":"block","doc":null,"default_value":"","external_name":"block","restriction":"(Crystal::Token -> _)"},"return_type":"","visibility":"Public","body":"begin\n run_normal_state(@lexer, &block)\n true\nrescue e : Crystal::SyntaxException\n false\nend"}}],"macros":[],"types":[]}]}]}}) \ No newline at end of file