diff --git a/Ameba.html b/Ameba.html
index 05b6f3f6..9db12855 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.
@node
.
return
:
return
:
return
:
@node
.
@node
.
@node
.
@node
.
@node
.
@node
.
@node
.
Ameba::
-
+
ameba/formatter/base_formatter.cr
@@ -754,7 +754,7 @@ callbacks in Ameba::
- [View source]
+ [View source]
@@ -784,7 +784,7 @@ callbacks in Ameba::
- [View source]
+ [View source]
@@ -806,7 +806,7 @@ A list of inspected sources is passed as an argument.
- [View source]
+ [View source]
@@ -827,7 +827,7 @@ A list of inspected sources is passed as an argument.
- [View source]
+ [View source]
@@ -849,7 +849,7 @@ A corresponding source is passed as an argument.
- [View source]
+ [View source]
@@ -871,7 +871,7 @@ A corresponding source is passed as an argument.
- [View source]
+ [View source]
@@ -893,7 +893,7 @@ A list of sources to inspect is passed as an argument.
- [View source]
+ [View source]
diff --git a/Ameba/Formatter/DisabledFormatter.html b/Ameba/Formatter/DisabledFormatter.html
index fc310f87..b71670c8 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.
- [View source]
+ [View source]
diff --git a/Ameba/Formatter/DotFormatter.html b/Ameba/Formatter/DotFormatter.html
index 84f4a409..55fea398 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.
- [View source]
+ [View source]
@@ -827,7 +827,7 @@ It is similar to Crystal's dot formatter for specs.
- [View source]
+ [View source]
@@ -848,7 +848,7 @@ It is similar to Crystal's dot formatter for specs.
- [View source]
+ [View source]
diff --git a/Ameba/Formatter/ExplainFormatter.html b/Ameba/Formatter/ExplainFormatter.html
index 922ae8a7..9dcd3156 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.
- [View source]
+ [View source]
@@ -819,7 +819,7 @@ Second argument is location which indicates the location to explain.
- [View source]
+ [View source]
@@ -835,7 +835,7 @@ Second argument is location which indicates the location to explain.
- [View source]
+ [View source]
@@ -851,7 +851,7 @@ Second argument is location which indicates the location to explain.
- [View source]
+ [View source]
diff --git a/Ameba/Formatter/FlycheckFormatter.html b/Ameba/Formatter/FlycheckFormatter.html
index e2bfc9bd..2a47200b 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.
- [View source]
+ [View source]
diff --git a/Ameba/Formatter/JSONFormatter.html b/Ameba/Formatter/JSONFormatter.html
index a4145e8d..03b39c44 100644
--- a/Ameba/Formatter/JSONFormatter.html
+++ b/Ameba/Formatter/JSONFormatter.html
@@ -657,7 +657,7 @@
-
+
ameba/formatter/json_formatter.cr
@@ -824,7 +824,7 @@
- [View source]
+ [View source]
@@ -864,7 +864,7 @@ A list of inspected sources is passed as an argument.
- [View source]
+ [View source]
@@ -890,7 +890,7 @@ A corresponding source is passed as an argument.
- [View source]
+ [View source]
@@ -916,7 +916,7 @@ A list of sources to inspect is passed as an argument.
- [View source]
+ [View source]
diff --git a/Ameba/Formatter/TODOFormatter.html b/Ameba/Formatter/TODOFormatter.html
index 909b1a8c..5b504769 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.
- [View source]
+ [View source]
@@ -841,7 +841,7 @@ or excludes failed sources from these rules.
- [View source]
+ [View source]
diff --git a/Ameba/Formatter/Util.html b/Ameba/Formatter/Util.html
index 7ebaa7eb..fcbd2c19 100644
--- a/Ameba/Formatter/Util.html
+++ b/Ameba/Formatter/Util.html
@@ -602,7 +602,7 @@
-
+
ameba/formatter/util.cr
@@ -667,7 +667,7 @@
- [View source]
+ [View source]
diff --git a/Ameba/GlobUtils.html b/Ameba/GlobUtils.html
index a3261bab..93f70fba 100644
--- a/Ameba/GlobUtils.html
+++ b/Ameba/GlobUtils.html
@@ -611,7 +611,7 @@
-
+
ameba/glob_utils.cr
@@ -692,7 +692,7 @@
- [View source]
+ [View source]
@@ -716,7 +716,7 @@ Globs can have wildcards or be rejected:
- [View source]
+ [View source]
diff --git a/Ameba/InlineComments.html b/Ameba/InlineComments.html
index dffd84d8..9b6abf27 100644
--- a/Ameba/InlineComments.html
+++ b/Ameba/InlineComments.html
@@ -611,7 +611,7 @@
-
+
ameba/inline_comments.cr
@@ -716,7 +716,7 @@
- [View source]
+ [View source]
@@ -759,7 +759,7 @@ false otherwise.
- [View source]
+ [View source]
@@ -791,7 +791,7 @@ parse_inline_directive(line) # => nil
- [View source]
+ [View source]
diff --git a/Ameba/InlineComments/Action.html b/Ameba/InlineComments/Action.html
index 555b3389..dd56238f 100644
--- a/Ameba/InlineComments/Action.html
+++ b/Ameba/InlineComments/Action.html
@@ -597,7 +597,7 @@
-
+
ameba/inline_comments.cr
@@ -731,7 +731,7 @@
- [View source]
+ [View source]
@@ -747,7 +747,7 @@
- [View source]
+ [View source]
diff --git a/Ameba/Issue.html b/Ameba/Issue.html
index 572296f3..43e2cf9f 100644
--- a/Ameba/Issue.html
+++ b/Ameba/Issue.html
@@ -599,7 +599,7 @@
-
+
ameba/issue.cr
@@ -747,7 +747,7 @@
- [View source]
+ [View source]
@@ -777,7 +777,7 @@
- [View source]
+ [View source]
@@ -793,7 +793,7 @@
- [View source]
+ [View source]
@@ -809,7 +809,7 @@
- [View source]
+ [View source]
@@ -895,7 +895,7 @@
- [View source]
+ [View source]
diff --git a/Ameba/Reportable.html b/Ameba/Reportable.html
index 0e3f6375..ed9da5f5 100644
--- a/Ameba/Reportable.html
+++ b/Ameba/Reportable.html
@@ -611,7 +611,7 @@
-
+
ameba/reportable.cr
@@ -725,7 +725,7 @@
- [View source]
+ [View source]
@@ -746,7 +746,7 @@
- [View source]
+ [View source]
@@ -767,7 +767,7 @@
- [View source]
+ [View source]
@@ -788,7 +788,7 @@
- [View source]
+ [View source]
@@ -809,7 +809,7 @@
- [View source]
+ [View source]
@@ -830,7 +830,7 @@
- [View source]
+ [View source]
@@ -851,7 +851,7 @@
- [View source]
+ [View source]
diff --git a/Ameba/Rule.html b/Ameba/Rule.html
index 041ba9eb..ff149799 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.
- [View source]
+ [View source]
diff --git a/Ameba/Rule/Base.html b/Ameba/Rule/Base.html
index 580c68ab..a56ee663 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.
- [View source]
+ [View source]
@@ -984,7 +984,7 @@ that are tested by this rule, it should add an issue.
- [View source]
+ [View source]
@@ -1038,7 +1038,7 @@ p1 == p3 # => false
- [View source]
+ [View source]
@@ -1063,7 +1063,7 @@ source.valid?
def_hash
can be used to generate this meth
def_hash
can be used to generate this meth
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
has_
or the prefix is_
. Ignores
nil
-
+
ameba/rule/style/redundant_next.cr
@@ -1107,7 +1107,7 @@ without arguments. Sometimes such statements are used to yild the nil
- [View source]
+ [View source]
@@ -1305,7 +1305,7 @@ without arguments. Sometimes such statements are used to yild the nil
- [View source]
+ [View source]
@@ -1321,7 +1321,7 @@ without arguments. Sometimes such statements are used to yild the nil
- [View source]
+ [View source]
diff --git a/Ameba/Rule/Style/RedundantReturn.html b/Ameba/Rule/Style/RedundantReturn.html
index ba0eb444..1494ad6c 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
- [View source]
+ [View source]
@@ -1299,7 +1299,7 @@ without arguments. Sometimes such returns are used to return the nil
- [View source]
+ [View source]
@@ -1315,7 +1315,7 @@ without arguments. Sometimes such returns are used to return the nil
- [View source]
+ [View source]
diff --git a/Ameba/Rule/Style/TypeNames.html b/Ameba/Rule/Style/TypeNames.html
index 9d13faf6..bfd97934 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 @@
- [View source]
+ [View source]
@@ -1162,7 +1162,7 @@
- [View source]
+ [View source]
@@ -1178,7 +1178,7 @@
- [View source]
+ [View source]
@@ -1194,7 +1194,7 @@
- [View source]
+ [View source]
@@ -1210,7 +1210,7 @@
- [View source]
+ [View source]
@@ -1226,7 +1226,7 @@
- [View source]
+ [View source]
diff --git a/Ameba/Rule/Style/UnlessElse.html b/Ameba/Rule/Style/UnlessElse.html
index 565268f3..cc747a9e 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:
- [View source]
+ [View source]
@@ -1120,7 +1120,7 @@ an if
, so the previous invalid example would become this:
- [View source]
+ [View source]
diff --git a/Ameba/Rule/Style/VariableNames.html b/Ameba/Rule/Style/VariableNames.html
index 627b8f2b..eb963661 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
- [View source]
+ [View source]
@@ -1094,7 +1094,7 @@ wrong_Name = 2
- [View source]
+ [View source]
@@ -1110,7 +1110,7 @@ wrong_Name = 2
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.
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
.
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
.
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.
See Object#hash(hasher)
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.
A visit callback for Crystal::Until
node.
A visit callback for Crystal::While
node.
A visit callback for Crystal::When
node.
A visit callback for Crystal::Var
node.
A visit callback for Crystal::Unless
node.
A visit callback for Crystal::StringInterpolation
node.
A visit callback for Crystal::NilLiteral
node.
A visit callback for Crystal::ModuleDef
node.
A visit callback for Crystal::LibDef
node.
A visit callback for Crystal::InstanceVar
node.
A visit callback for Crystal::If
node.
A visit callback for Crystal::HashLiteral
node.
A visit callback for Crystal::Expressions
node.
A visit callback for Crystal::ExceptionHandler
node.
A visit callback for Crystal::EnumDef
node.
A visit callback for Crystal::Def
node.
A visit callback for Crystal::ClassVar
node.
A visit callback for Crystal::ClassDef
node.
A visit callback for Crystal::Case
node.
A visit callback for Crystal::Block
node.
A visit callback for Crystal::Call
node.
A visit callback for Crystal::Assign
node.
A visit callback for Crystal::IsA
node.
A class that utilizes a logic to traverse AST nodes and fire a source test callback if a redundant Crystal::ControlExpression
is reached.
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.
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
.
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)
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.
Returns true if node represents exit
method call.
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.
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.
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
.
Returns true if the #node
represents exactly the same Crystal node as @node
.
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 $?
.
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
.
Loads YAML configuration file by path
.
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:(?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.
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.
A convenient addition to #test
method that does the same but returns a passed in source
as an addition.
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.
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.
A rule that disallows lines longer than #max_length
number of symbols.
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.
A rule that disallows rand(0)
and rand(1)
calls.
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.
A rule that disallows redundant with_index
calls.
A rule that disallows redundant each_with_object
calls.
A rule that disallows redundant each_with_object
calls.
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
A rule that disallows methods with a cyclomatic complexity higher than MaxComplexity
This rule is used to identify usage of any?
calls that follow filters.
This rule is used to identify usage of any?
calls that follow filters.
This rule is used to identify usage of first/last/first?/last?
calls that follow filters.
This rule is used to identify usage of first/last/first?/last?
calls that follow filters.
This rule is used to identify usage of size
calls that follow filter.
This rule is used to identify usage of size
calls that follow filter.
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?
.
A rule that disallows calls to is_a?(Nil)
in favor of nil?
.
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_
.
A rule that disallows tautological predicate names, meaning those that start with the prefix has_
or the prefix is_
.
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
.
A rule that disallows the use of an else
block with the unless
.
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
A rule that disallows the use of while true
instead of using the idiomatic loop
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
.
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.
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
.
Returns AST nodes constructed by Crystal::Parser
.
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
.
Instantiates Tokenizer using a lexer
.
Instantiates Tokenizer using a source
.
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 +{"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/d28f9f75/src/ameba.cr#L24"},{"filename":"src/ameba/glob_utils.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/d28f9f75/src/ameba/glob_utils.cr#L1"},{"filename":"src/ameba/inline_comments.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/d28f9f75/src/ameba/inline_comments.cr#L1"},{"filename":"src/ameba/issue.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/d28f9f75/src/ameba/issue.cr#L1"},{"filename":"src/ameba/reportable.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/d28f9f75/src/ameba/reportable.cr#L1"},{"filename":"src/ameba/runner.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/d28f9f75/src/ameba/runner.cr#L1"},{"filename":"src/ameba/severity.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/d28f9f75/src/ameba/severity.cr#L1"},{"filename":"src/ameba/source.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/d28f9f75/src/ameba/source.cr#L1"},{"filename":"src/ameba/tokenizer.cr","line_number":3,"url":"https://github.com/crystal-ameba/ameba/blob/d28f9f75/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.
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
.
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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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
.
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/d28f9f75/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/d28f9f75/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/d28f9f75/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.
See Object#hash(hasher)
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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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.
A visit callback for Crystal::Until
node.
A visit callback for Crystal::While
node.
A visit callback for Crystal::When
node.
A visit callback for Crystal::Var
node.
A visit callback for Crystal::Unless
node.
A visit callback for Crystal::StringInterpolation
node.
A visit callback for Crystal::NilLiteral
node.
A visit callback for Crystal::ModuleDef
node.
A visit callback for Crystal::LibDef
node.
A visit callback for Crystal::InstanceVar
node.
A visit callback for Crystal::If
node.
A visit callback for Crystal::HashLiteral
node.
A visit callback for Crystal::Expressions
node.
A visit callback for Crystal::ExceptionHandler
node.
A visit callback for Crystal::EnumDef
node.
A visit callback for Crystal::Def
node.
A visit callback for Crystal::ClassVar
node.
A visit callback for Crystal::ClassDef
node.
A visit callback for Crystal::Case
node.
A visit callback for Crystal::Block
node.
A visit callback for Crystal::Call
node.
A visit callback for Crystal::Assign
node.
A visit callback for Crystal::IsA
node.
A class that utilizes a logic to traverse AST nodes and fire a source test callback if a redundant Crystal::ControlExpression
is reached.
A node to run traversal on.
","abstract":false,"args":[],"args_string":" : Crystal::ASTNode","source_link":"https://github.com/crystal-ameba/ameba/blob/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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.
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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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
.
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/d28f9f75/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)
Returns true if current scope sits inside a macro.
","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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.
Returns true if node represents exit
method call.
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/d28f9f75/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/d28f9f75/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.
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/d28f9f75/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/d28f9f75/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.
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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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
.
Returns true if the #node
represents exactly the same Crystal node as @node
.
Returns true if the name starts with '_', false if not.
","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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 $?
.
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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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
.
Loads YAML configuration file by path
.
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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/src/ameba/formatter/todo_formatter.cr#L1"},{"filename":"src/ameba/formatter/util.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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:(?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.
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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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.
A convenient addition to #test
method that does the same but returns a passed in source
as an addition.
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/d28f9f75/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/d28f9f75/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.
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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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.
A rule that disallows lines longer than #max_length
number of symbols.
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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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.
A rule that disallows rand(0)
and rand(1)
calls.
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/d28f9f75/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/d28f9f75/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/d28f9f75/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.
A rule that disallows redundant with_index
calls.
A rule that disallows redundant each_with_object
calls.
A rule that disallows redundant each_with_object
calls.
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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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
A rule that disallows methods with a cyclomatic complexity higher than MaxComplexity
This rule is used to identify usage of any?
calls that follow filters.
This rule is used to identify usage of any?
calls that follow filters.
This rule is used to identify usage of first/last/first?/last?
calls that follow filters.
This rule is used to identify usage of first/last/first?/last?
calls that follow filters.
This rule is used to identify usage of size
calls that follow filter.
This rule is used to identify usage of size
calls that follow filter.
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/d28f9f75/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/d28f9f75/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/d28f9f75/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?
.
A rule that disallows calls to is_a?(Nil)
in favor of nil?
.
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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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_
.
A rule that disallows tautological predicate names, meaning those that start with the prefix has_
or the prefix is_
.
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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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
.
A rule that disallows the use of an else
block with the unless
.
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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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
A rule that disallows the use of while true
instead of using the idiomatic loop
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
.
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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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.
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
.
Returns AST nodes constructed by Crystal::Parser
.
Crystal code (content of a source file).
","abstract":false,"args":[],"args_string":" : String","source_link":"https://github.com/crystal-ameba/ameba/blob/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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
.
Instantiates Tokenizer using a lexer
.
Instantiates Tokenizer using a source
.
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/d28f9f75/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 5808c4a3..a1a4e70a 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/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.
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
.
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
.
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.
See Object#hash(hasher)
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.
A visit callback for Crystal::Until
node.
A visit callback for Crystal::While
node.
A visit callback for Crystal::When
node.
A visit callback for Crystal::Var
node.
A visit callback for Crystal::Unless
node.
A visit callback for Crystal::StringInterpolation
node.
A visit callback for Crystal::NilLiteral
node.
A visit callback for Crystal::ModuleDef
node.
A visit callback for Crystal::LibDef
node.
A visit callback for Crystal::InstanceVar
node.
A visit callback for Crystal::If
node.
A visit callback for Crystal::HashLiteral
node.
A visit callback for Crystal::Expressions
node.
A visit callback for Crystal::ExceptionHandler
node.
A visit callback for Crystal::EnumDef
node.
A visit callback for Crystal::Def
node.
A visit callback for Crystal::ClassVar
node.
A visit callback for Crystal::ClassDef
node.
A visit callback for Crystal::Case
node.
A visit callback for Crystal::Block
node.
A visit callback for Crystal::Call
node.
A visit callback for Crystal::Assign
node.
A visit callback for Crystal::IsA
node.
A class that utilizes a logic to traverse AST nodes and fire a source test callback if a redundant Crystal::ControlExpression
is reached.
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.
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
.
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)
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.
Returns true if node represents exit
method call.
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.
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.
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
.
Returns true if the #node
represents exactly the same Crystal node as @node
.
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 $?
.
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
.
Loads YAML configuration file by path
.
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:(?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.
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.
A convenient addition to #test
method that does the same but returns a passed in source
as an addition.
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.
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.
A rule that disallows lines longer than #max_length
number of symbols.
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.
A rule that disallows rand(0)
and rand(1)
calls.
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.
A rule that disallows redundant with_index
calls.
A rule that disallows redundant each_with_object
calls.
A rule that disallows redundant each_with_object
calls.
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
A rule that disallows methods with a cyclomatic complexity higher than MaxComplexity
This rule is used to identify usage of any?
calls that follow filters.
This rule is used to identify usage of any?
calls that follow filters.
This rule is used to identify usage of first/last/first?/last?
calls that follow filters.
This rule is used to identify usage of first/last/first?/last?
calls that follow filters.
This rule is used to identify usage of size
calls that follow filter.
This rule is used to identify usage of size
calls that follow filter.
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?
.
A rule that disallows calls to is_a?(Nil)
in favor of nil?
.
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_
.
A rule that disallows tautological predicate names, meaning those that start with the prefix has_
or the prefix is_
.
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
.
A rule that disallows the use of an else
block with the unless
.
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
A rule that disallows the use of while true
instead of using the idiomatic loop
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
.
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.
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
.
Returns AST nodes constructed by Crystal::Parser
.
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
.
Instantiates Tokenizer using a lexer
.
Instantiates Tokenizer using a source
.
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 +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/d28f9f75/src/ameba.cr#L24"},{"filename":"src/ameba/glob_utils.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/d28f9f75/src/ameba/glob_utils.cr#L1"},{"filename":"src/ameba/inline_comments.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/d28f9f75/src/ameba/inline_comments.cr#L1"},{"filename":"src/ameba/issue.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/d28f9f75/src/ameba/issue.cr#L1"},{"filename":"src/ameba/reportable.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/d28f9f75/src/ameba/reportable.cr#L1"},{"filename":"src/ameba/runner.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/d28f9f75/src/ameba/runner.cr#L1"},{"filename":"src/ameba/severity.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/d28f9f75/src/ameba/severity.cr#L1"},{"filename":"src/ameba/source.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/d28f9f75/src/ameba/source.cr#L1"},{"filename":"src/ameba/tokenizer.cr","line_number":3,"url":"https://github.com/crystal-ameba/ameba/blob/d28f9f75/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.
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
.
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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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
.
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/d28f9f75/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/d28f9f75/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/d28f9f75/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.
See Object#hash(hasher)
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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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.
A visit callback for Crystal::Until
node.
A visit callback for Crystal::While
node.
A visit callback for Crystal::When
node.
A visit callback for Crystal::Var
node.
A visit callback for Crystal::Unless
node.
A visit callback for Crystal::StringInterpolation
node.
A visit callback for Crystal::NilLiteral
node.
A visit callback for Crystal::ModuleDef
node.
A visit callback for Crystal::LibDef
node.
A visit callback for Crystal::InstanceVar
node.
A visit callback for Crystal::If
node.
A visit callback for Crystal::HashLiteral
node.
A visit callback for Crystal::Expressions
node.
A visit callback for Crystal::ExceptionHandler
node.
A visit callback for Crystal::EnumDef
node.
A visit callback for Crystal::Def
node.
A visit callback for Crystal::ClassVar
node.
A visit callback for Crystal::ClassDef
node.
A visit callback for Crystal::Case
node.
A visit callback for Crystal::Block
node.
A visit callback for Crystal::Call
node.
A visit callback for Crystal::Assign
node.
A visit callback for Crystal::IsA
node.
A class that utilizes a logic to traverse AST nodes and fire a source test callback if a redundant Crystal::ControlExpression
is reached.
A node to run traversal on.
","abstract":false,"args":[],"args_string":" : Crystal::ASTNode","source_link":"https://github.com/crystal-ameba/ameba/blob/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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.
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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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
.
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/d28f9f75/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)
Returns true if current scope sits inside a macro.
","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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.
Returns true if node represents exit
method call.
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/d28f9f75/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/d28f9f75/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.
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/d28f9f75/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/d28f9f75/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.
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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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
.
Returns true if the #node
represents exactly the same Crystal node as @node
.
Returns true if the name starts with '_', false if not.
","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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 $?
.
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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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
.
Loads YAML configuration file by path
.
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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/src/ameba/formatter/todo_formatter.cr#L1"},{"filename":"src/ameba/formatter/util.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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:(?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.
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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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.
A convenient addition to #test
method that does the same but returns a passed in source
as an addition.
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/d28f9f75/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/d28f9f75/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.
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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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.
A rule that disallows lines longer than #max_length
number of symbols.
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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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.
A rule that disallows rand(0)
and rand(1)
calls.
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/d28f9f75/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/d28f9f75/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/d28f9f75/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.
A rule that disallows redundant with_index
calls.
A rule that disallows redundant each_with_object
calls.
A rule that disallows redundant each_with_object
calls.
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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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
A rule that disallows methods with a cyclomatic complexity higher than MaxComplexity
This rule is used to identify usage of any?
calls that follow filters.
This rule is used to identify usage of any?
calls that follow filters.
This rule is used to identify usage of first/last/first?/last?
calls that follow filters.
This rule is used to identify usage of first/last/first?/last?
calls that follow filters.
This rule is used to identify usage of size
calls that follow filter.
This rule is used to identify usage of size
calls that follow filter.
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/d28f9f75/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/d28f9f75/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/d28f9f75/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?
.
A rule that disallows calls to is_a?(Nil)
in favor of nil?
.
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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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_
.
A rule that disallows tautological predicate names, meaning those that start with the prefix has_
or the prefix is_
.
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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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
.
A rule that disallows the use of an else
block with the unless
.
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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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
A rule that disallows the use of while true
instead of using the idiomatic loop
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
.
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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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.
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
.
Returns AST nodes constructed by Crystal::Parser
.
Crystal code (content of a source file).
","abstract":false,"args":[],"args_string":" : String","source_link":"https://github.com/crystal-ameba/ameba/blob/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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/d28f9f75/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
.
Instantiates Tokenizer using a lexer
.
Instantiates Tokenizer using a source
.
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/d28f9f75/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