- VERSION = {{ (`shards version \"/home/travis/build/crystal-ameba/ameba/src\"`).chomp.stringify }}
+ VERSION = {{ (`shards version \"/home/runner/work/ameba/ameba/src\"`).chomp.stringify }}
@@ -706,13 +769,15 @@ Can be configured via config parameter.
@@ -579,7 +579,7 @@ Holds the reference to the variable, thus to scope.
For example, all these vars are arguments:
-
defmethod(a, b, c =10, &block)
+
defmethod(a, b, c =10, &block)
3.times do|i|end
@@ -608,6 +608,13 @@ Holds the reference to the variable, thus to scope.
Defined in:
+
+
+ ameba/ast/variabling/argument.cr
+
+
+
+
@@ -756,12 +763,14 @@ Holds the reference to the variable, thus to scope.
@@ -599,6 +599,13 @@ Holds the assign node and the variable.
Defined in:
+
+
+ ameba/ast/variabling/assignment.cr
+
+
+
+
@@ -790,12 +797,14 @@ Holds the assign node and the variable.
@@ -578,7 +578,7 @@
Branch is a part of a branchable statement.
For example, the branchable if statement contains 3 branches:
-
if a = something # --> Branch A
+
if a = something # --> Branch A
a =1# --> Branch B
put a ifout# --> Branch Celse
@@ -607,6 +607,13 @@ For example, the branchable if statement contains 3 branches:
Defined in:
+
+
+ ameba/ast/branch.cr
+
+
+
+
@@ -788,12 +795,14 @@ For example, the branchable if statement contains 3 branches:
@@ -950,7 +967,7 @@ For example, the branchable if statement contains 3 branches:
Returns true if current branch is in a loop, false - otherwise.
For example, this branch is in a loop:
-
whiletrue
+
whiletrue
handle_input # this branch is in a loopif wrong_input
show_message # this branch is also in a loop.
@@ -961,6 +978,8 @@ For example, this branch is in a loop:
@@ -578,7 +578,7 @@
For example, Crystal::If, Crystal::Unless, Crystal::While
are branchables.
-
white a >100# Branchable A
+
white a >100# Branchable Aif b >2# Branchable B
a += 1end
@@ -620,6 +620,13 @@ are branchables.
Defined in:
+
+
+ ameba/ast/branchable.cr
+
+
+
+
@@ -820,12 +827,14 @@ are branchables.
Represents a flow expression in Crystal code.
For example,
-
deffoobar
+
deffoobar
a =3return42# => flow expression
a +1
@@ -623,6 +623,13 @@ a parent node, which allows easily search through the related statement
Defined in:
+
+
+ ameba/ast/flow_expression.cr
+
+
+
+
@@ -818,12 +825,14 @@ a parent node, which allows easily search through the related statement
@@ -600,6 +600,13 @@ the variable from its reference.
Defined in:
+
+
+ ameba/ast/variabling/reference.cr
+
+
+
+
@@ -807,6 +814,8 @@ the variable from its reference.
@@ -599,6 +599,13 @@ This is where the local variables belong to.
Defined in:
+
+
+ ameba/ast/scope.cr
+
+
+
+
@@ -887,12 +894,14 @@ This is where the local variables belong to.
Creates a new scope. Accepts the AST node and the outer scope.
@@ -613,6 +613,13 @@ Holds the var node and variable assigments.
Defined in:
+
+
+ ameba/ast/variabling/variable.cr
+
+
+
+
@@ -855,12 +862,14 @@ Holds the var node and variable assigments.
@@ -946,7 +961,7 @@ config.excluded = ["spec"Returns a formatter to be used while inspecting files.
If formatter is not set, it will return default formatter.
-
Returns a list of sources matching globs and excluded sections.
-
config =Ameba::Config.load
+
config =Ameba::Config.load
config.sources # => list of default sources
config.globs = ["**/*.cr"]
config.excluded = ["spec"]
@@ -1107,6 +1138,8 @@ config.sources # => list of sources pointing to files found b
@@ -627,6 +627,13 @@ It is similar to Crystal's dot formatter for specs.
Defined in:
+
+
+ ameba/formatter/dot_formatter.cr
+
+
+
+
@@ -799,6 +806,8 @@ It is similar to Crystal's dot formatter for specs.
@@ -613,6 +613,13 @@ a specific location.
Defined in:
+
+
+ ameba/formatter/explain_formatter.cr
+
+
+
+
@@ -770,13 +777,15 @@ a specific location.
Accepts output which indicates the io where the explanation will be wrtitten to.
Second argument is location which indicates the location to explain.
-
@@ -600,6 +600,13 @@ or excludes failed sources from these rules.
Defined in:
+
+
+ ameba/formatter/todo_formatter.cr
+
+
+
+
@@ -795,6 +802,8 @@ or excludes failed sources from these rules.
Represents a base of all rules. In other words, all rules
inherits from this struct:
-
structMyRule<Ameba::Rule::Base
+
structMyRule<Ameba::Rule::Basedeftest(source)
if invalid?(source)
issue_for line, column, "Something wrong."
@@ -729,6 +729,13 @@ that are tested by this rule, it should add an issue.
Defined in:
+
+
+ ameba/rule/base.cr
+
+
+
+
@@ -933,6 +940,8 @@ that are tested by this rule, it should add an issue.
@@ -960,7 +969,7 @@ that are tested by this rule, it should add an issue.
Returns documentation for this rule if any.
-
moduleAmeba
+
moduleAmeba# This is a test rule.# Does nothing.structMyRule<Ameba::Rule::Base
@@ -975,6 +984,8 @@ that are tested by this rule, it should add an issue.
@@ -1006,12 +1017,12 @@ that are tested by this rule, it should add an issue.
Returns true if this struct is equal to other.
-
Both structs' instance vars are compared to each other. Thus, two
+
Both structs's instance vars are compared to each other. Thus, two
structs are considered equal if each of their instance variables are
equal. Subclasses should override this method to provide specific
equality semantics.
For example, the user can mistakenly add a directive
to disable a rule that even doesn't exist:
-
# ameba:disable BadRuleName
+
# ameba:disable BadRuleNamedeffoo:barend
YAML configuration example:
-
Lint/BadDirective:
- Enabled: true
+
Lint/BadDirective:
+ Enabled: true
@@ -627,6 +627,13 @@ to disable a rule that even doesn't exist:
Defined in:
+
+
+ ameba/rule/lint/bad_directive.cr
+
+
+
+
@@ -925,20 +932,22 @@ to disable a rule that even doesn't exist:
For example, the user can mistakenly add a directive
to disable a rule that even doesn't exist:
@@ -583,14 +583,14 @@ replaced with either the body of the construct, or deleted entirely.
This is considered invalid:
-
if"something"
+
if"something":okend
YAML configuration example:
-
Lint/LiteralInCondition:
- Enabled: true
+
Lint/LiteralInCondition:
+ Enabled: true
@@ -632,6 +632,13 @@ replaced with either the body of the construct, or deleted entirely.
Defined in:
+
+
+ ameba/rule/lint/literal_in_condition.cr
+
+
+
+
@@ -993,19 +1000,21 @@ replaced with either the body of the construct, or deleted entirely.
@@ -579,13 +579,13 @@ that contain a literal value instead of a variable or function.
For example:
-
"Hello, #{:Ary}"
+
"Hello, #{:Ary}""There are #{4} cats"
YAML configuration example:
-
Lint/LiteralInInterpolation
- Enabled: true
+
Lint/LiteralInInterpolation
+ Enabled: true
@@ -627,6 +627,13 @@ that contain a literal value instead of a variable or function.
Defined in:
+
+
+ ameba/rule/lint/literal_in_interpolation.cr
+
+
+
+
@@ -969,18 +976,20 @@ that contain a literal value instead of a variable or function.
@@ -581,7 +581,7 @@ which are mutated during iterations.
For example, having this example:
-
n =0
+
n =0
channel =Channel(Int32).newwhile n <3
@@ -596,7 +596,7 @@ and when channel.receive is executed its value is 3.
To solve this, the code above needs to be rewritten to the following:
-
n =0
+
n =0
channel =Channel(Int32).newwhile n <3
@@ -612,12 +612,12 @@ during iterations. So it reports the issue on the first sample and passes on
the second one.
There are also other technics to solve the problem above which are
-officially documented
n =0
channel =Channel(Int32).newwhile n <3
@@ -967,7 +974,7 @@ and when channel.receive is executed its value is 3.
To solve this, the code above needs to be rewritten to the following:
-
n =0
+
n =0
channel =Channel(Int32).newwhile n <3
@@ -983,17 +990,19 @@ during iterations. So it reports the issue on the first sample and passes on
the second one.
There are also other technics to solve the problem above which are
-officially documented
A rule that reports unneeded disable directives.
For example, this is considered invalid:
-
# ameba:disable Style/PredicateName
+
# ameba:disable Style/PredicateNamedefcomment?
do_something
end
@@ -585,14 +585,14 @@ For example, this is considered invalid:
as the predicate name is correct and the comment directive does not
have any effect, the snippet should be written as the following:
-
defcomment?
+
defcomment?
do_something
end
YAML configuration example:
-
Lint/UnneededDisableDirective
- Enabled: true
+
Lint/UnneededDisableDirective
+ Enabled: true
@@ -632,6 +632,13 @@ have any effect, the snippet should be written as the following:
Defined in:
+
+
+ ameba/rule/lint/unneeded_disable_directive.cr
+
+
+
+
@@ -918,7 +925,7 @@ have any effect, the snippet should be written as the following:
A rule that reports unneeded disable directives.
For example, this is considered invalid:
-
# ameba:disable Style/PredicateName
+
# ameba:disable Style/PredicateNamedefcomment?
do_something
end
@@ -926,19 +933,21 @@ For example, this is considered invalid:
as the predicate name is correct and the comment directive does not
have any effect, the snippet should be written as the following:
@@ -633,6 +633,13 @@ For example, this is considered invalid:
Defined in:
+
+
+ ameba/rule/lint/unused_argument.cr
+
+
+
+
@@ -964,28 +971,30 @@ For example, this is considered invalid:
A rule that reports unused arguments.
For example, this is considered invalid:
@@ -579,7 +579,7 @@ where it is guaranteed to always return the same result.
For example, this is considered invalid:
-
case
+
casewhen utc?
io <<" UTC"when local?
@@ -588,7 +588,7 @@ where it is guaranteed to always return the same result.
And has to be written as the following:
-
case
+
casewhen utc?
io <<" UTC"when local?
@@ -597,8 +597,8 @@ where it is guaranteed to always return the same result.
YAML configuration example:
-
Lint/UselessConditionInWhen:
- Enabled: true
+
Lint/UselessConditionInWhen:
+ Enabled: true
@@ -638,6 +638,13 @@ where it is guaranteed to always return the same result.
Defined in:
+
+
+ ameba/rule/lint/useless_condition_in_when.cr
+
+
+
+
@@ -926,7 +933,7 @@ where it is guaranteed to always return the same result.
For example, this is considered invalid:
-
case
+
casewhen utc?
io <<" UTC"when local?
@@ -935,7 +942,7 @@ where it is guaranteed to always return the same result.
And has to be written as the following:
-
case
+
casewhen utc?
io <<" UTC"when local?
@@ -944,13 +951,15 @@ where it is guaranteed to always return the same result.
@@ -593,8 +593,8 @@ that is executed if a negated condition is NOT met.
YAML configuration example:
-
Style/NegatedConditionsInUnless:
- Enabled: true
+
Style/NegatedConditionsInUnless:
+ Enabled: true
@@ -634,6 +634,13 @@ that is executed if a negated condition is NOT met.
Defined in:
+
+
+ ameba/rule/style/negated_conditions_in_unless.cr
+
+
+
+
@@ -921,13 +928,13 @@ that is executed if a negated condition is NOT met.
For example, this is considered invalid:
-
unless!s.empty?
+
unless!s.empty?
:okend
And should be rewritten to the following:
-
if s.emtpy?
+
if s.emtpy?
:okend
@@ -936,13 +943,15 @@ that is executed if a negated condition is NOT met.
@@ -579,7 +579,7 @@ start with the prefix has_ or the prefix is_. Ignores
Favour these:
-
defvalid?(x)
+
defvalid?(x)
enddefpicture?(x)
@@ -587,7 +587,7 @@ start with the prefix has_ or the prefix is_. Ignores
Over these:
-
defis_valid?(x)
+
defis_valid?(x)
enddefhas_picture?(x)
@@ -595,8 +595,8 @@ start with the prefix has_ or the prefix is_. Ignores
YAML configuration example:
-
Style/PredicateName:
- Enabled: true
+
Style/PredicateName:
+ Enabled: true
@@ -636,6 +636,13 @@ start with the prefix has_ or the prefix is_. Ignores
Defined in:
+
+
+ ameba/rule/style/predicate_name.cr
+
+
+
+
@@ -924,7 +931,7 @@ start with the prefix has_ or the prefix is_. Ignores
Favour these:
-
defvalid?(x)
+
defvalid?(x)
enddefpicture?(x)
@@ -932,7 +939,7 @@ start with the prefix has_ or the prefix is_. Ignores
Over these:
-
defis_valid?(x)
+
defis_valid?(x)
enddefhas_picture?(x)
@@ -940,13 +947,15 @@ start with the prefix has_ or the prefix is_. Ignores
@@ -581,11 +581,11 @@ into the node which is the last in a block.
For example, this is considered invalid:
-
block do|v|
+
block do|v|next v +1end
-
block do|v|
+
block do|v|case v
when .nil?next"nil"
@@ -598,11 +598,11 @@ into the node which is the last in a block.
And has to be written as the following:
-
block do|v|
+
block do|v|
v +1end
-
block do|v|
+
block do|v|case arg
when .nil?"nil"
@@ -624,13 +624,13 @@ into the node which is the last in a block.
Allows end-user to configure whether to report or not the next statements
which yield tuple literals i.e.
-
block do
+
block donext a, b
end
If this param equals to false, the block above will be forced to be written as:
-
block do
+
block do
{a, b}
end
@@ -639,14 +639,14 @@ which yield tuple literals i.e.
Allows end-user to configure whether to report or not the next statements
without arguments. Sometimes such statements are used to yild the nil value explicitly.
-
block do
+
block do
@foo =:emptynextend
If this param equals to false, the block above will be forced to be written as:
-
block do
+
block do
@foo =:emptynilend
@@ -657,10 +657,10 @@ without arguments. Sometimes such statements are used to yild the nil
YAML config example
-
@@ -700,6 +700,13 @@ without arguments. Sometimes such statements are used to yild the nil
+
+
+ ameba/rule/style/redundant_next.cr
+
+
+
+
@@ -1015,11 +1022,11 @@ into the node which is the last in a block.
For example, this is considered invalid:
-
block do|v|
+
block do|v|next v +1end
-
block do|v|
+
block do|v|case v
when .nil?next"nil"
@@ -1032,11 +1039,11 @@ into the node which is the last in a block.
And has to be written as the following:
-
block do|v|
+
block do|v|
v +1end
-
block do|v|
+
block do|v|case arg
when .nil?"nil"
@@ -1058,13 +1065,13 @@ into the node which is the last in a block.
Allows end-user to configure whether to report or not the next statements
which yield tuple literals i.e.
-
block do
+
block donext a, b
end
If this param equals to false, the block above will be forced to be written as:
-
block do
+
block do
{a, b}
end
@@ -1073,14 +1080,14 @@ which yield tuple literals i.e.
Allows end-user to configure whether to report or not the next statements
without arguments. Sometimes such statements are used to yild the nil value explicitly.
-
block do
+
block do
@foo =:emptynextend
If this param equals to false, the block above will be forced to be written as:
-
block do
+
block do
@foo =:emptynilend
@@ -1091,15 +1098,17 @@ without arguments. Sometimes such statements are used to yild the nil
YAML config example
-
defbar(arg)
case arg
when .nil?return"nil"
@@ -595,11 +595,11 @@
And has to be written as the following:
-
deffoo
+
deffoo:barend
-
defbar(arg)
+
defbar(arg)
case arg
when .nil?"nil"
@@ -621,13 +621,13 @@
Allows end-user to configure whether to report or not the return statements
which return tuple literals i.e.
-
defmethod(a, b)
+
defmethod(a, b)
return a, b
end
If this param equals to false, the method above has to be written as:
-
defmethod(a, b)
+
defmethod(a, b)
{a, b}
end
@@ -636,14 +636,14 @@ which return tuple literals i.e.
Allows end-user to configure whether to report or not the return statements
without arguments. Sometimes such returns are used to return the nil value explicitly.
-
defmethod
+
defmethod
@foo =:emptyreturnend
If this param equals to false, the method above has to be written as:
-
defmethod
+
defmethod
@foo =:emptynilend
@@ -654,10 +654,10 @@ without arguments. Sometimes such returns are used to return the nil
YAML config example
-
@@ -697,6 +697,13 @@ without arguments. Sometimes such returns are used to return the nil
+
+
+ ameba/rule/style/redundant_return.cr
+
+
+
+
@@ -1009,11 +1016,11 @@ without arguments. Sometimes such returns are used to return the nilFor example, this is considered invalid:
-
deffoo
+
deffooreturn:barend
-
defbar(arg)
+
defbar(arg)
case arg
when .nil?return"nil"
@@ -1026,11 +1033,11 @@ without arguments. Sometimes such returns are used to return the nilAnd has to be written as the following:
-
deffoo
+
deffoo:barend
-
defbar(arg)
+
defbar(arg)
case arg
when .nil?"nil"
@@ -1052,13 +1059,13 @@ without arguments. Sometimes such returns are used to return the nilAllows end-user to configure whether to report or not the return statements
which return tuple literals i.e.
-
defmethod(a, b)
+
defmethod(a, b)
return a, b
end
If this param equals to false, the method above has to be written as:
-
defmethod(a, b)
+
defmethod(a, b)
{a, b}
end
@@ -1067,14 +1074,14 @@ which return tuple literals i.e.
Allows end-user to configure whether to report or not the return statements
without arguments. Sometimes such returns are used to return the nil value explicitly.
-
defmethod
+
defmethod
@foo =:emptyreturnend
If this param equals to false, the method above has to be written as:
-
defmethod
+
defmethod
@foo =:emptynilend
@@ -1085,15 +1092,17 @@ without arguments. Sometimes such returns are used to return the nil
YAML config example
-
But it considers this one invalid as it is an unless with an else:
-
unless something
+
unless something
:oneelse:two
@@ -599,7 +599,7 @@
The solution is to swap the order of the blocks, and change the unless to
an if, so the previous invalid example would become this:
-
if something
+
if something
:twoelse:one
@@ -607,8 +607,8 @@ an if, so the previous invalid example would become this:
YAML configuration example:
-
Style/UnlessElse:
- Enabled: true
+
Style/UnlessElse:
+ Enabled: true
@@ -648,6 +648,13 @@ an if, so the previous invalid example would become this:
Defined in:
+
+
+ ameba/rule/style/unless_else.cr
+
+
+
+
@@ -935,7 +942,7 @@ an if, so the previous invalid example would become this:
For example, the rule considers these valid:
-
unless something
+
unless something
:okend
@@ -947,7 +954,7 @@ an if, so the previous invalid example would become this:
But it considers this one invalid as it is an unless with an else:
-
unless something
+
unless something
:oneelse:two
@@ -956,7 +963,7 @@ an if, so the previous invalid example would become this:
The solution is to swap the order of the blocks, and change the unless to
an if, so the previous invalid example would become this:
-
if something
+
if something
:twoelse:one
@@ -964,13 +971,15 @@ an if, so the previous invalid example would become this:
@@ -615,6 +615,13 @@ Has path, lines of code and issues reported by rules.
Defined in:
+
+
+ ameba/source.cr
+
+
+
+
@@ -805,13 +812,15 @@ Has path, lines of code and issues reported by rules.
@@ -900,13 +915,15 @@ method caches lines in an instance variable, so calling
it second time will not perform a split, but will return
lines instantly.
-
Ameba is a static code analysis tool for the Crystal language.
-It enforces a consistent Crystal code style,
+It enforces a consistent Crystal code style,
also catches code smells and wrong code constructions.
Starting from 0.31.0 Crystal supports parallelism.
It allows to run linting in parallel too.
In order to take advantage of this feature you need to build ameba with preview_mt support:
diff --git a/index.json b/index.json
index 657859a1..6f68d9fd 100644
--- a/index.json
+++ b/index.json
@@ -1 +1 @@
-{"repository_name":"ameba","body":"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n- [About](#about)\n- [Usage](#usage)\n * [Run in parallel](#run-in-parallel)\n- [Installation](#installation)\n * [As a project dependency:](#as-a-project-dependency)\n * [OS X](#os-x)\n * [Docker](#docker)\n * [From sources](#from-sources)\n- [Configuration](#configuration)\n * [Sources](#sources)\n * [Rules](#rules)\n * [Explain issues](#explain-issues)\n * [Inline disabling](#inline-disabling)\n- [Editors & integrations](#editors--integrations)\n- [Credits & inspirations](#credits--inspirations)\n- [Contributors](#contributors)\n\n## About\n\nAmeba is a static code analysis tool for the Crystal language.\nIt enforces a consistent [Crystal code style](https://crystal-lang.org/docs/conventions/coding_style.html),\nalso catches code smells and wrong code constructions.\n\nSee also [Roadmap](https://github.com/crystal-ameba/ameba/wiki).\n\n## Usage\n\nRun `ameba` binary within your project directory to catch code issues:\n\n```sh\n$ ameba\nInspecting 107 files.\n\n...............F.....................F....................................................................\n\nsrc/ameba/formatter/flycheck_formatter.cr:4:33\n[W] Lint/UnusedArgument: Unused argument `location`\n> source.issues.each do |e, location|\n ^\n\nsrc/ameba/formatter/base_formatter.cr:12:7\n[W] Lint/UselessAssign: Useless assignment to variable `s`\n> return s += issues.size\n ^\n\nFinished in 542.64 milliseconds\n\n129 inspected, 2 failures.\n\n```\n\n### Run in parallel\n\nStarting from 0.31.0 Crystal [supports parallelism](https://crystal-lang.org/2019/09/06/parallelism-in-crystal.html).\nIt allows to run linting in parallel too.\nIn order to take advantage of this feature you need to build ameba with preview_mt support:\n\n```sh\n$ crystal build src/cli.cr -Dpreview_mt -o bin/ameba\n$ make install\n```\n\nSome quick benchmark results measured while running Ameba on Crystal repo:\n\n```sh\n$ CRYSTAL_WORKERS=1 ameba #=> 29.11 seconds\n$ CRYSTAL_WORKERS=2 ameba #=> 19.49 seconds\n$ CRYSTAL_WORKERS=4 ameba #=> 13.48 seconds\n$ CRYSTAL_WORKERS=8 ameba #=> 10.14 seconds\n```\n\n## Installation\n\n### As a project dependency:\n\nAdd this to your application's `shard.yml`:\n\n```yaml\ndevelopment_dependencies:\n ameba:\n github: crystal-ameba/ameba\n version: ~> 0.13.0\n```\n\nBuild `bin/ameba` binary within your project directory while running `shards install`.\n\nYou may also want to use it on [Travis](travis-ci.org):\n\n```yaml\n# .travis.yml\nlanguage: crystal\ninstall:\n - shards install\nscript:\n - crystal spec\n - crystal bin/ameba.cr\n```\n\nUsing this config Ameba will inspect files just after the specs run. Travis will also fail\nthe build if some problems detected.\n\n### OS X\n\n```sh\n$ brew tap veelenga/tap\n$ brew install ameba\n```\n\n### Docker\n\nBuild the image:\n\n```sh\n$ docker build -t crystal-ameba/ameba .\n```\n\nTo use the resulting image on a local source folder, mount the current (or target) directory into `/src`:\n\n```sh\n$ docker run -v $(pwd):/src crystal-ameba/ameba\n```\n\nAlso available on DockerHub: https://hub.docker.com/r/veelenga/ameba\n\n### From sources\n\n```sh\n$ git clone https://github.com/crystal-ameba/ameba && cd ameba\n$ make install\n```\n\n## Configuration\n\nDefault configuration file is `.ameba.yml`.\nIt allows to configure rule properties, disable specific rules and exclude sources from the rules.\n\nGenerate new file by running `ameba --gen-config`.\n\n### Sources\n\n**List of sources to run Ameba on can be configured globally via:**\n\n- `Globs` section - an array of wildcards (or paths) to include to the\n inspection. Defaults to `%w(**/*.cr !lib)`, meaning it includes all project\n files with `*.cr` extension except those which exist in `lib` folder.\n- `Excluded` section - an array of wildcards (or paths) to exclude from the\n source list defined by `Globs`. Defaults to an empty array.\n\nIn this example we define default globs and exclude `src/compiler` folder:\n\n``` yaml\nGlobs:\n - **/*.cr\n - !lib\n \nExcluded:\n - src/compiler\n```\n\n**Specific sources can be excluded at rule level**:\n\n``` yaml\nStyle/RedundantBegin:\n Excluded:\n - src/server/processor.cr\n - src/server/api.cr\n```\n\n### Rules\n\nOne or more rules, or a one or more group of rules can be included or excluded\nvia command line arguments:\n\n```sh\n$ ameba --only Lint/Syntax # runs only Lint/Syntax rule\n$ ameba --only Style,Lint # runs only rules from Style and Lint groups\n$ ameba --except Lint/Syntax # runs all rules except Lint/Syntax\n$ ameba --except Style,Lint # runs all rules except rules in Style and Lint groups\n```\n\nOr through the configuration file:\n\n``` yaml\nStyle/RedundantBegin:\n Enabled: false\n```\n\n### Explain issues\n\nAmeba allows you to dig deeper into an issue, by showing you details about the issue\nand the reasoning by it being reported.\n\nTo be convenient, you can just copy-paste the `PATH:line:column` string from the\nreport and paste behind the `ameba` command to check it out.\n\n```sh\n$ ameba crystal/command/format.cr:26:83 # show explanation for the issue\n$ ameba --explain crystal/command/format.cr:26:83 # same thing\n```\n\n### Inline disabling\n\nOne or more rules or one or more group of rules can be disabled using inline directives:\n\n```crystal\n# ameba:disable Style/LargeNumbers\ntime = Time.epoch(1483859302)\n\ntime = Time.epoch(1483859302) # ameba:disable Style/LargeNumbers, Lint/UselessAssign\n\ntime = Time.epoch(1483859302) # ameba:disable Style, Lint\n```\n\n## Editors & integrations\n\n * Vim: [vim-crystal](https://github.com/rhysd/vim-crystal), [Ale](https://github.com/w0rp/ale)\n * Emacs: [ameba.el](https://github.com/crystal-ameba/ameba.el)\n * Sublime Text: [Sublime Linter Ameba](https://github.com/epergo/SublimeLinter-contrib-ameba)\n * VSCode: [vscode-crystal-ameba](https://github.com/crystal-ameba/vscode-crystal-ameba)\n * Codacy: [codacy-ameba](https://github.com/codacy/codacy-ameba)\n * GitHub Actions: [github-action](https://github.com/crystal-ameba/github-action)\n\n## Credits & inspirations\n\n- [Crystal Language](https://crystal-lang.org)\n- [Rubocop](https://rubocop.readthedocs.io/en/latest/)\n- [Credo](http://credo-ci.org/)\n- [Dogma](https://github.com/lpil/dogma)\n\n## Contributors\n\n- [veelenga](https://github.com/veelenga) Vitalii Elenhaupt - creator, maintainer\n","program":{"html_id":"ameba/toplevel","path":"toplevel.html","kind":"module","full_name":"Top Level Namespace","name":"Top Level Namespace","abstract":false,"superclass":null,"ancestors":[],"locations":[],"repository_name":"ameba","program":true,"enum":false,"alias":false,"aliased":null,"aliased_html":null,"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":[],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":null,"aliased_html":null,"const":false,"constants":[{"id":"VERSION","name":"VERSION","value":"{{ (`shards version \\\"/home/travis/build/crystal-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":"
","abstract":false,"args":[{"name":"config","doc":null,"default_value":"Config.load","external_name":"config","restriction":""}],"args_string":"(config = Config.load)","args_html":"(config = Config.load)","location":{"filename":"src/ameba.cr","line_number":39,"url":null},"def":{"name":"run","args":[{"name":"config","doc":null,"default_value":"Config.load","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"(Runner.new(config)).run"}}],"macros":[],"types":[{"html_id":"ameba/Ameba/AST","path":"Ameba/AST.html","kind":"module","full_name":"Ameba::AST","name":"AST","abstract":false,"superclass":null,"ancestors":[],"locations":[],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":null,"aliased_html":null,"const":false,"constants":[{"id":"NODES","name":"NODES","value":"[Alias, IsA, Assign, Call, Block, Case, ClassDef, ClassVar, Def, EnumDef, ExceptionHandler, Expressions, HashLiteral, If, InstanceVar, LibDef, ModuleDef, NilLiteral, StringInterpolation, Unless, Var, When, While, Until]","doc":"List of nodes to be visited by Ameba's rules.","summary":"
List of nodes to be visited by Ameba's rules.
"}],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba","kind":"module","full_name":"Ameba","name":"Ameba"},"doc":"A module that helps to traverse Crystal AST using `Crystal::Visitor`.","summary":"
A module that helps to traverse Crystal AST using Crystal::Visitor.
","class_methods":[],"constructors":[],"instance_methods":[],"macros":[],"types":[{"html_id":"ameba/Ameba/AST/Argument","path":"Ameba/AST/Argument.html","kind":"class","full_name":"Ameba::AST::Argument","name":"Argument","abstract":false,"superclass":{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},"ancestors":[{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":null,"aliased_html":null,"const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/AST","kind":"module","full_name":"Ameba::AST","name":"AST"},"doc":"Represents the argument of some node.\nHolds the reference to the variable, thus to scope.\n\nFor example, all these vars are arguments:\n\n```\ndef method(a, b, c = 10, &block)\n 3.times do |i|\n end\n\n ->(x : Int32) {}\nend\n```","summary":"
Represents the argument of some node.
","class_methods":[],"constructors":[{"id":"new(node,variable)-class-method","html_id":"new(node,variable)-class-method","name":"new","doc":"Creates a new argument.\n\n```\nArgument.new(node, variable)\n```","summary":"
Creates a new argument.
","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""},{"name":"variable","doc":null,"default_value":"","external_name":"variable","restriction":""}],"args_string":"(node, variable)","args_html":"(node, variable)","location":{"filename":"src/ameba/ast/variabling/argument.cr","line_number":31,"url":null},"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)","args_html":"(*args, **options)","location":{"filename":"src/ameba/ast/variabling/argument.cr","line_number":23,"url":null},"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, &)","args_html":"(*args, **options, &)","location":{"filename":"src/ameba/ast/variabling/argument.cr","line_number":23,"url":null},"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":"","args_html":"","location":{"filename":"src/ameba/ast/variabling/argument.cr","line_number":35,"url":null},"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)","args_html":"(*args, **options)","location":{"filename":"src/ameba/ast/variabling/argument.cr","line_number":22,"url":null},"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, &)","args_html":"(*args, **options, &)","location":{"filename":"src/ameba/ast/variabling/argument.cr","line_number":22,"url":null},"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":"
","abstract":false,"args":[],"args_string":" : Crystal::Var | Crystal::Arg","args_html":" : Crystal::Var | Crystal::Arg","location":{"filename":"src/ameba/ast/variabling/argument.cr","line_number":17,"url":null},"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)","args_html":"(*args, **options)","location":{"filename":"src/ameba/ast/variabling/argument.cr","line_number":24,"url":null},"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, &)","args_html":"(*args, **options, &)","location":{"filename":"src/ameba/ast/variabling/argument.cr","line_number":24,"url":null},"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","args_html":" : Variable","location":{"filename":"src/ameba/ast/variabling/argument.cr","line_number":20,"url":null},"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":[],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":null,"aliased_html":null,"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)","args_html":"(node, variable, scope)","location":{"filename":"src/ameba/ast/variabling/assignment.cr","line_number":32,"url":null},"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?","args_html":" : Branch?","location":{"filename":"src/ameba/ast/variabling/assignment.cr","line_number":17,"url":null},"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, &)","args_html":"(*args, **options, &)","location":{"filename":"src/ameba/ast/variabling/assignment.cr","line_number":24,"url":null},"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)","args_html":"(*args, **options)","location":{"filename":"src/ameba/ast/variabling/assignment.cr","line_number":24,"url":null},"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":"","args_html":"","location":{"filename":"src/ameba/ast/variabling/assignment.cr","line_number":61,"url":null},"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)","args_html":"(*args, **options)","location":{"filename":"src/ameba/ast/variabling/assignment.cr","line_number":23,"url":null},"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, &)","args_html":"(*args, **options, &)","location":{"filename":"src/ameba/ast/variabling/assignment.cr","line_number":23,"url":null},"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","args_html":" : Crystal::ASTNode","location":{"filename":"src/ameba/ast/variabling/assignment.cr","line_number":11,"url":null},"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":" : Scope","args_html":" : Scope","location":{"filename":"src/ameba/ast/variabling/assignment.cr","line_number":20,"url":null},"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":"","args_html":"","location":{"filename":"src/ameba/ast/variabling/assignment.cr","line_number":66,"url":null},"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, &)","args_html":"(*args, **options, &)","location":{"filename":"src/ameba/ast/variabling/assignment.cr","line_number":22,"url":null},"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)","args_html":"(*args, **options)","location":{"filename":"src/ameba/ast/variabling/assignment.cr","line_number":22,"url":null},"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":"","args_html":"","location":{"filename":"src/ameba/ast/variabling/assignment.cr","line_number":99,"url":null},"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","args_html":" : Variable","location":{"filename":"src/ameba/ast/variabling/assignment.cr","line_number":14,"url":null},"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":[],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":null,"aliased_html":null,"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)","args_html":"(rule, source)","location":{"filename":"src/ameba/ast/visitors/base_visitor.cr","line_number":19,"url":null},"def":{"name":"new","args":[{"name":"rule","doc":null,"default_value":"","external_name":"rule","restriction":""},{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"_ = allocate\n_.initialize(rule, source)\nif _.responds_to?(:finalize)\n ::GC.add_finalizer(_)\nend\n_\n"}}],"instance_methods":[{"id":"visit(node:Crystal::ASTNode)-instance-method","html_id":"visit(node:Crystal::ASTNode)-instance-method","name":"visit","doc":"A main visit method that accepts `Crystal::ASTNode`.\nReturns true meaning all child nodes will be traversed.","summary":"
A main visit method that accepts Crystal::ASTNode.
","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ASTNode"}],"args_string":"(node : Crystal::ASTNode)","args_html":"(node : Crystal::ASTNode)","location":{"filename":"src/ameba/ast/visitors/base_visitor.cr","line_number":25,"url":null},"def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ASTNode"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"true"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/AST/Branch","path":"Ameba/AST/Branch.html","kind":"class","full_name":"Ameba::AST::Branch","name":"Branch","abstract":false,"superclass":{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},"ancestors":[{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":null,"aliased_html":null,"const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/AST","kind":"module","full_name":"Ameba::AST","name":"AST"},"doc":"Represents the branch in Crystal code.\nBranch is a part of a branchable statement.\nFor example, the branchable if statement contains 3 branches:\n\n```\nif a = something # --> Branch A\n a = 1 # --> Branch B\n put a if out # --> Branch C\nelse\n do_something a # --> Branch D\nend\n```\n","summary":"
Represents the branch in Crystal code.
","class_methods":[{"id":"of(node:Crystal::ASTNode,parent_node:Crystal::ASTNode)-class-method","html_id":"of(node:Crystal::ASTNode,parent_node:Crystal::ASTNode)-class-method","name":"of","doc":"Constructs a new branch based on the node some parent scope.\n\n```\nBranch.of(assign_node, def_node)\n```","summary":"
Constructs a new branch based on the node some parent scope.
","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ASTNode"},{"name":"parent_node","doc":null,"default_value":"","external_name":"parent_node","restriction":"Crystal::ASTNode"}],"args_string":"(node : Crystal::ASTNode, parent_node : Crystal::ASTNode)","args_html":"(node : Crystal::ASTNode, parent_node : Crystal::ASTNode)","location":{"filename":"src/ameba/ast/branch.cr","line_number":66,"url":null},"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)","args_html":"(node : Crystal::ASTNode, scope : Scope)","location":{"filename":"src/ameba/ast/branch.cr","line_number":57,"url":null},"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)","args_html":"(node, parent)","location":{"filename":"src/ameba/ast/branch.cr","line_number":33,"url":null},"def":{"name":"new","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""},{"name":"parent","doc":null,"default_value":"","external_name":"parent","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"_ = allocate\n_.initialize(node, parent)\nif _.responds_to?(:finalize)\n ::GC.add_finalizer(_)\nend\n_\n"}}],"instance_methods":[{"id":"==(other:self)-instance-method","html_id":"==(other:self)-instance-method","name":"==","doc":"Returns `true` if this reference is the same as *other*. Invokes `same?`.","summary":"
Returns true if this reference is the same as other.
","abstract":false,"args":[{"name":"hasher","doc":null,"default_value":"","external_name":"hasher","restriction":""}],"args_string":"(hasher)","args_html":"(hasher)","location":null,"def":{"name":"hash","args":[{"name":"hasher","doc":null,"default_value":"","external_name":"hasher","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"hasher = node.hash(hasher)\nhasher = location.hash(hasher)\nhasher\n"}},{"id":"in_loop?-instance-method","html_id":"in_loop?-instance-method","name":"in_loop?","doc":"Returns true if current branch is in a loop, false - otherwise.\nFor example, this branch is in a loop:\n\n```\nwhile true\n handle_input # this branch is in a loop\n if wrong_input\n show_message # this branch is also in a loop.\n end\nend\n```\n","summary":"
Returns true if current branch is in a loop, false - otherwise.
","abstract":false,"args":[],"args_string":"","args_html":"","location":{"filename":"src/ameba/ast/branch.cr","line_number":48,"url":null},"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)","args_html":"(*args, **options)","location":{"filename":"src/ameba/ast/branch.cr","line_number":23,"url":null},"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, &)","args_html":"(*args, **options, &)","location":{"filename":"src/ameba/ast/branch.cr","line_number":23,"url":null},"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":"
","abstract":false,"args":[],"args_string":" : Branchable","args_html":" : Branchable","location":{"filename":"src/ameba/ast/branch.cr","line_number":20,"url":null},"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)","args_html":"(*args, **options)","location":{"filename":"src/ameba/ast/branch.cr","line_number":22,"url":null},"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, &)","args_html":"(*args, **options, &)","location":{"filename":"src/ameba/ast/branch.cr","line_number":22,"url":null},"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":[],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":null,"aliased_html":null,"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)","args_html":"(node, parent = nil)","location":{"filename":"src/ameba/ast/branchable.cr","line_number":35,"url":null},"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)","args_html":" : Array(Crystal::ASTNode)","location":{"filename":"src/ameba/ast/branchable.cr","line_number":18,"url":null},"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)","args_html":"(*args, **options)","location":{"filename":"src/ameba/ast/branchable.cr","line_number":28,"url":null},"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, &)","args_html":"(*args, **options, &)","location":{"filename":"src/ameba/ast/branchable.cr","line_number":28,"url":null},"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)","args_html":"(*args, **options)","location":{"filename":"src/ameba/ast/branchable.cr","line_number":27,"url":null},"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, &)","args_html":"(*args, **options, &)","location":{"filename":"src/ameba/ast/branchable.cr","line_number":27,"url":null},"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":"","args_html":"","location":{"filename":"src/ameba/ast/branchable.cr","line_number":39,"url":null},"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":"
","abstract":false,"args":[],"args_string":" : Branchable?","args_html":" : Branchable?","location":{"filename":"src/ameba/ast/branchable.cr","line_number":24,"url":null},"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)","args_html":"(*args, **options)","location":{"filename":"src/ameba/ast/branchable.cr","line_number":26,"url":null},"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, &)","args_html":"(*args, **options, &)","location":{"filename":"src/ameba/ast/branchable.cr","line_number":26,"url":null},"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":[],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":null,"aliased_html":null,"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)","args_html":"(scope : Crystal::ASTNode)","location":{"filename":"src/ameba/ast/visitors/counting_visitor.cr","line_number":8,"url":null},"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":"","args_html":"","location":{"filename":"src/ameba/ast/visitors/counting_visitor.cr","line_number":18,"url":null},"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","args_html":" : Bool","location":{"filename":"src/ameba/ast/visitors/counting_visitor.cr","line_number":5,"url":null},"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)","args_html":"(node : Crystal::MacroIf | Crystal::MacroFor)","location":{"filename":"src/ameba/ast/visitors/counting_visitor.cr","line_number":33,"url":null},"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":[],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":null,"aliased_html":null,"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)","args_html":"(node, in_loop)","location":{"filename":"src/ameba/ast/flow_expression.cr","line_number":36,"url":null},"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)","args_html":"(*args, **options)","location":{"filename":"src/ameba/ast/flow_expression.cr","line_number":29,"url":null},"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, &)","args_html":"(*args, **options, &)","location":{"filename":"src/ameba/ast/flow_expression.cr","line_number":29,"url":null},"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","args_html":" : Bool","location":{"filename":"src/ameba/ast/flow_expression.cr","line_number":22,"url":null},"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)","args_html":"(*args, **options)","location":{"filename":"src/ameba/ast/flow_expression.cr","line_number":28,"url":null},"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, &)","args_html":"(*args, **options, &)","location":{"filename":"src/ameba/ast/flow_expression.cr","line_number":28,"url":null},"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","args_html":" : Crystal::ASTNode","location":{"filename":"src/ameba/ast/flow_expression.cr","line_number":25,"url":null},"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)","args_html":"(*args, **options)","location":{"filename":"src/ameba/ast/flow_expression.cr","line_number":27,"url":null},"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, &)","args_html":"(*args, **options, &)","location":{"filename":"src/ameba/ast/flow_expression.cr","line_number":27,"url":null},"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":"","args_html":"","location":{"filename":"src/ameba/ast/flow_expression.cr","line_number":50,"url":null},"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":[],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":null,"aliased_html":null,"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)","args_html":"(rule, source)","location":{"filename":"src/ameba/ast/visitors/flow_expression_visitor.cr","line_number":12,"url":null},"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":[],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":null,"aliased_html":null,"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)","args_html":"(node)","location":{"filename":"src/ameba/ast/variabling/ivariable.cr","line_number":10,"url":null},"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)","args_html":"(*args, **options)","location":{"filename":"src/ameba/ast/variabling/ivariable.cr","line_number":6,"url":null},"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, &)","args_html":"(*args, **options, &)","location":{"filename":"src/ameba/ast/variabling/ivariable.cr","line_number":6,"url":null},"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)","args_html":"(*args, **options)","location":{"filename":"src/ameba/ast/variabling/ivariable.cr","line_number":5,"url":null},"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, &)","args_html":"(*args, **options, &)","location":{"filename":"src/ameba/ast/variabling/ivariable.cr","line_number":5,"url":null},"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)","args_html":"(*args, **options)","location":{"filename":"src/ameba/ast/variabling/ivariable.cr","line_number":7,"url":null},"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, &)","args_html":"(*args, **options, &)","location":{"filename":"src/ameba/ast/variabling/ivariable.cr","line_number":7,"url":null},"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","args_html":" : Crystal::InstanceVar","location":{"filename":"src/ameba/ast/variabling/ivariable.cr","line_number":3,"url":null},"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)","args_html":"(*args, **options)","location":{"filename":"src/ameba/ast/variabling/ivariable.cr","line_number":8,"url":null},"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, &)","args_html":"(*args, **options, &)","location":{"filename":"src/ameba/ast/variabling/ivariable.cr","line_number":8,"url":null},"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":[],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":null,"aliased_html":null,"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)","args_html":"(rule, source, skip = nil)","location":{"filename":"src/ameba/ast/visitors/node_visitor.cr","line_number":42,"url":null},"def":{"name":"new","args":[{"name":"rule","doc":null,"default_value":"","external_name":"rule","restriction":""},{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"skip","doc":null,"default_value":"nil","external_name":"skip","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"_ = allocate\n_.initialize(rule, source, skip)\nif _.responds_to?(:finalize)\n ::GC.add_finalizer(_)\nend\n_\n"}}],"instance_methods":[{"id":"visit(node:Crystal::Alias)-instance-method","html_id":"visit(node:Crystal::Alias)-instance-method","name":"visit","doc":"A visit callback for `Crystal::Alias` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"
A visit callback for Crystal::Alias node.
","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Alias"}],"args_string":"(node : Crystal::Alias)","args_html":"(node : Crystal::Alias)","location":{"filename":"src/ameba/ast/visitors/node_visitor.cr","line_number":47,"url":null},"def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Alias"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::Until)-instance-method","html_id":"visit(node:Crystal::Until)-instance-method","name":"visit","doc":"A visit callback for `Crystal::Until` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"
A visit callback for Crystal::Until node.
","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Until"}],"args_string":"(node : Crystal::Until)","args_html":"(node : Crystal::Until)","location":{"filename":"src/ameba/ast/visitors/node_visitor.cr","line_number":47,"url":null},"def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Until"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::While)-instance-method","html_id":"visit(node:Crystal::While)-instance-method","name":"visit","doc":"A visit callback for `Crystal::While` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"
A visit callback for Crystal::While node.
","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::While"}],"args_string":"(node : Crystal::While)","args_html":"(node : Crystal::While)","location":{"filename":"src/ameba/ast/visitors/node_visitor.cr","line_number":47,"url":null},"def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::While"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::When)-instance-method","html_id":"visit(node:Crystal::When)-instance-method","name":"visit","doc":"A visit callback for `Crystal::When` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"
A visit callback for Crystal::When node.
","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::When"}],"args_string":"(node : Crystal::When)","args_html":"(node : Crystal::When)","location":{"filename":"src/ameba/ast/visitors/node_visitor.cr","line_number":47,"url":null},"def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::When"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::Var)-instance-method","html_id":"visit(node:Crystal::Var)-instance-method","name":"visit","doc":"A visit callback for `Crystal::Var` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"
A visit callback for Crystal::Var node.
","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Var"}],"args_string":"(node : Crystal::Var)","args_html":"(node : Crystal::Var)","location":{"filename":"src/ameba/ast/visitors/node_visitor.cr","line_number":47,"url":null},"def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Var"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::Unless)-instance-method","html_id":"visit(node:Crystal::Unless)-instance-method","name":"visit","doc":"A visit callback for `Crystal::Unless` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"
A visit callback for Crystal::Unless node.
","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Unless"}],"args_string":"(node : Crystal::Unless)","args_html":"(node : Crystal::Unless)","location":{"filename":"src/ameba/ast/visitors/node_visitor.cr","line_number":47,"url":null},"def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Unless"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::StringInterpolation)-instance-method","html_id":"visit(node:Crystal::StringInterpolation)-instance-method","name":"visit","doc":"A visit callback for `Crystal::StringInterpolation` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"
A visit callback for Crystal::StringInterpolation node.
","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::StringInterpolation"}],"args_string":"(node : Crystal::StringInterpolation)","args_html":"(node : Crystal::StringInterpolation)","location":{"filename":"src/ameba/ast/visitors/node_visitor.cr","line_number":47,"url":null},"def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::StringInterpolation"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::NilLiteral)-instance-method","html_id":"visit(node:Crystal::NilLiteral)-instance-method","name":"visit","doc":"A visit callback for `Crystal::NilLiteral` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"
A visit callback for Crystal::NilLiteral node.
","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::NilLiteral"}],"args_string":"(node : Crystal::NilLiteral)","args_html":"(node : Crystal::NilLiteral)","location":{"filename":"src/ameba/ast/visitors/node_visitor.cr","line_number":47,"url":null},"def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::NilLiteral"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::ModuleDef)-instance-method","html_id":"visit(node:Crystal::ModuleDef)-instance-method","name":"visit","doc":"A visit callback for `Crystal::ModuleDef` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"
A visit callback for Crystal::ModuleDef node.
","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ModuleDef"}],"args_string":"(node : Crystal::ModuleDef)","args_html":"(node : Crystal::ModuleDef)","location":{"filename":"src/ameba/ast/visitors/node_visitor.cr","line_number":47,"url":null},"def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ModuleDef"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::LibDef)-instance-method","html_id":"visit(node:Crystal::LibDef)-instance-method","name":"visit","doc":"A visit callback for `Crystal::LibDef` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"
A visit callback for Crystal::LibDef node.
","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::LibDef"}],"args_string":"(node : Crystal::LibDef)","args_html":"(node : Crystal::LibDef)","location":{"filename":"src/ameba/ast/visitors/node_visitor.cr","line_number":47,"url":null},"def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::LibDef"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::InstanceVar)-instance-method","html_id":"visit(node:Crystal::InstanceVar)-instance-method","name":"visit","doc":"A visit callback for `Crystal::InstanceVar` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"
A visit callback for Crystal::InstanceVar node.
","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::InstanceVar"}],"args_string":"(node : Crystal::InstanceVar)","args_html":"(node : Crystal::InstanceVar)","location":{"filename":"src/ameba/ast/visitors/node_visitor.cr","line_number":47,"url":null},"def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::InstanceVar"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::If)-instance-method","html_id":"visit(node:Crystal::If)-instance-method","name":"visit","doc":"A visit callback for `Crystal::If` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"
A visit callback for Crystal::If node.
","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::If"}],"args_string":"(node : Crystal::If)","args_html":"(node : Crystal::If)","location":{"filename":"src/ameba/ast/visitors/node_visitor.cr","line_number":47,"url":null},"def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::If"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::HashLiteral)-instance-method","html_id":"visit(node:Crystal::HashLiteral)-instance-method","name":"visit","doc":"A visit callback for `Crystal::HashLiteral` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"
A visit callback for Crystal::HashLiteral node.
","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::HashLiteral"}],"args_string":"(node : Crystal::HashLiteral)","args_html":"(node : Crystal::HashLiteral)","location":{"filename":"src/ameba/ast/visitors/node_visitor.cr","line_number":47,"url":null},"def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::HashLiteral"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::Expressions)-instance-method","html_id":"visit(node:Crystal::Expressions)-instance-method","name":"visit","doc":"A visit callback for `Crystal::Expressions` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"
A visit callback for Crystal::Expressions node.
","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Expressions"}],"args_string":"(node : Crystal::Expressions)","args_html":"(node : Crystal::Expressions)","location":{"filename":"src/ameba/ast/visitors/node_visitor.cr","line_number":47,"url":null},"def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Expressions"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::ExceptionHandler)-instance-method","html_id":"visit(node:Crystal::ExceptionHandler)-instance-method","name":"visit","doc":"A visit callback for `Crystal::ExceptionHandler` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"
A visit callback for Crystal::ExceptionHandler node.
","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ExceptionHandler"}],"args_string":"(node : Crystal::ExceptionHandler)","args_html":"(node : Crystal::ExceptionHandler)","location":{"filename":"src/ameba/ast/visitors/node_visitor.cr","line_number":47,"url":null},"def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ExceptionHandler"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::EnumDef)-instance-method","html_id":"visit(node:Crystal::EnumDef)-instance-method","name":"visit","doc":"A visit callback for `Crystal::EnumDef` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"
A visit callback for Crystal::EnumDef node.
","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::EnumDef"}],"args_string":"(node : Crystal::EnumDef)","args_html":"(node : Crystal::EnumDef)","location":{"filename":"src/ameba/ast/visitors/node_visitor.cr","line_number":47,"url":null},"def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::EnumDef"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::Def)-instance-method","html_id":"visit(node:Crystal::Def)-instance-method","name":"visit","doc":"A visit callback for `Crystal::Def` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"
A visit callback for Crystal::Def node.
","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Def"}],"args_string":"(node : Crystal::Def)","args_html":"(node : Crystal::Def)","location":{"filename":"src/ameba/ast/visitors/node_visitor.cr","line_number":47,"url":null},"def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Def"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::ClassVar)-instance-method","html_id":"visit(node:Crystal::ClassVar)-instance-method","name":"visit","doc":"A visit callback for `Crystal::ClassVar` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"
A visit callback for Crystal::ClassVar node.
","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ClassVar"}],"args_string":"(node : Crystal::ClassVar)","args_html":"(node : Crystal::ClassVar)","location":{"filename":"src/ameba/ast/visitors/node_visitor.cr","line_number":47,"url":null},"def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ClassVar"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::ClassDef)-instance-method","html_id":"visit(node:Crystal::ClassDef)-instance-method","name":"visit","doc":"A visit callback for `Crystal::ClassDef` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"
A visit callback for Crystal::ClassDef node.
","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ClassDef"}],"args_string":"(node : Crystal::ClassDef)","args_html":"(node : Crystal::ClassDef)","location":{"filename":"src/ameba/ast/visitors/node_visitor.cr","line_number":47,"url":null},"def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ClassDef"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::Case)-instance-method","html_id":"visit(node:Crystal::Case)-instance-method","name":"visit","doc":"A visit callback for `Crystal::Case` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"
A visit callback for Crystal::Case node.
","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Case"}],"args_string":"(node : Crystal::Case)","args_html":"(node : Crystal::Case)","location":{"filename":"src/ameba/ast/visitors/node_visitor.cr","line_number":47,"url":null},"def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Case"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::Block)-instance-method","html_id":"visit(node:Crystal::Block)-instance-method","name":"visit","doc":"A visit callback for `Crystal::Block` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"
A visit callback for Crystal::Block node.
","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Block"}],"args_string":"(node : Crystal::Block)","args_html":"(node : Crystal::Block)","location":{"filename":"src/ameba/ast/visitors/node_visitor.cr","line_number":47,"url":null},"def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Block"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::Call)-instance-method","html_id":"visit(node:Crystal::Call)-instance-method","name":"visit","doc":"A visit callback for `Crystal::Call` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"
A visit callback for Crystal::Call node.
","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Call"}],"args_string":"(node : Crystal::Call)","args_html":"(node : Crystal::Call)","location":{"filename":"src/ameba/ast/visitors/node_visitor.cr","line_number":47,"url":null},"def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Call"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::Assign)-instance-method","html_id":"visit(node:Crystal::Assign)-instance-method","name":"visit","doc":"A visit callback for `Crystal::Assign` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"
A visit callback for Crystal::Assign node.
","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Assign"}],"args_string":"(node : Crystal::Assign)","args_html":"(node : Crystal::Assign)","location":{"filename":"src/ameba/ast/visitors/node_visitor.cr","line_number":47,"url":null},"def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Assign"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::IsA)-instance-method","html_id":"visit(node:Crystal::IsA)-instance-method","name":"visit","doc":"A visit callback for `Crystal::IsA` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"
A visit callback for Crystal::IsA node.
","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::IsA"}],"args_string":"(node : Crystal::IsA)","args_html":"(node : Crystal::IsA)","location":{"filename":"src/ameba/ast/visitors/node_visitor.cr","line_number":47,"url":null},"def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::IsA"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node)-instance-method","html_id":"visit(node)-instance-method","name":"visit","doc":null,"summary":null,"abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"args_string":"(node)","args_html":"(node)","location":{"filename":"src/ameba/ast/visitors/node_visitor.cr","line_number":56,"url":null},"def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (skip = @skip)\nelse\n return true\nend\n!(skip.includes?(node.class))\n"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/AST/RedundantControlExpressionVisitor","path":"Ameba/AST/RedundantControlExpressionVisitor.html","kind":"class","full_name":"Ameba::AST::RedundantControlExpressionVisitor","name":"RedundantControlExpressionVisitor","abstract":false,"superclass":{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},"ancestors":[{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":null,"aliased_html":null,"const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/AST","kind":"module","full_name":"Ameba::AST","name":"AST"},"doc":"A class that utilizes a logic to traverse AST nodes and\nfire a source test callback if a redundant `Crystal::ControlExpression`\nis reached.","summary":"
A class that utilizes a logic to traverse AST nodes and fire a source test callback if a redundant Crystal::ControlExpression is reached.
","class_methods":[],"constructors":[{"id":"new(rule,source,node)-class-method","html_id":"new(rule,source,node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"rule","doc":null,"default_value":"","external_name":"rule","restriction":""},{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"args_string":"(rule, source, node)","args_html":"(rule, source, node)","location":{"filename":"src/ameba/ast/visitors/redundant_control_expression_visitor.cr","line_number":15,"url":null},"def":{"name":"new","args":[{"name":"rule","doc":null,"default_value":"","external_name":"rule","restriction":""},{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"_ = allocate\n_.initialize(rule, source, node)\nif _.responds_to?(:finalize)\n ::GC.add_finalizer(_)\nend\n_\n"}}],"instance_methods":[{"id":"node:Crystal::ASTNode-instance-method","html_id":"node:Crystal::ASTNode-instance-method","name":"node","doc":"A node to run traversal on.","summary":"
A node to run traversal on.
","abstract":false,"args":[],"args_string":" : Crystal::ASTNode","args_html":" : Crystal::ASTNode","location":{"filename":"src/ameba/ast/visitors/redundant_control_expression_visitor.cr","line_number":13,"url":null},"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","args_html":" : Rule::Base","location":{"filename":"src/ameba/ast/visitors/redundant_control_expression_visitor.cr","line_number":7,"url":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":"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","args_html":" : Source","location":{"filename":"src/ameba/ast/visitors/redundant_control_expression_visitor.cr","line_number":10,"url":null},"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":[],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":null,"aliased_html":null,"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)","args_html":"(explicit)","location":{"filename":"src/ameba/ast/variabling/reference.cr","line_number":8,"url":null},"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","args_html":" : Bool","location":{"filename":"src/ameba/ast/variabling/reference.cr","line_number":8,"url":null},"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":[],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":null,"aliased_html":null,"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)","args_html":"(node, outer_scope = nil)","location":{"filename":"src/ameba/ast/scope.cr","line_number":39,"url":null},"def":{"name":"new","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""},{"name":"outer_scope","doc":null,"default_value":"nil","external_name":"outer_scope","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"_ = allocate\n_.initialize(node, outer_scope)\nif _.responds_to?(:finalize)\n ::GC.add_finalizer(_)\nend\n_\n"}}],"instance_methods":[{"id":"==(other:self)-instance-method","html_id":"==(other:self)-instance-method","name":"==","doc":"Returns `true` if this reference is the same as *other*. Invokes `same?`.","summary":"
Returns true if this reference is the same as other.
","abstract":false,"args":[{"name":"other","doc":null,"default_value":"","external_name":"other","restriction":"self"}],"args_string":"(other : self)","args_html":"(other : self)","location":null,"def":{"name":"==","args":[{"name":"other","doc":null,"default_value":"","external_name":"other","restriction":"self"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if same?(other)\n return true\nend\nif node == other.node\nelse\n return false\nend\nif location == other.location\nelse\n return false\nend\ntrue\n"}},{"id":"add_argument(node)-instance-method","html_id":"add_argument(node)-instance-method","name":"add_argument","doc":"Creates a new argument in the current scope.\n\n```\nscope = Scope.new(class_node, nil)\nscope.add_argument(arg_node)\n```","summary":"
Creates a new argument in the current scope.
","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"args_string":"(node)","args_html":"(node)","location":{"filename":"src/ameba/ast/scope.cr","line_number":59,"url":null},"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)","args_html":"(node)","location":{"filename":"src/ameba/ast/scope.cr","line_number":70,"url":null},"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)","args_html":"(node)","location":{"filename":"src/ameba/ast/scope.cr","line_number":49,"url":null},"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)","args_html":"(var)","location":{"filename":"src/ameba/ast/scope.cr","line_number":155,"url":null},"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)","args_html":" : Array(Ameba::AST::Argument)","location":{"filename":"src/ameba/ast/scope.cr","line_number":14,"url":null},"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)","args_html":"(name, node)","location":{"filename":"src/ameba/ast/scope.cr","line_number":90,"url":null},"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)","args_html":"(name)","location":{"filename":"src/ameba/ast/scope.cr","line_number":119,"url":null},"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":"","args_html":"","location":{"filename":"src/ameba/ast/scope.cr","line_number":96,"url":null},"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":"","args_html":"","location":{"filename":"src/ameba/ast/scope.cr","line_number":145,"url":null},"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)","args_html":"(*args, **options)","location":{"filename":"src/ameba/ast/scope.cr","line_number":30,"url":null},"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, &)","args_html":"(*args, **options, &)","location":{"filename":"src/ameba/ast/scope.cr","line_number":30,"url":null},"def":{"name":"end_location","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":1,"block_arg":null,"return_type":"","visibility":"Public","body":"node.end_location(*args, **options) do |*yield_args|\n yield *yield_args\nend"}},{"id":"eql?(node)-instance-method","html_id":"eql?(node)-instance-method","name":"eql?","doc":"Returns true if the `node` represents exactly\nthe same Crystal node as `@node`.","summary":"
Returns true if the #node represents exactly the same Crystal node as @node.
","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"args_string":"(node)","args_html":"(node)","location":{"filename":"src/ameba/ast/scope.cr","line_number":174,"url":null},"def":{"name":"eql?","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"((node == @node) && (!node.location.nil?)) && (node.location == @node.location)"}},{"id":"find_variable(name:String)-instance-method","html_id":"find_variable(name:String)-instance-method","name":"find_variable","doc":"Returns variable by its name or nil if it does not exist.\n\n```\nscope = Scope.new(class_node, nil)\nscope.find_variable(\"foo\")\n```","summary":"
Returns variable by its name or nil if it does not exist.
","abstract":false,"args":[{"name":"hasher","doc":null,"default_value":"","external_name":"hasher","restriction":""}],"args_string":"(hasher)","args_html":"(hasher)","location":null,"def":{"name":"hash","args":[{"name":"hasher","doc":null,"default_value":"","external_name":"hasher","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"hasher = node.hash(hasher)\nhasher = location.hash(hasher)\nhasher\n"}},{"id":"in_macro?-instance-method","html_id":"in_macro?-instance-method","name":"in_macro?","doc":"Returns true if current scope sits inside a macro.","summary":"
Returns true if current scope sits inside a macro.
","abstract":false,"args":[],"args_string":"","args_html":"","location":{"filename":"src/ameba/ast/scope.cr","line_number":114,"url":null},"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)","args_html":" : Array(Ameba::AST::Scope)","location":{"filename":"src/ameba/ast/scope.cr","line_number":23,"url":null},"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)","args_html":" : Array(Ameba::AST::InstanceVariable)","location":{"filename":"src/ameba/ast/scope.cr","line_number":17,"url":null},"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, &)","args_html":"(*args, **options, &)","location":{"filename":"src/ameba/ast/scope.cr","line_number":29,"url":null},"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)","args_html":"(*args, **options)","location":{"filename":"src/ameba/ast/scope.cr","line_number":29,"url":null},"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","args_html":" : Crystal::ASTNode","location":{"filename":"src/ameba/ast/scope.cr","line_number":26,"url":null},"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?","args_html":" : Scope?","location":{"filename":"src/ameba/ast/scope.cr","line_number":20,"url":null},"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)","args_html":" : Array(Ameba::AST::Reference)","location":{"filename":"src/ameba/ast/scope.cr","line_number":11,"url":null},"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)","args_html":"(variable : Variable)","location":{"filename":"src/ameba/ast/scope.cr","line_number":137,"url":null},"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":"","args_html":"","location":{"filename":"src/ameba/ast/scope.cr","line_number":107,"url":null},"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)","args_html":"(*args, **options)","location":{"filename":"src/ameba/ast/scope.cr","line_number":28,"url":null},"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, &)","args_html":"(*args, **options, &)","location":{"filename":"src/ameba/ast/scope.cr","line_number":28,"url":null},"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":"","args_html":"","location":{"filename":"src/ameba/ast/scope.cr","line_number":150,"url":null},"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":"","args_html":"","location":{"filename":"src/ameba/ast/scope.cr","line_number":126,"url":null},"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)","args_html":" : Array(Ameba::AST::Variable)","location":{"filename":"src/ameba/ast/scope.cr","line_number":8,"url":null},"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":[],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":null,"aliased_html":null,"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.
","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"args_string":"(node)","args_html":"(node)","location":{"filename":"src/ameba/ast/util.cr","line_number":135,"url":null},"def":{"name":"exit?","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"((node.is_a?(Crystal::Call) && (node.name == \"exit\")) && node.args.size <= 1) && node.obj.nil?"}},{"id":"flow_command?(node,in_loop)-instance-method","html_id":"flow_command?(node,in_loop)-instance-method","name":"flow_command?","doc":"Returns true if node is a flow command, false - otherwise.\nNode represents a flow command if it is a control expression,\nor special call node that interrupts execution (i.e. raise, exit, abort).","summary":"
Returns true if node is a flow command, false - otherwise.
","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""},{"name":"in_loop","doc":null,"default_value":"","external_name":"in_loop","restriction":""}],"args_string":"(node, in_loop)","args_html":"(node, in_loop)","location":{"filename":"src/ameba/ast/util.cr","line_number":62,"url":null},"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.
Returns true if current node is a literal, false otherwise.
","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"args_string":"(node)","args_html":"(node)","location":{"filename":"src/ameba/ast/util.cr","line_number":4,"url":null},"def":{"name":"literal?","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"case node\nwhen Crystal::NilLiteral, Crystal::BoolLiteral, Crystal::NumberLiteral, Crystal::CharLiteral, Crystal::StringLiteral, Crystal::SymbolLiteral, Crystal::RegexLiteral, Crystal::ProcLiteral, Crystal::MacroLiteral\n true\nwhen Crystal::RangeLiteral\n (literal?(node.from)) && (literal?(node.to))\nwhen Crystal::ArrayLiteral, Crystal::TupleLiteral\n node.elements.all? do |el|\n literal?(el)\n end\nwhen Crystal::HashLiteral\n node.entries.all? do |entry|\n (literal?(entry.key)) && (literal?(entry.value))\n end\nwhen Crystal::NamedTupleLiteral\n node.entries.all? do |entry|\n literal?(entry.value)\n end\nelse\n false\nend"}},{"id":"loop?(node)-instance-method","html_id":"loop?(node)-instance-method","name":"loop?","doc":"Returns true if node represents a loop.","summary":"
Returns true if node represents a loop.
","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"args_string":"(node)","args_html":"(node)","location":{"filename":"src/ameba/ast/util.cr","line_number":147,"url":null},"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 true if node represents raise method call.
","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"args_string":"(node)","args_html":"(node)","location":{"filename":"src/ameba/ast/util.cr","line_number":129,"url":null},"def":{"name":"raise?","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"((node.is_a?(Crystal::Call) && (node.name == \"raise\")) && (node.args.size == 1)) && node.obj.nil?"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/AST/Variable","path":"Ameba/AST/Variable.html","kind":"class","full_name":"Ameba::AST::Variable","name":"Variable","abstract":false,"superclass":{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},"ancestors":[{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":null,"aliased_html":null,"const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[{"html_id":"ameba/Ameba/AST/Reference","kind":"class","full_name":"Ameba::AST::Reference","name":"Reference"}],"including_types":[],"namespace":{"html_id":"ameba/Ameba/AST","kind":"module","full_name":"Ameba::AST","name":"AST"},"doc":"Represents the existence of the local variable.\nHolds the var node and variable assigments.","summary":"
Represents the existence of the local variable.
","class_methods":[],"constructors":[{"id":"new(node,scope)-class-method","html_id":"new(node,scope)-class-method","name":"new","doc":"Creates a new variable(in the scope).\n\n```\nVariable.new(node, scope)\n```\n","summary":"
Creates a new variable(in the scope).
","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""},{"name":"scope","doc":null,"default_value":"","external_name":"scope","restriction":""}],"args_string":"(node, scope)","args_html":"(node, scope)","location":{"filename":"src/ameba/ast/variabling/variable.cr","line_number":31,"url":null},"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)","args_html":"(node, scope)","location":{"filename":"src/ameba/ast/variabling/variable.cr","line_number":49,"url":null},"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?","args_html":" : Crystal::ASTNode?","location":{"filename":"src/ameba/ast/variabling/variable.cr","line_number":18,"url":null},"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)","args_html":" : Array(Ameba::AST::Assignment)","location":{"filename":"src/ameba/ast/variabling/variable.cr","line_number":6,"url":null},"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)","args_html":"(scope = @scope)","location":{"filename":"src/ameba/ast/variabling/variable.cr","line_number":114,"url":null},"def":{"name":"captured_by_block?","args":[{"name":"scope","doc":null,"default_value":"@scope","external_name":"scope","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"scope.inner_scopes.each do |inner_scope|\n if inner_scope.block? && (inner_scope.references?(self))\n return true\n end\n if captured_by_block?(inner_scope)\n return true\n end\nend\nfalse\n"}},{"id":"declared_before?(node)-instance-method","html_id":"declared_before?(node)-instance-method","name":"declared_before?","doc":"Returns true if the variable is delcared before the `node`.","summary":"
Returns true if the variable is delcared before the #node.
","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"args_string":"(node)","args_html":"(node)","location":{"filename":"src/ameba/ast/variabling/variable.cr","line_number":160,"url":null},"def":{"name":"declared_before?","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"var_location, node_location = location, node.location\nif var_location.nil? || node_location.nil?\n return\nend\n(var_location.line_number < node_location.line_number) || ((var_location.line_number == node_location.line_number) && var_location.column_number < node_location.column_number)\n"}},{"id":"end_location(*args,**options)-instance-method","html_id":"end_location(*args,**options)-instance-method","name":"end_location","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options)","args_html":"(*args, **options)","location":{"filename":"src/ameba/ast/variabling/variable.cr","line_number":21,"url":null},"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, &)","args_html":"(*args, **options, &)","location":{"filename":"src/ameba/ast/variabling/variable.cr","line_number":21,"url":null},"def":{"name":"end_location","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":1,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.end_location(*args, **options) do |*yield_args|\n yield *yield_args\nend"}},{"id":"eql?(node)-instance-method","html_id":"eql?(node)-instance-method","name":"eql?","doc":"Returns true if the `node` represents exactly\nthe same Crystal node as `@node`.","summary":"
Returns true if the #node represents exactly the same Crystal node as @node.
","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"args_string":"(node)","args_html":"(node)","location":{"filename":"src/ameba/ast/variabling/variable.cr","line_number":153,"url":null},"def":{"name":"eql?","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"(node.is_a?(Crystal::Var) && (node.name == @node.name)) && (node.location == @node.location)"}},{"id":"ignored?-instance-method","html_id":"ignored?-instance-method","name":"ignored?","doc":"Returns true if the name starts with '_', false if not.","summary":"
Returns true if the name starts with '_', false if not.
","abstract":false,"args":[],"args_string":"","args_html":"","location":{"filename":"src/ameba/ast/variabling/variable.cr","line_number":147,"url":null},"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)","args_html":"(*args, **options)","location":{"filename":"src/ameba/ast/variabling/variable.cr","line_number":20,"url":null},"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, &)","args_html":"(*args, **options, &)","location":{"filename":"src/ameba/ast/variabling/variable.cr","line_number":20,"url":null},"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)","args_html":"(*args, **options)","location":{"filename":"src/ameba/ast/variabling/variable.cr","line_number":22,"url":null},"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, &)","args_html":"(*args, **options, &)","location":{"filename":"src/ameba/ast/variabling/variable.cr","line_number":22,"url":null},"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","args_html":" : Crystal::Var","location":{"filename":"src/ameba/ast/variabling/variable.cr","line_number":12,"url":null},"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":[],"args_string":"","args_html":"","location":{"filename":"src/ameba/ast/variabling/variable.cr","line_number":87,"url":null},"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":"","args_html":"","location":{"filename":"src/ameba/ast/variabling/variable.cr","line_number":62,"url":null},"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)","args_html":" : Array(Ameba::AST::Reference)","location":{"filename":"src/ameba/ast/variabling/variable.cr","line_number":9,"url":null},"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","args_html":" : Scope","location":{"filename":"src/ameba/ast/variabling/variable.cr","line_number":15,"url":null},"def":{"name":"scope","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Scope","visibility":"Public","body":"@scope"}},{"id":"special?-instance-method","html_id":"special?-instance-method","name":"special?","doc":"Returns true if it is a special variable, i.e `$?`.","summary":"
Returns true if it is a special variable, i.e $?.
","abstract":false,"args":[],"args_string":"","args_html":"","location":{"filename":"src/ameba/ast/variabling/variable.cr","line_number":35,"url":null},"def":{"name":"special?","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.special_var?"}},{"id":"target_of?(assign)-instance-method","html_id":"target_of?(assign)-instance-method","name":"target_of?","doc":"Returns true if the variable is a target (on the left) of the assignment,\nfalse otherwise.","summary":"
Returns true if the variable is a target (on the left) of the assignment, false otherwise.
","abstract":false,"args":[{"name":"assign","doc":null,"default_value":"","external_name":"assign","restriction":""}],"args_string":"(assign)","args_html":"(assign)","location":{"filename":"src/ameba/ast/variabling/variable.cr","line_number":135,"url":null},"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)","args_html":"(*args, **options)","location":{"filename":"src/ameba/ast/variabling/variable.cr","line_number":23,"url":null},"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, &)","args_html":"(*args, **options, &)","location":{"filename":"src/ameba/ast/variabling/variable.cr","line_number":23,"url":null},"def":{"name":"to_s","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":1,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.to_s(*args, **options) do |*yield_args|\n yield *yield_args\nend"}},{"id":"used_in_macro?(scope=@scope)-instance-method","html_id":"used_in_macro?(scope=@scope)-instance-method","name":"used_in_macro?","doc":"Returns true if current variable potentially referenced in a macro literal,\nfalse if not.","summary":"
Returns true if current variable potentially referenced in a macro literal, false if not.
","abstract":false,"args":[{"name":"scope","doc":null,"default_value":"@scope","external_name":"scope","restriction":""}],"args_string":"(scope = @scope)","args_html":"(scope = @scope)","location":{"filename":"src/ameba/ast/variabling/variable.cr","line_number":125,"url":null},"def":{"name":"used_in_macro?","args":[{"name":"scope","doc":null,"default_value":"@scope","external_name":"scope","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"scope.inner_scopes.each do |inner_scope|\n if (MacroLiteralFinder.new(inner_scope.node)).references?(node)\n return true\n end\nend\nif (outer_scope = scope.outer_scope) && (used_in_macro?(outer_scope))\n return true\nend\nfalse\n"}}],"macros":[],"types":[]}]},{"html_id":"ameba/Ameba/Config","path":"Ameba/Config.html","kind":"class","full_name":"Ameba::Config","name":"Config","abstract":false,"superclass":{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},"ancestors":[{"html_id":"ameba/Ameba/GlobUtils","kind":"module","full_name":"Ameba::GlobUtils","name":"GlobUtils"},{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":null,"aliased_html":null,"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":"
","class_methods":[{"id":"formatter_names-class-method","html_id":"formatter_names-class-method","name":"formatter_names","doc":null,"summary":null,"abstract":false,"args":[],"args_string":"","args_html":"","location":{"filename":"src/ameba/config.cr","line_number":86,"url":null},"def":{"name":"formatter_names","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"AVAILABLE_FORMATTERS.keys.join(\"|\")"}},{"id":"load(path=PATH,colors=true)-class-method","html_id":"load(path=PATH,colors=true)-class-method","name":"load","doc":"Loads YAML configuration file by `path`.\n\n```\nconfig = Ameba::Config.load\n```\n","summary":"
Loads YAML configuration file by path.
","abstract":false,"args":[{"name":"path","doc":null,"default_value":"PATH","external_name":"path","restriction":""},{"name":"colors","doc":null,"default_value":"true","external_name":"colors","restriction":""}],"args_string":"(path = PATH, colors = true)","args_html":"(path = PATH, colors = true)","location":{"filename":"src/ameba/config.cr","line_number":78,"url":null},"def":{"name":"load","args":[{"name":"path","doc":null,"default_value":"PATH","external_name":"path","restriction":""},{"name":"colors","doc":null,"default_value":"true","external_name":"colors","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"begin\n Colorize.enabled = colors\n content = File.exists?(path) ? File.read(path) : \"{}\"\n Config.new(YAML.parse(content))\nrescue e\n raise(\"Config file is invalid: #{e.message}\")\nend"}}],"constructors":[],"instance_methods":[{"id":"excluded:Array(String)-instance-method","html_id":"excluded:Array(String)-instance-method","name":"excluded","doc":"Represents a list of paths to exclude from globs.\nCan have wildcards.\n\n```\nconfig = Ameba::Config.load\nconfig.excluded = [\"spec\", \"src/server/*.cr\"]\n```","summary":"
Represents a list of paths to exclude from globs.
","abstract":false,"args":[],"args_string":" : Array(String)","args_html":" : Array(String)","location":{"filename":"src/ameba/config.cr","line_number":56,"url":null},"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))","args_html":"(excluded : Array(String))","location":{"filename":"src/ameba/config.cr","line_number":56,"url":null},"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":[{"name":"name","doc":null,"default_value":"","external_name":"name","restriction":"String | Symbol"}],"args_string":"(name : String | Symbol)","args_html":"(name : String | Symbol)","location":{"filename":"src/ameba/config.cr","line_number":125,"url":null},"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)","args_html":" : Array(String)","location":{"filename":"src/ameba/config.cr","line_number":47,"url":null},"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))","args_html":"(globs : Array(String))","location":{"filename":"src/ameba/config.cr","line_number":47,"url":null},"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)","args_html":" : Array(Rule::Base)","location":{"filename":"src/ameba/config.cr","line_number":35,"url":null},"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","args_html":" : Ameba::Severity","location":{"filename":"src/ameba/config.cr","line_number":36,"url":null},"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","args_html":"(severity)","location":{"filename":"src/ameba/config.cr","line_number":36,"url":null},"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_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":[{"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)","args_html":"(name, enabled = true, excluded = nil)","location":{"filename":"src/ameba/config.cr","line_number":140,"url":null},"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)","args_html":"(names, **args)","location":{"filename":"src/ameba/config.cr","line_number":163,"url":null},"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":[],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":null,"aliased_html":null,"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":[],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":null,"aliased_html":null,"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)","args_html":"(output = STDOUT)","location":{"filename":"src/ameba/formatter/base_formatter.cr","line_number":13,"url":null},"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)","args_html":" : Hash(Symbol, Bool | String)","location":{"filename":"src/ameba/formatter/base_formatter.cr","line_number":11,"url":null},"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)","args_html":"(sources)","location":{"filename":"src/ameba/formatter/base_formatter.cr","line_number":30,"url":null},"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","args_html":" : IO::FileDescriptor | IO::Memory","location":{"filename":"src/ameba/formatter/base_formatter.cr","line_number":10,"url":null},"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)","args_html":"(source : Source)","location":{"filename":"src/ameba/formatter/base_formatter.cr","line_number":22,"url":null},"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)","args_html":"(source : Source)","location":{"filename":"src/ameba/formatter/base_formatter.cr","line_number":26,"url":null},"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)","args_html":"(sources)","location":{"filename":"src/ameba/formatter/base_formatter.cr","line_number":18,"url":null},"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":[],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":null,"aliased_html":null,"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)","args_html":"(sources)","location":{"filename":"src/ameba/formatter/disabled_formatter.cr","line_number":4,"url":null},"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":[],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":null,"aliased_html":null,"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)","args_html":"(sources)","location":{"filename":"src/ameba/formatter/dot_formatter.cr","line_number":26,"url":null},"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)","args_html":"(source : Source)","location":{"filename":"src/ameba/formatter/dot_formatter.cr","line_number":20,"url":null},"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)","args_html":"(sources)","location":{"filename":"src/ameba/formatter/dot_formatter.cr","line_number":13,"url":null},"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":[],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":null,"aliased_html":null,"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)","args_html":"(output, loc)","location":{"filename":"src/ameba/formatter/explain_formatter.cr","line_number":25,"url":null},"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)","args_html":"(sources)","location":{"filename":"src/ameba/formatter/explain_formatter.cr","line_number":30,"url":null},"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","args_html":" : Crystal::Location","location":{"filename":"src/ameba/formatter/explain_formatter.cr","line_number":14,"url":null},"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","args_html":" : IO::FileDescriptor | IO::Memory","location":{"filename":"src/ameba/formatter/explain_formatter.cr","line_number":13,"url":null},"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":[],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":null,"aliased_html":null,"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.
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)","args_html":"(output = STDOUT)","location":{"filename":"src/ameba/formatter/json_formatter.cr","line_number":67,"url":null},"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)","args_html":"(sources)","location":{"filename":"src/ameba/formatter/json_formatter.cr","line_number":87,"url":null},"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)","args_html":"(source : Source)","location":{"filename":"src/ameba/formatter/json_formatter.cr","line_number":75,"url":null},"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)","args_html":"(sources)","location":{"filename":"src/ameba/formatter/json_formatter.cr","line_number":71,"url":null},"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":[],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":null,"aliased_html":null,"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)","args_html":"(output = STDOUT)","location":{"filename":"src/ameba/formatter/todo_formatter.cr","line_number":6,"url":null},"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":"
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)","args_html":"(globs)","location":{"filename":"src/ameba/glob_utils.cr","line_number":24,"url":null},"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)","args_html":"(globs)","location":{"filename":"src/ameba/glob_utils.cr","line_number":11,"url":null},"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":[],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":null,"aliased_html":null,"const":false,"constants":[{"id":"COMMENT_DIRECTIVE_REGEX","name":"COMMENT_DIRECTIVE_REGEX","value":"/# ameba:(?\\w+) (?\\w+(?:\\/\\w+)?(?:,? \\w+(?:\\/\\w+)?)*)/","doc":null,"summary":null}],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[{"html_id":"ameba/Ameba/Source","kind":"class","full_name":"Ameba::Source","name":"Source"}],"namespace":{"html_id":"ameba/Ameba","kind":"module","full_name":"Ameba","name":"Ameba"},"doc":"A module that utilizes inline comments parsing and processing logic.","summary":"
A module that utilizes inline comments parsing and processing logic.
","class_methods":[],"constructors":[],"instance_methods":[{"id":"comment?(line_number:Int32)-instance-method","html_id":"comment?(line_number:Int32)-instance-method","name":"comment?","doc":"Returns true if the line at the given `line_number` is a comment.","summary":"
Returns true if the line at the given line_number is a comment.
","abstract":false,"args":[{"name":"line_number","doc":null,"default_value":"","external_name":"line_number","restriction":"Int32"}],"args_string":"(line_number : Int32)","args_html":"(line_number : Int32)","location":{"filename":"src/ameba/inline_comments.cr","line_number":80,"url":null},"def":{"name":"comment?","args":[{"name":"line_number","doc":null,"default_value":"","external_name":"line_number","restriction":"Int32"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if line = lines[line_number]?\n comment?(line)\nend"}},{"id":"location_disabled?(location,rule)-instance-method","html_id":"location_disabled?(location,rule)-instance-method","name":"location_disabled?","doc":"Returns true if current location is disabled for a particular rule,\nfalse otherwise.\n\nLocation is disabled in two cases:\n 1. The line of the location ends with a comment directive.\n 2. The line above the location is a comment directive.\n\nFor example, here are two examples of disabled location:\n\n```\n# ameba:disable Style/LargeNumbers\nTime.epoch(1483859302)\n\nTime.epoch(1483859302) # ameba:disable Style/LargeNumbers\n```\n\nBut here are examples which are not considered as disabled location:\n\n```\n# ameba:disable Style/LargeNumbers\n#\nTime.epoch(1483859302)\n\nif use_epoch? # ameba:disable Style/LargeNumbers\n Time.epoch(1483859302)\nend\n```\n","summary":"
Returns true if current location is disabled for a particular rule, false otherwise.
","abstract":false,"args":[{"name":"location","doc":null,"default_value":"","external_name":"location","restriction":""},{"name":"rule","doc":null,"default_value":"","external_name":"rule","restriction":""}],"args_string":"(location, rule)","args_html":"(location, rule)","location":{"filename":"src/ameba/inline_comments.cr","line_number":40,"url":null},"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)","args_html":"(line)","location":{"filename":"src/ameba/inline_comments.cr","line_number":69,"url":null},"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":[],"repository_name":"ameba","program":false,"enum":true,"alias":false,"aliased":null,"aliased_html":null,"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":"","args_html":"","location":{"filename":"src/ameba/inline_comments.cr","line_number":8,"url":null},"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":"","args_html":"","location":{"filename":"src/ameba/inline_comments.cr","line_number":9,"url":null},"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":[],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":null,"aliased_html":null,"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":"
","class_methods":[],"constructors":[],"instance_methods":[{"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)","args_html":"(rule, location : Tuple(Int32, Int32), end_location : Tuple(Int32, Int32), message, **args)","location":{"filename":"src/ameba/reportable.cr","line_number":30,"url":null},"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,end_location,message,status=nil)-instance-method","html_id":"add_issue(rule,location,end_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":""},{"name":"end_location","doc":null,"default_value":"","external_name":"end_location","restriction":""},{"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, end_location, message, status = nil)","args_html":"(rule, location, end_location, message, status = nil)","location":{"filename":"src/ameba/reportable.cr","line_number":8,"url":null},"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":""},{"name":"end_location","doc":null,"default_value":"","external_name":"end_location","restriction":""},{"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),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)","args_html":"(rule, location : Tuple(Int32, Int32), message, **args)","location":{"filename":"src/ameba/reportable.cr","line_number":24,"url":null},"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)","args_html":"(rule, node : Crystal::ASTNode, message, **args)","location":{"filename":"src/ameba/reportable.cr","line_number":14,"url":null},"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":"
","abstract":false,"args":[],"args_string":"","args_html":"","location":{"filename":"src/ameba/reportable.cr","line_number":5,"url":null},"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":"","args_html":"","location":{"filename":"src/ameba/reportable.cr","line_number":37,"url":null},"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":[],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":null,"aliased_html":null,"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":"","args_html":"","location":{"filename":"src/ameba/rule/base.cr","line_number":194,"url":null},"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":[],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":null,"aliased_html":null,"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":"","args_html":"","location":{"filename":"src/ameba/rule/base.cr","line_number":157,"url":null},"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":"","args_html":"","location":{"filename":"src/ameba/rule/base.cr","line_number":30,"url":null},"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' instance vars are compared to each other. Thus, two\nstructs are considered equal if each of their instance variables are\nequal. Subclasses should override this method to provide specific\nequality semantics.\n\n```\nstruct Point\n def initialize(@x : Int32, @y : Int32)\n end\nend\n\np1 = Point.new 1, 2\np2 = Point.new 1, 2\np3 = Point.new 3, 4\n\np1 == p2 # => true\np1 == p3 # => false\n```","summary":"
Returns true if this struct is equal to other.
","abstract":false,"args":[{"name":"other","doc":null,"default_value":"","external_name":"other","restriction":""}],"args_string":"(other)","args_html":"(other)","location":{"filename":"src/ameba/rule/base.cr","line_number":113,"url":null},"def":{"name":"==","args":[{"name":"other","doc":null,"default_value":"","external_name":"other","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"name == other.try(&.name)"}},{"id":"catch(source:Source)-instance-method","html_id":"catch(source:Source)-instance-method","name":"catch","doc":"A convenient addition to `#test` method that does the same\nbut returns a passed in `source` as an addition.\n\n```\nsource = MyRule.new.catch(source)\nsource.valid?\n```\n","summary":"
A convenient addition to #test method that does the same but returns a passed in source as an addition.
","abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":"Source"}],"args_string":"(source : Source)","args_html":"(source : Source)","location":{"filename":"src/ameba/rule/base.cr","line_number":54,"url":null},"def":{"name":"catch","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":"Source"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"source.tap do |s|\n test(s)\nend"}},{"id":"excluded?(source)-instance-method","html_id":"excluded?(source)-instance-method","name":"excluded?","doc":"Checks whether the source is excluded from this rule.\nIt searches for a path in `excluded` property which matches\nthe one of the given source.\n\n```\nmy_rule.excluded?(source) # => true or false\n```\n","summary":"
Checks whether the source is excluded from this rule.
","abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"args_string":"(source)","args_html":"(source)","location":{"filename":"src/ameba/rule/base.cr","line_number":95,"url":null},"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":"","args_html":"","location":{"filename":"src/ameba/rule/base.cr","line_number":83,"url":null},"def":{"name":"group","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"({{ @type }}).group_name"}},{"id":"hash-instance-method","html_id":"hash-instance-method","name":"hash","doc":"Generates an `UInt64` hash value for this object.\n\nThis method must have the property that `a == b` implies `a.hash == b.hash`.\n\nThe hash value is used along with `==` by the `Hash` class to determine if two objects\nreference the same hash key.\n\nSubclasses must not override this method. Instead, they must define `hash(hasher)`,\nthough usually the macro `def_hash` can be used to generate this method.","summary":"
Generates an UInt64 hash value for this object.
","abstract":false,"args":[],"args_string":"","args_html":"","location":{"filename":"src/ameba/rule/base.cr","line_number":117,"url":null},"def":{"name":"hash","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"name.hash"}},{"id":"name-instance-method","html_id":"name-instance-method","name":"name","doc":"Returns a name of this rule, which is basically a class name.\n\n```\nstruct MyRule < Ameba::Rule::Base\n def test(source)\n end\nend\n\nMyRule.new.name # => \"MyRule\"\n```\n","summary":"
Returns a name of this rule, which is basically a class name.
","abstract":false,"args":[],"args_string":"","args_html":"","location":{"filename":"src/ameba/rule/base.cr","line_number":69,"url":null},"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":"","args_html":"","location":{"filename":"src/ameba/rule/base.cr","line_number":109,"url":null},"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)","args_html":"(source : Source, node : Crystal::ASTNode, *opts)","location":{"filename":"src/ameba/rule/base.cr","line_number":42,"url":null},"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)","args_html":"(source : Source)","location":{"filename":"src/ameba/rule/base.cr","line_number":38,"url":null},"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)","location":{"filename":"src/ameba/rule/base.cr","line_number":121,"url":null},"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":[],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":null,"aliased_html":null,"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":[],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":null,"aliased_html":null,"const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Line too long\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Layout","kind":"module","full_name":"Ameba::Rule::Layout","name":"Layout"},"doc":"A rule that disallows lines longer than `max_length` number of symbols.\n\nYAML configuration example:\n\n```\nLayout/LineLength:\n Enabled: true\n MaxLength: 100\n```\n","summary":"
A rule that disallows lines longer than #max_length number of symbols.
","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","args_html":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","location":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows lines longer than `max_length` number of symbols.\n\nYAML configuration example:\n\n```\nLayout/LineLength:\n Enabled: true\n MaxLength: 100\n```\n","summary":"
A rule that disallows lines longer than #max_length number of symbols.
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)","args_html":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","location":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_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)","args_html":"(config = nil)","location":{"filename":"src/ameba/rule/layout/trailing_whitespace.cr","line_number":11,"url":null},"def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","args_html":" : String","location":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","args_html":"(description : String)","location":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","args_html":" : Bool","location":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","args_html":"(enabled)","location":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","args_html":" : Array(String)?","location":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","args_html":"(excluded : Array(String)?)","location":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","args_html":" : Ameba::Severity","location":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","args_html":"(severity)","location":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_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)","args_html":"(source)","location":{"filename":"src/ameba/rule/layout/trailing_whitespace.cr","line_number":18,"url":null},"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":[],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":null,"aliased_html":null,"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":[],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":null,"aliased_html":null,"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)","args_html":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","location":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_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)","args_html":"(config = nil)","location":{"filename":"src/ameba/rule/lint/bad_directive.cr","line_number":21,"url":null},"def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","args_html":" : String","location":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","args_html":"(description : String)","location":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","args_html":" : Bool","location":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","args_html":"(enabled)","location":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","args_html":" : Array(String)?","location":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","args_html":"(excluded : Array(String)?)","location":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","args_html":" : Ameba::Severity","location":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","args_html":"(severity)","location":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_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)","args_html":"(source)","location":{"filename":"src/ameba/rule/lint/bad_directive.cr","line_number":30,"url":null},"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":[],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":null,"aliased_html":null,"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)","args_html":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","location":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_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":"
","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","args_html":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","location":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_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)","args_html":"(config = nil)","location":{"filename":"src/ameba/rule/lint/debugger_statement.cr","line_number":14,"url":null},"def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","args_html":" : String","location":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","args_html":"(description : String)","location":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","args_html":" : Bool","location":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","args_html":"(enabled)","location":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","args_html":" : Array(String)?","location":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","args_html":"(excluded : Array(String)?)","location":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","args_html":" : Ameba::Severity","location":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","args_html":"(severity)","location":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_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)","args_html":"(source, node : Crystal::Call)","location":{"filename":"src/ameba/rule/lint/debugger_statement.cr","line_number":21,"url":null},"def":{"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":[],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":null,"aliased_html":null,"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)","args_html":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","location":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_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 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)","args_html":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","location":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_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)","args_html":"(config = nil)","location":{"filename":"src/ameba/rule/lint/hash_duplicated_key.cr","line_number":23,"url":null},"def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","args_html":" : String","location":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","args_html":"(description : String)","location":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","args_html":" : Bool","location":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","args_html":"(enabled)","location":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","args_html":" : Array(String)?","location":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","args_html":"(excluded : Array(String)?)","location":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","args_html":" : Ameba::Severity","location":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","args_html":"(severity)","location":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_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)","args_html":"(source, node : Crystal::HashLiteral)","location":{"filename":"src/ameba/rule/lint/hash_duplicated_key.cr","line_number":30,"url":null},"def":{"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":[],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":null,"aliased_html":null,"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)","args_html":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","location":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_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.
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)","args_html":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","location":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_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)","args_html":"(config = nil)","location":{"filename":"src/ameba/rule/lint/literal_in_interpolation.cr","line_number":19,"url":null},"def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","args_html":" : String","location":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","args_html":"(description : String)","location":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","args_html":" : Bool","location":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","args_html":"(enabled)","location":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","args_html":" : Array(String)?","location":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","args_html":"(excluded : Array(String)?)","location":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","args_html":" : Ameba::Severity","location":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","args_html":"(severity)","location":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_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)","args_html":"(source, node : Crystal::StringInterpolation)","location":{"filename":"src/ameba/rule/lint/literal_in_interpolation.cr","line_number":28,"url":null},"def":{"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":[],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":null,"aliased_html":null,"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)","args_html":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","location":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_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.
","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","args_html":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","location":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows `rand(0)` and `rand(1)` calls.\nSuch calls always return `0`.\n\nFor example:\n\n```\nrand(1)\n```\n\nShould be written as:\n\n```\nrand\n# or\nrand(2)\n```\n\nYAML configuration example:\n\n```\nLint/RandZero:\n Enabled: true\n```\n","summary":"
A rule that disallows rand(0) and rand(1) calls.
","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","args_html":"(config = nil)","location":{"filename":"src/ameba/rule/lint/rand_zero.cr","line_number":26,"url":null},"def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","args_html":" : String","location":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","args_html":"(description : String)","location":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","args_html":" : Bool","location":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","args_html":"(enabled)","location":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","args_html":" : Array(String)?","location":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","args_html":"(excluded : Array(String)?)","location":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","args_html":" : Ameba::Severity","location":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","args_html":"(severity)","location":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_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)","args_html":"(source, node : Crystal::Call)","location":{"filename":"src/ameba/rule/lint/rand_zero.cr","line_number":33,"url":null},"def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Call"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (((((node.name == \"rand\") && (node.args.size == 1)) && (arg = node.args.first)) && (arg.is_a?(Crystal::NumberLiteral))) && (value = arg.value)) && ((value == \"0\") || (value == \"1\"))\nelse\n return\nend\nissue_for(node, MSG % node)\n"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Lint/RedundantStringCoercion","path":"Ameba/Rule/Lint/RedundantStringCoercion.html","kind":"struct","full_name":"Ameba::Rule::Lint::RedundantStringCoercion","name":"RedundantStringCoercion","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/Ameba/AST/Util","kind":"module","full_name":"Ameba::AST::Util","name":"Util"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":null,"aliased_html":null,"const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Redundant use of `Object#to_s` in interpolation\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/Ameba/AST/Util","kind":"module","full_name":"Ameba::AST::Util","name":"Util"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Lint","kind":"module","full_name":"Ameba::Rule::Lint","name":"Lint"},"doc":"A rule that disallows string conversion in string interpolation,\nwhich is redundant.\n\nFor example, this is considered invalid:\n\n```\n\"Hello, #{name.to_s}\"\n```\n\nAnd this is valid:\n\n```\n\"Hello, #{name}\"\n```\n\nYAML configuration example:\n\n```\nLint/RedundantStringCoersion\n Enabled: true\n```\n","summary":"
A rule that disallows string conversion in string interpolation, which is redundant.
","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","args_html":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","location":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_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)","args_html":"(config = nil)","location":{"filename":"src/ameba/rule/lint/redundant_string_coercion.cr","line_number":24,"url":null},"def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","args_html":" : String","location":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","args_html":"(description : String)","location":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","args_html":" : Bool","location":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","args_html":"(enabled)","location":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","args_html":" : Array(String)?","location":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","args_html":"(excluded : Array(String)?)","location":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","args_html":" : Ameba::Severity","location":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","args_html":"(severity)","location":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_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)","args_html":"(source, node : Crystal::StringInterpolation)","location":{"filename":"src/ameba/rule/lint/redundant_string_coercion.cr","line_number":33,"url":null},"def":{"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":[],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":null,"aliased_html":null,"const":false,"constants":[],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Lint","kind":"module","full_name":"Ameba::Rule::Lint","name":"Lint"},"doc":"A rule that disallows redundant `with_index` calls.\n\nFor example, this is considered invalid:\n```\ncollection.each.with_index do |e|\n # ...\nend\n\ncollection.each_with_index do |e, _|\n # ...\nend\n```\n\nand it should be written as follows:\n\n```\ncollection.each do |e|\n # ...\nend\n```\n\nYAML configuration example:\n\n```\nLint/RedundantWithIndex:\n Enabled: true\n```\n","summary":"
A rule that disallows redundant with_index calls.
","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","args_html":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","location":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows redundant `with_index` calls.\n\nFor example, this is considered invalid:\n```\ncollection.each.with_index do |e|\n # ...\nend\n\ncollection.each_with_index do |e, _|\n # ...\nend\n```\n\nand it should be written as follows:\n\n```\ncollection.each do |e|\n # ...\nend\n```\n\nYAML configuration example:\n\n```\nLint/RedundantWithIndex:\n Enabled: true\n```\n","summary":"
A rule that disallows redundant with_index calls.
","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","args_html":"(config = nil)","location":{"filename":"src/ameba/rule/lint/redundant_with_index.cr","line_number":30,"url":null},"def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","args_html":" : String","location":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","args_html":"(description : String)","location":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","args_html":" : Bool","location":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","args_html":"(enabled)","location":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","args_html":" : Array(String)?","location":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","args_html":"(excluded : Array(String)?)","location":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","args_html":" : Ameba::Severity","location":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","args_html":"(severity)","location":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_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)","args_html":"(source, node : Crystal::Call)","location":{"filename":"src/ameba/rule/lint/redundant_with_index.cr","line_number":35,"url":null},"def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Call"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"args, block = node.args, node.block\nif (args.size > 1 || block.nil?) || (with_index_arg?(block.not_nil!))\n return\nend\ncase node.name\nwhen \"with_index\"\n report(source, node, \"Remove redundant with_index\")\nwhen \"each_with_index\"\n report(source, node, \"Use each instead of each_with_index\")\nelse\nend\n"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Lint/RedundantWithObject","path":"Ameba/Rule/Lint/RedundantWithObject.html","kind":"struct","full_name":"Ameba::Rule::Lint::RedundantWithObject","name":"RedundantWithObject","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":null,"aliased_html":null,"const":false,"constants":[],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Lint","kind":"module","full_name":"Ameba::Rule::Lint","name":"Lint"},"doc":"A rule that disallows redundant `each_with_object` calls.\n\nFor example, this is considered invalid:\n\n```\ncollection.each_with_object(0) do |e|\n # ...\nend\n\ncollection.each_with_object(0) do |e, _|\n # ...\nend\n```\n\nand it should be written as follows:\n\n```\ncollection.each do |e|\n # ...\nend\n```\n\nYAML configuration example:\n\n```\nLint/RedundantWithObject:\n Enabled: true\n```\n","summary":"
A rule that disallows redundant each_with_object calls.
","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","args_html":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","location":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows redundant `each_with_object` calls.\n\nFor example, this is considered invalid:\n\n```\ncollection.each_with_object(0) do |e|\n # ...\nend\n\ncollection.each_with_object(0) do |e, _|\n # ...\nend\n```\n\nand it should be written as follows:\n\n```\ncollection.each do |e|\n # ...\nend\n```\n\nYAML configuration example:\n\n```\nLint/RedundantWithObject:\n Enabled: true\n```\n","summary":"
A rule that disallows redundant each_with_object calls.
","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","args_html":"(config = nil)","location":{"filename":"src/ameba/rule/lint/redundant_with_object.cr","line_number":31,"url":null},"def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","args_html":" : String","location":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","args_html":"(description : String)","location":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","args_html":" : Bool","location":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","args_html":"(enabled)","location":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","args_html":" : Array(String)?","location":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","args_html":"(excluded : Array(String)?)","location":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","args_html":" : Ameba::Severity","location":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","args_html":"(severity)","location":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_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)","args_html":"(source, node : Crystal::Call)","location":{"filename":"src/ameba/rule/lint/redundant_with_object.cr","line_number":36,"url":null},"def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Call"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (((node.name != \"each_with_object\") || (node.args.size != 1)) || node.block.nil?) || (with_index_arg?(node.block.not_nil!))\n return\nend\nissue_for(node.name_location, node.name_end_location, \"Use each instead of each_with_object\")\n"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Lint/ShadowedArgument","path":"Ameba/Rule/Lint/ShadowedArgument.html","kind":"struct","full_name":"Ameba::Rule::Lint::ShadowedArgument","name":"ShadowedArgument","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":null,"aliased_html":null,"const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Argument `%s` is assigned before it is used\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Lint","kind":"module","full_name":"Ameba::Rule::Lint","name":"Lint"},"doc":"A rule that disallows shadowed arguments.\n\nFor example, this is considered invalid:\n\n```\ndo_something do |foo|\n foo = 1 # shadows block argument\n foo\nend\n\ndef do_something(foo)\n foo = 1 # shadows method argument\n foo\nend\n```\n\nand it should be written as follows:\n\n```\ndo_something do |foo|\n foo = foo + 42\n foo\nend\n\ndef do_something(foo)\n foo = foo + 42\n foo\nend\n```\n\nYAML configuration example:\n\n```\nLint/ShadowedArgument:\n Enabled: true\n```\n","summary":"
A rule that disallows shadowed arguments.
","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","args_html":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","location":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_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)","args_html":"(config = nil)","location":{"filename":"src/ameba/rule/lint/shadowed_argument.cr","line_number":39,"url":null},"def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","args_html":" : String","location":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","args_html":"(description : String)","location":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","args_html":" : Bool","location":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","args_html":"(enabled)","location":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","args_html":" : Array(String)?","location":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","args_html":"(excluded : Array(String)?)","location":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","args_html":" : Ameba::Severity","location":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","args_html":"(severity)","location":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_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)","args_html":"(source, node, scope : AST::Scope)","location":{"filename":"src/ameba/rule/lint/shadowed_argument.cr","line_number":50,"url":null},"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)","args_html":"(source)","location":{"filename":"src/ameba/rule/lint/shadowed_argument.cr","line_number":46,"url":null},"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":[],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":null,"aliased_html":null,"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)","args_html":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","location":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_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)","args_html":"(config = nil)","location":{"filename":"src/ameba/rule/lint/shadowed_exception.cr","line_number":37,"url":null},"def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","args_html":" : String","location":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","args_html":"(description : String)","location":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","args_html":" : Bool","location":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","args_html":"(enabled)","location":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","args_html":" : Array(String)?","location":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","args_html":"(excluded : Array(String)?)","location":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","args_html":" : Ameba::Severity","location":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","args_html":"(severity)","location":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_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)","args_html":"(source, node : Crystal::ExceptionHandler)","location":{"filename":"src/ameba/rule/lint/shadowed_exception.cr","line_number":44,"url":null},"def":{"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":[],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":null,"aliased_html":null,"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)","args_html":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","location":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_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)","args_html":"(config = nil)","location":{"filename":"src/ameba/rule/lint/shadowing_local_outer_var.cr","line_number":34,"url":null},"def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","args_html":" : String","location":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","args_html":"(description : String)","location":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","args_html":" : Bool","location":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","args_html":"(enabled)","location":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","args_html":" : Array(String)?","location":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","args_html":"(excluded : Array(String)?)","location":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","args_html":" : Ameba::Severity","location":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","args_html":"(severity)","location":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_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)","args_html":"(source, node : Crystal::ProcLiteral, scope : AST::Scope)","location":{"filename":"src/ameba/rule/lint/shadowing_local_outer_var.cr","line_number":46,"url":null},"def":{"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)","args_html":"(source, node : Crystal::Block, scope : AST::Scope)","location":{"filename":"src/ameba/rule/lint/shadowing_local_outer_var.cr","line_number":50,"url":null},"def":{"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)","args_html":"(source)","location":{"filename":"src/ameba/rule/lint/shadowing_local_outer_var.cr","line_number":42,"url":null},"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":[],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":null,"aliased_html":null,"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)","args_html":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","location":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_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.
","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","args_html":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","location":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_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)","args_html":"(config = nil)","location":{"filename":"src/ameba/rule/lint/syntax.cr","line_number":22,"url":null},"def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","args_html":" : String","location":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","args_html":"(description : String)","location":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","args_html":" : Bool","location":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","args_html":"(enabled)","location":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","args_html":" : Array(String)?","location":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","args_html":"(excluded : Array(String)?)","location":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","args_html":" : Ameba::Severity","location":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)","args_html":"(severity : Ameba::Severity)","location":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)","args_html":"(source)","location":{"filename":"src/ameba/rule/lint/syntax.cr","line_number":28,"url":null},"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":[],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":null,"aliased_html":null,"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)","args_html":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","location":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_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)","args_html":"(config = nil)","location":{"filename":"src/ameba/rule/lint/unneeded_disable_directive.cr","line_number":28,"url":null},"def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","args_html":" : String","location":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","args_html":"(description : String)","location":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","args_html":" : Bool","location":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","args_html":"(enabled)","location":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","args_html":" : Array(String)?","location":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","args_html":"(excluded : Array(String)?)","location":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","args_html":" : Ameba::Severity","location":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","args_html":"(severity)","location":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_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)","args_html":"(source)","location":{"filename":"src/ameba/rule/lint/unneeded_disable_directive.cr","line_number":35,"url":null},"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":[],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":null,"aliased_html":null,"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)","args_html":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","location":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_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)","args_html":"(config = nil)","location":{"filename":"src/ameba/rule/lint/unreachable_code.cr","line_number":45,"url":null},"def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","args_html":" : String","location":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","args_html":"(description : String)","location":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","args_html":" : Bool","location":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","args_html":"(enabled)","location":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","args_html":" : Array(String)?","location":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","args_html":"(excluded : Array(String)?)","location":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","args_html":" : Ameba::Severity","location":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","args_html":"(severity)","location":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_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)","args_html":"(source, node, flow_expression : AST::FlowExpression)","location":{"filename":"src/ameba/rule/lint/unreachable_code.cr","line_number":58,"url":null},"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)","args_html":"(source)","location":{"filename":"src/ameba/rule/lint/unreachable_code.cr","line_number":54,"url":null},"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":[],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":null,"aliased_html":null,"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)","args_html":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","location":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_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":"
","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","args_html":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","location":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_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)","args_html":"(config = nil)","location":{"filename":"src/ameba/rule/lint/useless_assign.cr","line_number":29,"url":null},"def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","args_html":" : String","location":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","args_html":"(description : String)","location":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","args_html":" : Bool","location":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","args_html":"(enabled)","location":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","args_html":" : Array(String)?","location":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","args_html":"(excluded : Array(String)?)","location":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","args_html":" : Ameba::Severity","location":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","args_html":"(severity)","location":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_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)","args_html":"(source, node, scope : AST::Scope)","location":{"filename":"src/ameba/rule/lint/useless_assign.cr","line_number":40,"url":null},"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)","args_html":"(source)","location":{"filename":"src/ameba/rule/lint/useless_assign.cr","line_number":36,"url":null},"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":[],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":null,"aliased_html":null,"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)","args_html":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","location":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_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.
A rule that disallows methods with a cyclomatic complexity higher than MaxComplexity
","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","args_html":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","location":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows methods with a cyclomatic complexity higher than `MaxComplexity`\n\nYAML configuration example:\n\n```\nMetrics/CyclomaticComplexity:\n Enabled: true\n MaxComplexity: 10\n```\n","summary":"
A rule that disallows methods with a cyclomatic complexity higher than MaxComplexity
","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","args_html":"(config = nil)","location":{"filename":"src/ameba/rule/metrics/cyclomatic_complexity.cr","line_number":12,"url":null},"def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","args_html":" : String","location":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","args_html":"(description : String)","location":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","args_html":" : Bool","location":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","args_html":"(enabled)","location":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","args_html":" : Array(String)?","location":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","args_html":"(excluded : Array(String)?)","location":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"max_complexity:Int32-instance-method","html_id":"max_complexity:Int32-instance-method","name":"max_complexity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Int32","args_html":" : Int32","location":null,"def":{"name":"max_complexity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Int32","visibility":"Public","body":"@max_complexity"}},{"id":"max_complexity=(max_complexity:Int32)-instance-method","html_id":"max_complexity=(max_complexity:Int32)-instance-method","name":"max_complexity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"max_complexity","doc":null,"default_value":"","external_name":"max_complexity","restriction":"Int32"}],"args_string":"(max_complexity : Int32)","args_html":"(max_complexity : Int32)","location":null,"def":{"name":"max_complexity=","args":[{"name":"max_complexity","doc":null,"default_value":"","external_name":"max_complexity","restriction":"Int32"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@max_complexity = max_complexity"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","args_html":" : Ameba::Severity","location":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","args_html":"(severity)","location":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_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)","args_html":"(source, node : Crystal::Def)","location":{"filename":"src/ameba/rule/metrics/cyclomatic_complexity.cr","line_number":20,"url":null},"def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Def"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"complexity = (AST::CountingVisitor.new(node)).count\nif complexity > max_complexity && (location = node.name_location)\n issue_for(location, def_name_end_location(node), MSG % {complexity, max_complexity})\nend\n"}}],"macros":[],"types":[]}]},{"html_id":"ameba/Ameba/Rule/Performance","path":"Ameba/Rule/Performance.html","kind":"module","full_name":"Ameba::Rule::Performance","name":"Performance","abstract":false,"superclass":null,"ancestors":[],"locations":[],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":null,"aliased_html":null,"const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule","kind":"module","full_name":"Ameba::Rule","name":"Rule"},"doc":null,"summary":null,"class_methods":[],"constructors":[],"instance_methods":[],"macros":[],"types":[{"html_id":"ameba/Ameba/Rule/Performance/AnyAfterFilter","path":"Ameba/Rule/Performance/AnyAfterFilter.html","kind":"struct","full_name":"Ameba::Rule::Performance::AnyAfterFilter","name":"AnyAfterFilter","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":null,"aliased_html":null,"const":false,"constants":[{"id":"ANY_NAME","name":"ANY_NAME","value":"\"any?\"","doc":null,"summary":null},{"id":"MSG","name":"MSG","value":"\"Use `#{ANY_NAME} {...}` instead of `%s {...}.#{ANY_NAME}`\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Performance","kind":"module","full_name":"Ameba::Rule::Performance","name":"Performance"},"doc":"This rule is used to identify usage of `any?` calls that follow filters.\n\nFor example, this is considered invalid:\n\n```\n[1, 2, 3].select { |e| e > 2 }.any?\n[1, 2, 3].reject { |e| e >= 2 }.any?\n```\n\nAnd it should be written as this:\n\n```\n[1, 2, 3].any? { |e| e > 2 }\n[1, 2, 3].any? { |e| e < 2 }\n```\n\nYAML configuration example:\n\n```\nPerformance/AnyAfterFilter:\n Enabled: true\n FilterNames:\n - select\n - reject\n```\n","summary":"
This rule is used to identify usage of any? calls that follow filters.
","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","args_html":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","location":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"This rule is used to identify usage of `any?` calls that follow filters.\n\nFor example, this is considered invalid:\n\n```\n[1, 2, 3].select { |e| e > 2 }.any?\n[1, 2, 3].reject { |e| e >= 2 }.any?\n```\n\nAnd it should be written as this:\n\n```\n[1, 2, 3].any? { |e| e > 2 }\n[1, 2, 3].any? { |e| e < 2 }\n```\n\nYAML configuration example:\n\n```\nPerformance/AnyAfterFilter:\n Enabled: true\n FilterNames:\n - select\n - reject\n```\n","summary":"
This rule is used to identify usage of any? calls that follow filters.
","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","args_html":"(config = nil)","location":{"filename":"src/ameba/rule/performance/any_after_filter.cr","line_number":28,"url":null},"def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","args_html":" : String","location":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","args_html":"(description : String)","location":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","args_html":" : Bool","location":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","args_html":"(enabled)","location":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","args_html":" : Array(String)?","location":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","args_html":"(excluded : Array(String)?)","location":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"filter_names:Array(String)-instance-method","html_id":"filter_names:Array(String)-instance-method","name":"filter_names","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)","args_html":" : Array(String)","location":null,"def":{"name":"filter_names","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String)","visibility":"Public","body":"@filter_names"}},{"id":"filter_names=(filter_names:Array(String))-instance-method","html_id":"filter_names=(filter_names:Array(String))-instance-method","name":"filter_names=","doc":null,"summary":null,"abstract":false,"args":[{"name":"filter_names","doc":null,"default_value":"","external_name":"filter_names","restriction":"Array(String)"}],"args_string":"(filter_names : Array(String))","args_html":"(filter_names : Array(String))","location":null,"def":{"name":"filter_names=","args":[{"name":"filter_names","doc":null,"default_value":"","external_name":"filter_names","restriction":"Array(String)"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@filter_names = filter_names"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","args_html":" : Ameba::Severity","location":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","args_html":"(severity)","location":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_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)","args_html":"(source, node : Crystal::Call)","location":{"filename":"src/ameba/rule/performance/any_after_filter.cr","line_number":37,"url":null},"def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Call"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (node.name == ANY_NAME) && (obj = node.obj)\nelse\n return\nend\nif ((node.block.nil? && obj.is_a?(Crystal::Call)) && (filter_names.includes?(obj.name))) && (!obj.block.nil?)\n issue_for(obj.name_location, node.name_end_location, MSG % obj.name)\nend\n"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Performance/FirstLastAfterFilter","path":"Ameba/Rule/Performance/FirstLastAfterFilter.html","kind":"struct","full_name":"Ameba::Rule::Performance::FirstLastAfterFilter","name":"FirstLastAfterFilter","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":null,"aliased_html":null,"const":false,"constants":[{"id":"CALL_NAMES","name":"CALL_NAMES","value":"[\"first\", \"last\", \"first?\", \"last?\"] of ::String","doc":null,"summary":null},{"id":"MSG","name":"MSG","value":"\"Use `find {...}` instead of `%s {...}.%s`\"","doc":null,"summary":null},{"id":"MSG_REVERSE","name":"MSG_REVERSE","value":"\"Use `reverse_each.find {...}` instead of `%s {...}.%s`\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Performance","kind":"module","full_name":"Ameba::Rule::Performance","name":"Performance"},"doc":"This rule is used to identify usage of `first/last/first?/last?` calls that follow filters.\n\nFor example, this is considered inefficient:\n\n```\n[-1, 0, 1, 2].select { |e| e > 0 }.first?\n[-1, 0, 1, 2].select { |e| e > 0 }.last?\n```\n\nAnd can be written as this:\n\n```\n[-1, 0, 1, 2].find { |e| e > 0 }\n[-1, 0, 1, 2].reverse_each.find { |e| e > 0 }\n```\n\nYAML configuration example:\n\n```\nPerformance/FirstLastAfterFilter\n Enabled: true\n FilterNames:\n - select\n```\n","summary":"
This rule is used to identify usage of first/last/first?/last? calls that follow filters.
","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","args_html":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","location":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"This rule is used to identify usage of `first/last/first?/last?` calls that follow filters.\n\nFor example, this is considered inefficient:\n\n```\n[-1, 0, 1, 2].select { |e| e > 0 }.first?\n[-1, 0, 1, 2].select { |e| e > 0 }.last?\n```\n\nAnd can be written as this:\n\n```\n[-1, 0, 1, 2].find { |e| e > 0 }\n[-1, 0, 1, 2].reverse_each.find { |e| e > 0 }\n```\n\nYAML configuration example:\n\n```\nPerformance/FirstLastAfterFilter\n Enabled: true\n FilterNames:\n - select\n```\n","summary":"
This rule is used to identify usage of first/last/first?/last? calls that follow filters.
","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","args_html":"(config = nil)","location":{"filename":"src/ameba/rule/performance/first_last_after_filter.cr","line_number":27,"url":null},"def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","args_html":" : String","location":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","args_html":"(description : String)","location":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","args_html":" : Bool","location":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","args_html":"(enabled)","location":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","args_html":" : Array(String)?","location":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","args_html":"(excluded : Array(String)?)","location":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"filter_names:Array(String)-instance-method","html_id":"filter_names:Array(String)-instance-method","name":"filter_names","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)","args_html":" : Array(String)","location":null,"def":{"name":"filter_names","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String)","visibility":"Public","body":"@filter_names"}},{"id":"filter_names=(filter_names:Array(String))-instance-method","html_id":"filter_names=(filter_names:Array(String))-instance-method","name":"filter_names=","doc":null,"summary":null,"abstract":false,"args":[{"name":"filter_names","doc":null,"default_value":"","external_name":"filter_names","restriction":"Array(String)"}],"args_string":"(filter_names : Array(String))","args_html":"(filter_names : Array(String))","location":null,"def":{"name":"filter_names=","args":[{"name":"filter_names","doc":null,"default_value":"","external_name":"filter_names","restriction":"Array(String)"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@filter_names = filter_names"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","args_html":" : Ameba::Severity","location":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","args_html":"(severity)","location":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_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)","args_html":"(source, node : Crystal::Call)","location":{"filename":"src/ameba/rule/performance/first_last_after_filter.cr","line_number":46,"url":null},"def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Call"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (CALL_NAMES.includes?(node.name)) && (obj = node.obj)\nelse\n return\nend\nif node.args.any?\n return\nend\nif ((node.block.nil? && obj.is_a?(Crystal::Call)) && (filter_names.includes?(obj.name))) && (!obj.block.nil?)\n message = node.name.includes?(CALL_NAMES.first) ? MSG : MSG_REVERSE\n issue_for(obj.name_location, node.name_end_location, message % {obj.name, node.name})\nend\n"}},{"id":"test(source)-instance-method","html_id":"test(source)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"args_string":"(source)","args_html":"(source)","location":{"filename":"src/ameba/rule/performance/first_last_after_filter.cr","line_number":37,"url":null},"def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"AST::NodeVisitor.new(self, source, skip: [Crystal::Macro, Crystal::MacroExpression, Crystal::MacroIf, Crystal::MacroFor])"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Performance/SizeAfterFilter","path":"Ameba/Rule/Performance/SizeAfterFilter.html","kind":"struct","full_name":"Ameba::Rule::Performance::SizeAfterFilter","name":"SizeAfterFilter","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":null,"aliased_html":null,"const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Use `count {...}` instead of `%s {...}.#{SIZE_NAME}`.\"","doc":null,"summary":null},{"id":"SIZE_NAME","name":"SIZE_NAME","value":"\"size\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Performance","kind":"module","full_name":"Ameba::Rule::Performance","name":"Performance"},"doc":"This rule is used to identify usage of `size` calls that follow filter.\n\nFor example, this is considered invalid:\n\n```\n[1, 2, 3].select { |e| e > 2 }.size\n[1, 2, 3].reject { |e| e < 2 }.size\n[1, 2, 3].select(&.< 2).size\n[0, 1, 2].select(&.zero?).size\n[0, 1, 2].reject(&.zero?).size\n```\n\nAnd it should be written as this:\n\n```\n[1, 2, 3].count { |e| e > 2 }\n[1, 2, 3].count { |e| e >= 2 }\n[1, 2, 3].count(&.< 2)\n[0, 1, 2].count(&.zero?)\n[0, 1, 2].count(&.!= 0)\n```\n\nYAML configuration example:\n\n```\nPerformance/SizeAfterFilter:\n Enabled: true\n FilterNames:\n - select\n - reject\n```\n","summary":"
This rule is used to identify usage of size calls that follow filter.
","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","args_html":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","location":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"This rule is used to identify usage of `size` calls that follow filter.\n\nFor example, this is considered invalid:\n\n```\n[1, 2, 3].select { |e| e > 2 }.size\n[1, 2, 3].reject { |e| e < 2 }.size\n[1, 2, 3].select(&.< 2).size\n[0, 1, 2].select(&.zero?).size\n[0, 1, 2].reject(&.zero?).size\n```\n\nAnd it should be written as this:\n\n```\n[1, 2, 3].count { |e| e > 2 }\n[1, 2, 3].count { |e| e >= 2 }\n[1, 2, 3].count(&.< 2)\n[0, 1, 2].count(&.zero?)\n[0, 1, 2].count(&.!= 0)\n```\n\nYAML configuration example:\n\n```\nPerformance/SizeAfterFilter:\n Enabled: true\n FilterNames:\n - select\n - reject\n```\n","summary":"
This rule is used to identify usage of size calls that follow filter.
","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","args_html":"(config = nil)","location":{"filename":"src/ameba/rule/performance/size_after_filter.cr","line_number":34,"url":null},"def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","args_html":" : String","location":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","args_html":"(description : String)","location":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","args_html":" : Bool","location":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","args_html":"(enabled)","location":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","args_html":" : Array(String)?","location":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","args_html":"(excluded : Array(String)?)","location":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"filter_names:Array(String)-instance-method","html_id":"filter_names:Array(String)-instance-method","name":"filter_names","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)","args_html":" : Array(String)","location":null,"def":{"name":"filter_names","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String)","visibility":"Public","body":"@filter_names"}},{"id":"filter_names=(filter_names:Array(String))-instance-method","html_id":"filter_names=(filter_names:Array(String))-instance-method","name":"filter_names=","doc":null,"summary":null,"abstract":false,"args":[{"name":"filter_names","doc":null,"default_value":"","external_name":"filter_names","restriction":"Array(String)"}],"args_string":"(filter_names : Array(String))","args_html":"(filter_names : Array(String))","location":null,"def":{"name":"filter_names=","args":[{"name":"filter_names","doc":null,"default_value":"","external_name":"filter_names","restriction":"Array(String)"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@filter_names = filter_names"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","args_html":" : Ameba::Severity","location":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","args_html":"(severity)","location":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_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)","args_html":"(source, node : Crystal::Call)","location":{"filename":"src/ameba/rule/performance/size_after_filter.cr","line_number":52,"url":null},"def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Call"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (node.name == SIZE_NAME) && (obj = node.obj)\nelse\n return\nend\nif (obj.is_a?(Crystal::Call) && (filter_names.includes?(obj.name))) && (!obj.block.nil?)\n issue_for(obj.name_location, node.name_end_location, MSG % obj.name)\nend\n"}},{"id":"test(source)-instance-method","html_id":"test(source)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"args_string":"(source)","args_html":"(source)","location":{"filename":"src/ameba/rule/performance/size_after_filter.cr","line_number":43,"url":null},"def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"AST::NodeVisitor.new(self, source, skip: [Crystal::Macro, Crystal::MacroExpression, Crystal::MacroIf, Crystal::MacroFor])"}}],"macros":[],"types":[]}]},{"html_id":"ameba/Ameba/Rule/Style","path":"Ameba/Rule/Style.html","kind":"module","full_name":"Ameba::Rule::Style","name":"Style","abstract":false,"superclass":null,"ancestors":[],"locations":[],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":null,"aliased_html":null,"const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule","kind":"module","full_name":"Ameba::Rule","name":"Rule"},"doc":null,"summary":null,"class_methods":[],"constructors":[],"instance_methods":[],"macros":[],"types":[{"html_id":"ameba/Ameba/Rule/Style/ConstantNames","path":"Ameba/Rule/Style/ConstantNames.html","kind":"struct","full_name":"Ameba::Rule::Style::ConstantNames","name":"ConstantNames","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":null,"aliased_html":null,"const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Constant name should be screaming-cased: %s, not %s\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Style","kind":"module","full_name":"Ameba::Rule::Style","name":"Style"},"doc":"A rule that enforces constant names to be in screaming case.\n\nFor example, these constant names are considered valid:\n\n```\nLUCKY_NUMBERS = [3, 7, 11]\nDOCUMENTATION_URL = \"http://crystal-lang.org/docs\"\n```\n\nAnd these are invalid names:\n\n```\nmyBadConstant = 1\nWrong_NAME = 2\n```\n\nYAML configuration example:\n\n```\nStyle/ConstantNames:\n Enabled: true\n```\n","summary":"
A rule that enforces constant names to be in screaming case.
","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","args_html":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","location":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_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)","args_html":"(config = nil)","location":{"filename":"src/ameba/rule/style/constant_names.cr","line_number":25,"url":null},"def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","args_html":" : String","location":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","args_html":"(description : String)","location":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","args_html":" : Bool","location":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","args_html":"(enabled)","location":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","args_html":" : Array(String)?","location":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","args_html":"(excluded : Array(String)?)","location":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","args_html":" : Ameba::Severity","location":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","args_html":"(severity)","location":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_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)","args_html":"(source, node : Crystal::Assign)","location":{"filename":"src/ameba/rule/style/constant_names.cr","line_number":32,"url":null},"def":{"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":[],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":null,"aliased_html":null,"const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Use `nil?` instead of `is_a?(Nil)`\"","doc":null,"summary":null},{"id":"PATH_NIL_NAMES","name":"PATH_NIL_NAMES","value":"[\"Nil\"] of ::String","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Style","kind":"module","full_name":"Ameba::Rule::Style","name":"Style"},"doc":"A rule that disallows calls to `is_a?(Nil)` in favor of `nil?`.\n\nThis is considered bad:\n\n```\nvar.is_a? Nil\n```\n\nAnd needs to be written as:\n\n```\nvar.nil?\n```\n\nYAML configuration example:\n\n```\nStyle/IsANil:\n Enabled: true\n```\n","summary":"
A rule that disallows calls to is_a?(Nil) in favor of nil?.
","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","args_html":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","location":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows calls to `is_a?(Nil)` in favor of `nil?`.\n\nThis is considered bad:\n\n```\nvar.is_a? Nil\n```\n\nAnd needs to be written as:\n\n```\nvar.nil?\n```\n\nYAML configuration example:\n\n```\nStyle/IsANil:\n Enabled: true\n```\n","summary":"
A rule that disallows calls to is_a?(Nil) in favor of nil?.
","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","args_html":"(config = nil)","location":{"filename":"src/ameba/rule/style/is_a_nil.cr","line_number":23,"url":null},"def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","args_html":" : String","location":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","args_html":"(description : String)","location":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","args_html":" : Bool","location":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","args_html":"(enabled)","location":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","args_html":" : Array(String)?","location":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","args_html":"(excluded : Array(String)?)","location":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","args_html":" : Ameba::Severity","location":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","args_html":"(severity)","location":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node:Crystal::IsA)-instance-method","html_id":"test(source,node:Crystal::IsA)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::IsA"}],"args_string":"(source, node : Crystal::IsA)","args_html":"(source, node : Crystal::IsA)","location":{"filename":"src/ameba/rule/style/is_a_nil.cr","line_number":31,"url":null},"def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::IsA"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if node.nil_check?\n return\nend\nconst = node.const\nif const.is_a?(Crystal::Path) && (const.names == PATH_NIL_NAMES)\n issue_for(const, MSG)\nend\n"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Style/LargeNumbers","path":"Ameba/Rule/Style/LargeNumbers.html","kind":"struct","full_name":"Ameba::Rule::Style::LargeNumbers","name":"LargeNumbers","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":null,"aliased_html":null,"const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Large numbers should be written with underscores: %s\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Style","kind":"module","full_name":"Ameba::Rule::Style","name":"Style"},"doc":"A rule that disallows usage of large numbers without underscore.\nThese do not affect the value of the number, but can help read\nlarge numbers more easily.\n\nFor example, these are considered invalid:\n\n```\n10000\n141592654\n5.12345\n```\n\nAnd has to be rewritten as the following:\n\n```\n10_000\n141_592_654\n5.123_45\n```\n\nYAML configuration example:\n\n```\nStyle/LargeNumbers:\n Enabled: true\n IntMinDigits: 5 # i.e. integers higher than 9999\n```\n","summary":"
A rule that disallows usage of large numbers without underscore.
","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","args_html":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","location":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_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)","args_html":"(config = nil)","location":{"filename":"src/ameba/rule/style/large_numbers.cr","line_number":30,"url":null},"def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","args_html":" : String","location":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","args_html":"(description : String)","location":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","args_html":" : Bool","location":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)","args_html":"(enabled : Bool)","location":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)?","args_html":" : Array(String)?","location":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","args_html":"(excluded : Array(String)?)","location":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"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","args_html":" : Int32","location":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)","args_html":"(int_min_digits : Int32)","location":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","args_html":" : Ameba::Severity","location":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","args_html":"(severity)","location":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_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)","args_html":"(source)","location":{"filename":"src/ameba/rule/style/large_numbers.cr","line_number":39,"url":null},"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":[],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":null,"aliased_html":null,"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)","args_html":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","location":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_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)","args_html":"(config = nil)","location":{"filename":"src/ameba/rule/style/method_names.cr","line_number":41,"url":null},"def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","args_html":" : String","location":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","args_html":"(description : String)","location":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","args_html":" : Bool","location":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","args_html":"(enabled)","location":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","args_html":" : Array(String)?","location":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","args_html":"(excluded : Array(String)?)","location":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","args_html":" : Ameba::Severity","location":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","args_html":"(severity)","location":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_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)","args_html":"(source, node : Crystal::Def)","location":{"filename":"src/ameba/rule/style/method_names.cr","line_number":48,"url":null},"def":{"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":[],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":null,"aliased_html":null,"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)","args_html":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","location":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_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)","args_html":"(config = nil)","location":{"filename":"src/ameba/rule/style/negated_conditions_in_unless.cr","line_number":30,"url":null},"def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","args_html":" : String","location":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","args_html":"(description : String)","location":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","args_html":" : Bool","location":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","args_html":"(enabled)","location":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","args_html":" : Array(String)?","location":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","args_html":"(excluded : Array(String)?)","location":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","args_html":" : Ameba::Severity","location":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","args_html":"(severity)","location":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_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)","args_html":"(source, node : Crystal::Unless)","location":{"filename":"src/ameba/rule/style/negated_conditions_in_unless.cr","line_number":37,"url":null},"def":{"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":[],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":null,"aliased_html":null,"const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Favour method name '%s?' over '%s'\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Style","kind":"module","full_name":"Ameba::Rule::Style","name":"Style"},"doc":"A rule that disallows tautological predicate names, meaning those that\nstart with the prefix `has_` or the prefix `is_`. Ignores if the alternative isn't valid Crystal code (e.g. `is_404?`).\n\nFavour these:\n\n```\ndef valid?(x)\nend\n\ndef picture?(x)\nend\n```\n\nOver these:\n\n```\ndef is_valid?(x)\nend\n\ndef has_picture?(x)\nend\n```\n\nYAML configuration example:\n\n```\nStyle/PredicateName:\n Enabled: true\n```\n","summary":"
A rule that disallows tautological predicate names, meaning those that start with the prefix has_ or the prefix is_.
","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","args_html":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","location":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows tautological predicate names, meaning those that\nstart with the prefix `has_` or the prefix `is_`. Ignores if the alternative isn't valid Crystal code (e.g. `is_404?`).\n\nFavour these:\n\n```\ndef valid?(x)\nend\n\ndef picture?(x)\nend\n```\n\nOver these:\n\n```\ndef is_valid?(x)\nend\n\ndef has_picture?(x)\nend\n```\n\nYAML configuration example:\n\n```\nStyle/PredicateName:\n Enabled: true\n```\n","summary":"
A rule that disallows tautological predicate names, meaning those that start with the prefix has_ or the prefix is_.
","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","args_html":"(config = nil)","location":{"filename":"src/ameba/rule/style/predicate_name.cr","line_number":32,"url":null},"def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","args_html":" : String","location":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","args_html":"(description : String)","location":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","args_html":" : Bool","location":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)","args_html":"(enabled : Bool)","location":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)?","args_html":" : Array(String)?","location":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","args_html":"(excluded : Array(String)?)","location":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","args_html":" : Ameba::Severity","location":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","args_html":"(severity)","location":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_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)","args_html":"(source, node : Crystal::Def)","location":{"filename":"src/ameba/rule/style/predicate_name.cr","line_number":40,"url":null},"def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Def"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if node.name =~ (/^(is|has)_(\\w+)\\?/)\n alternative = $~[2]\n if alternative =~ (/^[a-z][a-zA-Z_0-9]*$/)\n else\n return\n end\n issue_for(node, MSG % {alternative, node.name})\nend"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Style/RedundantBegin","path":"Ameba/Rule/Style/RedundantBegin.html","kind":"struct","full_name":"Ameba::Rule::Style::RedundantBegin","name":"RedundantBegin","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/Ameba/AST/Util","kind":"module","full_name":"Ameba::AST::Util","name":"Util"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":null,"aliased_html":null,"const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Redundant `begin` block detected\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/Ameba/AST/Util","kind":"module","full_name":"Ameba::AST::Util","name":"Util"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Style","kind":"module","full_name":"Ameba::Rule::Style","name":"Style"},"doc":"A rule that disallows redundant begin blocks.\n\nCurrently it is able to detect:\n\n1. Exception handler block that can be used as a part of the method.\n\nFor example, this:\n\n```\ndef method\n begin\n read_content\n rescue\n close_file\n end\nend\n```\n\nshould be rewritten as:\n\n```\ndef method\n read_content\nrescue\n close_file\nend\n```\n\n2. begin..end block as a top level block in a method.\n\nFor example this is considered invalid:\n\n```\ndef method\n begin\n a = 1\n b = 2\n end\nend\n```\n\nand has to be written as the following:\n\n```\ndef method\n a = 1\n b = 2\nend\n```\n\nYAML configuration example:\n\n```\nStyle/RedundantBegin:\n Enabled: true\n```\n","summary":"
A rule that disallows redundant begin blocks.
","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","args_html":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","location":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_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)","args_html":"(config = nil)","location":{"filename":"src/ameba/rule/style/redundant_begin.cr","line_number":59,"url":null},"def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","args_html":" : String","location":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","args_html":"(description : String)","location":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","args_html":" : Bool","location":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","args_html":"(enabled)","location":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","args_html":" : Array(String)?","location":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","args_html":"(excluded : Array(String)?)","location":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","args_html":" : Ameba::Severity","location":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","args_html":"(severity)","location":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_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)","args_html":"(source, node : Crystal::Def)","location":{"filename":"src/ameba/rule/style/redundant_begin.cr","line_number":67,"url":null},"def":{"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":[],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":null,"aliased_html":null,"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)","args_html":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","location":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_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)","args_html":"(config = nil)","location":{"filename":"src/ameba/rule/style/redundant_next.cr","line_number":99,"url":null},"def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"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","args_html":" : Bool","location":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)","args_html":"(allow_empty_next : Bool)","location":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","args_html":" : Bool","location":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)","args_html":"(allow_multi_next : Bool)","location":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","args_html":" : String","location":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","args_html":"(description : String)","location":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","args_html":" : Bool","location":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","args_html":"(enabled)","location":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","args_html":" : Array(String)?","location":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","args_html":"(excluded : Array(String)?)","location":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","args_html":" : Ameba::Severity","location":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","args_html":"(severity)","location":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_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)","args_html":"(source, node : Crystal::Next, visitor : AST::RedundantControlExpressionVisitor)","location":{"filename":"src/ameba/rule/style/redundant_next.cr","line_number":112,"url":null},"def":{"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)","args_html":"(source, node : Crystal::Block)","location":{"filename":"src/ameba/rule/style/redundant_next.cr","line_number":108,"url":null},"def":{"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":[],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":null,"aliased_html":null,"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)","args_html":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","location":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_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)","args_html":"(config = nil)","location":{"filename":"src/ameba/rule/style/redundant_return.cr","line_number":96,"url":null},"def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"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","args_html":" : Bool","location":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)","args_html":"(allow_empty_return : Bool)","location":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","args_html":" : Bool","location":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)","args_html":"(allow_multi_return : Bool)","location":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","args_html":" : String","location":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","args_html":"(description : String)","location":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","args_html":" : Bool","location":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","args_html":"(enabled)","location":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","args_html":" : Array(String)?","location":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","args_html":"(excluded : Array(String)?)","location":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","args_html":" : Ameba::Severity","location":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","args_html":"(severity)","location":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_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)","args_html":"(source, node : Crystal::Return, visitor : AST::RedundantControlExpressionVisitor)","location":{"filename":"src/ameba/rule/style/redundant_return.cr","line_number":109,"url":null},"def":{"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)","args_html":"(source, node : Crystal::Def)","location":{"filename":"src/ameba/rule/style/redundant_return.cr","line_number":105,"url":null},"def":{"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":[],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":null,"aliased_html":null,"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)","args_html":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","location":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_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)","args_html":"(config = nil)","location":{"filename":"src/ameba/rule/style/type_names.cr","line_number":55,"url":null},"def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","args_html":" : String","location":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","args_html":"(description : String)","location":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","args_html":" : Bool","location":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","args_html":"(enabled)","location":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","args_html":" : Array(String)?","location":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","args_html":"(excluded : Array(String)?)","location":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","args_html":" : Ameba::Severity","location":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","args_html":"(severity)","location":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_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)","args_html":"(source, node : Crystal::ClassDef)","location":{"filename":"src/ameba/rule/style/type_names.cr","line_number":70,"url":null},"def":{"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)","args_html":"(source, node : Crystal::Alias)","location":{"filename":"src/ameba/rule/style/type_names.cr","line_number":74,"url":null},"def":{"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)","args_html":"(source, node : Crystal::LibDef)","location":{"filename":"src/ameba/rule/style/type_names.cr","line_number":78,"url":null},"def":{"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)","args_html":"(source, node : Crystal::EnumDef)","location":{"filename":"src/ameba/rule/style/type_names.cr","line_number":82,"url":null},"def":{"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)","args_html":"(source, node : Crystal::ModuleDef)","location":{"filename":"src/ameba/rule/style/type_names.cr","line_number":86,"url":null},"def":{"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":[],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":null,"aliased_html":null,"const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Favour if over unless with else\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Style","kind":"module","full_name":"Ameba::Rule::Style","name":"Style"},"doc":"A rule that disallows the use of an `else` block with the `unless`.\n\nFor example, the rule considers these valid:\n\n```\nunless something\n :ok\nend\n\nif something\n :one\nelse\n :two\nend\n```\n\nBut it considers this one invalid as it is an `unless` with an `else`:\n\n```\nunless something\n :one\nelse\n :two\nend\n```\n\nThe solution is to swap the order of the blocks, and change the `unless` to\nan `if`, so the previous invalid example would become this:\n\n```\nif something\n :two\nelse\n :one\nend\n```\n\nYAML configuration example:\n\n```\nStyle/UnlessElse:\n Enabled: true\n```\n","summary":"
A rule that disallows the use of an else block with the unless.
","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","args_html":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","location":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows the use of an `else` block with the `unless`.\n\nFor example, the rule considers these valid:\n\n```\nunless something\n :ok\nend\n\nif something\n :one\nelse\n :two\nend\n```\n\nBut it considers this one invalid as it is an `unless` with an `else`:\n\n```\nunless something\n :one\nelse\n :two\nend\n```\n\nThe solution is to swap the order of the blocks, and change the `unless` to\nan `if`, so the previous invalid example would become this:\n\n```\nif something\n :two\nelse\n :one\nend\n```\n\nYAML configuration example:\n\n```\nStyle/UnlessElse:\n Enabled: true\n```\n","summary":"
A rule that disallows the use of an else block with the unless.
","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","args_html":"(config = nil)","location":{"filename":"src/ameba/rule/style/unless_else.cr","line_number":46,"url":null},"def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","args_html":" : String","location":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","args_html":"(description : String)","location":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","args_html":" : Bool","location":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","args_html":"(enabled)","location":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","args_html":" : Array(String)?","location":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","args_html":"(excluded : Array(String)?)","location":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","args_html":" : Ameba::Severity","location":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","args_html":"(severity)","location":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_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)","args_html":"(source, node : Crystal::Unless)","location":{"filename":"src/ameba/rule/style/unless_else.cr","line_number":53,"url":null},"def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Unless"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if node.else.nop?\n return\nend\nissue_for(node, MSG)\n"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Style/VariableNames","path":"Ameba/Rule/Style/VariableNames.html","kind":"struct","full_name":"Ameba::Rule::Style::VariableNames","name":"VariableNames","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":null,"aliased_html":null,"const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Var name should be underscore-cased: %s, not %s\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Style","kind":"module","full_name":"Ameba::Rule::Style","name":"Style"},"doc":"A rule that enforces variable names to be in underscored case.\n\nFor example, these variable names are considered valid:\n\n```\nvar_name = 1\nname = 2\n_another_good_name = 3\n```\n\nAnd these are invalid variable names:\n\n```\nmyBadNamedVar = 1\nwrong_Name = 2\n```\n\nYAML configuration example:\n\n```\nStyle/VariableNames:\n Enabled: true\n```\n","summary":"
A rule that enforces variable names to be in underscored case.
","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","args_html":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","location":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_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)","args_html":"(config = nil)","location":{"filename":"src/ameba/rule/style/variable_names.cr","line_number":26,"url":null},"def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","args_html":" : String","location":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","args_html":"(description : String)","location":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","args_html":" : Bool","location":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","args_html":"(enabled)","location":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","args_html":" : Array(String)?","location":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","args_html":"(excluded : Array(String)?)","location":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","args_html":" : Ameba::Severity","location":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","args_html":"(severity)","location":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_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)","args_html":"(source, node : Crystal::Var)","location":{"filename":"src/ameba/rule/style/variable_names.cr","line_number":39,"url":null},"def":{"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)","args_html":"(source, node : Crystal::InstanceVar)","location":{"filename":"src/ameba/rule/style/variable_names.cr","line_number":43,"url":null},"def":{"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)","args_html":"(source, node : Crystal::ClassVar)","location":{"filename":"src/ameba/rule/style/variable_names.cr","line_number":47,"url":null},"def":{"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":[],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":null,"aliased_html":null,"const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"While statement using true literal as condition\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Style","kind":"module","full_name":"Ameba::Rule::Style","name":"Style"},"doc":"A rule that disallows the use of `while true` instead of using the idiomatic `loop`\n\nFor example, this is considered invalid:\n\n```\nwhile true\n do_something\n break if some_condition\nend\n```\n\nAnd should be replaced by the following:\n\n```\nloop do\n do_something\n break if some_condition\nend\n```\n\nYAML configuration example:\n\n```\nStyle/WhileTrue:\n Enabled: true\n```\n","summary":"
A rule that disallows the use of while true instead of using the idiomatic loop
","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","args_html":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","location":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows the use of `while true` instead of using the idiomatic `loop`\n\nFor example, this is considered invalid:\n\n```\nwhile true\n do_something\n break if some_condition\nend\n```\n\nAnd should be replaced by the following:\n\n```\nloop do\n do_something\n break if some_condition\nend\n```\n\nYAML configuration example:\n\n```\nStyle/WhileTrue:\n Enabled: true\n```\n","summary":"
A rule that disallows the use of while true instead of using the idiomatic loop
","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","args_html":"(config = nil)","location":{"filename":"src/ameba/rule/style/while_true.cr","line_number":29,"url":null},"def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","args_html":" : String","location":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","args_html":"(description : String)","location":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","args_html":" : Bool","location":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","args_html":"(enabled)","location":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","args_html":" : Array(String)?","location":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","args_html":"(excluded : Array(String)?)","location":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","args_html":" : Ameba::Severity","location":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","args_html":"(severity)","location":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node:Crystal::While)-instance-method","html_id":"test(source,node:Crystal::While)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::While"}],"args_string":"(source, node : Crystal::While)","args_html":"(source, node : Crystal::While)","location":{"filename":"src/ameba/rule/style/while_true.cr","line_number":36,"url":null},"def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::While"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if node.cond.true_literal?\nelse\n return\nend\nissue_for(node, MSG)\n"}}],"macros":[],"types":[]}]}]},{"html_id":"ameba/Ameba/Runner","path":"Ameba/Runner.html","kind":"class","full_name":"Ameba::Runner","name":"Runner","abstract":false,"superclass":{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},"ancestors":[{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":null,"aliased_html":null,"const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba","kind":"module","full_name":"Ameba","name":"Ameba"},"doc":"Represents a runner for inspecting sources files.\nHolds a list of rules to do inspection based on,\nlist of sources to run inspection on and a formatter\nto prepare a report.\n\n```\nconfig = Ameba::Config.load\nrunner = Ameba::Runner.new config\nrunner.run.success? # => true or false\n```\n","summary":"
Represents a runner for inspecting sources files.
","class_methods":[],"constructors":[{"id":"new(config:Config)-class-method","html_id":"new(config:Config)-class-method","name":"new","doc":"Instantiates a runner using a `config`.\n\n```\nconfig = Ameba::Config.load\nconfig.files = files\nconfig.formatter = formatter\n\nAmeba::Runner.new config\n```\n","summary":"
Instantiates a runner using a config.
","abstract":false,"args":[{"name":"config","doc":null,"default_value":"","external_name":"config","restriction":"Config"}],"args_string":"(config : Config)","args_html":"(config : Config)","location":{"filename":"src/ameba/runner.cr","line_number":42,"url":null},"def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"","external_name":"config","restriction":"Config"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"_ = allocate\n_.initialize(config)\nif _.responds_to?(:finalize)\n ::GC.add_finalizer(_)\nend\n_\n"}}],"instance_methods":[{"id":"explain(location,output=STDOUT)-instance-method","html_id":"explain(location,output=STDOUT)-instance-method","name":"explain","doc":"Explains an issue at a specified *location*.\n\nRunner should perform inspection before doing the explain.\nThis is necessary to be able to find the issue at a specified location.\n\n```\nrunner = Ameba::Runner.new config\nrunner.run\nrunner.explain({file: file, line: l, column: c})\n```\n","summary":"
Explains an issue at a specified location.
","abstract":false,"args":[{"name":"location","doc":null,"default_value":"","external_name":"location","restriction":""},{"name":"output","doc":null,"default_value":"STDOUT","external_name":"output","restriction":""}],"args_string":"(location, output = STDOUT)","args_html":"(location, output = STDOUT)","location":{"filename":"src/ameba/runner.cr","line_number":118,"url":null},"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":"","args_html":"","location":{"filename":"src/ameba/runner.cr","line_number":69,"url":null},"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)","args_html":" : Array(Source)","location":{"filename":"src/ameba/runner.cr","line_number":18,"url":null},"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":"","args_html":"","location":{"filename":"src/ameba/runner.cr","line_number":131,"url":null},"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":[],"repository_name":"ameba","program":false,"enum":true,"alias":false,"aliased":null,"aliased_html":null,"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)","args_html":"(name : String)","location":{"filename":"src/ameba/severity.cr","line_number":23,"url":null},"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":"","args_html":"","location":{"filename":"src/ameba/severity.cr","line_number":5,"url":null},"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":"","args_html":"","location":{"filename":"src/ameba/severity.cr","line_number":3,"url":null},"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":"","args_html":"","location":{"filename":"src/ameba/severity.cr","line_number":12,"url":null},"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":"","args_html":"","location":{"filename":"src/ameba/severity.cr","line_number":4,"url":null},"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":[],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":null,"aliased_html":null,"const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba","kind":"module","full_name":"Ameba","name":"Ameba"},"doc":"Converter for `YAML.mapping` which converts severity enum to and from YAML.","summary":"
Converter for YAML.mapping which converts severity enum to and from YAML.
","class_methods":[{"id":"from_yaml(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"from_yaml(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"from_yaml","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","args_html":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","location":{"filename":"src/ameba/severity.cr","line_number":32,"url":null},"def":{"name":"from_yaml","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if node.is_a?(YAML::Nodes::Scalar)\nelse\n raise(\"Severity must be a scalar, not #{node.class}\")\nend\ncase value = node.value\nwhen String\n Severity.parse(value)\nwhen Nil\n nil\nelse\n raise(\"Incorrect severity: #{value}\")\nend\n"}},{"id":"to_yaml(value:Severity,yaml:YAML::Nodes::Builder)-class-method","html_id":"to_yaml(value:Severity,yaml:YAML::Nodes::Builder)-class-method","name":"to_yaml","doc":null,"summary":null,"abstract":false,"args":[{"name":"value","doc":null,"default_value":"","external_name":"value","restriction":"Severity"},{"name":"yaml","doc":null,"default_value":"","external_name":"yaml","restriction":"YAML::Nodes::Builder"}],"args_string":"(value : Severity, yaml : YAML::Nodes::Builder)","args_html":"(value : Severity, yaml : YAML::Nodes::Builder)","location":{"filename":"src/ameba/severity.cr","line_number":45,"url":null},"def":{"name":"to_yaml","args":[{"name":"value","doc":null,"default_value":"","external_name":"value","restriction":"Severity"},{"name":"yaml","doc":null,"default_value":"","external_name":"yaml","restriction":"YAML::Nodes::Builder"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"yaml.scalar(value)"}}],"constructors":[],"instance_methods":[],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Source","path":"Ameba/Source.html","kind":"class","full_name":"Ameba::Source","name":"Source","abstract":false,"superclass":{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},"ancestors":[{"html_id":"ameba/Ameba/Reportable","kind":"module","full_name":"Ameba::Reportable","name":"Reportable"},{"html_id":"ameba/Ameba/InlineComments","kind":"module","full_name":"Ameba::InlineComments","name":"InlineComments"},{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":null,"aliased_html":null,"const":false,"constants":[],"included_modules":[{"html_id":"ameba/Ameba/InlineComments","kind":"module","full_name":"Ameba::InlineComments","name":"InlineComments"},{"html_id":"ameba/Ameba/Reportable","kind":"module","full_name":"Ameba::Reportable","name":"Reportable"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba","kind":"module","full_name":"Ameba","name":"Ameba"},"doc":"An entity that represents a Crystal source file.\nHas path, lines of code and issues reported by rules.","summary":"
An entity that represents a Crystal source file.
","class_methods":[],"constructors":[{"id":"new(code:String,path="")-class-method","html_id":"new(code:String,path="")-class-method","name":"new","doc":"Creates a new source by `code` and `path`.\n\nFor example:\n\n```\npath = \"./src/source.cr\"\nAmeba::Source.new File.read(path), path\n```\n","summary":"
","abstract":false,"args":[],"args_string":"","args_html":"","location":{"filename":"src/ameba/source.cr","line_number":52,"url":null},"def":{"name":"ast","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@ast || (@ast = (Crystal::Parser.new(code)).tap do |parser|\n parser.wants_doc = true\nend.tap do |parser|\n parser.filename = @path\nend.parse)"}},{"id":"code:String-instance-method","html_id":"code:String-instance-method","name":"code","doc":"Crystal code (content of a source file).","summary":"
Crystal code (content of a source file).
","abstract":false,"args":[],"args_string":" : String","args_html":" : String","location":{"filename":"src/ameba/source.cr","line_number":12,"url":null},"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":"","args_html":"","location":{"filename":"src/ameba/source.cr","line_number":60,"url":null},"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":"","args_html":"","location":{"filename":"src/ameba/source.cr","line_number":41,"url":null},"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)","args_html":"(filepath)","location":{"filename":"src/ameba/source.cr","line_number":65,"url":null},"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","args_html":" : String","location":{"filename":"src/ameba/source.cr","line_number":9,"url":null},"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":[],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":null,"aliased_html":null,"const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba","kind":"module","full_name":"Ameba","name":"Ameba"},"doc":"Represents Crystal syntax tokenizer based on `Crystal::Lexer`.\n\n```\nsource = Ameba::Source.new code, path\ntokenizer = Ameba::Tokenizer.new(source)\ntokenizer.run do |token|\n puts token\nend\n```\n","summary":"
Represents Crystal syntax tokenizer based on Crystal::Lexer.
","class_methods":[],"constructors":[{"id":"new(lexer:Crystal::Lexer)-class-method","html_id":"new(lexer:Crystal::Lexer)-class-method","name":"new","doc":"Instantiates Tokenizer using a `lexer`.\n\n```\nlexer = Crystal::Lexer.new(code)\nAmeba::Tokenizer.new(lexer)\n```\n","summary":"
Instantiates Tokenizer using a lexer.
","abstract":false,"args":[{"name":"lexer","doc":null,"default_value":"","external_name":"lexer","restriction":"Crystal::Lexer"}],"args_string":"(lexer : Crystal::Lexer)","args_html":"(lexer : Crystal::Lexer)","location":{"filename":"src/ameba/tokenizer.cr","line_number":37,"url":null},"def":{"name":"new","args":[{"name":"lexer","doc":null,"default_value":"","external_name":"lexer","restriction":"Crystal::Lexer"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"_ = allocate\n_.initialize(lexer)\nif _.responds_to?(:finalize)\n ::GC.add_finalizer(_)\nend\n_\n"}},{"id":"new(source)-class-method","html_id":"new(source)-class-method","name":"new","doc":"Instantiates Tokenizer using a `source`.\n\n```\nsource = Ameba::Source.new code, path\nAmeba::Tokenizer.new(source)\n```\n","summary":"
Instantiates Tokenizer using a source.
","abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"args_string":"(source)","args_html":"(source)","location":{"filename":"src/ameba/tokenizer.cr","line_number":22,"url":null},"def":{"name":"new","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"_ = allocate\n_.initialize(source)\nif _.responds_to?(:finalize)\n ::GC.add_finalizer(_)\nend\n_\n"}}],"instance_methods":[{"id":"run(&block:Crystal::Token->_)-instance-method","html_id":"run(&block:Crystal::Token->_)-instance-method","name":"run","doc":"Runs the tokenizer and yields each token as a block argument.\n\n```\nAmeba::Tokenizer.new(source).run do |token|\n puts token\nend\n```\n","summary":"
Runs the tokenizer and yields each token as a block argument.
","abstract":false,"args":[],"args_string":"(&block : Crystal::Token -> _)","args_html":"(&block : Crystal::Token -> _)","location":{"filename":"src/ameba/tokenizer.cr","line_number":48,"url":null},"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/bedf3a68/src/ameba.cr#L24"},{"filename":"src/ameba/glob_utils.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/glob_utils.cr#L1"},{"filename":"src/ameba/inline_comments.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/inline_comments.cr#L1"},{"filename":"src/ameba/issue.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/issue.cr#L1"},{"filename":"src/ameba/reportable.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/reportable.cr#L1"},{"filename":"src/ameba/runner.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/runner.cr#L1"},{"filename":"src/ameba/severity.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/severity.cr#L1"},{"filename":"src/ameba/source.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/source.cr#L1"},{"filename":"src/ameba/tokenizer.cr","line_number":3,"url":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/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":"
","abstract":false,"args":[{"name":"config","doc":null,"default_value":"Config.load","external_name":"config","restriction":""}],"args_string":"(config = Config.load)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba.cr#L39","def":{"name":"run","args":[{"name":"config","doc":null,"default_value":"Config.load","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"(Runner.new(config)).run"}}],"macros":[],"types":[{"html_id":"ameba/Ameba/AST","path":"Ameba/AST.html","kind":"module","full_name":"Ameba::AST","name":"AST","abstract":false,"superclass":null,"ancestors":[],"locations":[{"filename":"src/ameba/ast/branch.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/ast/branch.cr#L1"},{"filename":"src/ameba/ast/branchable.cr","line_number":3,"url":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/ast/branchable.cr#L3"},{"filename":"src/ameba/ast/flow_expression.cr","line_number":3,"url":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/ast/flow_expression.cr#L3"},{"filename":"src/ameba/ast/scope.cr","line_number":3,"url":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/ast/scope.cr#L3"},{"filename":"src/ameba/ast/variabling/argument.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/ast/variabling/argument.cr#L1"},{"filename":"src/ameba/ast/variabling/assignment.cr","line_number":4,"url":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/ast/variabling/assignment.cr#L4"},{"filename":"src/ameba/ast/variabling/ivariable.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/ast/variabling/ivariable.cr#L1"},{"filename":"src/ameba/ast/variabling/reference.cr","line_number":3,"url":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/ast/variabling/reference.cr#L3"},{"filename":"src/ameba/ast/variabling/variable.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/ast/variabling/variable.cr#L1"},{"filename":"src/ameba/ast/visitors/base_visitor.cr","line_number":4,"url":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/ast/visitors/base_visitor.cr#L4"},{"filename":"src/ameba/ast/visitors/counting_visitor.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/ast/visitors/counting_visitor.cr#L1"},{"filename":"src/ameba/ast/visitors/flow_expression_visitor.cr","line_number":4,"url":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/ast/visitors/flow_expression_visitor.cr#L4"},{"filename":"src/ameba/ast/visitors/node_visitor.cr","line_number":3,"url":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/ast/visitors/node_visitor.cr#L3"},{"filename":"src/ameba/ast/visitors/redundant_control_expression_visitor.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/ast/visitors/redundant_control_expression_visitor.cr#L1"},{"filename":"src/ameba/ast/visitors/scope_visitor.cr","line_number":3,"url":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/ast/visitors/scope_visitor.cr#L3"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"NODES","name":"NODES","value":"[Alias, IsA, Assign, Call, Block, Case, ClassDef, ClassVar, Def, EnumDef, ExceptionHandler, Expressions, HashLiteral, If, InstanceVar, LibDef, ModuleDef, NilLiteral, StringInterpolation, Unless, Var, When, While, Until]","doc":"List of nodes to be visited by Ameba's rules.","summary":"
List of nodes to be visited by Ameba's rules.
"}],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba","kind":"module","full_name":"Ameba","name":"Ameba"},"doc":"A module that helps to traverse Crystal AST using `Crystal::Visitor`.","summary":"
A module that helps to traverse Crystal AST using Crystal::Visitor.
","class_methods":[],"constructors":[],"instance_methods":[],"macros":[],"types":[{"html_id":"ameba/Ameba/AST/Argument","path":"Ameba/AST/Argument.html","kind":"class","full_name":"Ameba::AST::Argument","name":"Argument","abstract":false,"superclass":{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},"ancestors":[{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/ast/variabling/argument.cr","line_number":15,"url":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/ast/variabling/argument.cr#L15"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/AST","kind":"module","full_name":"Ameba::AST","name":"AST"},"doc":"Represents the argument of some node.\nHolds the reference to the variable, thus to scope.\n\nFor example, all these vars are arguments:\n\n```\ndef method(a, b, c = 10, &block)\n 3.times do |i|\n end\n\n ->(x : Int32) {}\nend\n```","summary":"
Represents the argument of some node.
","class_methods":[],"constructors":[{"id":"new(node,variable)-class-method","html_id":"new(node,variable)-class-method","name":"new","doc":"Creates a new argument.\n\n```\nArgument.new(node, variable)\n```","summary":"
Creates a new argument.
","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""},{"name":"variable","doc":null,"default_value":"","external_name":"variable","restriction":""}],"args_string":"(node, variable)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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":"
","abstract":false,"args":[],"args_string":" : Crystal::Var | Crystal::Arg","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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":" : Scope","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/src/ameba/ast/visitors/base_visitor.cr#L19","def":{"name":"new","args":[{"name":"rule","doc":null,"default_value":"","external_name":"rule","restriction":""},{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"_ = allocate\n_.initialize(rule, source)\nif _.responds_to?(:finalize)\n ::GC.add_finalizer(_)\nend\n_\n"}}],"instance_methods":[{"id":"visit(node:Crystal::ASTNode)-instance-method","html_id":"visit(node:Crystal::ASTNode)-instance-method","name":"visit","doc":"A main visit method that accepts `Crystal::ASTNode`.\nReturns true meaning all child nodes will be traversed.","summary":"
A main visit method that accepts Crystal::ASTNode.
","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ASTNode"}],"args_string":"(node : Crystal::ASTNode)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/ast/visitors/base_visitor.cr#L25","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ASTNode"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"true"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/AST/Branch","path":"Ameba/AST/Branch.html","kind":"class","full_name":"Ameba::AST::Branch","name":"Branch","abstract":false,"superclass":{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},"ancestors":[{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/ast/branch.cr","line_number":15,"url":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/ast/branch.cr#L15"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/AST","kind":"module","full_name":"Ameba::AST","name":"AST"},"doc":"Represents the branch in Crystal code.\nBranch is a part of a branchable statement.\nFor example, the branchable if statement contains 3 branches:\n\n```\nif a = something # --> Branch A\n a = 1 # --> Branch B\n put a if out # --> Branch C\nelse\n do_something a # --> Branch D\nend\n```\n","summary":"
Represents the branch in Crystal code.
","class_methods":[{"id":"of(node:Crystal::ASTNode,parent_node:Crystal::ASTNode)-class-method","html_id":"of(node:Crystal::ASTNode,parent_node:Crystal::ASTNode)-class-method","name":"of","doc":"Constructs a new branch based on the node some parent scope.\n\n```\nBranch.of(assign_node, def_node)\n```","summary":"
Constructs a new branch based on the node some parent scope.
","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ASTNode"},{"name":"parent_node","doc":null,"default_value":"","external_name":"parent_node","restriction":"Crystal::ASTNode"}],"args_string":"(node : Crystal::ASTNode, parent_node : Crystal::ASTNode)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/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/bedf3a68/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/bedf3a68/src/ameba/ast/branch.cr#L33","def":{"name":"new","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""},{"name":"parent","doc":null,"default_value":"","external_name":"parent","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"_ = allocate\n_.initialize(node, parent)\nif _.responds_to?(:finalize)\n ::GC.add_finalizer(_)\nend\n_\n"}}],"instance_methods":[{"id":"==(other:self)-instance-method","html_id":"==(other:self)-instance-method","name":"==","doc":"Returns `true` if this reference is the same as *other*. Invokes `same?`.","summary":"
Returns true if this reference is the same as other.
","abstract":false,"args":[{"name":"hasher","doc":null,"default_value":"","external_name":"hasher","restriction":""}],"args_string":"(hasher)","source_link":null,"def":{"name":"hash","args":[{"name":"hasher","doc":null,"default_value":"","external_name":"hasher","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"hasher = node.hash(hasher)\nhasher = location.hash(hasher)\nhasher\n"}},{"id":"in_loop?-instance-method","html_id":"in_loop?-instance-method","name":"in_loop?","doc":"Returns true if current branch is in a loop, false - otherwise.\nFor example, this branch is in a loop:\n\n```\nwhile true\n handle_input # this branch is in a loop\n if wrong_input\n show_message # this branch is also in a loop.\n end\nend\n```\n","summary":"
Returns true if current branch is in a loop, false - otherwise.
","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/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/bedf3a68/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/bedf3a68/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":"
","abstract":false,"args":[],"args_string":" : Branchable","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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":"
","abstract":false,"args":[],"args_string":" : Branchable?","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/src/ameba/ast/visitors/node_visitor.cr#L42","def":{"name":"new","args":[{"name":"rule","doc":null,"default_value":"","external_name":"rule","restriction":""},{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"skip","doc":null,"default_value":"nil","external_name":"skip","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"_ = allocate\n_.initialize(rule, source, skip)\nif _.responds_to?(:finalize)\n ::GC.add_finalizer(_)\nend\n_\n"}}],"instance_methods":[{"id":"visit(node:Crystal::Alias)-instance-method","html_id":"visit(node:Crystal::Alias)-instance-method","name":"visit","doc":"A visit callback for `Crystal::Alias` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"
A visit callback for Crystal::Alias node.
","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Alias"}],"args_string":"(node : Crystal::Alias)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/ast/visitors/node_visitor.cr#L47","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Alias"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::Until)-instance-method","html_id":"visit(node:Crystal::Until)-instance-method","name":"visit","doc":"A visit callback for `Crystal::Until` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"
A visit callback for Crystal::Until node.
","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Until"}],"args_string":"(node : Crystal::Until)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/ast/visitors/node_visitor.cr#L47","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Until"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::While)-instance-method","html_id":"visit(node:Crystal::While)-instance-method","name":"visit","doc":"A visit callback for `Crystal::While` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"
A visit callback for Crystal::While node.
","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::While"}],"args_string":"(node : Crystal::While)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/ast/visitors/node_visitor.cr#L47","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::While"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::When)-instance-method","html_id":"visit(node:Crystal::When)-instance-method","name":"visit","doc":"A visit callback for `Crystal::When` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"
A visit callback for Crystal::When node.
","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::When"}],"args_string":"(node : Crystal::When)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/ast/visitors/node_visitor.cr#L47","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::When"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::Var)-instance-method","html_id":"visit(node:Crystal::Var)-instance-method","name":"visit","doc":"A visit callback for `Crystal::Var` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"
A visit callback for Crystal::Var node.
","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Var"}],"args_string":"(node : Crystal::Var)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/ast/visitors/node_visitor.cr#L47","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Var"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::Unless)-instance-method","html_id":"visit(node:Crystal::Unless)-instance-method","name":"visit","doc":"A visit callback for `Crystal::Unless` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"
A visit callback for Crystal::Unless node.
","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Unless"}],"args_string":"(node : Crystal::Unless)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/ast/visitors/node_visitor.cr#L47","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Unless"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::StringInterpolation)-instance-method","html_id":"visit(node:Crystal::StringInterpolation)-instance-method","name":"visit","doc":"A visit callback for `Crystal::StringInterpolation` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"
A visit callback for Crystal::StringInterpolation node.
","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::StringInterpolation"}],"args_string":"(node : Crystal::StringInterpolation)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/ast/visitors/node_visitor.cr#L47","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::StringInterpolation"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::NilLiteral)-instance-method","html_id":"visit(node:Crystal::NilLiteral)-instance-method","name":"visit","doc":"A visit callback for `Crystal::NilLiteral` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"
A visit callback for Crystal::NilLiteral node.
","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::NilLiteral"}],"args_string":"(node : Crystal::NilLiteral)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/ast/visitors/node_visitor.cr#L47","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::NilLiteral"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::ModuleDef)-instance-method","html_id":"visit(node:Crystal::ModuleDef)-instance-method","name":"visit","doc":"A visit callback for `Crystal::ModuleDef` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"
A visit callback for Crystal::ModuleDef node.
","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ModuleDef"}],"args_string":"(node : Crystal::ModuleDef)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/ast/visitors/node_visitor.cr#L47","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ModuleDef"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::LibDef)-instance-method","html_id":"visit(node:Crystal::LibDef)-instance-method","name":"visit","doc":"A visit callback for `Crystal::LibDef` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"
A visit callback for Crystal::LibDef node.
","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::LibDef"}],"args_string":"(node : Crystal::LibDef)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/ast/visitors/node_visitor.cr#L47","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::LibDef"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::InstanceVar)-instance-method","html_id":"visit(node:Crystal::InstanceVar)-instance-method","name":"visit","doc":"A visit callback for `Crystal::InstanceVar` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"
A visit callback for Crystal::InstanceVar node.
","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::InstanceVar"}],"args_string":"(node : Crystal::InstanceVar)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/ast/visitors/node_visitor.cr#L47","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::InstanceVar"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::If)-instance-method","html_id":"visit(node:Crystal::If)-instance-method","name":"visit","doc":"A visit callback for `Crystal::If` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"
A visit callback for Crystal::If node.
","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::If"}],"args_string":"(node : Crystal::If)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/ast/visitors/node_visitor.cr#L47","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::If"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::HashLiteral)-instance-method","html_id":"visit(node:Crystal::HashLiteral)-instance-method","name":"visit","doc":"A visit callback for `Crystal::HashLiteral` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"
A visit callback for Crystal::HashLiteral node.
","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::HashLiteral"}],"args_string":"(node : Crystal::HashLiteral)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/ast/visitors/node_visitor.cr#L47","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::HashLiteral"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::Expressions)-instance-method","html_id":"visit(node:Crystal::Expressions)-instance-method","name":"visit","doc":"A visit callback for `Crystal::Expressions` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"
A visit callback for Crystal::Expressions node.
","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Expressions"}],"args_string":"(node : Crystal::Expressions)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/ast/visitors/node_visitor.cr#L47","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Expressions"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::ExceptionHandler)-instance-method","html_id":"visit(node:Crystal::ExceptionHandler)-instance-method","name":"visit","doc":"A visit callback for `Crystal::ExceptionHandler` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"
A visit callback for Crystal::ExceptionHandler node.
","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ExceptionHandler"}],"args_string":"(node : Crystal::ExceptionHandler)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/ast/visitors/node_visitor.cr#L47","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ExceptionHandler"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::EnumDef)-instance-method","html_id":"visit(node:Crystal::EnumDef)-instance-method","name":"visit","doc":"A visit callback for `Crystal::EnumDef` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"
A visit callback for Crystal::EnumDef node.
","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::EnumDef"}],"args_string":"(node : Crystal::EnumDef)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/ast/visitors/node_visitor.cr#L47","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::EnumDef"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::Def)-instance-method","html_id":"visit(node:Crystal::Def)-instance-method","name":"visit","doc":"A visit callback for `Crystal::Def` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"
A visit callback for Crystal::Def node.
","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Def"}],"args_string":"(node : Crystal::Def)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/ast/visitors/node_visitor.cr#L47","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Def"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::ClassVar)-instance-method","html_id":"visit(node:Crystal::ClassVar)-instance-method","name":"visit","doc":"A visit callback for `Crystal::ClassVar` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"
A visit callback for Crystal::ClassVar node.
","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ClassVar"}],"args_string":"(node : Crystal::ClassVar)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/ast/visitors/node_visitor.cr#L47","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ClassVar"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::ClassDef)-instance-method","html_id":"visit(node:Crystal::ClassDef)-instance-method","name":"visit","doc":"A visit callback for `Crystal::ClassDef` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"
A visit callback for Crystal::ClassDef node.
","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ClassDef"}],"args_string":"(node : Crystal::ClassDef)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/ast/visitors/node_visitor.cr#L47","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ClassDef"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::Case)-instance-method","html_id":"visit(node:Crystal::Case)-instance-method","name":"visit","doc":"A visit callback for `Crystal::Case` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"
A visit callback for Crystal::Case node.
","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Case"}],"args_string":"(node : Crystal::Case)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/ast/visitors/node_visitor.cr#L47","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Case"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::Block)-instance-method","html_id":"visit(node:Crystal::Block)-instance-method","name":"visit","doc":"A visit callback for `Crystal::Block` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"
A visit callback for Crystal::Block node.
","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Block"}],"args_string":"(node : Crystal::Block)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/ast/visitors/node_visitor.cr#L47","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Block"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::Call)-instance-method","html_id":"visit(node:Crystal::Call)-instance-method","name":"visit","doc":"A visit callback for `Crystal::Call` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"
A visit callback for Crystal::Call node.
","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Call"}],"args_string":"(node : Crystal::Call)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/ast/visitors/node_visitor.cr#L47","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Call"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::Assign)-instance-method","html_id":"visit(node:Crystal::Assign)-instance-method","name":"visit","doc":"A visit callback for `Crystal::Assign` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"
A visit callback for Crystal::Assign node.
","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Assign"}],"args_string":"(node : Crystal::Assign)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/ast/visitors/node_visitor.cr#L47","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Assign"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::IsA)-instance-method","html_id":"visit(node:Crystal::IsA)-instance-method","name":"visit","doc":"A visit callback for `Crystal::IsA` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"
A visit callback for Crystal::IsA node.
","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::IsA"}],"args_string":"(node : Crystal::IsA)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/ast/visitors/node_visitor.cr#L47","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::IsA"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node)-instance-method","html_id":"visit(node)-instance-method","name":"visit","doc":null,"summary":null,"abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"args_string":"(node)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/ast/visitors/node_visitor.cr#L56","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (skip = @skip)\nelse\n return true\nend\n!(skip.includes?(node.class))\n"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/AST/RedundantControlExpressionVisitor","path":"Ameba/AST/RedundantControlExpressionVisitor.html","kind":"class","full_name":"Ameba::AST::RedundantControlExpressionVisitor","name":"RedundantControlExpressionVisitor","abstract":false,"superclass":{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},"ancestors":[{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/ast/visitors/redundant_control_expression_visitor.cr","line_number":5,"url":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/ast/visitors/redundant_control_expression_visitor.cr#L5"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/AST","kind":"module","full_name":"Ameba::AST","name":"AST"},"doc":"A class that utilizes a logic to traverse AST nodes and\nfire a source test callback if a redundant `Crystal::ControlExpression`\nis reached.","summary":"
A class that utilizes a logic to traverse AST nodes and fire a source test callback if a redundant Crystal::ControlExpression is reached.
","class_methods":[],"constructors":[{"id":"new(rule,source,node)-class-method","html_id":"new(rule,source,node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"rule","doc":null,"default_value":"","external_name":"rule","restriction":""},{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"args_string":"(rule, source, node)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/ast/visitors/redundant_control_expression_visitor.cr#L15","def":{"name":"new","args":[{"name":"rule","doc":null,"default_value":"","external_name":"rule","restriction":""},{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"_ = allocate\n_.initialize(rule, source, node)\nif _.responds_to?(:finalize)\n ::GC.add_finalizer(_)\nend\n_\n"}}],"instance_methods":[{"id":"node:Crystal::ASTNode-instance-method","html_id":"node:Crystal::ASTNode-instance-method","name":"node","doc":"A node to run traversal on.","summary":"
A node to run traversal on.
","abstract":false,"args":[],"args_string":" : Crystal::ASTNode","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/src/ameba/ast/scope.cr#L39","def":{"name":"new","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""},{"name":"outer_scope","doc":null,"default_value":"nil","external_name":"outer_scope","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"_ = allocate\n_.initialize(node, outer_scope)\nif _.responds_to?(:finalize)\n ::GC.add_finalizer(_)\nend\n_\n"}}],"instance_methods":[{"id":"==(other:self)-instance-method","html_id":"==(other:self)-instance-method","name":"==","doc":"Returns `true` if this reference is the same as *other*. Invokes `same?`.","summary":"
Returns true if this reference is the same as other.
","abstract":false,"args":[{"name":"other","doc":null,"default_value":"","external_name":"other","restriction":"self"}],"args_string":"(other : self)","source_link":null,"def":{"name":"==","args":[{"name":"other","doc":null,"default_value":"","external_name":"other","restriction":"self"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if node == other.node\nelse\n return false\nend\nif location == other.location\nelse\n return false\nend\ntrue\n"}},{"id":"add_argument(node)-instance-method","html_id":"add_argument(node)-instance-method","name":"add_argument","doc":"Creates a new argument in the current scope.\n\n```\nscope = Scope.new(class_node, nil)\nscope.add_argument(arg_node)\n```","summary":"
Creates a new argument in the current scope.
","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"args_string":"(node)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/src/ameba/ast/scope.cr#L30","def":{"name":"end_location","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":1,"block_arg":null,"return_type":"","visibility":"Public","body":"node.end_location(*args, **options) do |*yield_args|\n yield *yield_args\nend"}},{"id":"eql?(node)-instance-method","html_id":"eql?(node)-instance-method","name":"eql?","doc":"Returns true if the `node` represents exactly\nthe same Crystal node as `@node`.","summary":"
Returns true if the #node represents exactly the same Crystal node as @node.
","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"args_string":"(node)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/ast/scope.cr#L174","def":{"name":"eql?","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"((node == @node) && (!node.location.nil?)) && (node.location == @node.location)"}},{"id":"find_variable(name:String)-instance-method","html_id":"find_variable(name:String)-instance-method","name":"find_variable","doc":"Returns variable by its name or nil if it does not exist.\n\n```\nscope = Scope.new(class_node, nil)\nscope.find_variable(\"foo\")\n```","summary":"
Returns variable by its name or nil if it does not exist.
","abstract":false,"args":[{"name":"hasher","doc":null,"default_value":"","external_name":"hasher","restriction":""}],"args_string":"(hasher)","source_link":null,"def":{"name":"hash","args":[{"name":"hasher","doc":null,"default_value":"","external_name":"hasher","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"hasher = node.hash(hasher)\nhasher = location.hash(hasher)\nhasher\n"}},{"id":"in_macro?-instance-method","html_id":"in_macro?-instance-method","name":"in_macro?","doc":"Returns true if current scope sits inside a macro.","summary":"
Returns true if current scope sits inside a macro.
","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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.
","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/bedf3a68/src/ameba/ast/util.cr#L135","def":{"name":"exit?","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"((node.is_a?(Crystal::Call) && (node.name == \"exit\")) && node.args.size <= 1) && node.obj.nil?"}},{"id":"flow_command?(node,in_loop)-instance-method","html_id":"flow_command?(node,in_loop)-instance-method","name":"flow_command?","doc":"Returns true if node is a flow command, false - otherwise.\nNode represents a flow command if it is a control expression,\nor special call node that interrupts execution (i.e. raise, exit, abort).","summary":"
Returns true if node is a flow command, false - otherwise.
","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""},{"name":"in_loop","doc":null,"default_value":"","external_name":"in_loop","restriction":""}],"args_string":"(node, in_loop)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/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.
Returns true if current node is a literal, false otherwise.
","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"args_string":"(node)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/ast/util.cr#L4","def":{"name":"literal?","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"case node\nwhen Crystal::NilLiteral, Crystal::BoolLiteral, Crystal::NumberLiteral, Crystal::CharLiteral, Crystal::StringLiteral, Crystal::SymbolLiteral, Crystal::RegexLiteral, Crystal::ProcLiteral, Crystal::MacroLiteral\n true\nwhen Crystal::RangeLiteral\n (literal?(node.from)) && (literal?(node.to))\nwhen Crystal::ArrayLiteral, Crystal::TupleLiteral\n node.elements.all? do |el|\n literal?(el)\n end\nwhen Crystal::HashLiteral\n node.entries.all? do |entry|\n (literal?(entry.key)) && (literal?(entry.value))\n end\nwhen Crystal::NamedTupleLiteral\n node.entries.all? do |entry|\n literal?(entry.value)\n end\nelse\n false\nend"}},{"id":"loop?(node)-instance-method","html_id":"loop?(node)-instance-method","name":"loop?","doc":"Returns true if node represents a loop.","summary":"
Returns true if node represents a loop.
","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"args_string":"(node)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/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 true if node represents raise method call.
","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"args_string":"(node)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/ast/util.cr#L129","def":{"name":"raise?","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"((node.is_a?(Crystal::Call) && (node.name == \"raise\")) && (node.args.size == 1)) && node.obj.nil?"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/AST/Variable","path":"Ameba/AST/Variable.html","kind":"class","full_name":"Ameba::AST::Variable","name":"Variable","abstract":false,"superclass":{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},"ancestors":[{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/ast/variabling/variable.cr","line_number":4,"url":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/ast/variabling/variable.cr#L4"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[{"html_id":"ameba/Ameba/AST/Reference","kind":"class","full_name":"Ameba::AST::Reference","name":"Reference"}],"including_types":[],"namespace":{"html_id":"ameba/Ameba/AST","kind":"module","full_name":"Ameba::AST","name":"AST"},"doc":"Represents the existence of the local variable.\nHolds the var node and variable assigments.","summary":"
Represents the existence of the local variable.
","class_methods":[],"constructors":[{"id":"new(node,scope)-class-method","html_id":"new(node,scope)-class-method","name":"new","doc":"Creates a new variable(in the scope).\n\n```\nVariable.new(node, scope)\n```\n","summary":"
Creates a new variable(in the scope).
","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""},{"name":"scope","doc":null,"default_value":"","external_name":"scope","restriction":""}],"args_string":"(node, scope)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/src/ameba/ast/variabling/variable.cr#L114","def":{"name":"captured_by_block?","args":[{"name":"scope","doc":null,"default_value":"@scope","external_name":"scope","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"scope.inner_scopes.each do |inner_scope|\n if inner_scope.block? && (inner_scope.references?(self))\n return true\n end\n if captured_by_block?(inner_scope)\n return true\n end\nend\nfalse\n"}},{"id":"declared_before?(node)-instance-method","html_id":"declared_before?(node)-instance-method","name":"declared_before?","doc":"Returns true if the variable is delcared before the `node`.","summary":"
Returns true if the variable is delcared before the #node.
","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"args_string":"(node)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/ast/variabling/variable.cr#L160","def":{"name":"declared_before?","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"var_location, node_location = location, node.location\nif var_location.nil? || node_location.nil?\n return\nend\n(var_location.line_number < node_location.line_number) || ((var_location.line_number == node_location.line_number) && var_location.column_number < node_location.column_number)\n"}},{"id":"end_location(*args,**options)-instance-method","html_id":"end_location(*args,**options)-instance-method","name":"end_location","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/ast/variabling/variable.cr#L21","def":{"name":"end_location","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.end_location(*args, **options)"}},{"id":"end_location(*args,**options,&)-instance-method","html_id":"end_location(*args,**options,&)-instance-method","name":"end_location","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options, &)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/ast/variabling/variable.cr#L21","def":{"name":"end_location","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":1,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.end_location(*args, **options) do |*yield_args|\n yield *yield_args\nend"}},{"id":"eql?(node)-instance-method","html_id":"eql?(node)-instance-method","name":"eql?","doc":"Returns true if the `node` represents exactly\nthe same Crystal node as `@node`.","summary":"
Returns true if the #node represents exactly the same Crystal node as @node.
","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"args_string":"(node)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/ast/variabling/variable.cr#L153","def":{"name":"eql?","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"(node.is_a?(Crystal::Var) && (node.name == @node.name)) && (node.location == @node.location)"}},{"id":"ignored?-instance-method","html_id":"ignored?-instance-method","name":"ignored?","doc":"Returns true if the name starts with '_', false if not.","summary":"
Returns true if the name starts with '_', false if not.
","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/ast/variabling/variable.cr#L147","def":{"name":"ignored?","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"name.starts_with?('_')"}},{"id":"location(*args,**options)-instance-method","html_id":"location(*args,**options)-instance-method","name":"location","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/src/ameba/ast/variabling/variable.cr#L15","def":{"name":"scope","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Scope","visibility":"Public","body":"@scope"}},{"id":"special?-instance-method","html_id":"special?-instance-method","name":"special?","doc":"Returns true if it is a special variable, i.e `$?`.","summary":"
Returns true if it is a special variable, i.e $?.
","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/ast/variabling/variable.cr#L35","def":{"name":"special?","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.special_var?"}},{"id":"target_of?(assign)-instance-method","html_id":"target_of?(assign)-instance-method","name":"target_of?","doc":"Returns true if the variable is a target (on the left) of the assignment,\nfalse otherwise.","summary":"
Returns true if the variable is a target (on the left) of the assignment, false otherwise.
","abstract":false,"args":[{"name":"assign","doc":null,"default_value":"","external_name":"assign","restriction":""}],"args_string":"(assign)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/ast/variabling/variable.cr#L135","def":{"name":"target_of?","args":[{"name":"assign","doc":null,"default_value":"","external_name":"assign","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"case assign\nwhen Crystal::Assign\n eql?(assign.target)\nwhen Crystal::OpAssign\n eql?(assign.target)\nwhen Crystal::MultiAssign\n assign.targets.any? do |t|\n eql?(t)\n end\nwhen Crystal::UninitializedVar\n eql?(assign.var)\nelse\n false\nend"}},{"id":"to_s(*args,**options)-instance-method","html_id":"to_s(*args,**options)-instance-method","name":"to_s","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/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/bedf3a68/src/ameba/ast/variabling/variable.cr#L23","def":{"name":"to_s","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":1,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.to_s(*args, **options) do |*yield_args|\n yield *yield_args\nend"}},{"id":"used_in_macro?(scope=@scope)-instance-method","html_id":"used_in_macro?(scope=@scope)-instance-method","name":"used_in_macro?","doc":"Returns true if current variable potentially referenced in a macro literal,\nfalse if not.","summary":"
Returns true if current variable potentially referenced in a macro literal, false if not.
","abstract":false,"args":[{"name":"scope","doc":null,"default_value":"@scope","external_name":"scope","restriction":""}],"args_string":"(scope = @scope)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/ast/variabling/variable.cr#L125","def":{"name":"used_in_macro?","args":[{"name":"scope","doc":null,"default_value":"@scope","external_name":"scope","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"scope.inner_scopes.each do |inner_scope|\n if (MacroLiteralFinder.new(inner_scope.node)).references?(node)\n return true\n end\nend\nif (outer_scope = scope.outer_scope) && (used_in_macro?(outer_scope))\n return true\nend\nfalse\n"}}],"macros":[],"types":[]}]},{"html_id":"ameba/Ameba/Config","path":"Ameba/Config.html","kind":"class","full_name":"Ameba::Config","name":"Config","abstract":false,"superclass":{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},"ancestors":[{"html_id":"ameba/Ameba/GlobUtils","kind":"module","full_name":"Ameba::GlobUtils","name":"GlobUtils"},{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/config.cr","line_number":15,"url":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/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":"
","class_methods":[{"id":"formatter_names-class-method","html_id":"formatter_names-class-method","name":"formatter_names","doc":null,"summary":null,"abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/config.cr#L86","def":{"name":"formatter_names","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"AVAILABLE_FORMATTERS.keys.join(\"|\")"}},{"id":"load(path=PATH,colors=true)-class-method","html_id":"load(path=PATH,colors=true)-class-method","name":"load","doc":"Loads YAML configuration file by `path`.\n\n```\nconfig = Ameba::Config.load\n```\n","summary":"
Loads YAML configuration file by path.
","abstract":false,"args":[{"name":"path","doc":null,"default_value":"PATH","external_name":"path","restriction":""},{"name":"colors","doc":null,"default_value":"true","external_name":"colors","restriction":""}],"args_string":"(path = PATH, colors = true)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/config.cr#L78","def":{"name":"load","args":[{"name":"path","doc":null,"default_value":"PATH","external_name":"path","restriction":""},{"name":"colors","doc":null,"default_value":"true","external_name":"colors","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"begin\n Colorize.enabled = colors\n content = File.exists?(path) ? File.read(path) : \"{}\"\n Config.new(YAML.parse(content))\nrescue e\n raise(\"Config file is invalid: #{e.message}\")\nend"}}],"constructors":[],"instance_methods":[{"id":"excluded:Array(String)-instance-method","html_id":"excluded:Array(String)-instance-method","name":"excluded","doc":"Represents a list of paths to exclude from globs.\nCan have wildcards.\n\n```\nconfig = Ameba::Config.load\nconfig.excluded = [\"spec\", \"src/server/*.cr\"]\n```","summary":"
Represents a list of paths to exclude from globs.
","abstract":false,"args":[],"args_string":" : Array(String)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/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/bedf3a68/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":[{"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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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":[{"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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/src/ameba/formatter/todo_formatter.cr#L1"},{"filename":"src/ameba/formatter/util.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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.
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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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":"
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/bedf3a68/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/bedf3a68/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/bedf3a68/src/ameba/inline_comments.cr#L3"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"COMMENT_DIRECTIVE_REGEX","name":"COMMENT_DIRECTIVE_REGEX","value":"/# ameba:(?\\w+) (?\\w+(?:\\/\\w+)?(?:,? \\w+(?:\\/\\w+)?)*)/","doc":null,"summary":null}],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[{"html_id":"ameba/Ameba/Source","kind":"class","full_name":"Ameba::Source","name":"Source"}],"namespace":{"html_id":"ameba/Ameba","kind":"module","full_name":"Ameba","name":"Ameba"},"doc":"A module that utilizes inline comments parsing and processing logic.","summary":"
A module that utilizes inline comments parsing and processing logic.
","class_methods":[],"constructors":[],"instance_methods":[{"id":"comment?(line_number:Int32)-instance-method","html_id":"comment?(line_number:Int32)-instance-method","name":"comment?","doc":"Returns true if the line at the given `line_number` is a comment.","summary":"
Returns true if the line at the given line_number is a comment.
","abstract":false,"args":[{"name":"line_number","doc":null,"default_value":"","external_name":"line_number","restriction":"Int32"}],"args_string":"(line_number : Int32)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/inline_comments.cr#L80","def":{"name":"comment?","args":[{"name":"line_number","doc":null,"default_value":"","external_name":"line_number","restriction":"Int32"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if line = lines[line_number]?\n comment?(line)\nend"}},{"id":"location_disabled?(location,rule)-instance-method","html_id":"location_disabled?(location,rule)-instance-method","name":"location_disabled?","doc":"Returns true if current location is disabled for a particular rule,\nfalse otherwise.\n\nLocation is disabled in two cases:\n 1. The line of the location ends with a comment directive.\n 2. The line above the location is a comment directive.\n\nFor example, here are two examples of disabled location:\n\n```\n# ameba:disable Style/LargeNumbers\nTime.epoch(1483859302)\n\nTime.epoch(1483859302) # ameba:disable Style/LargeNumbers\n```\n\nBut here are examples which are not considered as disabled location:\n\n```\n# ameba:disable Style/LargeNumbers\n#\nTime.epoch(1483859302)\n\nif use_epoch? # ameba:disable Style/LargeNumbers\n Time.epoch(1483859302)\nend\n```\n","summary":"
Returns true if current location is disabled for a particular rule, false otherwise.
","abstract":false,"args":[{"name":"location","doc":null,"default_value":"","external_name":"location","restriction":""},{"name":"rule","doc":null,"default_value":"","external_name":"rule","restriction":""}],"args_string":"(location, rule)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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":"
","class_methods":[],"constructors":[],"instance_methods":[{"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/bedf3a68/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,end_location,message,status=nil)-instance-method","html_id":"add_issue(rule,location,end_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":""},{"name":"end_location","doc":null,"default_value":"","external_name":"end_location","restriction":""},{"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, end_location, message, status = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/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":""},{"name":"end_location","doc":null,"default_value":"","external_name":"end_location","restriction":""},{"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),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/bedf3a68/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/bedf3a68/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":"
","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/src/ameba/rule/base.cr#L30","def":{"name":"new","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"x = allocate\nif x.responds_to?(:finalize)\n ::GC.add_finalizer(x)\nend\nx\n"}}],"instance_methods":[{"id":"==(other)-instance-method","html_id":"==(other)-instance-method","name":"==","doc":"Returns `true` if this struct is equal to *other*.\n\nBoth structs's instance vars are compared to each other. Thus, two\nstructs are considered equal if each of their instance variables are\nequal. Subclasses should override this method to provide specific\nequality semantics.\n\n```\nstruct Point\n def initialize(@x : Int32, @y : Int32)\n end\nend\n\np1 = Point.new 1, 2\np2 = Point.new 1, 2\np3 = Point.new 3, 4\n\np1 == p2 # => true\np1 == p3 # => false\n```","summary":"
Returns true if this struct is equal to other.
","abstract":false,"args":[{"name":"other","doc":null,"default_value":"","external_name":"other","restriction":""}],"args_string":"(other)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/rule/base.cr#L113","def":{"name":"==","args":[{"name":"other","doc":null,"default_value":"","external_name":"other","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"name == other.try(&.name)"}},{"id":"catch(source:Source)-instance-method","html_id":"catch(source:Source)-instance-method","name":"catch","doc":"A convenient addition to `#test` method that does the same\nbut returns a passed in `source` as an addition.\n\n```\nsource = MyRule.new.catch(source)\nsource.valid?\n```\n","summary":"
A convenient addition to #test method that does the same but returns a passed in source as an addition.
","abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":"Source"}],"args_string":"(source : Source)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/rule/base.cr#L54","def":{"name":"catch","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":"Source"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"source.tap do |s|\n test(s)\nend"}},{"id":"excluded?(source)-instance-method","html_id":"excluded?(source)-instance-method","name":"excluded?","doc":"Checks whether the source is excluded from this rule.\nIt searches for a path in `excluded` property which matches\nthe one of the given source.\n\n```\nmy_rule.excluded?(source) # => true or false\n```\n","summary":"
Checks whether the source is excluded from this rule.
","abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"args_string":"(source)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/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/bedf3a68/src/ameba/rule/base.cr#L83","def":{"name":"group","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"({{ @type }}).group_name"}},{"id":"hash-instance-method","html_id":"hash-instance-method","name":"hash","doc":"Generates an `UInt64` hash value for this object.\n\nThis method must have the property that `a == b` implies `a.hash == b.hash`.\n\nThe hash value is used along with `==` by the `Hash` class to determine if two objects\nreference the same hash key.\n\nSubclasses must not override this method. Instead, they must define `hash(hasher)`,\nthough usually the macro `def_hash` can be used to generate this method.","summary":"
Generates an UInt64 hash value for this object.
","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/rule/base.cr#L117","def":{"name":"hash","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"name.hash"}},{"id":"name-instance-method","html_id":"name-instance-method","name":"name","doc":"Returns a name of this rule, which is basically a class name.\n\n```\nstruct MyRule < Ameba::Rule::Base\n def test(source)\n end\nend\n\nMyRule.new.name # => \"MyRule\"\n```\n","summary":"
Returns a name of this rule, which is basically a class name.
","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/src/ameba/rule/layout/line_length.cr#L12"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Line too long\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Layout","kind":"module","full_name":"Ameba::Rule::Layout","name":"Layout"},"doc":"A rule that disallows lines longer than `max_length` number of symbols.\n\nYAML configuration example:\n\n```\nLayout/LineLength:\n Enabled: true\n MaxLength: 100\n```\n","summary":"
A rule that disallows lines longer than #max_length number of symbols.
","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows lines longer than `max_length` number of symbols.\n\nYAML configuration example:\n\n```\nLayout/LineLength:\n Enabled: true\n MaxLength: 100\n```\n","summary":"
A rule that disallows lines longer than #max_length number of symbols.
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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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":"
","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_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/bedf3a68/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/bedf3a68/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/bedf3a68/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":"
","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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.
","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows `rand(0)` and `rand(1)` calls.\nSuch calls always return `0`.\n\nFor example:\n\n```\nrand(1)\n```\n\nShould be written as:\n\n```\nrand\n# or\nrand(2)\n```\n\nYAML configuration example:\n\n```\nLint/RandZero:\n Enabled: true\n```\n","summary":"
A rule that disallows rand(0) and rand(1) calls.
","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/rule/lint/rand_zero.cr#L26","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node:Crystal::Call)-instance-method","html_id":"test(source,node:Crystal::Call)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Call"}],"args_string":"(source, node : Crystal::Call)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/rule/lint/rand_zero.cr#L33","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Call"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (((((node.name == \"rand\") && (node.args.size == 1)) && (arg = node.args.first)) && (arg.is_a?(Crystal::NumberLiteral))) && (value = arg.value)) && ((value == \"0\") || (value == \"1\"))\nelse\n return\nend\nissue_for(node, MSG % node)\n"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Lint/RedundantStringCoercion","path":"Ameba/Rule/Lint/RedundantStringCoercion.html","kind":"struct","full_name":"Ameba::Rule::Lint::RedundantStringCoercion","name":"RedundantStringCoercion","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/Ameba/AST/Util","kind":"module","full_name":"Ameba::AST::Util","name":"Util"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/lint/redundant_string_coercion.cr","line_number":24,"url":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/rule/lint/redundant_string_coercion.cr#L24"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Redundant use of `Object#to_s` in interpolation\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/Ameba/AST/Util","kind":"module","full_name":"Ameba::AST::Util","name":"Util"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Lint","kind":"module","full_name":"Ameba::Rule::Lint","name":"Lint"},"doc":"A rule that disallows string conversion in string interpolation,\nwhich is redundant.\n\nFor example, this is considered invalid:\n\n```\n\"Hello, #{name.to_s}\"\n```\n\nAnd this is valid:\n\n```\n\"Hello, #{name}\"\n```\n\nYAML configuration example:\n\n```\nLint/RedundantStringCoersion\n Enabled: true\n```\n","summary":"
A rule that disallows string conversion in string interpolation, which is redundant.
","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows string conversion in string interpolation,\nwhich is redundant.\n\nFor example, this is considered invalid:\n\n```\n\"Hello, #{name.to_s}\"\n```\n\nAnd this is valid:\n\n```\n\"Hello, #{name}\"\n```\n\nYAML configuration example:\n\n```\nLint/RedundantStringCoersion\n Enabled: true\n```\n","summary":"
A rule that disallows string conversion in string interpolation, which is redundant.
","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/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/bedf3a68/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/bedf3a68/src/ameba/rule/lint/redundant_with_index.cr#L30"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Lint","kind":"module","full_name":"Ameba::Rule::Lint","name":"Lint"},"doc":"A rule that disallows redundant `with_index` calls.\n\nFor example, this is considered invalid:\n```\ncollection.each.with_index do |e|\n # ...\nend\n\ncollection.each_with_index do |e, _|\n # ...\nend\n```\n\nand it should be written as follows:\n\n```\ncollection.each do |e|\n # ...\nend\n```\n\nYAML configuration example:\n\n```\nLint/RedundantWithIndex:\n Enabled: true\n```\n","summary":"
A rule that disallows redundant with_index calls.
","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows redundant `with_index` calls.\n\nFor example, this is considered invalid:\n```\ncollection.each.with_index do |e|\n # ...\nend\n\ncollection.each_with_index do |e, _|\n # ...\nend\n```\n\nand it should be written as follows:\n\n```\ncollection.each do |e|\n # ...\nend\n```\n\nYAML configuration example:\n\n```\nLint/RedundantWithIndex:\n Enabled: true\n```\n","summary":"
A rule that disallows redundant with_index calls.
","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/rule/lint/redundant_with_index.cr#L30","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node:Crystal::Call)-instance-method","html_id":"test(source,node:Crystal::Call)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Call"}],"args_string":"(source, node : Crystal::Call)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/rule/lint/redundant_with_index.cr#L35","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Call"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"args, block = node.args, node.block\nif (args.size > 1 || block.nil?) || (with_index_arg?(block.not_nil!))\n return\nend\ncase node.name\nwhen \"with_index\"\n report(source, node, \"Remove redundant with_index\")\nwhen \"each_with_index\"\n report(source, node, \"Use each instead of each_with_index\")\nelse\nend\n"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Lint/RedundantWithObject","path":"Ameba/Rule/Lint/RedundantWithObject.html","kind":"struct","full_name":"Ameba::Rule::Lint::RedundantWithObject","name":"RedundantWithObject","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/lint/redundant_with_object.cr","line_number":31,"url":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/rule/lint/redundant_with_object.cr#L31"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Lint","kind":"module","full_name":"Ameba::Rule::Lint","name":"Lint"},"doc":"A rule that disallows redundant `each_with_object` calls.\n\nFor example, this is considered invalid:\n\n```\ncollection.each_with_object(0) do |e|\n # ...\nend\n\ncollection.each_with_object(0) do |e, _|\n # ...\nend\n```\n\nand it should be written as follows:\n\n```\ncollection.each do |e|\n # ...\nend\n```\n\nYAML configuration example:\n\n```\nLint/RedundantWithObject:\n Enabled: true\n```\n","summary":"
A rule that disallows redundant each_with_object calls.
","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows redundant `each_with_object` calls.\n\nFor example, this is considered invalid:\n\n```\ncollection.each_with_object(0) do |e|\n # ...\nend\n\ncollection.each_with_object(0) do |e, _|\n # ...\nend\n```\n\nand it should be written as follows:\n\n```\ncollection.each do |e|\n # ...\nend\n```\n\nYAML configuration example:\n\n```\nLint/RedundantWithObject:\n Enabled: true\n```\n","summary":"
A rule that disallows redundant each_with_object calls.
","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/rule/lint/redundant_with_object.cr#L31","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node:Crystal::Call)-instance-method","html_id":"test(source,node:Crystal::Call)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Call"}],"args_string":"(source, node : Crystal::Call)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/rule/lint/redundant_with_object.cr#L36","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Call"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (((node.name != \"each_with_object\") || (node.args.size != 1)) || node.block.nil?) || (with_index_arg?(node.block.not_nil!))\n return\nend\nissue_for(node.name_location, node.name_end_location, \"Use each instead of each_with_object\")\n"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Lint/ShadowedArgument","path":"Ameba/Rule/Lint/ShadowedArgument.html","kind":"struct","full_name":"Ameba::Rule::Lint::ShadowedArgument","name":"ShadowedArgument","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/lint/shadowed_argument.cr","line_number":39,"url":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/rule/lint/shadowed_argument.cr#L39"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Argument `%s` is assigned before it is used\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Lint","kind":"module","full_name":"Ameba::Rule::Lint","name":"Lint"},"doc":"A rule that disallows shadowed arguments.\n\nFor example, this is considered invalid:\n\n```\ndo_something do |foo|\n foo = 1 # shadows block argument\n foo\nend\n\ndef do_something(foo)\n foo = 1 # shadows method argument\n foo\nend\n```\n\nand it should be written as follows:\n\n```\ndo_something do |foo|\n foo = foo + 42\n foo\nend\n\ndef do_something(foo)\n foo = foo + 42\n foo\nend\n```\n\nYAML configuration example:\n\n```\nLint/ShadowedArgument:\n Enabled: true\n```\n","summary":"
A rule that disallows shadowed arguments.
","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows shadowed arguments.\n\nFor example, this is considered invalid:\n\n```\ndo_something do |foo|\n foo = 1 # shadows block argument\n foo\nend\n\ndef do_something(foo)\n foo = 1 # shadows method argument\n foo\nend\n```\n\nand it should be written as follows:\n\n```\ndo_something do |foo|\n foo = foo + 42\n foo\nend\n\ndef do_something(foo)\n foo = foo + 42\n foo\nend\n```\n\nYAML configuration example:\n\n```\nLint/ShadowedArgument:\n Enabled: true\n```\n","summary":"
A rule that disallows shadowed arguments.
","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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.
A rule that disallows methods with a cyclomatic complexity higher than MaxComplexity
","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows methods with a cyclomatic complexity higher than `MaxComplexity`\n\nYAML configuration example:\n\n```\nMetrics/CyclomaticComplexity:\n Enabled: true\n MaxComplexity: 10\n```\n","summary":"
A rule that disallows methods with a cyclomatic complexity higher than MaxComplexity
","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/rule/metrics/cyclomatic_complexity.cr#L12","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"max_complexity:Int32-instance-method","html_id":"max_complexity:Int32-instance-method","name":"max_complexity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Int32","source_link":null,"def":{"name":"max_complexity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Int32","visibility":"Public","body":"@max_complexity"}},{"id":"max_complexity=(max_complexity:Int32)-instance-method","html_id":"max_complexity=(max_complexity:Int32)-instance-method","name":"max_complexity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"max_complexity","doc":null,"default_value":"","external_name":"max_complexity","restriction":"Int32"}],"args_string":"(max_complexity : Int32)","source_link":null,"def":{"name":"max_complexity=","args":[{"name":"max_complexity","doc":null,"default_value":"","external_name":"max_complexity","restriction":"Int32"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@max_complexity = max_complexity"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node:Crystal::Def)-instance-method","html_id":"test(source,node:Crystal::Def)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Def"}],"args_string":"(source, node : Crystal::Def)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/rule/metrics/cyclomatic_complexity.cr#L20","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Def"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"complexity = (AST::CountingVisitor.new(node)).count\nif complexity > max_complexity && (location = node.name_location)\n issue_for(location, def_name_end_location(node), MSG % {complexity, max_complexity})\nend\n"}}],"macros":[],"types":[]}]},{"html_id":"ameba/Ameba/Rule/Performance","path":"Ameba/Rule/Performance.html","kind":"module","full_name":"Ameba::Rule::Performance","name":"Performance","abstract":false,"superclass":null,"ancestors":[],"locations":[{"filename":"src/ameba/rule/performance/any_after_filter.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/rule/performance/any_after_filter.cr#L1"},{"filename":"src/ameba/rule/performance/first_last_after_filter.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/rule/performance/first_last_after_filter.cr#L1"},{"filename":"src/ameba/rule/performance/size_after_filter.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/rule/performance/size_after_filter.cr#L1"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule","kind":"module","full_name":"Ameba::Rule","name":"Rule"},"doc":null,"summary":null,"class_methods":[],"constructors":[],"instance_methods":[],"macros":[],"types":[{"html_id":"ameba/Ameba/Rule/Performance/AnyAfterFilter","path":"Ameba/Rule/Performance/AnyAfterFilter.html","kind":"struct","full_name":"Ameba::Rule::Performance::AnyAfterFilter","name":"AnyAfterFilter","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/performance/any_after_filter.cr","line_number":28,"url":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/rule/performance/any_after_filter.cr#L28"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"ANY_NAME","name":"ANY_NAME","value":"\"any?\"","doc":null,"summary":null},{"id":"MSG","name":"MSG","value":"\"Use `#{ANY_NAME} {...}` instead of `%s {...}.#{ANY_NAME}`\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Performance","kind":"module","full_name":"Ameba::Rule::Performance","name":"Performance"},"doc":"This rule is used to identify usage of `any?` calls that follow filters.\n\nFor example, this is considered invalid:\n\n```\n[1, 2, 3].select { |e| e > 2 }.any?\n[1, 2, 3].reject { |e| e >= 2 }.any?\n```\n\nAnd it should be written as this:\n\n```\n[1, 2, 3].any? { |e| e > 2 }\n[1, 2, 3].any? { |e| e < 2 }\n```\n\nYAML configuration example:\n\n```\nPerformance/AnyAfterFilter:\n Enabled: true\n FilterNames:\n - select\n - reject\n```\n","summary":"
This rule is used to identify usage of any? calls that follow filters.
","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"This rule is used to identify usage of `any?` calls that follow filters.\n\nFor example, this is considered invalid:\n\n```\n[1, 2, 3].select { |e| e > 2 }.any?\n[1, 2, 3].reject { |e| e >= 2 }.any?\n```\n\nAnd it should be written as this:\n\n```\n[1, 2, 3].any? { |e| e > 2 }\n[1, 2, 3].any? { |e| e < 2 }\n```\n\nYAML configuration example:\n\n```\nPerformance/AnyAfterFilter:\n Enabled: true\n FilterNames:\n - select\n - reject\n```\n","summary":"
This rule is used to identify usage of any? calls that follow filters.
","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/rule/performance/any_after_filter.cr#L28","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"filter_names:Array(String)-instance-method","html_id":"filter_names:Array(String)-instance-method","name":"filter_names","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)","source_link":null,"def":{"name":"filter_names","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String)","visibility":"Public","body":"@filter_names"}},{"id":"filter_names=(filter_names:Array(String))-instance-method","html_id":"filter_names=(filter_names:Array(String))-instance-method","name":"filter_names=","doc":null,"summary":null,"abstract":false,"args":[{"name":"filter_names","doc":null,"default_value":"","external_name":"filter_names","restriction":"Array(String)"}],"args_string":"(filter_names : Array(String))","source_link":null,"def":{"name":"filter_names=","args":[{"name":"filter_names","doc":null,"default_value":"","external_name":"filter_names","restriction":"Array(String)"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@filter_names = filter_names"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node:Crystal::Call)-instance-method","html_id":"test(source,node:Crystal::Call)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Call"}],"args_string":"(source, node : Crystal::Call)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/rule/performance/any_after_filter.cr#L37","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Call"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (node.name == ANY_NAME) && (obj = node.obj)\nelse\n return\nend\nif ((node.block.nil? && obj.is_a?(Crystal::Call)) && (filter_names.includes?(obj.name))) && (!obj.block.nil?)\n issue_for(obj.name_location, node.name_end_location, MSG % obj.name)\nend\n"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Performance/FirstLastAfterFilter","path":"Ameba/Rule/Performance/FirstLastAfterFilter.html","kind":"struct","full_name":"Ameba::Rule::Performance::FirstLastAfterFilter","name":"FirstLastAfterFilter","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/performance/first_last_after_filter.cr","line_number":27,"url":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/rule/performance/first_last_after_filter.cr#L27"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"CALL_NAMES","name":"CALL_NAMES","value":"[\"first\", \"last\", \"first?\", \"last?\"] of ::String","doc":null,"summary":null},{"id":"MSG","name":"MSG","value":"\"Use `find {...}` instead of `%s {...}.%s`\"","doc":null,"summary":null},{"id":"MSG_REVERSE","name":"MSG_REVERSE","value":"\"Use `reverse_each.find {...}` instead of `%s {...}.%s`\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Performance","kind":"module","full_name":"Ameba::Rule::Performance","name":"Performance"},"doc":"This rule is used to identify usage of `first/last/first?/last?` calls that follow filters.\n\nFor example, this is considered inefficient:\n\n```\n[-1, 0, 1, 2].select { |e| e > 0 }.first?\n[-1, 0, 1, 2].select { |e| e > 0 }.last?\n```\n\nAnd can be written as this:\n\n```\n[-1, 0, 1, 2].find { |e| e > 0 }\n[-1, 0, 1, 2].reverse_each.find { |e| e > 0 }\n```\n\nYAML configuration example:\n\n```\nPerformance/FirstLastAfterFilter\n Enabled: true\n FilterNames:\n - select\n```\n","summary":"
This rule is used to identify usage of first/last/first?/last? calls that follow filters.
","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"This rule is used to identify usage of `first/last/first?/last?` calls that follow filters.\n\nFor example, this is considered inefficient:\n\n```\n[-1, 0, 1, 2].select { |e| e > 0 }.first?\n[-1, 0, 1, 2].select { |e| e > 0 }.last?\n```\n\nAnd can be written as this:\n\n```\n[-1, 0, 1, 2].find { |e| e > 0 }\n[-1, 0, 1, 2].reverse_each.find { |e| e > 0 }\n```\n\nYAML configuration example:\n\n```\nPerformance/FirstLastAfterFilter\n Enabled: true\n FilterNames:\n - select\n```\n","summary":"
This rule is used to identify usage of first/last/first?/last? calls that follow filters.
","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/rule/performance/first_last_after_filter.cr#L27","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"filter_names:Array(String)-instance-method","html_id":"filter_names:Array(String)-instance-method","name":"filter_names","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)","source_link":null,"def":{"name":"filter_names","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String)","visibility":"Public","body":"@filter_names"}},{"id":"filter_names=(filter_names:Array(String))-instance-method","html_id":"filter_names=(filter_names:Array(String))-instance-method","name":"filter_names=","doc":null,"summary":null,"abstract":false,"args":[{"name":"filter_names","doc":null,"default_value":"","external_name":"filter_names","restriction":"Array(String)"}],"args_string":"(filter_names : Array(String))","source_link":null,"def":{"name":"filter_names=","args":[{"name":"filter_names","doc":null,"default_value":"","external_name":"filter_names","restriction":"Array(String)"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@filter_names = filter_names"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node:Crystal::Call)-instance-method","html_id":"test(source,node:Crystal::Call)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Call"}],"args_string":"(source, node : Crystal::Call)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/rule/performance/first_last_after_filter.cr#L46","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Call"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (CALL_NAMES.includes?(node.name)) && (obj = node.obj)\nelse\n return\nend\nif node.args.any?\n return\nend\nif ((node.block.nil? && obj.is_a?(Crystal::Call)) && (filter_names.includes?(obj.name))) && (!obj.block.nil?)\n message = node.name.includes?(CALL_NAMES.first) ? MSG : MSG_REVERSE\n issue_for(obj.name_location, node.name_end_location, message % {obj.name, node.name})\nend\n"}},{"id":"test(source)-instance-method","html_id":"test(source)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"args_string":"(source)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/rule/performance/first_last_after_filter.cr#L37","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"AST::NodeVisitor.new(self, source, skip: [Crystal::Macro, Crystal::MacroExpression, Crystal::MacroIf, Crystal::MacroFor])"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Performance/SizeAfterFilter","path":"Ameba/Rule/Performance/SizeAfterFilter.html","kind":"struct","full_name":"Ameba::Rule::Performance::SizeAfterFilter","name":"SizeAfterFilter","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/performance/size_after_filter.cr","line_number":34,"url":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/rule/performance/size_after_filter.cr#L34"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Use `count {...}` instead of `%s {...}.#{SIZE_NAME}`.\"","doc":null,"summary":null},{"id":"SIZE_NAME","name":"SIZE_NAME","value":"\"size\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Performance","kind":"module","full_name":"Ameba::Rule::Performance","name":"Performance"},"doc":"This rule is used to identify usage of `size` calls that follow filter.\n\nFor example, this is considered invalid:\n\n```\n[1, 2, 3].select { |e| e > 2 }.size\n[1, 2, 3].reject { |e| e < 2 }.size\n[1, 2, 3].select(&.< 2).size\n[0, 1, 2].select(&.zero?).size\n[0, 1, 2].reject(&.zero?).size\n```\n\nAnd it should be written as this:\n\n```\n[1, 2, 3].count { |e| e > 2 }\n[1, 2, 3].count { |e| e >= 2 }\n[1, 2, 3].count(&.< 2)\n[0, 1, 2].count(&.zero?)\n[0, 1, 2].count(&.!= 0)\n```\n\nYAML configuration example:\n\n```\nPerformance/SizeAfterFilter:\n Enabled: true\n FilterNames:\n - select\n - reject\n```\n","summary":"
This rule is used to identify usage of size calls that follow filter.
","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"This rule is used to identify usage of `size` calls that follow filter.\n\nFor example, this is considered invalid:\n\n```\n[1, 2, 3].select { |e| e > 2 }.size\n[1, 2, 3].reject { |e| e < 2 }.size\n[1, 2, 3].select(&.< 2).size\n[0, 1, 2].select(&.zero?).size\n[0, 1, 2].reject(&.zero?).size\n```\n\nAnd it should be written as this:\n\n```\n[1, 2, 3].count { |e| e > 2 }\n[1, 2, 3].count { |e| e >= 2 }\n[1, 2, 3].count(&.< 2)\n[0, 1, 2].count(&.zero?)\n[0, 1, 2].count(&.!= 0)\n```\n\nYAML configuration example:\n\n```\nPerformance/SizeAfterFilter:\n Enabled: true\n FilterNames:\n - select\n - reject\n```\n","summary":"
This rule is used to identify usage of size calls that follow filter.
","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/rule/performance/size_after_filter.cr#L34","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"filter_names:Array(String)-instance-method","html_id":"filter_names:Array(String)-instance-method","name":"filter_names","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)","source_link":null,"def":{"name":"filter_names","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String)","visibility":"Public","body":"@filter_names"}},{"id":"filter_names=(filter_names:Array(String))-instance-method","html_id":"filter_names=(filter_names:Array(String))-instance-method","name":"filter_names=","doc":null,"summary":null,"abstract":false,"args":[{"name":"filter_names","doc":null,"default_value":"","external_name":"filter_names","restriction":"Array(String)"}],"args_string":"(filter_names : Array(String))","source_link":null,"def":{"name":"filter_names=","args":[{"name":"filter_names","doc":null,"default_value":"","external_name":"filter_names","restriction":"Array(String)"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@filter_names = filter_names"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node:Crystal::Call)-instance-method","html_id":"test(source,node:Crystal::Call)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Call"}],"args_string":"(source, node : Crystal::Call)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/rule/performance/size_after_filter.cr#L52","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Call"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (node.name == SIZE_NAME) && (obj = node.obj)\nelse\n return\nend\nif (obj.is_a?(Crystal::Call) && (filter_names.includes?(obj.name))) && (!obj.block.nil?)\n issue_for(obj.name_location, node.name_end_location, MSG % obj.name)\nend\n"}},{"id":"test(source)-instance-method","html_id":"test(source)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"args_string":"(source)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/rule/performance/size_after_filter.cr#L43","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"AST::NodeVisitor.new(self, source, skip: [Crystal::Macro, Crystal::MacroExpression, Crystal::MacroIf, Crystal::MacroFor])"}}],"macros":[],"types":[]}]},{"html_id":"ameba/Ameba/Rule/Style","path":"Ameba/Rule/Style.html","kind":"module","full_name":"Ameba::Rule::Style","name":"Style","abstract":false,"superclass":null,"ancestors":[],"locations":[{"filename":"src/ameba/rule/style/constant_names.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/rule/style/constant_names.cr#L1"},{"filename":"src/ameba/rule/style/is_a_nil.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/rule/style/is_a_nil.cr#L1"},{"filename":"src/ameba/rule/style/large_numbers.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/rule/style/large_numbers.cr#L1"},{"filename":"src/ameba/rule/style/method_names.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/rule/style/method_names.cr#L1"},{"filename":"src/ameba/rule/style/negated_conditions_in_unless.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/rule/style/negated_conditions_in_unless.cr#L1"},{"filename":"src/ameba/rule/style/predicate_name.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/rule/style/predicate_name.cr#L1"},{"filename":"src/ameba/rule/style/redundant_begin.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/rule/style/redundant_begin.cr#L1"},{"filename":"src/ameba/rule/style/redundant_next.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/rule/style/redundant_next.cr#L1"},{"filename":"src/ameba/rule/style/redundant_return.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/rule/style/redundant_return.cr#L1"},{"filename":"src/ameba/rule/style/type_names.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/rule/style/type_names.cr#L1"},{"filename":"src/ameba/rule/style/unless_else.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/rule/style/unless_else.cr#L1"},{"filename":"src/ameba/rule/style/variable_names.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/rule/style/variable_names.cr#L1"},{"filename":"src/ameba/rule/style/while_true.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/rule/style/while_true.cr#L1"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule","kind":"module","full_name":"Ameba::Rule","name":"Rule"},"doc":null,"summary":null,"class_methods":[],"constructors":[],"instance_methods":[],"macros":[],"types":[{"html_id":"ameba/Ameba/Rule/Style/ConstantNames","path":"Ameba/Rule/Style/ConstantNames.html","kind":"struct","full_name":"Ameba::Rule::Style::ConstantNames","name":"ConstantNames","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/style/constant_names.cr","line_number":25,"url":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/rule/style/constant_names.cr#L25"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Constant name should be screaming-cased: %s, not %s\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Style","kind":"module","full_name":"Ameba::Rule::Style","name":"Style"},"doc":"A rule that enforces constant names to be in screaming case.\n\nFor example, these constant names are considered valid:\n\n```\nLUCKY_NUMBERS = [3, 7, 11]\nDOCUMENTATION_URL = \"http://crystal-lang.org/docs\"\n```\n\nAnd these are invalid names:\n\n```\nmyBadConstant = 1\nWrong_NAME = 2\n```\n\nYAML configuration example:\n\n```\nStyle/ConstantNames:\n Enabled: true\n```\n","summary":"
A rule that enforces constant names to be in screaming case.
","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that enforces constant names to be in screaming case.\n\nFor example, these constant names are considered valid:\n\n```\nLUCKY_NUMBERS = [3, 7, 11]\nDOCUMENTATION_URL = \"http://crystal-lang.org/docs\"\n```\n\nAnd these are invalid names:\n\n```\nmyBadConstant = 1\nWrong_NAME = 2\n```\n\nYAML configuration example:\n\n```\nStyle/ConstantNames:\n Enabled: true\n```\n","summary":"
A rule that enforces constant names to be in screaming case.
","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/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/bedf3a68/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/bedf3a68/src/ameba/rule/style/is_a_nil.cr#L23"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Use `nil?` instead of `is_a?(Nil)`\"","doc":null,"summary":null},{"id":"PATH_NIL_NAMES","name":"PATH_NIL_NAMES","value":"[\"Nil\"] of ::String","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Style","kind":"module","full_name":"Ameba::Rule::Style","name":"Style"},"doc":"A rule that disallows calls to `is_a?(Nil)` in favor of `nil?`.\n\nThis is considered bad:\n\n```\nvar.is_a? Nil\n```\n\nAnd needs to be written as:\n\n```\nvar.nil?\n```\n\nYAML configuration example:\n\n```\nStyle/IsANil:\n Enabled: true\n```\n","summary":"
A rule that disallows calls to is_a?(Nil) in favor of nil?.
","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows calls to `is_a?(Nil)` in favor of `nil?`.\n\nThis is considered bad:\n\n```\nvar.is_a? Nil\n```\n\nAnd needs to be written as:\n\n```\nvar.nil?\n```\n\nYAML configuration example:\n\n```\nStyle/IsANil:\n Enabled: true\n```\n","summary":"
A rule that disallows calls to is_a?(Nil) in favor of nil?.
","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/rule/style/is_a_nil.cr#L23","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node:Crystal::IsA)-instance-method","html_id":"test(source,node:Crystal::IsA)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::IsA"}],"args_string":"(source, node : Crystal::IsA)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/rule/style/is_a_nil.cr#L31","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::IsA"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if node.nil_check?\n return\nend\nconst = node.const\nif const.is_a?(Crystal::Path) && (const.names == PATH_NIL_NAMES)\n issue_for(const, MSG)\nend\n"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Style/LargeNumbers","path":"Ameba/Rule/Style/LargeNumbers.html","kind":"struct","full_name":"Ameba::Rule::Style::LargeNumbers","name":"LargeNumbers","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/style/large_numbers.cr","line_number":30,"url":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/rule/style/large_numbers.cr#L30"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Large numbers should be written with underscores: %s\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Style","kind":"module","full_name":"Ameba::Rule::Style","name":"Style"},"doc":"A rule that disallows usage of large numbers without underscore.\nThese do not affect the value of the number, but can help read\nlarge numbers more easily.\n\nFor example, these are considered invalid:\n\n```\n10000\n141592654\n5.12345\n```\n\nAnd has to be rewritten as the following:\n\n```\n10_000\n141_592_654\n5.123_45\n```\n\nYAML configuration example:\n\n```\nStyle/LargeNumbers:\n Enabled: true\n IntMinDigits: 5 # i.e. integers higher than 9999\n```\n","summary":"
A rule that disallows usage of large numbers without underscore.
","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows usage of large numbers without underscore.\nThese do not affect the value of the number, but can help read\nlarge numbers more easily.\n\nFor example, these are considered invalid:\n\n```\n10000\n141592654\n5.12345\n```\n\nAnd has to be rewritten as the following:\n\n```\n10_000\n141_592_654\n5.123_45\n```\n\nYAML configuration example:\n\n```\nStyle/LargeNumbers:\n Enabled: true\n IntMinDigits: 5 # i.e. integers higher than 9999\n```\n","summary":"
A rule that disallows usage of large numbers without underscore.
","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/src/ameba/rule/style/predicate_name.cr#L32"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Favour method name '%s?' over '%s'\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Style","kind":"module","full_name":"Ameba::Rule::Style","name":"Style"},"doc":"A rule that disallows tautological predicate names, meaning those that\nstart with the prefix `has_` or the prefix `is_`. Ignores if the alternative isn't valid Crystal code (e.g. `is_404?`).\n\nFavour these:\n\n```\ndef valid?(x)\nend\n\ndef picture?(x)\nend\n```\n\nOver these:\n\n```\ndef is_valid?(x)\nend\n\ndef has_picture?(x)\nend\n```\n\nYAML configuration example:\n\n```\nStyle/PredicateName:\n Enabled: true\n```\n","summary":"
A rule that disallows tautological predicate names, meaning those that start with the prefix has_ or the prefix is_.
","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows tautological predicate names, meaning those that\nstart with the prefix `has_` or the prefix `is_`. Ignores if the alternative isn't valid Crystal code (e.g. `is_404?`).\n\nFavour these:\n\n```\ndef valid?(x)\nend\n\ndef picture?(x)\nend\n```\n\nOver these:\n\n```\ndef is_valid?(x)\nend\n\ndef has_picture?(x)\nend\n```\n\nYAML configuration example:\n\n```\nStyle/PredicateName:\n Enabled: true\n```\n","summary":"
A rule that disallows tautological predicate names, meaning those that start with the prefix has_ or the prefix is_.
","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/rule/style/predicate_name.cr#L32","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Bool","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled:Bool)-instance-method","html_id":"enabled=(enabled:Bool)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":"Bool"}],"args_string":"(enabled : Bool)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":"Bool"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node:Crystal::Def)-instance-method","html_id":"test(source,node:Crystal::Def)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Def"}],"args_string":"(source, node : Crystal::Def)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/rule/style/predicate_name.cr#L40","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Def"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if node.name =~ (/^(is|has)_(\\w+)\\?/)\n alternative = $~[2]\n if alternative =~ (/^[a-z][a-zA-Z_0-9]*$/)\n else\n return\n end\n issue_for(node, MSG % {alternative, node.name})\nend"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Style/RedundantBegin","path":"Ameba/Rule/Style/RedundantBegin.html","kind":"struct","full_name":"Ameba::Rule::Style::RedundantBegin","name":"RedundantBegin","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/Ameba/AST/Util","kind":"module","full_name":"Ameba::AST::Util","name":"Util"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/style/redundant_begin.cr","line_number":59,"url":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/rule/style/redundant_begin.cr#L59"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Redundant `begin` block detected\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/Ameba/AST/Util","kind":"module","full_name":"Ameba::AST::Util","name":"Util"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Style","kind":"module","full_name":"Ameba::Rule::Style","name":"Style"},"doc":"A rule that disallows redundant begin blocks.\n\nCurrently it is able to detect:\n\n1. Exception handler block that can be used as a part of the method.\n\nFor example, this:\n\n```\ndef method\n begin\n read_content\n rescue\n close_file\n end\nend\n```\n\nshould be rewritten as:\n\n```\ndef method\n read_content\nrescue\n close_file\nend\n```\n\n2. begin..end block as a top level block in a method.\n\nFor example this is considered invalid:\n\n```\ndef method\n begin\n a = 1\n b = 2\n end\nend\n```\n\nand has to be written as the following:\n\n```\ndef method\n a = 1\n b = 2\nend\n```\n\nYAML configuration example:\n\n```\nStyle/RedundantBegin:\n Enabled: true\n```\n","summary":"
A rule that disallows redundant begin blocks.
","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows redundant begin blocks.\n\nCurrently it is able to detect:\n\n1. Exception handler block that can be used as a part of the method.\n\nFor example, this:\n\n```\ndef method\n begin\n read_content\n rescue\n close_file\n end\nend\n```\n\nshould be rewritten as:\n\n```\ndef method\n read_content\nrescue\n close_file\nend\n```\n\n2. begin..end block as a top level block in a method.\n\nFor example this is considered invalid:\n\n```\ndef method\n begin\n a = 1\n b = 2\n end\nend\n```\n\nand has to be written as the following:\n\n```\ndef method\n a = 1\n b = 2\nend\n```\n\nYAML configuration example:\n\n```\nStyle/RedundantBegin:\n Enabled: true\n```\n","summary":"
A rule that disallows redundant begin blocks.
","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/src/ameba/rule/style/unless_else.cr#L46"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Favour if over unless with else\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Style","kind":"module","full_name":"Ameba::Rule::Style","name":"Style"},"doc":"A rule that disallows the use of an `else` block with the `unless`.\n\nFor example, the rule considers these valid:\n\n```\nunless something\n :ok\nend\n\nif something\n :one\nelse\n :two\nend\n```\n\nBut it considers this one invalid as it is an `unless` with an `else`:\n\n```\nunless something\n :one\nelse\n :two\nend\n```\n\nThe solution is to swap the order of the blocks, and change the `unless` to\nan `if`, so the previous invalid example would become this:\n\n```\nif something\n :two\nelse\n :one\nend\n```\n\nYAML configuration example:\n\n```\nStyle/UnlessElse:\n Enabled: true\n```\n","summary":"
A rule that disallows the use of an else block with the unless.
","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows the use of an `else` block with the `unless`.\n\nFor example, the rule considers these valid:\n\n```\nunless something\n :ok\nend\n\nif something\n :one\nelse\n :two\nend\n```\n\nBut it considers this one invalid as it is an `unless` with an `else`:\n\n```\nunless something\n :one\nelse\n :two\nend\n```\n\nThe solution is to swap the order of the blocks, and change the `unless` to\nan `if`, so the previous invalid example would become this:\n\n```\nif something\n :two\nelse\n :one\nend\n```\n\nYAML configuration example:\n\n```\nStyle/UnlessElse:\n Enabled: true\n```\n","summary":"
A rule that disallows the use of an else block with the unless.
","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/rule/style/unless_else.cr#L46","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node:Crystal::Unless)-instance-method","html_id":"test(source,node:Crystal::Unless)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Unless"}],"args_string":"(source, node : Crystal::Unless)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/rule/style/unless_else.cr#L53","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Unless"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if node.else.nop?\n return\nend\nissue_for(node, MSG)\n"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Style/VariableNames","path":"Ameba/Rule/Style/VariableNames.html","kind":"struct","full_name":"Ameba::Rule::Style::VariableNames","name":"VariableNames","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/style/variable_names.cr","line_number":26,"url":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/rule/style/variable_names.cr#L26"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Var name should be underscore-cased: %s, not %s\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Style","kind":"module","full_name":"Ameba::Rule::Style","name":"Style"},"doc":"A rule that enforces variable names to be in underscored case.\n\nFor example, these variable names are considered valid:\n\n```\nvar_name = 1\nname = 2\n_another_good_name = 3\n```\n\nAnd these are invalid variable names:\n\n```\nmyBadNamedVar = 1\nwrong_Name = 2\n```\n\nYAML configuration example:\n\n```\nStyle/VariableNames:\n Enabled: true\n```\n","summary":"
A rule that enforces variable names to be in underscored case.
","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that enforces variable names to be in underscored case.\n\nFor example, these variable names are considered valid:\n\n```\nvar_name = 1\nname = 2\n_another_good_name = 3\n```\n\nAnd these are invalid variable names:\n\n```\nmyBadNamedVar = 1\nwrong_Name = 2\n```\n\nYAML configuration example:\n\n```\nStyle/VariableNames:\n Enabled: true\n```\n","summary":"
A rule that enforces variable names to be in underscored case.
","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/src/ameba/rule/style/while_true.cr#L29"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"While statement using true literal as condition\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Style","kind":"module","full_name":"Ameba::Rule::Style","name":"Style"},"doc":"A rule that disallows the use of `while true` instead of using the idiomatic `loop`\n\nFor example, this is considered invalid:\n\n```\nwhile true\n do_something\n break if some_condition\nend\n```\n\nAnd should be replaced by the following:\n\n```\nloop do\n do_something\n break if some_condition\nend\n```\n\nYAML configuration example:\n\n```\nStyle/WhileTrue:\n Enabled: true\n```\n","summary":"
A rule that disallows the use of while true instead of using the idiomatic loop
","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows the use of `while true` instead of using the idiomatic `loop`\n\nFor example, this is considered invalid:\n\n```\nwhile true\n do_something\n break if some_condition\nend\n```\n\nAnd should be replaced by the following:\n\n```\nloop do\n do_something\n break if some_condition\nend\n```\n\nYAML configuration example:\n\n```\nStyle/WhileTrue:\n Enabled: true\n```\n","summary":"
A rule that disallows the use of while true instead of using the idiomatic loop
","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/rule/style/while_true.cr#L29","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node:Crystal::While)-instance-method","html_id":"test(source,node:Crystal::While)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::While"}],"args_string":"(source, node : Crystal::While)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/rule/style/while_true.cr#L36","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::While"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if node.cond.true_literal?\nelse\n return\nend\nissue_for(node, MSG)\n"}}],"macros":[],"types":[]}]}]},{"html_id":"ameba/Ameba/Runner","path":"Ameba/Runner.html","kind":"class","full_name":"Ameba::Runner","name":"Runner","abstract":false,"superclass":{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},"ancestors":[{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/runner.cr","line_number":13,"url":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/runner.cr#L13"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba","kind":"module","full_name":"Ameba","name":"Ameba"},"doc":"Represents a runner for inspecting sources files.\nHolds a list of rules to do inspection based on,\nlist of sources to run inspection on and a formatter\nto prepare a report.\n\n```\nconfig = Ameba::Config.load\nrunner = Ameba::Runner.new config\nrunner.run.success? # => true or false\n```\n","summary":"
Represents a runner for inspecting sources files.
","class_methods":[],"constructors":[{"id":"new(config:Config)-class-method","html_id":"new(config:Config)-class-method","name":"new","doc":"Instantiates a runner using a `config`.\n\n```\nconfig = Ameba::Config.load\nconfig.files = files\nconfig.formatter = formatter\n\nAmeba::Runner.new config\n```\n","summary":"
Instantiates a runner using a config.
","abstract":false,"args":[{"name":"config","doc":null,"default_value":"","external_name":"config","restriction":"Config"}],"args_string":"(config : Config)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/runner.cr#L42","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"","external_name":"config","restriction":"Config"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"_ = allocate\n_.initialize(config)\nif _.responds_to?(:finalize)\n ::GC.add_finalizer(_)\nend\n_\n"}}],"instance_methods":[{"id":"explain(location,output=STDOUT)-instance-method","html_id":"explain(location,output=STDOUT)-instance-method","name":"explain","doc":"Explains an issue at a specified *location*.\n\nRunner should perform inspection before doing the explain.\nThis is necessary to be able to find the issue at a specified location.\n\n```\nrunner = Ameba::Runner.new config\nrunner.run\nrunner.explain({file: file, line: l, column: c})\n```\n","summary":"
Explains an issue at a specified location.
","abstract":false,"args":[{"name":"location","doc":null,"default_value":"","external_name":"location","restriction":""},{"name":"output","doc":null,"default_value":"STDOUT","external_name":"output","restriction":""}],"args_string":"(location, output = STDOUT)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/src/ameba/severity.cr#L31"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba","kind":"module","full_name":"Ameba","name":"Ameba"},"doc":"Converter for `YAML.mapping` which converts severity enum to and from YAML.","summary":"
Converter for YAML.mapping which converts severity enum to and from YAML.
","class_methods":[{"id":"from_yaml(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"from_yaml(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"from_yaml","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/severity.cr#L32","def":{"name":"from_yaml","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if node.is_a?(YAML::Nodes::Scalar)\nelse\n raise(\"Severity must be a scalar, not #{node.class}\")\nend\ncase value = node.value\nwhen String\n Severity.parse(value)\nwhen Nil\n nil\nelse\n raise(\"Incorrect severity: #{value}\")\nend\n"}},{"id":"to_yaml(value:Severity,yaml:YAML::Nodes::Builder)-class-method","html_id":"to_yaml(value:Severity,yaml:YAML::Nodes::Builder)-class-method","name":"to_yaml","doc":null,"summary":null,"abstract":false,"args":[{"name":"value","doc":null,"default_value":"","external_name":"value","restriction":"Severity"},{"name":"yaml","doc":null,"default_value":"","external_name":"yaml","restriction":"YAML::Nodes::Builder"}],"args_string":"(value : Severity, yaml : YAML::Nodes::Builder)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/severity.cr#L45","def":{"name":"to_yaml","args":[{"name":"value","doc":null,"default_value":"","external_name":"value","restriction":"Severity"},{"name":"yaml","doc":null,"default_value":"","external_name":"yaml","restriction":"YAML::Nodes::Builder"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"yaml.scalar(value)"}}],"constructors":[],"instance_methods":[],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Source","path":"Ameba/Source.html","kind":"class","full_name":"Ameba::Source","name":"Source","abstract":false,"superclass":{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},"ancestors":[{"html_id":"ameba/Ameba/Reportable","kind":"module","full_name":"Ameba::Reportable","name":"Reportable"},{"html_id":"ameba/Ameba/InlineComments","kind":"module","full_name":"Ameba::InlineComments","name":"InlineComments"},{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/source.cr","line_number":4,"url":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/source.cr#L4"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[{"html_id":"ameba/Ameba/InlineComments","kind":"module","full_name":"Ameba::InlineComments","name":"InlineComments"},{"html_id":"ameba/Ameba/Reportable","kind":"module","full_name":"Ameba::Reportable","name":"Reportable"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba","kind":"module","full_name":"Ameba","name":"Ameba"},"doc":"An entity that represents a Crystal source file.\nHas path, lines of code and issues reported by rules.","summary":"
An entity that represents a Crystal source file.
","class_methods":[],"constructors":[{"id":"new(code:String,path="")-class-method","html_id":"new(code:String,path="")-class-method","name":"new","doc":"Creates a new source by `code` and `path`.\n\nFor example:\n\n```\npath = \"./src/source.cr\"\nAmeba::Source.new File.read(path), path\n```\n","summary":"
","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/source.cr#L52","def":{"name":"ast","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@ast || (@ast = (Crystal::Parser.new(code)).tap do |parser|\n parser.wants_doc = true\nend.tap do |parser|\n parser.filename = @path\nend.parse)"}},{"id":"code:String-instance-method","html_id":"code:String-instance-method","name":"code","doc":"Crystal code (content of a source file).","summary":"
Crystal code (content of a source file).
","abstract":false,"args":[],"args_string":" : String","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/src/ameba/tokenizer.cr#L14"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba","kind":"module","full_name":"Ameba","name":"Ameba"},"doc":"Represents Crystal syntax tokenizer based on `Crystal::Lexer`.\n\n```\nsource = Ameba::Source.new code, path\ntokenizer = Ameba::Tokenizer.new(source)\ntokenizer.run do |token|\n puts token\nend\n```\n","summary":"
Represents Crystal syntax tokenizer based on Crystal::Lexer.
","class_methods":[],"constructors":[{"id":"new(lexer:Crystal::Lexer)-class-method","html_id":"new(lexer:Crystal::Lexer)-class-method","name":"new","doc":"Instantiates Tokenizer using a `lexer`.\n\n```\nlexer = Crystal::Lexer.new(code)\nAmeba::Tokenizer.new(lexer)\n```\n","summary":"
Instantiates Tokenizer using a lexer.
","abstract":false,"args":[{"name":"lexer","doc":null,"default_value":"","external_name":"lexer","restriction":"Crystal::Lexer"}],"args_string":"(lexer : Crystal::Lexer)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/tokenizer.cr#L37","def":{"name":"new","args":[{"name":"lexer","doc":null,"default_value":"","external_name":"lexer","restriction":"Crystal::Lexer"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"_ = allocate\n_.initialize(lexer)\nif _.responds_to?(:finalize)\n ::GC.add_finalizer(_)\nend\n_\n"}},{"id":"new(source)-class-method","html_id":"new(source)-class-method","name":"new","doc":"Instantiates Tokenizer using a `source`.\n\n```\nsource = Ameba::Source.new code, path\nAmeba::Tokenizer.new(source)\n```\n","summary":"
Instantiates Tokenizer using a source.
","abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"args_string":"(source)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/tokenizer.cr#L22","def":{"name":"new","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"_ = allocate\n_.initialize(source)\nif _.responds_to?(:finalize)\n ::GC.add_finalizer(_)\nend\n_\n"}}],"instance_methods":[{"id":"run(&block:Crystal::Token->_)-instance-method","html_id":"run(&block:Crystal::Token->_)-instance-method","name":"run","doc":"Runs the tokenizer and yields each token as a block argument.\n\n```\nAmeba::Tokenizer.new(source).run do |token|\n puts token\nend\n```\n","summary":"
Runs the tokenizer and yields each token as a block argument.
","abstract":false,"args":[],"args_string":"(&block : Crystal::Token -> _)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/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/js/doc.js b/js/doc.js
index eb03302d..cdf43da1 100644
--- a/js/doc.js
+++ b/js/doc.js
@@ -908,7 +908,7 @@ document.addEventListener('DOMContentLoaded', function() {
};
}
- var repositoryName = document.querySelector('[name=repository-name]').getAttribute('content');
+ var repositoryName = document.querySelector('#repository-name').getAttribute('content');
var typesList = document.querySelector('.types-list');
var searchInput = document.querySelector('.search-input');
var parents = document.querySelectorAll('.types-list li.parent');
diff --git a/search-index.js b/search-index.js
index 6ff74ae4..ebf60f02 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":null,"aliased_html":null,"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":[],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":null,"aliased_html":null,"const":false,"constants":[{"id":"VERSION","name":"VERSION","value":"{{ (`shards version \\\"/home/travis/build/crystal-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":"
","abstract":false,"args":[{"name":"config","doc":null,"default_value":"Config.load","external_name":"config","restriction":""}],"args_string":"(config = Config.load)","args_html":"(config = Config.load)","location":{"filename":"src/ameba.cr","line_number":39,"url":null},"def":{"name":"run","args":[{"name":"config","doc":null,"default_value":"Config.load","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"(Runner.new(config)).run"}}],"macros":[],"types":[{"html_id":"ameba/Ameba/AST","path":"Ameba/AST.html","kind":"module","full_name":"Ameba::AST","name":"AST","abstract":false,"superclass":null,"ancestors":[],"locations":[],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":null,"aliased_html":null,"const":false,"constants":[{"id":"NODES","name":"NODES","value":"[Alias, IsA, Assign, Call, Block, Case, ClassDef, ClassVar, Def, EnumDef, ExceptionHandler, Expressions, HashLiteral, If, InstanceVar, LibDef, ModuleDef, NilLiteral, StringInterpolation, Unless, Var, When, While, Until]","doc":"List of nodes to be visited by Ameba's rules.","summary":"
List of nodes to be visited by Ameba's rules.
"}],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba","kind":"module","full_name":"Ameba","name":"Ameba"},"doc":"A module that helps to traverse Crystal AST using `Crystal::Visitor`.","summary":"
A module that helps to traverse Crystal AST using Crystal::Visitor.
","class_methods":[],"constructors":[],"instance_methods":[],"macros":[],"types":[{"html_id":"ameba/Ameba/AST/Argument","path":"Ameba/AST/Argument.html","kind":"class","full_name":"Ameba::AST::Argument","name":"Argument","abstract":false,"superclass":{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},"ancestors":[{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":null,"aliased_html":null,"const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/AST","kind":"module","full_name":"Ameba::AST","name":"AST"},"doc":"Represents the argument of some node.\nHolds the reference to the variable, thus to scope.\n\nFor example, all these vars are arguments:\n\n```\ndef method(a, b, c = 10, &block)\n 3.times do |i|\n end\n\n ->(x : Int32) {}\nend\n```","summary":"
Represents the argument of some node.
","class_methods":[],"constructors":[{"id":"new(node,variable)-class-method","html_id":"new(node,variable)-class-method","name":"new","doc":"Creates a new argument.\n\n```\nArgument.new(node, variable)\n```","summary":"
Creates a new argument.
","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""},{"name":"variable","doc":null,"default_value":"","external_name":"variable","restriction":""}],"args_string":"(node, variable)","args_html":"(node, variable)","location":{"filename":"src/ameba/ast/variabling/argument.cr","line_number":31,"url":null},"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)","args_html":"(*args, **options)","location":{"filename":"src/ameba/ast/variabling/argument.cr","line_number":23,"url":null},"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, &)","args_html":"(*args, **options, &)","location":{"filename":"src/ameba/ast/variabling/argument.cr","line_number":23,"url":null},"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":"","args_html":"","location":{"filename":"src/ameba/ast/variabling/argument.cr","line_number":35,"url":null},"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)","args_html":"(*args, **options)","location":{"filename":"src/ameba/ast/variabling/argument.cr","line_number":22,"url":null},"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, &)","args_html":"(*args, **options, &)","location":{"filename":"src/ameba/ast/variabling/argument.cr","line_number":22,"url":null},"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":"
","abstract":false,"args":[],"args_string":" : Crystal::Var | Crystal::Arg","args_html":" : Crystal::Var | Crystal::Arg","location":{"filename":"src/ameba/ast/variabling/argument.cr","line_number":17,"url":null},"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)","args_html":"(*args, **options)","location":{"filename":"src/ameba/ast/variabling/argument.cr","line_number":24,"url":null},"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, &)","args_html":"(*args, **options, &)","location":{"filename":"src/ameba/ast/variabling/argument.cr","line_number":24,"url":null},"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","args_html":" : Variable","location":{"filename":"src/ameba/ast/variabling/argument.cr","line_number":20,"url":null},"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":[],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":null,"aliased_html":null,"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)","args_html":"(node, variable, scope)","location":{"filename":"src/ameba/ast/variabling/assignment.cr","line_number":32,"url":null},"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?","args_html":" : Branch?","location":{"filename":"src/ameba/ast/variabling/assignment.cr","line_number":17,"url":null},"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, &)","args_html":"(*args, **options, &)","location":{"filename":"src/ameba/ast/variabling/assignment.cr","line_number":24,"url":null},"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)","args_html":"(*args, **options)","location":{"filename":"src/ameba/ast/variabling/assignment.cr","line_number":24,"url":null},"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":"","args_html":"","location":{"filename":"src/ameba/ast/variabling/assignment.cr","line_number":61,"url":null},"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)","args_html":"(*args, **options)","location":{"filename":"src/ameba/ast/variabling/assignment.cr","line_number":23,"url":null},"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, &)","args_html":"(*args, **options, &)","location":{"filename":"src/ameba/ast/variabling/assignment.cr","line_number":23,"url":null},"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","args_html":" : Crystal::ASTNode","location":{"filename":"src/ameba/ast/variabling/assignment.cr","line_number":11,"url":null},"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":" : Scope","args_html":" : Scope","location":{"filename":"src/ameba/ast/variabling/assignment.cr","line_number":20,"url":null},"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":"","args_html":"","location":{"filename":"src/ameba/ast/variabling/assignment.cr","line_number":66,"url":null},"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, &)","args_html":"(*args, **options, &)","location":{"filename":"src/ameba/ast/variabling/assignment.cr","line_number":22,"url":null},"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)","args_html":"(*args, **options)","location":{"filename":"src/ameba/ast/variabling/assignment.cr","line_number":22,"url":null},"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":"","args_html":"","location":{"filename":"src/ameba/ast/variabling/assignment.cr","line_number":99,"url":null},"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","args_html":" : Variable","location":{"filename":"src/ameba/ast/variabling/assignment.cr","line_number":14,"url":null},"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":[],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":null,"aliased_html":null,"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)","args_html":"(rule, source)","location":{"filename":"src/ameba/ast/visitors/base_visitor.cr","line_number":19,"url":null},"def":{"name":"new","args":[{"name":"rule","doc":null,"default_value":"","external_name":"rule","restriction":""},{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"_ = allocate\n_.initialize(rule, source)\nif _.responds_to?(:finalize)\n ::GC.add_finalizer(_)\nend\n_\n"}}],"instance_methods":[{"id":"visit(node:Crystal::ASTNode)-instance-method","html_id":"visit(node:Crystal::ASTNode)-instance-method","name":"visit","doc":"A main visit method that accepts `Crystal::ASTNode`.\nReturns true meaning all child nodes will be traversed.","summary":"
A main visit method that accepts Crystal::ASTNode.
","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ASTNode"}],"args_string":"(node : Crystal::ASTNode)","args_html":"(node : Crystal::ASTNode)","location":{"filename":"src/ameba/ast/visitors/base_visitor.cr","line_number":25,"url":null},"def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ASTNode"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"true"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/AST/Branch","path":"Ameba/AST/Branch.html","kind":"class","full_name":"Ameba::AST::Branch","name":"Branch","abstract":false,"superclass":{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},"ancestors":[{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":null,"aliased_html":null,"const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/AST","kind":"module","full_name":"Ameba::AST","name":"AST"},"doc":"Represents the branch in Crystal code.\nBranch is a part of a branchable statement.\nFor example, the branchable if statement contains 3 branches:\n\n```\nif a = something # --> Branch A\n a = 1 # --> Branch B\n put a if out # --> Branch C\nelse\n do_something a # --> Branch D\nend\n```\n","summary":"
Represents the branch in Crystal code.
","class_methods":[{"id":"of(node:Crystal::ASTNode,parent_node:Crystal::ASTNode)-class-method","html_id":"of(node:Crystal::ASTNode,parent_node:Crystal::ASTNode)-class-method","name":"of","doc":"Constructs a new branch based on the node some parent scope.\n\n```\nBranch.of(assign_node, def_node)\n```","summary":"
Constructs a new branch based on the node some parent scope.
","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ASTNode"},{"name":"parent_node","doc":null,"default_value":"","external_name":"parent_node","restriction":"Crystal::ASTNode"}],"args_string":"(node : Crystal::ASTNode, parent_node : Crystal::ASTNode)","args_html":"(node : Crystal::ASTNode, parent_node : Crystal::ASTNode)","location":{"filename":"src/ameba/ast/branch.cr","line_number":66,"url":null},"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)","args_html":"(node : Crystal::ASTNode, scope : Scope)","location":{"filename":"src/ameba/ast/branch.cr","line_number":57,"url":null},"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)","args_html":"(node, parent)","location":{"filename":"src/ameba/ast/branch.cr","line_number":33,"url":null},"def":{"name":"new","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""},{"name":"parent","doc":null,"default_value":"","external_name":"parent","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"_ = allocate\n_.initialize(node, parent)\nif _.responds_to?(:finalize)\n ::GC.add_finalizer(_)\nend\n_\n"}}],"instance_methods":[{"id":"==(other:self)-instance-method","html_id":"==(other:self)-instance-method","name":"==","doc":"Returns `true` if this reference is the same as *other*. Invokes `same?`.","summary":"
Returns true if this reference is the same as other.
","abstract":false,"args":[{"name":"hasher","doc":null,"default_value":"","external_name":"hasher","restriction":""}],"args_string":"(hasher)","args_html":"(hasher)","location":null,"def":{"name":"hash","args":[{"name":"hasher","doc":null,"default_value":"","external_name":"hasher","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"hasher = node.hash(hasher)\nhasher = location.hash(hasher)\nhasher\n"}},{"id":"in_loop?-instance-method","html_id":"in_loop?-instance-method","name":"in_loop?","doc":"Returns true if current branch is in a loop, false - otherwise.\nFor example, this branch is in a loop:\n\n```\nwhile true\n handle_input # this branch is in a loop\n if wrong_input\n show_message # this branch is also in a loop.\n end\nend\n```\n","summary":"
Returns true if current branch is in a loop, false - otherwise.
","abstract":false,"args":[],"args_string":"","args_html":"","location":{"filename":"src/ameba/ast/branch.cr","line_number":48,"url":null},"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)","args_html":"(*args, **options)","location":{"filename":"src/ameba/ast/branch.cr","line_number":23,"url":null},"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, &)","args_html":"(*args, **options, &)","location":{"filename":"src/ameba/ast/branch.cr","line_number":23,"url":null},"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":"
","abstract":false,"args":[],"args_string":" : Branchable","args_html":" : Branchable","location":{"filename":"src/ameba/ast/branch.cr","line_number":20,"url":null},"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)","args_html":"(*args, **options)","location":{"filename":"src/ameba/ast/branch.cr","line_number":22,"url":null},"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, &)","args_html":"(*args, **options, &)","location":{"filename":"src/ameba/ast/branch.cr","line_number":22,"url":null},"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":[],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":null,"aliased_html":null,"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)","args_html":"(node, parent = nil)","location":{"filename":"src/ameba/ast/branchable.cr","line_number":35,"url":null},"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)","args_html":" : Array(Crystal::ASTNode)","location":{"filename":"src/ameba/ast/branchable.cr","line_number":18,"url":null},"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)","args_html":"(*args, **options)","location":{"filename":"src/ameba/ast/branchable.cr","line_number":28,"url":null},"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, &)","args_html":"(*args, **options, &)","location":{"filename":"src/ameba/ast/branchable.cr","line_number":28,"url":null},"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)","args_html":"(*args, **options)","location":{"filename":"src/ameba/ast/branchable.cr","line_number":27,"url":null},"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, &)","args_html":"(*args, **options, &)","location":{"filename":"src/ameba/ast/branchable.cr","line_number":27,"url":null},"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":"","args_html":"","location":{"filename":"src/ameba/ast/branchable.cr","line_number":39,"url":null},"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":"
","abstract":false,"args":[],"args_string":" : Branchable?","args_html":" : Branchable?","location":{"filename":"src/ameba/ast/branchable.cr","line_number":24,"url":null},"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)","args_html":"(*args, **options)","location":{"filename":"src/ameba/ast/branchable.cr","line_number":26,"url":null},"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, &)","args_html":"(*args, **options, &)","location":{"filename":"src/ameba/ast/branchable.cr","line_number":26,"url":null},"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":[],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":null,"aliased_html":null,"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)","args_html":"(scope : Crystal::ASTNode)","location":{"filename":"src/ameba/ast/visitors/counting_visitor.cr","line_number":8,"url":null},"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":"","args_html":"","location":{"filename":"src/ameba/ast/visitors/counting_visitor.cr","line_number":18,"url":null},"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","args_html":" : Bool","location":{"filename":"src/ameba/ast/visitors/counting_visitor.cr","line_number":5,"url":null},"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)","args_html":"(node : Crystal::MacroIf | Crystal::MacroFor)","location":{"filename":"src/ameba/ast/visitors/counting_visitor.cr","line_number":33,"url":null},"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":[],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":null,"aliased_html":null,"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)","args_html":"(node, in_loop)","location":{"filename":"src/ameba/ast/flow_expression.cr","line_number":36,"url":null},"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)","args_html":"(*args, **options)","location":{"filename":"src/ameba/ast/flow_expression.cr","line_number":29,"url":null},"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, &)","args_html":"(*args, **options, &)","location":{"filename":"src/ameba/ast/flow_expression.cr","line_number":29,"url":null},"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","args_html":" : Bool","location":{"filename":"src/ameba/ast/flow_expression.cr","line_number":22,"url":null},"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)","args_html":"(*args, **options)","location":{"filename":"src/ameba/ast/flow_expression.cr","line_number":28,"url":null},"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, &)","args_html":"(*args, **options, &)","location":{"filename":"src/ameba/ast/flow_expression.cr","line_number":28,"url":null},"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","args_html":" : Crystal::ASTNode","location":{"filename":"src/ameba/ast/flow_expression.cr","line_number":25,"url":null},"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)","args_html":"(*args, **options)","location":{"filename":"src/ameba/ast/flow_expression.cr","line_number":27,"url":null},"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, &)","args_html":"(*args, **options, &)","location":{"filename":"src/ameba/ast/flow_expression.cr","line_number":27,"url":null},"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":"","args_html":"","location":{"filename":"src/ameba/ast/flow_expression.cr","line_number":50,"url":null},"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":[],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":null,"aliased_html":null,"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)","args_html":"(rule, source)","location":{"filename":"src/ameba/ast/visitors/flow_expression_visitor.cr","line_number":12,"url":null},"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":[],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":null,"aliased_html":null,"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)","args_html":"(node)","location":{"filename":"src/ameba/ast/variabling/ivariable.cr","line_number":10,"url":null},"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)","args_html":"(*args, **options)","location":{"filename":"src/ameba/ast/variabling/ivariable.cr","line_number":6,"url":null},"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, &)","args_html":"(*args, **options, &)","location":{"filename":"src/ameba/ast/variabling/ivariable.cr","line_number":6,"url":null},"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)","args_html":"(*args, **options)","location":{"filename":"src/ameba/ast/variabling/ivariable.cr","line_number":5,"url":null},"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, &)","args_html":"(*args, **options, &)","location":{"filename":"src/ameba/ast/variabling/ivariable.cr","line_number":5,"url":null},"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)","args_html":"(*args, **options)","location":{"filename":"src/ameba/ast/variabling/ivariable.cr","line_number":7,"url":null},"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, &)","args_html":"(*args, **options, &)","location":{"filename":"src/ameba/ast/variabling/ivariable.cr","line_number":7,"url":null},"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","args_html":" : Crystal::InstanceVar","location":{"filename":"src/ameba/ast/variabling/ivariable.cr","line_number":3,"url":null},"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)","args_html":"(*args, **options)","location":{"filename":"src/ameba/ast/variabling/ivariable.cr","line_number":8,"url":null},"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, &)","args_html":"(*args, **options, &)","location":{"filename":"src/ameba/ast/variabling/ivariable.cr","line_number":8,"url":null},"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":[],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":null,"aliased_html":null,"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)","args_html":"(rule, source, skip = nil)","location":{"filename":"src/ameba/ast/visitors/node_visitor.cr","line_number":42,"url":null},"def":{"name":"new","args":[{"name":"rule","doc":null,"default_value":"","external_name":"rule","restriction":""},{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"skip","doc":null,"default_value":"nil","external_name":"skip","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"_ = allocate\n_.initialize(rule, source, skip)\nif _.responds_to?(:finalize)\n ::GC.add_finalizer(_)\nend\n_\n"}}],"instance_methods":[{"id":"visit(node:Crystal::Alias)-instance-method","html_id":"visit(node:Crystal::Alias)-instance-method","name":"visit","doc":"A visit callback for `Crystal::Alias` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"
A visit callback for Crystal::Alias node.
","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Alias"}],"args_string":"(node : Crystal::Alias)","args_html":"(node : Crystal::Alias)","location":{"filename":"src/ameba/ast/visitors/node_visitor.cr","line_number":47,"url":null},"def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Alias"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::Until)-instance-method","html_id":"visit(node:Crystal::Until)-instance-method","name":"visit","doc":"A visit callback for `Crystal::Until` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"
A visit callback for Crystal::Until node.
","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Until"}],"args_string":"(node : Crystal::Until)","args_html":"(node : Crystal::Until)","location":{"filename":"src/ameba/ast/visitors/node_visitor.cr","line_number":47,"url":null},"def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Until"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::While)-instance-method","html_id":"visit(node:Crystal::While)-instance-method","name":"visit","doc":"A visit callback for `Crystal::While` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"
A visit callback for Crystal::While node.
","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::While"}],"args_string":"(node : Crystal::While)","args_html":"(node : Crystal::While)","location":{"filename":"src/ameba/ast/visitors/node_visitor.cr","line_number":47,"url":null},"def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::While"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::When)-instance-method","html_id":"visit(node:Crystal::When)-instance-method","name":"visit","doc":"A visit callback for `Crystal::When` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"
A visit callback for Crystal::When node.
","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::When"}],"args_string":"(node : Crystal::When)","args_html":"(node : Crystal::When)","location":{"filename":"src/ameba/ast/visitors/node_visitor.cr","line_number":47,"url":null},"def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::When"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::Var)-instance-method","html_id":"visit(node:Crystal::Var)-instance-method","name":"visit","doc":"A visit callback for `Crystal::Var` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"
A visit callback for Crystal::Var node.
","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Var"}],"args_string":"(node : Crystal::Var)","args_html":"(node : Crystal::Var)","location":{"filename":"src/ameba/ast/visitors/node_visitor.cr","line_number":47,"url":null},"def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Var"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::Unless)-instance-method","html_id":"visit(node:Crystal::Unless)-instance-method","name":"visit","doc":"A visit callback for `Crystal::Unless` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"
A visit callback for Crystal::Unless node.
","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Unless"}],"args_string":"(node : Crystal::Unless)","args_html":"(node : Crystal::Unless)","location":{"filename":"src/ameba/ast/visitors/node_visitor.cr","line_number":47,"url":null},"def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Unless"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::StringInterpolation)-instance-method","html_id":"visit(node:Crystal::StringInterpolation)-instance-method","name":"visit","doc":"A visit callback for `Crystal::StringInterpolation` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"
A visit callback for Crystal::StringInterpolation node.
","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::StringInterpolation"}],"args_string":"(node : Crystal::StringInterpolation)","args_html":"(node : Crystal::StringInterpolation)","location":{"filename":"src/ameba/ast/visitors/node_visitor.cr","line_number":47,"url":null},"def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::StringInterpolation"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::NilLiteral)-instance-method","html_id":"visit(node:Crystal::NilLiteral)-instance-method","name":"visit","doc":"A visit callback for `Crystal::NilLiteral` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"
A visit callback for Crystal::NilLiteral node.
","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::NilLiteral"}],"args_string":"(node : Crystal::NilLiteral)","args_html":"(node : Crystal::NilLiteral)","location":{"filename":"src/ameba/ast/visitors/node_visitor.cr","line_number":47,"url":null},"def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::NilLiteral"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::ModuleDef)-instance-method","html_id":"visit(node:Crystal::ModuleDef)-instance-method","name":"visit","doc":"A visit callback for `Crystal::ModuleDef` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"
A visit callback for Crystal::ModuleDef node.
","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ModuleDef"}],"args_string":"(node : Crystal::ModuleDef)","args_html":"(node : Crystal::ModuleDef)","location":{"filename":"src/ameba/ast/visitors/node_visitor.cr","line_number":47,"url":null},"def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ModuleDef"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::LibDef)-instance-method","html_id":"visit(node:Crystal::LibDef)-instance-method","name":"visit","doc":"A visit callback for `Crystal::LibDef` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"
A visit callback for Crystal::LibDef node.
","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::LibDef"}],"args_string":"(node : Crystal::LibDef)","args_html":"(node : Crystal::LibDef)","location":{"filename":"src/ameba/ast/visitors/node_visitor.cr","line_number":47,"url":null},"def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::LibDef"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::InstanceVar)-instance-method","html_id":"visit(node:Crystal::InstanceVar)-instance-method","name":"visit","doc":"A visit callback for `Crystal::InstanceVar` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"
A visit callback for Crystal::InstanceVar node.
","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::InstanceVar"}],"args_string":"(node : Crystal::InstanceVar)","args_html":"(node : Crystal::InstanceVar)","location":{"filename":"src/ameba/ast/visitors/node_visitor.cr","line_number":47,"url":null},"def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::InstanceVar"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::If)-instance-method","html_id":"visit(node:Crystal::If)-instance-method","name":"visit","doc":"A visit callback for `Crystal::If` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"
A visit callback for Crystal::If node.
","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::If"}],"args_string":"(node : Crystal::If)","args_html":"(node : Crystal::If)","location":{"filename":"src/ameba/ast/visitors/node_visitor.cr","line_number":47,"url":null},"def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::If"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::HashLiteral)-instance-method","html_id":"visit(node:Crystal::HashLiteral)-instance-method","name":"visit","doc":"A visit callback for `Crystal::HashLiteral` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"
A visit callback for Crystal::HashLiteral node.
","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::HashLiteral"}],"args_string":"(node : Crystal::HashLiteral)","args_html":"(node : Crystal::HashLiteral)","location":{"filename":"src/ameba/ast/visitors/node_visitor.cr","line_number":47,"url":null},"def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::HashLiteral"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::Expressions)-instance-method","html_id":"visit(node:Crystal::Expressions)-instance-method","name":"visit","doc":"A visit callback for `Crystal::Expressions` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"
A visit callback for Crystal::Expressions node.
","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Expressions"}],"args_string":"(node : Crystal::Expressions)","args_html":"(node : Crystal::Expressions)","location":{"filename":"src/ameba/ast/visitors/node_visitor.cr","line_number":47,"url":null},"def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Expressions"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::ExceptionHandler)-instance-method","html_id":"visit(node:Crystal::ExceptionHandler)-instance-method","name":"visit","doc":"A visit callback for `Crystal::ExceptionHandler` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"
A visit callback for Crystal::ExceptionHandler node.
","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ExceptionHandler"}],"args_string":"(node : Crystal::ExceptionHandler)","args_html":"(node : Crystal::ExceptionHandler)","location":{"filename":"src/ameba/ast/visitors/node_visitor.cr","line_number":47,"url":null},"def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ExceptionHandler"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::EnumDef)-instance-method","html_id":"visit(node:Crystal::EnumDef)-instance-method","name":"visit","doc":"A visit callback for `Crystal::EnumDef` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"
A visit callback for Crystal::EnumDef node.
","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::EnumDef"}],"args_string":"(node : Crystal::EnumDef)","args_html":"(node : Crystal::EnumDef)","location":{"filename":"src/ameba/ast/visitors/node_visitor.cr","line_number":47,"url":null},"def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::EnumDef"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::Def)-instance-method","html_id":"visit(node:Crystal::Def)-instance-method","name":"visit","doc":"A visit callback for `Crystal::Def` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"
A visit callback for Crystal::Def node.
","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Def"}],"args_string":"(node : Crystal::Def)","args_html":"(node : Crystal::Def)","location":{"filename":"src/ameba/ast/visitors/node_visitor.cr","line_number":47,"url":null},"def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Def"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::ClassVar)-instance-method","html_id":"visit(node:Crystal::ClassVar)-instance-method","name":"visit","doc":"A visit callback for `Crystal::ClassVar` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"
A visit callback for Crystal::ClassVar node.
","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ClassVar"}],"args_string":"(node : Crystal::ClassVar)","args_html":"(node : Crystal::ClassVar)","location":{"filename":"src/ameba/ast/visitors/node_visitor.cr","line_number":47,"url":null},"def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ClassVar"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::ClassDef)-instance-method","html_id":"visit(node:Crystal::ClassDef)-instance-method","name":"visit","doc":"A visit callback for `Crystal::ClassDef` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"
A visit callback for Crystal::ClassDef node.
","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ClassDef"}],"args_string":"(node : Crystal::ClassDef)","args_html":"(node : Crystal::ClassDef)","location":{"filename":"src/ameba/ast/visitors/node_visitor.cr","line_number":47,"url":null},"def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ClassDef"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::Case)-instance-method","html_id":"visit(node:Crystal::Case)-instance-method","name":"visit","doc":"A visit callback for `Crystal::Case` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"
A visit callback for Crystal::Case node.
","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Case"}],"args_string":"(node : Crystal::Case)","args_html":"(node : Crystal::Case)","location":{"filename":"src/ameba/ast/visitors/node_visitor.cr","line_number":47,"url":null},"def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Case"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::Block)-instance-method","html_id":"visit(node:Crystal::Block)-instance-method","name":"visit","doc":"A visit callback for `Crystal::Block` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"
A visit callback for Crystal::Block node.
","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Block"}],"args_string":"(node : Crystal::Block)","args_html":"(node : Crystal::Block)","location":{"filename":"src/ameba/ast/visitors/node_visitor.cr","line_number":47,"url":null},"def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Block"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::Call)-instance-method","html_id":"visit(node:Crystal::Call)-instance-method","name":"visit","doc":"A visit callback for `Crystal::Call` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"
A visit callback for Crystal::Call node.
","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Call"}],"args_string":"(node : Crystal::Call)","args_html":"(node : Crystal::Call)","location":{"filename":"src/ameba/ast/visitors/node_visitor.cr","line_number":47,"url":null},"def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Call"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::Assign)-instance-method","html_id":"visit(node:Crystal::Assign)-instance-method","name":"visit","doc":"A visit callback for `Crystal::Assign` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"
A visit callback for Crystal::Assign node.
","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Assign"}],"args_string":"(node : Crystal::Assign)","args_html":"(node : Crystal::Assign)","location":{"filename":"src/ameba/ast/visitors/node_visitor.cr","line_number":47,"url":null},"def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Assign"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::IsA)-instance-method","html_id":"visit(node:Crystal::IsA)-instance-method","name":"visit","doc":"A visit callback for `Crystal::IsA` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"
A visit callback for Crystal::IsA node.
","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::IsA"}],"args_string":"(node : Crystal::IsA)","args_html":"(node : Crystal::IsA)","location":{"filename":"src/ameba/ast/visitors/node_visitor.cr","line_number":47,"url":null},"def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::IsA"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node)-instance-method","html_id":"visit(node)-instance-method","name":"visit","doc":null,"summary":null,"abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"args_string":"(node)","args_html":"(node)","location":{"filename":"src/ameba/ast/visitors/node_visitor.cr","line_number":56,"url":null},"def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (skip = @skip)\nelse\n return true\nend\n!(skip.includes?(node.class))\n"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/AST/RedundantControlExpressionVisitor","path":"Ameba/AST/RedundantControlExpressionVisitor.html","kind":"class","full_name":"Ameba::AST::RedundantControlExpressionVisitor","name":"RedundantControlExpressionVisitor","abstract":false,"superclass":{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},"ancestors":[{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":null,"aliased_html":null,"const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/AST","kind":"module","full_name":"Ameba::AST","name":"AST"},"doc":"A class that utilizes a logic to traverse AST nodes and\nfire a source test callback if a redundant `Crystal::ControlExpression`\nis reached.","summary":"
A class that utilizes a logic to traverse AST nodes and fire a source test callback if a redundant Crystal::ControlExpression is reached.
","class_methods":[],"constructors":[{"id":"new(rule,source,node)-class-method","html_id":"new(rule,source,node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"rule","doc":null,"default_value":"","external_name":"rule","restriction":""},{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"args_string":"(rule, source, node)","args_html":"(rule, source, node)","location":{"filename":"src/ameba/ast/visitors/redundant_control_expression_visitor.cr","line_number":15,"url":null},"def":{"name":"new","args":[{"name":"rule","doc":null,"default_value":"","external_name":"rule","restriction":""},{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"_ = allocate\n_.initialize(rule, source, node)\nif _.responds_to?(:finalize)\n ::GC.add_finalizer(_)\nend\n_\n"}}],"instance_methods":[{"id":"node:Crystal::ASTNode-instance-method","html_id":"node:Crystal::ASTNode-instance-method","name":"node","doc":"A node to run traversal on.","summary":"
A node to run traversal on.
","abstract":false,"args":[],"args_string":" : Crystal::ASTNode","args_html":" : Crystal::ASTNode","location":{"filename":"src/ameba/ast/visitors/redundant_control_expression_visitor.cr","line_number":13,"url":null},"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","args_html":" : Rule::Base","location":{"filename":"src/ameba/ast/visitors/redundant_control_expression_visitor.cr","line_number":7,"url":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":"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","args_html":" : Source","location":{"filename":"src/ameba/ast/visitors/redundant_control_expression_visitor.cr","line_number":10,"url":null},"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":[],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":null,"aliased_html":null,"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)","args_html":"(explicit)","location":{"filename":"src/ameba/ast/variabling/reference.cr","line_number":8,"url":null},"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","args_html":" : Bool","location":{"filename":"src/ameba/ast/variabling/reference.cr","line_number":8,"url":null},"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":[],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":null,"aliased_html":null,"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)","args_html":"(node, outer_scope = nil)","location":{"filename":"src/ameba/ast/scope.cr","line_number":39,"url":null},"def":{"name":"new","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""},{"name":"outer_scope","doc":null,"default_value":"nil","external_name":"outer_scope","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"_ = allocate\n_.initialize(node, outer_scope)\nif _.responds_to?(:finalize)\n ::GC.add_finalizer(_)\nend\n_\n"}}],"instance_methods":[{"id":"==(other:self)-instance-method","html_id":"==(other:self)-instance-method","name":"==","doc":"Returns `true` if this reference is the same as *other*. Invokes `same?`.","summary":"
Returns true if this reference is the same as other.
","abstract":false,"args":[{"name":"other","doc":null,"default_value":"","external_name":"other","restriction":"self"}],"args_string":"(other : self)","args_html":"(other : self)","location":null,"def":{"name":"==","args":[{"name":"other","doc":null,"default_value":"","external_name":"other","restriction":"self"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if same?(other)\n return true\nend\nif node == other.node\nelse\n return false\nend\nif location == other.location\nelse\n return false\nend\ntrue\n"}},{"id":"add_argument(node)-instance-method","html_id":"add_argument(node)-instance-method","name":"add_argument","doc":"Creates a new argument in the current scope.\n\n```\nscope = Scope.new(class_node, nil)\nscope.add_argument(arg_node)\n```","summary":"
Creates a new argument in the current scope.
","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"args_string":"(node)","args_html":"(node)","location":{"filename":"src/ameba/ast/scope.cr","line_number":59,"url":null},"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)","args_html":"(node)","location":{"filename":"src/ameba/ast/scope.cr","line_number":70,"url":null},"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)","args_html":"(node)","location":{"filename":"src/ameba/ast/scope.cr","line_number":49,"url":null},"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)","args_html":"(var)","location":{"filename":"src/ameba/ast/scope.cr","line_number":155,"url":null},"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)","args_html":" : Array(Ameba::AST::Argument)","location":{"filename":"src/ameba/ast/scope.cr","line_number":14,"url":null},"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)","args_html":"(name, node)","location":{"filename":"src/ameba/ast/scope.cr","line_number":90,"url":null},"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)","args_html":"(name)","location":{"filename":"src/ameba/ast/scope.cr","line_number":119,"url":null},"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":"","args_html":"","location":{"filename":"src/ameba/ast/scope.cr","line_number":96,"url":null},"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":"","args_html":"","location":{"filename":"src/ameba/ast/scope.cr","line_number":145,"url":null},"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)","args_html":"(*args, **options)","location":{"filename":"src/ameba/ast/scope.cr","line_number":30,"url":null},"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, &)","args_html":"(*args, **options, &)","location":{"filename":"src/ameba/ast/scope.cr","line_number":30,"url":null},"def":{"name":"end_location","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":1,"block_arg":null,"return_type":"","visibility":"Public","body":"node.end_location(*args, **options) do |*yield_args|\n yield *yield_args\nend"}},{"id":"eql?(node)-instance-method","html_id":"eql?(node)-instance-method","name":"eql?","doc":"Returns true if the `node` represents exactly\nthe same Crystal node as `@node`.","summary":"
Returns true if the #node represents exactly the same Crystal node as @node.
","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"args_string":"(node)","args_html":"(node)","location":{"filename":"src/ameba/ast/scope.cr","line_number":174,"url":null},"def":{"name":"eql?","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"((node == @node) && (!node.location.nil?)) && (node.location == @node.location)"}},{"id":"find_variable(name:String)-instance-method","html_id":"find_variable(name:String)-instance-method","name":"find_variable","doc":"Returns variable by its name or nil if it does not exist.\n\n```\nscope = Scope.new(class_node, nil)\nscope.find_variable(\"foo\")\n```","summary":"
Returns variable by its name or nil if it does not exist.
","abstract":false,"args":[{"name":"hasher","doc":null,"default_value":"","external_name":"hasher","restriction":""}],"args_string":"(hasher)","args_html":"(hasher)","location":null,"def":{"name":"hash","args":[{"name":"hasher","doc":null,"default_value":"","external_name":"hasher","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"hasher = node.hash(hasher)\nhasher = location.hash(hasher)\nhasher\n"}},{"id":"in_macro?-instance-method","html_id":"in_macro?-instance-method","name":"in_macro?","doc":"Returns true if current scope sits inside a macro.","summary":"
Returns true if current scope sits inside a macro.
","abstract":false,"args":[],"args_string":"","args_html":"","location":{"filename":"src/ameba/ast/scope.cr","line_number":114,"url":null},"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)","args_html":" : Array(Ameba::AST::Scope)","location":{"filename":"src/ameba/ast/scope.cr","line_number":23,"url":null},"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)","args_html":" : Array(Ameba::AST::InstanceVariable)","location":{"filename":"src/ameba/ast/scope.cr","line_number":17,"url":null},"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, &)","args_html":"(*args, **options, &)","location":{"filename":"src/ameba/ast/scope.cr","line_number":29,"url":null},"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)","args_html":"(*args, **options)","location":{"filename":"src/ameba/ast/scope.cr","line_number":29,"url":null},"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","args_html":" : Crystal::ASTNode","location":{"filename":"src/ameba/ast/scope.cr","line_number":26,"url":null},"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?","args_html":" : Scope?","location":{"filename":"src/ameba/ast/scope.cr","line_number":20,"url":null},"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)","args_html":" : Array(Ameba::AST::Reference)","location":{"filename":"src/ameba/ast/scope.cr","line_number":11,"url":null},"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)","args_html":"(variable : Variable)","location":{"filename":"src/ameba/ast/scope.cr","line_number":137,"url":null},"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":"","args_html":"","location":{"filename":"src/ameba/ast/scope.cr","line_number":107,"url":null},"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)","args_html":"(*args, **options)","location":{"filename":"src/ameba/ast/scope.cr","line_number":28,"url":null},"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, &)","args_html":"(*args, **options, &)","location":{"filename":"src/ameba/ast/scope.cr","line_number":28,"url":null},"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":"","args_html":"","location":{"filename":"src/ameba/ast/scope.cr","line_number":150,"url":null},"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":"","args_html":"","location":{"filename":"src/ameba/ast/scope.cr","line_number":126,"url":null},"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)","args_html":" : Array(Ameba::AST::Variable)","location":{"filename":"src/ameba/ast/scope.cr","line_number":8,"url":null},"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":[],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":null,"aliased_html":null,"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.
","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"args_string":"(node)","args_html":"(node)","location":{"filename":"src/ameba/ast/util.cr","line_number":135,"url":null},"def":{"name":"exit?","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"((node.is_a?(Crystal::Call) && (node.name == \"exit\")) && node.args.size <= 1) && node.obj.nil?"}},{"id":"flow_command?(node,in_loop)-instance-method","html_id":"flow_command?(node,in_loop)-instance-method","name":"flow_command?","doc":"Returns true if node is a flow command, false - otherwise.\nNode represents a flow command if it is a control expression,\nor special call node that interrupts execution (i.e. raise, exit, abort).","summary":"
Returns true if node is a flow command, false - otherwise.
","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""},{"name":"in_loop","doc":null,"default_value":"","external_name":"in_loop","restriction":""}],"args_string":"(node, in_loop)","args_html":"(node, in_loop)","location":{"filename":"src/ameba/ast/util.cr","line_number":62,"url":null},"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.
Returns true if current node is a literal, false otherwise.
","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"args_string":"(node)","args_html":"(node)","location":{"filename":"src/ameba/ast/util.cr","line_number":4,"url":null},"def":{"name":"literal?","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"case node\nwhen Crystal::NilLiteral, Crystal::BoolLiteral, Crystal::NumberLiteral, Crystal::CharLiteral, Crystal::StringLiteral, Crystal::SymbolLiteral, Crystal::RegexLiteral, Crystal::ProcLiteral, Crystal::MacroLiteral\n true\nwhen Crystal::RangeLiteral\n (literal?(node.from)) && (literal?(node.to))\nwhen Crystal::ArrayLiteral, Crystal::TupleLiteral\n node.elements.all? do |el|\n literal?(el)\n end\nwhen Crystal::HashLiteral\n node.entries.all? do |entry|\n (literal?(entry.key)) && (literal?(entry.value))\n end\nwhen Crystal::NamedTupleLiteral\n node.entries.all? do |entry|\n literal?(entry.value)\n end\nelse\n false\nend"}},{"id":"loop?(node)-instance-method","html_id":"loop?(node)-instance-method","name":"loop?","doc":"Returns true if node represents a loop.","summary":"
Returns true if node represents a loop.
","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"args_string":"(node)","args_html":"(node)","location":{"filename":"src/ameba/ast/util.cr","line_number":147,"url":null},"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 true if node represents raise method call.
","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"args_string":"(node)","args_html":"(node)","location":{"filename":"src/ameba/ast/util.cr","line_number":129,"url":null},"def":{"name":"raise?","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"((node.is_a?(Crystal::Call) && (node.name == \"raise\")) && (node.args.size == 1)) && node.obj.nil?"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/AST/Variable","path":"Ameba/AST/Variable.html","kind":"class","full_name":"Ameba::AST::Variable","name":"Variable","abstract":false,"superclass":{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},"ancestors":[{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":null,"aliased_html":null,"const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[{"html_id":"ameba/Ameba/AST/Reference","kind":"class","full_name":"Ameba::AST::Reference","name":"Reference"}],"including_types":[],"namespace":{"html_id":"ameba/Ameba/AST","kind":"module","full_name":"Ameba::AST","name":"AST"},"doc":"Represents the existence of the local variable.\nHolds the var node and variable assigments.","summary":"
Represents the existence of the local variable.
","class_methods":[],"constructors":[{"id":"new(node,scope)-class-method","html_id":"new(node,scope)-class-method","name":"new","doc":"Creates a new variable(in the scope).\n\n```\nVariable.new(node, scope)\n```\n","summary":"
Creates a new variable(in the scope).
","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""},{"name":"scope","doc":null,"default_value":"","external_name":"scope","restriction":""}],"args_string":"(node, scope)","args_html":"(node, scope)","location":{"filename":"src/ameba/ast/variabling/variable.cr","line_number":31,"url":null},"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)","args_html":"(node, scope)","location":{"filename":"src/ameba/ast/variabling/variable.cr","line_number":49,"url":null},"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?","args_html":" : Crystal::ASTNode?","location":{"filename":"src/ameba/ast/variabling/variable.cr","line_number":18,"url":null},"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)","args_html":" : Array(Ameba::AST::Assignment)","location":{"filename":"src/ameba/ast/variabling/variable.cr","line_number":6,"url":null},"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)","args_html":"(scope = @scope)","location":{"filename":"src/ameba/ast/variabling/variable.cr","line_number":114,"url":null},"def":{"name":"captured_by_block?","args":[{"name":"scope","doc":null,"default_value":"@scope","external_name":"scope","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"scope.inner_scopes.each do |inner_scope|\n if inner_scope.block? && (inner_scope.references?(self))\n return true\n end\n if captured_by_block?(inner_scope)\n return true\n end\nend\nfalse\n"}},{"id":"declared_before?(node)-instance-method","html_id":"declared_before?(node)-instance-method","name":"declared_before?","doc":"Returns true if the variable is delcared before the `node`.","summary":"
Returns true if the variable is delcared before the #node.
","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"args_string":"(node)","args_html":"(node)","location":{"filename":"src/ameba/ast/variabling/variable.cr","line_number":160,"url":null},"def":{"name":"declared_before?","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"var_location, node_location = location, node.location\nif var_location.nil? || node_location.nil?\n return\nend\n(var_location.line_number < node_location.line_number) || ((var_location.line_number == node_location.line_number) && var_location.column_number < node_location.column_number)\n"}},{"id":"end_location(*args,**options)-instance-method","html_id":"end_location(*args,**options)-instance-method","name":"end_location","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options)","args_html":"(*args, **options)","location":{"filename":"src/ameba/ast/variabling/variable.cr","line_number":21,"url":null},"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, &)","args_html":"(*args, **options, &)","location":{"filename":"src/ameba/ast/variabling/variable.cr","line_number":21,"url":null},"def":{"name":"end_location","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":1,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.end_location(*args, **options) do |*yield_args|\n yield *yield_args\nend"}},{"id":"eql?(node)-instance-method","html_id":"eql?(node)-instance-method","name":"eql?","doc":"Returns true if the `node` represents exactly\nthe same Crystal node as `@node`.","summary":"
Returns true if the #node represents exactly the same Crystal node as @node.
","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"args_string":"(node)","args_html":"(node)","location":{"filename":"src/ameba/ast/variabling/variable.cr","line_number":153,"url":null},"def":{"name":"eql?","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"(node.is_a?(Crystal::Var) && (node.name == @node.name)) && (node.location == @node.location)"}},{"id":"ignored?-instance-method","html_id":"ignored?-instance-method","name":"ignored?","doc":"Returns true if the name starts with '_', false if not.","summary":"
Returns true if the name starts with '_', false if not.
","abstract":false,"args":[],"args_string":"","args_html":"","location":{"filename":"src/ameba/ast/variabling/variable.cr","line_number":147,"url":null},"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)","args_html":"(*args, **options)","location":{"filename":"src/ameba/ast/variabling/variable.cr","line_number":20,"url":null},"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, &)","args_html":"(*args, **options, &)","location":{"filename":"src/ameba/ast/variabling/variable.cr","line_number":20,"url":null},"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)","args_html":"(*args, **options)","location":{"filename":"src/ameba/ast/variabling/variable.cr","line_number":22,"url":null},"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, &)","args_html":"(*args, **options, &)","location":{"filename":"src/ameba/ast/variabling/variable.cr","line_number":22,"url":null},"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","args_html":" : Crystal::Var","location":{"filename":"src/ameba/ast/variabling/variable.cr","line_number":12,"url":null},"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":[],"args_string":"","args_html":"","location":{"filename":"src/ameba/ast/variabling/variable.cr","line_number":87,"url":null},"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":"","args_html":"","location":{"filename":"src/ameba/ast/variabling/variable.cr","line_number":62,"url":null},"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)","args_html":" : Array(Ameba::AST::Reference)","location":{"filename":"src/ameba/ast/variabling/variable.cr","line_number":9,"url":null},"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","args_html":" : Scope","location":{"filename":"src/ameba/ast/variabling/variable.cr","line_number":15,"url":null},"def":{"name":"scope","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Scope","visibility":"Public","body":"@scope"}},{"id":"special?-instance-method","html_id":"special?-instance-method","name":"special?","doc":"Returns true if it is a special variable, i.e `$?`.","summary":"
Returns true if it is a special variable, i.e $?.
","abstract":false,"args":[],"args_string":"","args_html":"","location":{"filename":"src/ameba/ast/variabling/variable.cr","line_number":35,"url":null},"def":{"name":"special?","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.special_var?"}},{"id":"target_of?(assign)-instance-method","html_id":"target_of?(assign)-instance-method","name":"target_of?","doc":"Returns true if the variable is a target (on the left) of the assignment,\nfalse otherwise.","summary":"
Returns true if the variable is a target (on the left) of the assignment, false otherwise.
","abstract":false,"args":[{"name":"assign","doc":null,"default_value":"","external_name":"assign","restriction":""}],"args_string":"(assign)","args_html":"(assign)","location":{"filename":"src/ameba/ast/variabling/variable.cr","line_number":135,"url":null},"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)","args_html":"(*args, **options)","location":{"filename":"src/ameba/ast/variabling/variable.cr","line_number":23,"url":null},"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, &)","args_html":"(*args, **options, &)","location":{"filename":"src/ameba/ast/variabling/variable.cr","line_number":23,"url":null},"def":{"name":"to_s","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":1,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.to_s(*args, **options) do |*yield_args|\n yield *yield_args\nend"}},{"id":"used_in_macro?(scope=@scope)-instance-method","html_id":"used_in_macro?(scope=@scope)-instance-method","name":"used_in_macro?","doc":"Returns true if current variable potentially referenced in a macro literal,\nfalse if not.","summary":"
Returns true if current variable potentially referenced in a macro literal, false if not.
","abstract":false,"args":[{"name":"scope","doc":null,"default_value":"@scope","external_name":"scope","restriction":""}],"args_string":"(scope = @scope)","args_html":"(scope = @scope)","location":{"filename":"src/ameba/ast/variabling/variable.cr","line_number":125,"url":null},"def":{"name":"used_in_macro?","args":[{"name":"scope","doc":null,"default_value":"@scope","external_name":"scope","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"scope.inner_scopes.each do |inner_scope|\n if (MacroLiteralFinder.new(inner_scope.node)).references?(node)\n return true\n end\nend\nif (outer_scope = scope.outer_scope) && (used_in_macro?(outer_scope))\n return true\nend\nfalse\n"}}],"macros":[],"types":[]}]},{"html_id":"ameba/Ameba/Config","path":"Ameba/Config.html","kind":"class","full_name":"Ameba::Config","name":"Config","abstract":false,"superclass":{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},"ancestors":[{"html_id":"ameba/Ameba/GlobUtils","kind":"module","full_name":"Ameba::GlobUtils","name":"GlobUtils"},{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":null,"aliased_html":null,"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":"
","class_methods":[{"id":"formatter_names-class-method","html_id":"formatter_names-class-method","name":"formatter_names","doc":null,"summary":null,"abstract":false,"args":[],"args_string":"","args_html":"","location":{"filename":"src/ameba/config.cr","line_number":86,"url":null},"def":{"name":"formatter_names","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"AVAILABLE_FORMATTERS.keys.join(\"|\")"}},{"id":"load(path=PATH,colors=true)-class-method","html_id":"load(path=PATH,colors=true)-class-method","name":"load","doc":"Loads YAML configuration file by `path`.\n\n```\nconfig = Ameba::Config.load\n```\n","summary":"
Loads YAML configuration file by path.
","abstract":false,"args":[{"name":"path","doc":null,"default_value":"PATH","external_name":"path","restriction":""},{"name":"colors","doc":null,"default_value":"true","external_name":"colors","restriction":""}],"args_string":"(path = PATH, colors = true)","args_html":"(path = PATH, colors = true)","location":{"filename":"src/ameba/config.cr","line_number":78,"url":null},"def":{"name":"load","args":[{"name":"path","doc":null,"default_value":"PATH","external_name":"path","restriction":""},{"name":"colors","doc":null,"default_value":"true","external_name":"colors","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"begin\n Colorize.enabled = colors\n content = File.exists?(path) ? File.read(path) : \"{}\"\n Config.new(YAML.parse(content))\nrescue e\n raise(\"Config file is invalid: #{e.message}\")\nend"}}],"constructors":[],"instance_methods":[{"id":"excluded:Array(String)-instance-method","html_id":"excluded:Array(String)-instance-method","name":"excluded","doc":"Represents a list of paths to exclude from globs.\nCan have wildcards.\n\n```\nconfig = Ameba::Config.load\nconfig.excluded = [\"spec\", \"src/server/*.cr\"]\n```","summary":"
Represents a list of paths to exclude from globs.
","abstract":false,"args":[],"args_string":" : Array(String)","args_html":" : Array(String)","location":{"filename":"src/ameba/config.cr","line_number":56,"url":null},"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))","args_html":"(excluded : Array(String))","location":{"filename":"src/ameba/config.cr","line_number":56,"url":null},"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":[{"name":"name","doc":null,"default_value":"","external_name":"name","restriction":"String | Symbol"}],"args_string":"(name : String | Symbol)","args_html":"(name : String | Symbol)","location":{"filename":"src/ameba/config.cr","line_number":125,"url":null},"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)","args_html":" : Array(String)","location":{"filename":"src/ameba/config.cr","line_number":47,"url":null},"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))","args_html":"(globs : Array(String))","location":{"filename":"src/ameba/config.cr","line_number":47,"url":null},"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)","args_html":" : Array(Rule::Base)","location":{"filename":"src/ameba/config.cr","line_number":35,"url":null},"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","args_html":" : Ameba::Severity","location":{"filename":"src/ameba/config.cr","line_number":36,"url":null},"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","args_html":"(severity)","location":{"filename":"src/ameba/config.cr","line_number":36,"url":null},"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_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":[{"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)","args_html":"(name, enabled = true, excluded = nil)","location":{"filename":"src/ameba/config.cr","line_number":140,"url":null},"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)","args_html":"(names, **args)","location":{"filename":"src/ameba/config.cr","line_number":163,"url":null},"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":[],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":null,"aliased_html":null,"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":[],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":null,"aliased_html":null,"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)","args_html":"(output = STDOUT)","location":{"filename":"src/ameba/formatter/base_formatter.cr","line_number":13,"url":null},"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)","args_html":" : Hash(Symbol, Bool | String)","location":{"filename":"src/ameba/formatter/base_formatter.cr","line_number":11,"url":null},"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)","args_html":"(sources)","location":{"filename":"src/ameba/formatter/base_formatter.cr","line_number":30,"url":null},"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","args_html":" : IO::FileDescriptor | IO::Memory","location":{"filename":"src/ameba/formatter/base_formatter.cr","line_number":10,"url":null},"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)","args_html":"(source : Source)","location":{"filename":"src/ameba/formatter/base_formatter.cr","line_number":22,"url":null},"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)","args_html":"(source : Source)","location":{"filename":"src/ameba/formatter/base_formatter.cr","line_number":26,"url":null},"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)","args_html":"(sources)","location":{"filename":"src/ameba/formatter/base_formatter.cr","line_number":18,"url":null},"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":[],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":null,"aliased_html":null,"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)","args_html":"(sources)","location":{"filename":"src/ameba/formatter/disabled_formatter.cr","line_number":4,"url":null},"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":[],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":null,"aliased_html":null,"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)","args_html":"(sources)","location":{"filename":"src/ameba/formatter/dot_formatter.cr","line_number":26,"url":null},"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)","args_html":"(source : Source)","location":{"filename":"src/ameba/formatter/dot_formatter.cr","line_number":20,"url":null},"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)","args_html":"(sources)","location":{"filename":"src/ameba/formatter/dot_formatter.cr","line_number":13,"url":null},"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":[],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":null,"aliased_html":null,"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)","args_html":"(output, loc)","location":{"filename":"src/ameba/formatter/explain_formatter.cr","line_number":25,"url":null},"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)","args_html":"(sources)","location":{"filename":"src/ameba/formatter/explain_formatter.cr","line_number":30,"url":null},"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","args_html":" : Crystal::Location","location":{"filename":"src/ameba/formatter/explain_formatter.cr","line_number":14,"url":null},"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","args_html":" : IO::FileDescriptor | IO::Memory","location":{"filename":"src/ameba/formatter/explain_formatter.cr","line_number":13,"url":null},"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":[],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":null,"aliased_html":null,"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.
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)","args_html":"(output = STDOUT)","location":{"filename":"src/ameba/formatter/json_formatter.cr","line_number":67,"url":null},"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)","args_html":"(sources)","location":{"filename":"src/ameba/formatter/json_formatter.cr","line_number":87,"url":null},"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)","args_html":"(source : Source)","location":{"filename":"src/ameba/formatter/json_formatter.cr","line_number":75,"url":null},"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)","args_html":"(sources)","location":{"filename":"src/ameba/formatter/json_formatter.cr","line_number":71,"url":null},"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":[],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":null,"aliased_html":null,"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)","args_html":"(output = STDOUT)","location":{"filename":"src/ameba/formatter/todo_formatter.cr","line_number":6,"url":null},"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":"
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)","args_html":"(globs)","location":{"filename":"src/ameba/glob_utils.cr","line_number":24,"url":null},"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)","args_html":"(globs)","location":{"filename":"src/ameba/glob_utils.cr","line_number":11,"url":null},"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":[],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":null,"aliased_html":null,"const":false,"constants":[{"id":"COMMENT_DIRECTIVE_REGEX","name":"COMMENT_DIRECTIVE_REGEX","value":"/# ameba:(?\\w+) (?\\w+(?:\\/\\w+)?(?:,? \\w+(?:\\/\\w+)?)*)/","doc":null,"summary":null}],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[{"html_id":"ameba/Ameba/Source","kind":"class","full_name":"Ameba::Source","name":"Source"}],"namespace":{"html_id":"ameba/Ameba","kind":"module","full_name":"Ameba","name":"Ameba"},"doc":"A module that utilizes inline comments parsing and processing logic.","summary":"
A module that utilizes inline comments parsing and processing logic.
","class_methods":[],"constructors":[],"instance_methods":[{"id":"comment?(line_number:Int32)-instance-method","html_id":"comment?(line_number:Int32)-instance-method","name":"comment?","doc":"Returns true if the line at the given `line_number` is a comment.","summary":"
Returns true if the line at the given line_number is a comment.
","abstract":false,"args":[{"name":"line_number","doc":null,"default_value":"","external_name":"line_number","restriction":"Int32"}],"args_string":"(line_number : Int32)","args_html":"(line_number : Int32)","location":{"filename":"src/ameba/inline_comments.cr","line_number":80,"url":null},"def":{"name":"comment?","args":[{"name":"line_number","doc":null,"default_value":"","external_name":"line_number","restriction":"Int32"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if line = lines[line_number]?\n comment?(line)\nend"}},{"id":"location_disabled?(location,rule)-instance-method","html_id":"location_disabled?(location,rule)-instance-method","name":"location_disabled?","doc":"Returns true if current location is disabled for a particular rule,\nfalse otherwise.\n\nLocation is disabled in two cases:\n 1. The line of the location ends with a comment directive.\n 2. The line above the location is a comment directive.\n\nFor example, here are two examples of disabled location:\n\n```\n# ameba:disable Style/LargeNumbers\nTime.epoch(1483859302)\n\nTime.epoch(1483859302) # ameba:disable Style/LargeNumbers\n```\n\nBut here are examples which are not considered as disabled location:\n\n```\n# ameba:disable Style/LargeNumbers\n#\nTime.epoch(1483859302)\n\nif use_epoch? # ameba:disable Style/LargeNumbers\n Time.epoch(1483859302)\nend\n```\n","summary":"
Returns true if current location is disabled for a particular rule, false otherwise.
","abstract":false,"args":[{"name":"location","doc":null,"default_value":"","external_name":"location","restriction":""},{"name":"rule","doc":null,"default_value":"","external_name":"rule","restriction":""}],"args_string":"(location, rule)","args_html":"(location, rule)","location":{"filename":"src/ameba/inline_comments.cr","line_number":40,"url":null},"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)","args_html":"(line)","location":{"filename":"src/ameba/inline_comments.cr","line_number":69,"url":null},"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":[],"repository_name":"ameba","program":false,"enum":true,"alias":false,"aliased":null,"aliased_html":null,"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":"","args_html":"","location":{"filename":"src/ameba/inline_comments.cr","line_number":8,"url":null},"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":"","args_html":"","location":{"filename":"src/ameba/inline_comments.cr","line_number":9,"url":null},"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":[],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":null,"aliased_html":null,"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":"
","class_methods":[],"constructors":[],"instance_methods":[{"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)","args_html":"(rule, location : Tuple(Int32, Int32), end_location : Tuple(Int32, Int32), message, **args)","location":{"filename":"src/ameba/reportable.cr","line_number":30,"url":null},"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,end_location,message,status=nil)-instance-method","html_id":"add_issue(rule,location,end_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":""},{"name":"end_location","doc":null,"default_value":"","external_name":"end_location","restriction":""},{"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, end_location, message, status = nil)","args_html":"(rule, location, end_location, message, status = nil)","location":{"filename":"src/ameba/reportable.cr","line_number":8,"url":null},"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":""},{"name":"end_location","doc":null,"default_value":"","external_name":"end_location","restriction":""},{"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),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)","args_html":"(rule, location : Tuple(Int32, Int32), message, **args)","location":{"filename":"src/ameba/reportable.cr","line_number":24,"url":null},"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)","args_html":"(rule, node : Crystal::ASTNode, message, **args)","location":{"filename":"src/ameba/reportable.cr","line_number":14,"url":null},"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":"
","abstract":false,"args":[],"args_string":"","args_html":"","location":{"filename":"src/ameba/reportable.cr","line_number":5,"url":null},"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":"","args_html":"","location":{"filename":"src/ameba/reportable.cr","line_number":37,"url":null},"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":[],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":null,"aliased_html":null,"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":"","args_html":"","location":{"filename":"src/ameba/rule/base.cr","line_number":194,"url":null},"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":[],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":null,"aliased_html":null,"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":"","args_html":"","location":{"filename":"src/ameba/rule/base.cr","line_number":157,"url":null},"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":"","args_html":"","location":{"filename":"src/ameba/rule/base.cr","line_number":30,"url":null},"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' instance vars are compared to each other. Thus, two\nstructs are considered equal if each of their instance variables are\nequal. Subclasses should override this method to provide specific\nequality semantics.\n\n```\nstruct Point\n def initialize(@x : Int32, @y : Int32)\n end\nend\n\np1 = Point.new 1, 2\np2 = Point.new 1, 2\np3 = Point.new 3, 4\n\np1 == p2 # => true\np1 == p3 # => false\n```","summary":"
Returns true if this struct is equal to other.
","abstract":false,"args":[{"name":"other","doc":null,"default_value":"","external_name":"other","restriction":""}],"args_string":"(other)","args_html":"(other)","location":{"filename":"src/ameba/rule/base.cr","line_number":113,"url":null},"def":{"name":"==","args":[{"name":"other","doc":null,"default_value":"","external_name":"other","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"name == other.try(&.name)"}},{"id":"catch(source:Source)-instance-method","html_id":"catch(source:Source)-instance-method","name":"catch","doc":"A convenient addition to `#test` method that does the same\nbut returns a passed in `source` as an addition.\n\n```\nsource = MyRule.new.catch(source)\nsource.valid?\n```\n","summary":"
A convenient addition to #test method that does the same but returns a passed in source as an addition.
","abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":"Source"}],"args_string":"(source : Source)","args_html":"(source : Source)","location":{"filename":"src/ameba/rule/base.cr","line_number":54,"url":null},"def":{"name":"catch","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":"Source"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"source.tap do |s|\n test(s)\nend"}},{"id":"excluded?(source)-instance-method","html_id":"excluded?(source)-instance-method","name":"excluded?","doc":"Checks whether the source is excluded from this rule.\nIt searches for a path in `excluded` property which matches\nthe one of the given source.\n\n```\nmy_rule.excluded?(source) # => true or false\n```\n","summary":"
Checks whether the source is excluded from this rule.
","abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"args_string":"(source)","args_html":"(source)","location":{"filename":"src/ameba/rule/base.cr","line_number":95,"url":null},"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":"","args_html":"","location":{"filename":"src/ameba/rule/base.cr","line_number":83,"url":null},"def":{"name":"group","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"({{ @type }}).group_name"}},{"id":"hash-instance-method","html_id":"hash-instance-method","name":"hash","doc":"Generates an `UInt64` hash value for this object.\n\nThis method must have the property that `a == b` implies `a.hash == b.hash`.\n\nThe hash value is used along with `==` by the `Hash` class to determine if two objects\nreference the same hash key.\n\nSubclasses must not override this method. Instead, they must define `hash(hasher)`,\nthough usually the macro `def_hash` can be used to generate this method.","summary":"
Generates an UInt64 hash value for this object.
","abstract":false,"args":[],"args_string":"","args_html":"","location":{"filename":"src/ameba/rule/base.cr","line_number":117,"url":null},"def":{"name":"hash","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"name.hash"}},{"id":"name-instance-method","html_id":"name-instance-method","name":"name","doc":"Returns a name of this rule, which is basically a class name.\n\n```\nstruct MyRule < Ameba::Rule::Base\n def test(source)\n end\nend\n\nMyRule.new.name # => \"MyRule\"\n```\n","summary":"
Returns a name of this rule, which is basically a class name.
","abstract":false,"args":[],"args_string":"","args_html":"","location":{"filename":"src/ameba/rule/base.cr","line_number":69,"url":null},"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":"","args_html":"","location":{"filename":"src/ameba/rule/base.cr","line_number":109,"url":null},"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)","args_html":"(source : Source, node : Crystal::ASTNode, *opts)","location":{"filename":"src/ameba/rule/base.cr","line_number":42,"url":null},"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)","args_html":"(source : Source)","location":{"filename":"src/ameba/rule/base.cr","line_number":38,"url":null},"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)","location":{"filename":"src/ameba/rule/base.cr","line_number":121,"url":null},"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":[],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":null,"aliased_html":null,"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":[],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":null,"aliased_html":null,"const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Line too long\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Layout","kind":"module","full_name":"Ameba::Rule::Layout","name":"Layout"},"doc":"A rule that disallows lines longer than `max_length` number of symbols.\n\nYAML configuration example:\n\n```\nLayout/LineLength:\n Enabled: true\n MaxLength: 100\n```\n","summary":"
A rule that disallows lines longer than #max_length number of symbols.
","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","args_html":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","location":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows lines longer than `max_length` number of symbols.\n\nYAML configuration example:\n\n```\nLayout/LineLength:\n Enabled: true\n MaxLength: 100\n```\n","summary":"
A rule that disallows lines longer than #max_length number of symbols.
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)","args_html":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","location":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_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)","args_html":"(config = nil)","location":{"filename":"src/ameba/rule/layout/trailing_whitespace.cr","line_number":11,"url":null},"def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","args_html":" : String","location":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","args_html":"(description : String)","location":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","args_html":" : Bool","location":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","args_html":"(enabled)","location":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","args_html":" : Array(String)?","location":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","args_html":"(excluded : Array(String)?)","location":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","args_html":" : Ameba::Severity","location":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","args_html":"(severity)","location":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_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)","args_html":"(source)","location":{"filename":"src/ameba/rule/layout/trailing_whitespace.cr","line_number":18,"url":null},"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":[],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":null,"aliased_html":null,"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":[],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":null,"aliased_html":null,"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)","args_html":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","location":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_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)","args_html":"(config = nil)","location":{"filename":"src/ameba/rule/lint/bad_directive.cr","line_number":21,"url":null},"def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","args_html":" : String","location":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","args_html":"(description : String)","location":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","args_html":" : Bool","location":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","args_html":"(enabled)","location":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","args_html":" : Array(String)?","location":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","args_html":"(excluded : Array(String)?)","location":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","args_html":" : Ameba::Severity","location":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","args_html":"(severity)","location":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_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)","args_html":"(source)","location":{"filename":"src/ameba/rule/lint/bad_directive.cr","line_number":30,"url":null},"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":[],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":null,"aliased_html":null,"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)","args_html":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","location":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_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":"
","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","args_html":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","location":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_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)","args_html":"(config = nil)","location":{"filename":"src/ameba/rule/lint/debugger_statement.cr","line_number":14,"url":null},"def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","args_html":" : String","location":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","args_html":"(description : String)","location":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","args_html":" : Bool","location":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","args_html":"(enabled)","location":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","args_html":" : Array(String)?","location":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","args_html":"(excluded : Array(String)?)","location":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","args_html":" : Ameba::Severity","location":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","args_html":"(severity)","location":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_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)","args_html":"(source, node : Crystal::Call)","location":{"filename":"src/ameba/rule/lint/debugger_statement.cr","line_number":21,"url":null},"def":{"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":[],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":null,"aliased_html":null,"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)","args_html":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","location":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_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 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)","args_html":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","location":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_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)","args_html":"(config = nil)","location":{"filename":"src/ameba/rule/lint/hash_duplicated_key.cr","line_number":23,"url":null},"def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","args_html":" : String","location":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","args_html":"(description : String)","location":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","args_html":" : Bool","location":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","args_html":"(enabled)","location":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","args_html":" : Array(String)?","location":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","args_html":"(excluded : Array(String)?)","location":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","args_html":" : Ameba::Severity","location":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","args_html":"(severity)","location":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_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)","args_html":"(source, node : Crystal::HashLiteral)","location":{"filename":"src/ameba/rule/lint/hash_duplicated_key.cr","line_number":30,"url":null},"def":{"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":[],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":null,"aliased_html":null,"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)","args_html":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","location":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_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.
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)","args_html":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","location":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_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)","args_html":"(config = nil)","location":{"filename":"src/ameba/rule/lint/literal_in_interpolation.cr","line_number":19,"url":null},"def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","args_html":" : String","location":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","args_html":"(description : String)","location":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","args_html":" : Bool","location":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","args_html":"(enabled)","location":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","args_html":" : Array(String)?","location":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","args_html":"(excluded : Array(String)?)","location":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","args_html":" : Ameba::Severity","location":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","args_html":"(severity)","location":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_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)","args_html":"(source, node : Crystal::StringInterpolation)","location":{"filename":"src/ameba/rule/lint/literal_in_interpolation.cr","line_number":28,"url":null},"def":{"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":[],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":null,"aliased_html":null,"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)","args_html":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","location":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_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.
","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","args_html":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","location":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows `rand(0)` and `rand(1)` calls.\nSuch calls always return `0`.\n\nFor example:\n\n```\nrand(1)\n```\n\nShould be written as:\n\n```\nrand\n# or\nrand(2)\n```\n\nYAML configuration example:\n\n```\nLint/RandZero:\n Enabled: true\n```\n","summary":"
A rule that disallows rand(0) and rand(1) calls.
","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","args_html":"(config = nil)","location":{"filename":"src/ameba/rule/lint/rand_zero.cr","line_number":26,"url":null},"def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","args_html":" : String","location":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","args_html":"(description : String)","location":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","args_html":" : Bool","location":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","args_html":"(enabled)","location":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","args_html":" : Array(String)?","location":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","args_html":"(excluded : Array(String)?)","location":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","args_html":" : Ameba::Severity","location":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","args_html":"(severity)","location":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_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)","args_html":"(source, node : Crystal::Call)","location":{"filename":"src/ameba/rule/lint/rand_zero.cr","line_number":33,"url":null},"def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Call"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (((((node.name == \"rand\") && (node.args.size == 1)) && (arg = node.args.first)) && (arg.is_a?(Crystal::NumberLiteral))) && (value = arg.value)) && ((value == \"0\") || (value == \"1\"))\nelse\n return\nend\nissue_for(node, MSG % node)\n"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Lint/RedundantStringCoercion","path":"Ameba/Rule/Lint/RedundantStringCoercion.html","kind":"struct","full_name":"Ameba::Rule::Lint::RedundantStringCoercion","name":"RedundantStringCoercion","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/Ameba/AST/Util","kind":"module","full_name":"Ameba::AST::Util","name":"Util"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":null,"aliased_html":null,"const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Redundant use of `Object#to_s` in interpolation\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/Ameba/AST/Util","kind":"module","full_name":"Ameba::AST::Util","name":"Util"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Lint","kind":"module","full_name":"Ameba::Rule::Lint","name":"Lint"},"doc":"A rule that disallows string conversion in string interpolation,\nwhich is redundant.\n\nFor example, this is considered invalid:\n\n```\n\"Hello, #{name.to_s}\"\n```\n\nAnd this is valid:\n\n```\n\"Hello, #{name}\"\n```\n\nYAML configuration example:\n\n```\nLint/RedundantStringCoersion\n Enabled: true\n```\n","summary":"
A rule that disallows string conversion in string interpolation, which is redundant.
","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","args_html":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","location":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_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)","args_html":"(config = nil)","location":{"filename":"src/ameba/rule/lint/redundant_string_coercion.cr","line_number":24,"url":null},"def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","args_html":" : String","location":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","args_html":"(description : String)","location":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","args_html":" : Bool","location":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","args_html":"(enabled)","location":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","args_html":" : Array(String)?","location":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","args_html":"(excluded : Array(String)?)","location":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","args_html":" : Ameba::Severity","location":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","args_html":"(severity)","location":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_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)","args_html":"(source, node : Crystal::StringInterpolation)","location":{"filename":"src/ameba/rule/lint/redundant_string_coercion.cr","line_number":33,"url":null},"def":{"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":[],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":null,"aliased_html":null,"const":false,"constants":[],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Lint","kind":"module","full_name":"Ameba::Rule::Lint","name":"Lint"},"doc":"A rule that disallows redundant `with_index` calls.\n\nFor example, this is considered invalid:\n```\ncollection.each.with_index do |e|\n # ...\nend\n\ncollection.each_with_index do |e, _|\n # ...\nend\n```\n\nand it should be written as follows:\n\n```\ncollection.each do |e|\n # ...\nend\n```\n\nYAML configuration example:\n\n```\nLint/RedundantWithIndex:\n Enabled: true\n```\n","summary":"
A rule that disallows redundant with_index calls.
","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","args_html":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","location":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows redundant `with_index` calls.\n\nFor example, this is considered invalid:\n```\ncollection.each.with_index do |e|\n # ...\nend\n\ncollection.each_with_index do |e, _|\n # ...\nend\n```\n\nand it should be written as follows:\n\n```\ncollection.each do |e|\n # ...\nend\n```\n\nYAML configuration example:\n\n```\nLint/RedundantWithIndex:\n Enabled: true\n```\n","summary":"
A rule that disallows redundant with_index calls.
","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","args_html":"(config = nil)","location":{"filename":"src/ameba/rule/lint/redundant_with_index.cr","line_number":30,"url":null},"def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","args_html":" : String","location":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","args_html":"(description : String)","location":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","args_html":" : Bool","location":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","args_html":"(enabled)","location":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","args_html":" : Array(String)?","location":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","args_html":"(excluded : Array(String)?)","location":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","args_html":" : Ameba::Severity","location":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","args_html":"(severity)","location":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_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)","args_html":"(source, node : Crystal::Call)","location":{"filename":"src/ameba/rule/lint/redundant_with_index.cr","line_number":35,"url":null},"def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Call"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"args, block = node.args, node.block\nif (args.size > 1 || block.nil?) || (with_index_arg?(block.not_nil!))\n return\nend\ncase node.name\nwhen \"with_index\"\n report(source, node, \"Remove redundant with_index\")\nwhen \"each_with_index\"\n report(source, node, \"Use each instead of each_with_index\")\nelse\nend\n"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Lint/RedundantWithObject","path":"Ameba/Rule/Lint/RedundantWithObject.html","kind":"struct","full_name":"Ameba::Rule::Lint::RedundantWithObject","name":"RedundantWithObject","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":null,"aliased_html":null,"const":false,"constants":[],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Lint","kind":"module","full_name":"Ameba::Rule::Lint","name":"Lint"},"doc":"A rule that disallows redundant `each_with_object` calls.\n\nFor example, this is considered invalid:\n\n```\ncollection.each_with_object(0) do |e|\n # ...\nend\n\ncollection.each_with_object(0) do |e, _|\n # ...\nend\n```\n\nand it should be written as follows:\n\n```\ncollection.each do |e|\n # ...\nend\n```\n\nYAML configuration example:\n\n```\nLint/RedundantWithObject:\n Enabled: true\n```\n","summary":"
A rule that disallows redundant each_with_object calls.
","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","args_html":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","location":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows redundant `each_with_object` calls.\n\nFor example, this is considered invalid:\n\n```\ncollection.each_with_object(0) do |e|\n # ...\nend\n\ncollection.each_with_object(0) do |e, _|\n # ...\nend\n```\n\nand it should be written as follows:\n\n```\ncollection.each do |e|\n # ...\nend\n```\n\nYAML configuration example:\n\n```\nLint/RedundantWithObject:\n Enabled: true\n```\n","summary":"
A rule that disallows redundant each_with_object calls.
","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","args_html":"(config = nil)","location":{"filename":"src/ameba/rule/lint/redundant_with_object.cr","line_number":31,"url":null},"def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","args_html":" : String","location":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","args_html":"(description : String)","location":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","args_html":" : Bool","location":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","args_html":"(enabled)","location":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","args_html":" : Array(String)?","location":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","args_html":"(excluded : Array(String)?)","location":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","args_html":" : Ameba::Severity","location":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","args_html":"(severity)","location":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_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)","args_html":"(source, node : Crystal::Call)","location":{"filename":"src/ameba/rule/lint/redundant_with_object.cr","line_number":36,"url":null},"def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Call"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (((node.name != \"each_with_object\") || (node.args.size != 1)) || node.block.nil?) || (with_index_arg?(node.block.not_nil!))\n return\nend\nissue_for(node.name_location, node.name_end_location, \"Use each instead of each_with_object\")\n"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Lint/ShadowedArgument","path":"Ameba/Rule/Lint/ShadowedArgument.html","kind":"struct","full_name":"Ameba::Rule::Lint::ShadowedArgument","name":"ShadowedArgument","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":null,"aliased_html":null,"const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Argument `%s` is assigned before it is used\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Lint","kind":"module","full_name":"Ameba::Rule::Lint","name":"Lint"},"doc":"A rule that disallows shadowed arguments.\n\nFor example, this is considered invalid:\n\n```\ndo_something do |foo|\n foo = 1 # shadows block argument\n foo\nend\n\ndef do_something(foo)\n foo = 1 # shadows method argument\n foo\nend\n```\n\nand it should be written as follows:\n\n```\ndo_something do |foo|\n foo = foo + 42\n foo\nend\n\ndef do_something(foo)\n foo = foo + 42\n foo\nend\n```\n\nYAML configuration example:\n\n```\nLint/ShadowedArgument:\n Enabled: true\n```\n","summary":"
A rule that disallows shadowed arguments.
","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","args_html":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","location":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_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)","args_html":"(config = nil)","location":{"filename":"src/ameba/rule/lint/shadowed_argument.cr","line_number":39,"url":null},"def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","args_html":" : String","location":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","args_html":"(description : String)","location":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","args_html":" : Bool","location":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","args_html":"(enabled)","location":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","args_html":" : Array(String)?","location":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","args_html":"(excluded : Array(String)?)","location":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","args_html":" : Ameba::Severity","location":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","args_html":"(severity)","location":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_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)","args_html":"(source, node, scope : AST::Scope)","location":{"filename":"src/ameba/rule/lint/shadowed_argument.cr","line_number":50,"url":null},"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)","args_html":"(source)","location":{"filename":"src/ameba/rule/lint/shadowed_argument.cr","line_number":46,"url":null},"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":[],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":null,"aliased_html":null,"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)","args_html":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","location":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_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)","args_html":"(config = nil)","location":{"filename":"src/ameba/rule/lint/shadowed_exception.cr","line_number":37,"url":null},"def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","args_html":" : String","location":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","args_html":"(description : String)","location":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","args_html":" : Bool","location":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","args_html":"(enabled)","location":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","args_html":" : Array(String)?","location":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","args_html":"(excluded : Array(String)?)","location":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","args_html":" : Ameba::Severity","location":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","args_html":"(severity)","location":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_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)","args_html":"(source, node : Crystal::ExceptionHandler)","location":{"filename":"src/ameba/rule/lint/shadowed_exception.cr","line_number":44,"url":null},"def":{"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":[],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":null,"aliased_html":null,"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)","args_html":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","location":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_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)","args_html":"(config = nil)","location":{"filename":"src/ameba/rule/lint/shadowing_local_outer_var.cr","line_number":34,"url":null},"def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","args_html":" : String","location":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","args_html":"(description : String)","location":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","args_html":" : Bool","location":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","args_html":"(enabled)","location":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","args_html":" : Array(String)?","location":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","args_html":"(excluded : Array(String)?)","location":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","args_html":" : Ameba::Severity","location":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","args_html":"(severity)","location":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_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)","args_html":"(source, node : Crystal::ProcLiteral, scope : AST::Scope)","location":{"filename":"src/ameba/rule/lint/shadowing_local_outer_var.cr","line_number":46,"url":null},"def":{"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)","args_html":"(source, node : Crystal::Block, scope : AST::Scope)","location":{"filename":"src/ameba/rule/lint/shadowing_local_outer_var.cr","line_number":50,"url":null},"def":{"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)","args_html":"(source)","location":{"filename":"src/ameba/rule/lint/shadowing_local_outer_var.cr","line_number":42,"url":null},"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":[],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":null,"aliased_html":null,"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)","args_html":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","location":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_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.
","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","args_html":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","location":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_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)","args_html":"(config = nil)","location":{"filename":"src/ameba/rule/lint/syntax.cr","line_number":22,"url":null},"def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","args_html":" : String","location":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","args_html":"(description : String)","location":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","args_html":" : Bool","location":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","args_html":"(enabled)","location":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","args_html":" : Array(String)?","location":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","args_html":"(excluded : Array(String)?)","location":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","args_html":" : Ameba::Severity","location":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)","args_html":"(severity : Ameba::Severity)","location":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)","args_html":"(source)","location":{"filename":"src/ameba/rule/lint/syntax.cr","line_number":28,"url":null},"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":[],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":null,"aliased_html":null,"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)","args_html":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","location":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_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)","args_html":"(config = nil)","location":{"filename":"src/ameba/rule/lint/unneeded_disable_directive.cr","line_number":28,"url":null},"def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","args_html":" : String","location":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","args_html":"(description : String)","location":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","args_html":" : Bool","location":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","args_html":"(enabled)","location":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","args_html":" : Array(String)?","location":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","args_html":"(excluded : Array(String)?)","location":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","args_html":" : Ameba::Severity","location":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","args_html":"(severity)","location":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_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)","args_html":"(source)","location":{"filename":"src/ameba/rule/lint/unneeded_disable_directive.cr","line_number":35,"url":null},"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":[],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":null,"aliased_html":null,"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)","args_html":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","location":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_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)","args_html":"(config = nil)","location":{"filename":"src/ameba/rule/lint/unreachable_code.cr","line_number":45,"url":null},"def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","args_html":" : String","location":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","args_html":"(description : String)","location":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","args_html":" : Bool","location":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","args_html":"(enabled)","location":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","args_html":" : Array(String)?","location":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","args_html":"(excluded : Array(String)?)","location":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","args_html":" : Ameba::Severity","location":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","args_html":"(severity)","location":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_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)","args_html":"(source, node, flow_expression : AST::FlowExpression)","location":{"filename":"src/ameba/rule/lint/unreachable_code.cr","line_number":58,"url":null},"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)","args_html":"(source)","location":{"filename":"src/ameba/rule/lint/unreachable_code.cr","line_number":54,"url":null},"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":[],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":null,"aliased_html":null,"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)","args_html":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","location":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_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":"
","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","args_html":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","location":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_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)","args_html":"(config = nil)","location":{"filename":"src/ameba/rule/lint/useless_assign.cr","line_number":29,"url":null},"def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","args_html":" : String","location":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","args_html":"(description : String)","location":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","args_html":" : Bool","location":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","args_html":"(enabled)","location":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","args_html":" : Array(String)?","location":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","args_html":"(excluded : Array(String)?)","location":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","args_html":" : Ameba::Severity","location":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","args_html":"(severity)","location":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_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)","args_html":"(source, node, scope : AST::Scope)","location":{"filename":"src/ameba/rule/lint/useless_assign.cr","line_number":40,"url":null},"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)","args_html":"(source)","location":{"filename":"src/ameba/rule/lint/useless_assign.cr","line_number":36,"url":null},"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":[],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":null,"aliased_html":null,"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)","args_html":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","location":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_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.
A rule that disallows methods with a cyclomatic complexity higher than MaxComplexity
","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","args_html":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","location":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows methods with a cyclomatic complexity higher than `MaxComplexity`\n\nYAML configuration example:\n\n```\nMetrics/CyclomaticComplexity:\n Enabled: true\n MaxComplexity: 10\n```\n","summary":"
A rule that disallows methods with a cyclomatic complexity higher than MaxComplexity
","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","args_html":"(config = nil)","location":{"filename":"src/ameba/rule/metrics/cyclomatic_complexity.cr","line_number":12,"url":null},"def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","args_html":" : String","location":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","args_html":"(description : String)","location":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","args_html":" : Bool","location":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","args_html":"(enabled)","location":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","args_html":" : Array(String)?","location":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","args_html":"(excluded : Array(String)?)","location":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"max_complexity:Int32-instance-method","html_id":"max_complexity:Int32-instance-method","name":"max_complexity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Int32","args_html":" : Int32","location":null,"def":{"name":"max_complexity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Int32","visibility":"Public","body":"@max_complexity"}},{"id":"max_complexity=(max_complexity:Int32)-instance-method","html_id":"max_complexity=(max_complexity:Int32)-instance-method","name":"max_complexity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"max_complexity","doc":null,"default_value":"","external_name":"max_complexity","restriction":"Int32"}],"args_string":"(max_complexity : Int32)","args_html":"(max_complexity : Int32)","location":null,"def":{"name":"max_complexity=","args":[{"name":"max_complexity","doc":null,"default_value":"","external_name":"max_complexity","restriction":"Int32"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@max_complexity = max_complexity"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","args_html":" : Ameba::Severity","location":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","args_html":"(severity)","location":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_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)","args_html":"(source, node : Crystal::Def)","location":{"filename":"src/ameba/rule/metrics/cyclomatic_complexity.cr","line_number":20,"url":null},"def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Def"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"complexity = (AST::CountingVisitor.new(node)).count\nif complexity > max_complexity && (location = node.name_location)\n issue_for(location, def_name_end_location(node), MSG % {complexity, max_complexity})\nend\n"}}],"macros":[],"types":[]}]},{"html_id":"ameba/Ameba/Rule/Performance","path":"Ameba/Rule/Performance.html","kind":"module","full_name":"Ameba::Rule::Performance","name":"Performance","abstract":false,"superclass":null,"ancestors":[],"locations":[],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":null,"aliased_html":null,"const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule","kind":"module","full_name":"Ameba::Rule","name":"Rule"},"doc":null,"summary":null,"class_methods":[],"constructors":[],"instance_methods":[],"macros":[],"types":[{"html_id":"ameba/Ameba/Rule/Performance/AnyAfterFilter","path":"Ameba/Rule/Performance/AnyAfterFilter.html","kind":"struct","full_name":"Ameba::Rule::Performance::AnyAfterFilter","name":"AnyAfterFilter","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":null,"aliased_html":null,"const":false,"constants":[{"id":"ANY_NAME","name":"ANY_NAME","value":"\"any?\"","doc":null,"summary":null},{"id":"MSG","name":"MSG","value":"\"Use `#{ANY_NAME} {...}` instead of `%s {...}.#{ANY_NAME}`\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Performance","kind":"module","full_name":"Ameba::Rule::Performance","name":"Performance"},"doc":"This rule is used to identify usage of `any?` calls that follow filters.\n\nFor example, this is considered invalid:\n\n```\n[1, 2, 3].select { |e| e > 2 }.any?\n[1, 2, 3].reject { |e| e >= 2 }.any?\n```\n\nAnd it should be written as this:\n\n```\n[1, 2, 3].any? { |e| e > 2 }\n[1, 2, 3].any? { |e| e < 2 }\n```\n\nYAML configuration example:\n\n```\nPerformance/AnyAfterFilter:\n Enabled: true\n FilterNames:\n - select\n - reject\n```\n","summary":"
This rule is used to identify usage of any? calls that follow filters.
","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","args_html":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","location":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"This rule is used to identify usage of `any?` calls that follow filters.\n\nFor example, this is considered invalid:\n\n```\n[1, 2, 3].select { |e| e > 2 }.any?\n[1, 2, 3].reject { |e| e >= 2 }.any?\n```\n\nAnd it should be written as this:\n\n```\n[1, 2, 3].any? { |e| e > 2 }\n[1, 2, 3].any? { |e| e < 2 }\n```\n\nYAML configuration example:\n\n```\nPerformance/AnyAfterFilter:\n Enabled: true\n FilterNames:\n - select\n - reject\n```\n","summary":"
This rule is used to identify usage of any? calls that follow filters.
","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","args_html":"(config = nil)","location":{"filename":"src/ameba/rule/performance/any_after_filter.cr","line_number":28,"url":null},"def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","args_html":" : String","location":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","args_html":"(description : String)","location":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","args_html":" : Bool","location":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","args_html":"(enabled)","location":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","args_html":" : Array(String)?","location":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","args_html":"(excluded : Array(String)?)","location":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"filter_names:Array(String)-instance-method","html_id":"filter_names:Array(String)-instance-method","name":"filter_names","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)","args_html":" : Array(String)","location":null,"def":{"name":"filter_names","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String)","visibility":"Public","body":"@filter_names"}},{"id":"filter_names=(filter_names:Array(String))-instance-method","html_id":"filter_names=(filter_names:Array(String))-instance-method","name":"filter_names=","doc":null,"summary":null,"abstract":false,"args":[{"name":"filter_names","doc":null,"default_value":"","external_name":"filter_names","restriction":"Array(String)"}],"args_string":"(filter_names : Array(String))","args_html":"(filter_names : Array(String))","location":null,"def":{"name":"filter_names=","args":[{"name":"filter_names","doc":null,"default_value":"","external_name":"filter_names","restriction":"Array(String)"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@filter_names = filter_names"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","args_html":" : Ameba::Severity","location":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","args_html":"(severity)","location":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_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)","args_html":"(source, node : Crystal::Call)","location":{"filename":"src/ameba/rule/performance/any_after_filter.cr","line_number":37,"url":null},"def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Call"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (node.name == ANY_NAME) && (obj = node.obj)\nelse\n return\nend\nif ((node.block.nil? && obj.is_a?(Crystal::Call)) && (filter_names.includes?(obj.name))) && (!obj.block.nil?)\n issue_for(obj.name_location, node.name_end_location, MSG % obj.name)\nend\n"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Performance/FirstLastAfterFilter","path":"Ameba/Rule/Performance/FirstLastAfterFilter.html","kind":"struct","full_name":"Ameba::Rule::Performance::FirstLastAfterFilter","name":"FirstLastAfterFilter","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":null,"aliased_html":null,"const":false,"constants":[{"id":"CALL_NAMES","name":"CALL_NAMES","value":"[\"first\", \"last\", \"first?\", \"last?\"] of ::String","doc":null,"summary":null},{"id":"MSG","name":"MSG","value":"\"Use `find {...}` instead of `%s {...}.%s`\"","doc":null,"summary":null},{"id":"MSG_REVERSE","name":"MSG_REVERSE","value":"\"Use `reverse_each.find {...}` instead of `%s {...}.%s`\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Performance","kind":"module","full_name":"Ameba::Rule::Performance","name":"Performance"},"doc":"This rule is used to identify usage of `first/last/first?/last?` calls that follow filters.\n\nFor example, this is considered inefficient:\n\n```\n[-1, 0, 1, 2].select { |e| e > 0 }.first?\n[-1, 0, 1, 2].select { |e| e > 0 }.last?\n```\n\nAnd can be written as this:\n\n```\n[-1, 0, 1, 2].find { |e| e > 0 }\n[-1, 0, 1, 2].reverse_each.find { |e| e > 0 }\n```\n\nYAML configuration example:\n\n```\nPerformance/FirstLastAfterFilter\n Enabled: true\n FilterNames:\n - select\n```\n","summary":"
This rule is used to identify usage of first/last/first?/last? calls that follow filters.
","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","args_html":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","location":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"This rule is used to identify usage of `first/last/first?/last?` calls that follow filters.\n\nFor example, this is considered inefficient:\n\n```\n[-1, 0, 1, 2].select { |e| e > 0 }.first?\n[-1, 0, 1, 2].select { |e| e > 0 }.last?\n```\n\nAnd can be written as this:\n\n```\n[-1, 0, 1, 2].find { |e| e > 0 }\n[-1, 0, 1, 2].reverse_each.find { |e| e > 0 }\n```\n\nYAML configuration example:\n\n```\nPerformance/FirstLastAfterFilter\n Enabled: true\n FilterNames:\n - select\n```\n","summary":"
This rule is used to identify usage of first/last/first?/last? calls that follow filters.
","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","args_html":"(config = nil)","location":{"filename":"src/ameba/rule/performance/first_last_after_filter.cr","line_number":27,"url":null},"def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","args_html":" : String","location":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","args_html":"(description : String)","location":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","args_html":" : Bool","location":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","args_html":"(enabled)","location":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","args_html":" : Array(String)?","location":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","args_html":"(excluded : Array(String)?)","location":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"filter_names:Array(String)-instance-method","html_id":"filter_names:Array(String)-instance-method","name":"filter_names","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)","args_html":" : Array(String)","location":null,"def":{"name":"filter_names","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String)","visibility":"Public","body":"@filter_names"}},{"id":"filter_names=(filter_names:Array(String))-instance-method","html_id":"filter_names=(filter_names:Array(String))-instance-method","name":"filter_names=","doc":null,"summary":null,"abstract":false,"args":[{"name":"filter_names","doc":null,"default_value":"","external_name":"filter_names","restriction":"Array(String)"}],"args_string":"(filter_names : Array(String))","args_html":"(filter_names : Array(String))","location":null,"def":{"name":"filter_names=","args":[{"name":"filter_names","doc":null,"default_value":"","external_name":"filter_names","restriction":"Array(String)"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@filter_names = filter_names"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","args_html":" : Ameba::Severity","location":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","args_html":"(severity)","location":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_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)","args_html":"(source, node : Crystal::Call)","location":{"filename":"src/ameba/rule/performance/first_last_after_filter.cr","line_number":46,"url":null},"def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Call"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (CALL_NAMES.includes?(node.name)) && (obj = node.obj)\nelse\n return\nend\nif node.args.any?\n return\nend\nif ((node.block.nil? && obj.is_a?(Crystal::Call)) && (filter_names.includes?(obj.name))) && (!obj.block.nil?)\n message = node.name.includes?(CALL_NAMES.first) ? MSG : MSG_REVERSE\n issue_for(obj.name_location, node.name_end_location, message % {obj.name, node.name})\nend\n"}},{"id":"test(source)-instance-method","html_id":"test(source)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"args_string":"(source)","args_html":"(source)","location":{"filename":"src/ameba/rule/performance/first_last_after_filter.cr","line_number":37,"url":null},"def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"AST::NodeVisitor.new(self, source, skip: [Crystal::Macro, Crystal::MacroExpression, Crystal::MacroIf, Crystal::MacroFor])"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Performance/SizeAfterFilter","path":"Ameba/Rule/Performance/SizeAfterFilter.html","kind":"struct","full_name":"Ameba::Rule::Performance::SizeAfterFilter","name":"SizeAfterFilter","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":null,"aliased_html":null,"const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Use `count {...}` instead of `%s {...}.#{SIZE_NAME}`.\"","doc":null,"summary":null},{"id":"SIZE_NAME","name":"SIZE_NAME","value":"\"size\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Performance","kind":"module","full_name":"Ameba::Rule::Performance","name":"Performance"},"doc":"This rule is used to identify usage of `size` calls that follow filter.\n\nFor example, this is considered invalid:\n\n```\n[1, 2, 3].select { |e| e > 2 }.size\n[1, 2, 3].reject { |e| e < 2 }.size\n[1, 2, 3].select(&.< 2).size\n[0, 1, 2].select(&.zero?).size\n[0, 1, 2].reject(&.zero?).size\n```\n\nAnd it should be written as this:\n\n```\n[1, 2, 3].count { |e| e > 2 }\n[1, 2, 3].count { |e| e >= 2 }\n[1, 2, 3].count(&.< 2)\n[0, 1, 2].count(&.zero?)\n[0, 1, 2].count(&.!= 0)\n```\n\nYAML configuration example:\n\n```\nPerformance/SizeAfterFilter:\n Enabled: true\n FilterNames:\n - select\n - reject\n```\n","summary":"
This rule is used to identify usage of size calls that follow filter.
","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","args_html":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","location":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"This rule is used to identify usage of `size` calls that follow filter.\n\nFor example, this is considered invalid:\n\n```\n[1, 2, 3].select { |e| e > 2 }.size\n[1, 2, 3].reject { |e| e < 2 }.size\n[1, 2, 3].select(&.< 2).size\n[0, 1, 2].select(&.zero?).size\n[0, 1, 2].reject(&.zero?).size\n```\n\nAnd it should be written as this:\n\n```\n[1, 2, 3].count { |e| e > 2 }\n[1, 2, 3].count { |e| e >= 2 }\n[1, 2, 3].count(&.< 2)\n[0, 1, 2].count(&.zero?)\n[0, 1, 2].count(&.!= 0)\n```\n\nYAML configuration example:\n\n```\nPerformance/SizeAfterFilter:\n Enabled: true\n FilterNames:\n - select\n - reject\n```\n","summary":"
This rule is used to identify usage of size calls that follow filter.
","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","args_html":"(config = nil)","location":{"filename":"src/ameba/rule/performance/size_after_filter.cr","line_number":34,"url":null},"def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","args_html":" : String","location":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","args_html":"(description : String)","location":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","args_html":" : Bool","location":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","args_html":"(enabled)","location":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","args_html":" : Array(String)?","location":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","args_html":"(excluded : Array(String)?)","location":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"filter_names:Array(String)-instance-method","html_id":"filter_names:Array(String)-instance-method","name":"filter_names","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)","args_html":" : Array(String)","location":null,"def":{"name":"filter_names","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String)","visibility":"Public","body":"@filter_names"}},{"id":"filter_names=(filter_names:Array(String))-instance-method","html_id":"filter_names=(filter_names:Array(String))-instance-method","name":"filter_names=","doc":null,"summary":null,"abstract":false,"args":[{"name":"filter_names","doc":null,"default_value":"","external_name":"filter_names","restriction":"Array(String)"}],"args_string":"(filter_names : Array(String))","args_html":"(filter_names : Array(String))","location":null,"def":{"name":"filter_names=","args":[{"name":"filter_names","doc":null,"default_value":"","external_name":"filter_names","restriction":"Array(String)"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@filter_names = filter_names"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","args_html":" : Ameba::Severity","location":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","args_html":"(severity)","location":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_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)","args_html":"(source, node : Crystal::Call)","location":{"filename":"src/ameba/rule/performance/size_after_filter.cr","line_number":52,"url":null},"def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Call"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (node.name == SIZE_NAME) && (obj = node.obj)\nelse\n return\nend\nif (obj.is_a?(Crystal::Call) && (filter_names.includes?(obj.name))) && (!obj.block.nil?)\n issue_for(obj.name_location, node.name_end_location, MSG % obj.name)\nend\n"}},{"id":"test(source)-instance-method","html_id":"test(source)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"args_string":"(source)","args_html":"(source)","location":{"filename":"src/ameba/rule/performance/size_after_filter.cr","line_number":43,"url":null},"def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"AST::NodeVisitor.new(self, source, skip: [Crystal::Macro, Crystal::MacroExpression, Crystal::MacroIf, Crystal::MacroFor])"}}],"macros":[],"types":[]}]},{"html_id":"ameba/Ameba/Rule/Style","path":"Ameba/Rule/Style.html","kind":"module","full_name":"Ameba::Rule::Style","name":"Style","abstract":false,"superclass":null,"ancestors":[],"locations":[],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":null,"aliased_html":null,"const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule","kind":"module","full_name":"Ameba::Rule","name":"Rule"},"doc":null,"summary":null,"class_methods":[],"constructors":[],"instance_methods":[],"macros":[],"types":[{"html_id":"ameba/Ameba/Rule/Style/ConstantNames","path":"Ameba/Rule/Style/ConstantNames.html","kind":"struct","full_name":"Ameba::Rule::Style::ConstantNames","name":"ConstantNames","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":null,"aliased_html":null,"const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Constant name should be screaming-cased: %s, not %s\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Style","kind":"module","full_name":"Ameba::Rule::Style","name":"Style"},"doc":"A rule that enforces constant names to be in screaming case.\n\nFor example, these constant names are considered valid:\n\n```\nLUCKY_NUMBERS = [3, 7, 11]\nDOCUMENTATION_URL = \"http://crystal-lang.org/docs\"\n```\n\nAnd these are invalid names:\n\n```\nmyBadConstant = 1\nWrong_NAME = 2\n```\n\nYAML configuration example:\n\n```\nStyle/ConstantNames:\n Enabled: true\n```\n","summary":"
A rule that enforces constant names to be in screaming case.
","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","args_html":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","location":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_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)","args_html":"(config = nil)","location":{"filename":"src/ameba/rule/style/constant_names.cr","line_number":25,"url":null},"def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","args_html":" : String","location":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","args_html":"(description : String)","location":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","args_html":" : Bool","location":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","args_html":"(enabled)","location":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","args_html":" : Array(String)?","location":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","args_html":"(excluded : Array(String)?)","location":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","args_html":" : Ameba::Severity","location":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","args_html":"(severity)","location":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_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)","args_html":"(source, node : Crystal::Assign)","location":{"filename":"src/ameba/rule/style/constant_names.cr","line_number":32,"url":null},"def":{"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":[],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":null,"aliased_html":null,"const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Use `nil?` instead of `is_a?(Nil)`\"","doc":null,"summary":null},{"id":"PATH_NIL_NAMES","name":"PATH_NIL_NAMES","value":"[\"Nil\"] of ::String","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Style","kind":"module","full_name":"Ameba::Rule::Style","name":"Style"},"doc":"A rule that disallows calls to `is_a?(Nil)` in favor of `nil?`.\n\nThis is considered bad:\n\n```\nvar.is_a? Nil\n```\n\nAnd needs to be written as:\n\n```\nvar.nil?\n```\n\nYAML configuration example:\n\n```\nStyle/IsANil:\n Enabled: true\n```\n","summary":"
A rule that disallows calls to is_a?(Nil) in favor of nil?.
","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","args_html":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","location":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows calls to `is_a?(Nil)` in favor of `nil?`.\n\nThis is considered bad:\n\n```\nvar.is_a? Nil\n```\n\nAnd needs to be written as:\n\n```\nvar.nil?\n```\n\nYAML configuration example:\n\n```\nStyle/IsANil:\n Enabled: true\n```\n","summary":"
A rule that disallows calls to is_a?(Nil) in favor of nil?.
","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","args_html":"(config = nil)","location":{"filename":"src/ameba/rule/style/is_a_nil.cr","line_number":23,"url":null},"def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","args_html":" : String","location":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","args_html":"(description : String)","location":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","args_html":" : Bool","location":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","args_html":"(enabled)","location":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","args_html":" : Array(String)?","location":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","args_html":"(excluded : Array(String)?)","location":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","args_html":" : Ameba::Severity","location":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","args_html":"(severity)","location":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node:Crystal::IsA)-instance-method","html_id":"test(source,node:Crystal::IsA)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::IsA"}],"args_string":"(source, node : Crystal::IsA)","args_html":"(source, node : Crystal::IsA)","location":{"filename":"src/ameba/rule/style/is_a_nil.cr","line_number":31,"url":null},"def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::IsA"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if node.nil_check?\n return\nend\nconst = node.const\nif const.is_a?(Crystal::Path) && (const.names == PATH_NIL_NAMES)\n issue_for(const, MSG)\nend\n"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Style/LargeNumbers","path":"Ameba/Rule/Style/LargeNumbers.html","kind":"struct","full_name":"Ameba::Rule::Style::LargeNumbers","name":"LargeNumbers","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":null,"aliased_html":null,"const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Large numbers should be written with underscores: %s\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Style","kind":"module","full_name":"Ameba::Rule::Style","name":"Style"},"doc":"A rule that disallows usage of large numbers without underscore.\nThese do not affect the value of the number, but can help read\nlarge numbers more easily.\n\nFor example, these are considered invalid:\n\n```\n10000\n141592654\n5.12345\n```\n\nAnd has to be rewritten as the following:\n\n```\n10_000\n141_592_654\n5.123_45\n```\n\nYAML configuration example:\n\n```\nStyle/LargeNumbers:\n Enabled: true\n IntMinDigits: 5 # i.e. integers higher than 9999\n```\n","summary":"
A rule that disallows usage of large numbers without underscore.
","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","args_html":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","location":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_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)","args_html":"(config = nil)","location":{"filename":"src/ameba/rule/style/large_numbers.cr","line_number":30,"url":null},"def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","args_html":" : String","location":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","args_html":"(description : String)","location":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","args_html":" : Bool","location":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)","args_html":"(enabled : Bool)","location":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)?","args_html":" : Array(String)?","location":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","args_html":"(excluded : Array(String)?)","location":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"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","args_html":" : Int32","location":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)","args_html":"(int_min_digits : Int32)","location":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","args_html":" : Ameba::Severity","location":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","args_html":"(severity)","location":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_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)","args_html":"(source)","location":{"filename":"src/ameba/rule/style/large_numbers.cr","line_number":39,"url":null},"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":[],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":null,"aliased_html":null,"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)","args_html":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","location":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_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)","args_html":"(config = nil)","location":{"filename":"src/ameba/rule/style/method_names.cr","line_number":41,"url":null},"def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","args_html":" : String","location":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","args_html":"(description : String)","location":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","args_html":" : Bool","location":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","args_html":"(enabled)","location":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","args_html":" : Array(String)?","location":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","args_html":"(excluded : Array(String)?)","location":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","args_html":" : Ameba::Severity","location":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","args_html":"(severity)","location":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_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)","args_html":"(source, node : Crystal::Def)","location":{"filename":"src/ameba/rule/style/method_names.cr","line_number":48,"url":null},"def":{"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":[],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":null,"aliased_html":null,"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)","args_html":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","location":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_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)","args_html":"(config = nil)","location":{"filename":"src/ameba/rule/style/negated_conditions_in_unless.cr","line_number":30,"url":null},"def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","args_html":" : String","location":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","args_html":"(description : String)","location":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","args_html":" : Bool","location":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","args_html":"(enabled)","location":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","args_html":" : Array(String)?","location":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","args_html":"(excluded : Array(String)?)","location":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","args_html":" : Ameba::Severity","location":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","args_html":"(severity)","location":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_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)","args_html":"(source, node : Crystal::Unless)","location":{"filename":"src/ameba/rule/style/negated_conditions_in_unless.cr","line_number":37,"url":null},"def":{"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":[],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":null,"aliased_html":null,"const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Favour method name '%s?' over '%s'\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Style","kind":"module","full_name":"Ameba::Rule::Style","name":"Style"},"doc":"A rule that disallows tautological predicate names, meaning those that\nstart with the prefix `has_` or the prefix `is_`. Ignores if the alternative isn't valid Crystal code (e.g. `is_404?`).\n\nFavour these:\n\n```\ndef valid?(x)\nend\n\ndef picture?(x)\nend\n```\n\nOver these:\n\n```\ndef is_valid?(x)\nend\n\ndef has_picture?(x)\nend\n```\n\nYAML configuration example:\n\n```\nStyle/PredicateName:\n Enabled: true\n```\n","summary":"
A rule that disallows tautological predicate names, meaning those that start with the prefix has_ or the prefix is_.
","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","args_html":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","location":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows tautological predicate names, meaning those that\nstart with the prefix `has_` or the prefix `is_`. Ignores if the alternative isn't valid Crystal code (e.g. `is_404?`).\n\nFavour these:\n\n```\ndef valid?(x)\nend\n\ndef picture?(x)\nend\n```\n\nOver these:\n\n```\ndef is_valid?(x)\nend\n\ndef has_picture?(x)\nend\n```\n\nYAML configuration example:\n\n```\nStyle/PredicateName:\n Enabled: true\n```\n","summary":"
A rule that disallows tautological predicate names, meaning those that start with the prefix has_ or the prefix is_.
","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","args_html":"(config = nil)","location":{"filename":"src/ameba/rule/style/predicate_name.cr","line_number":32,"url":null},"def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","args_html":" : String","location":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","args_html":"(description : String)","location":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","args_html":" : Bool","location":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)","args_html":"(enabled : Bool)","location":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)?","args_html":" : Array(String)?","location":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","args_html":"(excluded : Array(String)?)","location":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","args_html":" : Ameba::Severity","location":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","args_html":"(severity)","location":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_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)","args_html":"(source, node : Crystal::Def)","location":{"filename":"src/ameba/rule/style/predicate_name.cr","line_number":40,"url":null},"def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Def"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if node.name =~ (/^(is|has)_(\\w+)\\?/)\n alternative = $~[2]\n if alternative =~ (/^[a-z][a-zA-Z_0-9]*$/)\n else\n return\n end\n issue_for(node, MSG % {alternative, node.name})\nend"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Style/RedundantBegin","path":"Ameba/Rule/Style/RedundantBegin.html","kind":"struct","full_name":"Ameba::Rule::Style::RedundantBegin","name":"RedundantBegin","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/Ameba/AST/Util","kind":"module","full_name":"Ameba::AST::Util","name":"Util"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":null,"aliased_html":null,"const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Redundant `begin` block detected\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/Ameba/AST/Util","kind":"module","full_name":"Ameba::AST::Util","name":"Util"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Style","kind":"module","full_name":"Ameba::Rule::Style","name":"Style"},"doc":"A rule that disallows redundant begin blocks.\n\nCurrently it is able to detect:\n\n1. Exception handler block that can be used as a part of the method.\n\nFor example, this:\n\n```\ndef method\n begin\n read_content\n rescue\n close_file\n end\nend\n```\n\nshould be rewritten as:\n\n```\ndef method\n read_content\nrescue\n close_file\nend\n```\n\n2. begin..end block as a top level block in a method.\n\nFor example this is considered invalid:\n\n```\ndef method\n begin\n a = 1\n b = 2\n end\nend\n```\n\nand has to be written as the following:\n\n```\ndef method\n a = 1\n b = 2\nend\n```\n\nYAML configuration example:\n\n```\nStyle/RedundantBegin:\n Enabled: true\n```\n","summary":"
A rule that disallows redundant begin blocks.
","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","args_html":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","location":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_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)","args_html":"(config = nil)","location":{"filename":"src/ameba/rule/style/redundant_begin.cr","line_number":59,"url":null},"def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","args_html":" : String","location":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","args_html":"(description : String)","location":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","args_html":" : Bool","location":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","args_html":"(enabled)","location":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","args_html":" : Array(String)?","location":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","args_html":"(excluded : Array(String)?)","location":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","args_html":" : Ameba::Severity","location":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","args_html":"(severity)","location":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_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)","args_html":"(source, node : Crystal::Def)","location":{"filename":"src/ameba/rule/style/redundant_begin.cr","line_number":67,"url":null},"def":{"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":[],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":null,"aliased_html":null,"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)","args_html":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","location":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_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)","args_html":"(config = nil)","location":{"filename":"src/ameba/rule/style/redundant_next.cr","line_number":99,"url":null},"def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"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","args_html":" : Bool","location":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)","args_html":"(allow_empty_next : Bool)","location":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","args_html":" : Bool","location":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)","args_html":"(allow_multi_next : Bool)","location":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","args_html":" : String","location":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","args_html":"(description : String)","location":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","args_html":" : Bool","location":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","args_html":"(enabled)","location":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","args_html":" : Array(String)?","location":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","args_html":"(excluded : Array(String)?)","location":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","args_html":" : Ameba::Severity","location":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","args_html":"(severity)","location":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_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)","args_html":"(source, node : Crystal::Next, visitor : AST::RedundantControlExpressionVisitor)","location":{"filename":"src/ameba/rule/style/redundant_next.cr","line_number":112,"url":null},"def":{"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)","args_html":"(source, node : Crystal::Block)","location":{"filename":"src/ameba/rule/style/redundant_next.cr","line_number":108,"url":null},"def":{"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":[],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":null,"aliased_html":null,"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)","args_html":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","location":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_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)","args_html":"(config = nil)","location":{"filename":"src/ameba/rule/style/redundant_return.cr","line_number":96,"url":null},"def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"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","args_html":" : Bool","location":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)","args_html":"(allow_empty_return : Bool)","location":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","args_html":" : Bool","location":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)","args_html":"(allow_multi_return : Bool)","location":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","args_html":" : String","location":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","args_html":"(description : String)","location":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","args_html":" : Bool","location":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","args_html":"(enabled)","location":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","args_html":" : Array(String)?","location":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","args_html":"(excluded : Array(String)?)","location":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","args_html":" : Ameba::Severity","location":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","args_html":"(severity)","location":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_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)","args_html":"(source, node : Crystal::Return, visitor : AST::RedundantControlExpressionVisitor)","location":{"filename":"src/ameba/rule/style/redundant_return.cr","line_number":109,"url":null},"def":{"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)","args_html":"(source, node : Crystal::Def)","location":{"filename":"src/ameba/rule/style/redundant_return.cr","line_number":105,"url":null},"def":{"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":[],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":null,"aliased_html":null,"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)","args_html":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","location":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_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)","args_html":"(config = nil)","location":{"filename":"src/ameba/rule/style/type_names.cr","line_number":55,"url":null},"def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","args_html":" : String","location":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","args_html":"(description : String)","location":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","args_html":" : Bool","location":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","args_html":"(enabled)","location":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","args_html":" : Array(String)?","location":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","args_html":"(excluded : Array(String)?)","location":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","args_html":" : Ameba::Severity","location":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","args_html":"(severity)","location":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_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)","args_html":"(source, node : Crystal::ClassDef)","location":{"filename":"src/ameba/rule/style/type_names.cr","line_number":70,"url":null},"def":{"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)","args_html":"(source, node : Crystal::Alias)","location":{"filename":"src/ameba/rule/style/type_names.cr","line_number":74,"url":null},"def":{"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)","args_html":"(source, node : Crystal::LibDef)","location":{"filename":"src/ameba/rule/style/type_names.cr","line_number":78,"url":null},"def":{"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)","args_html":"(source, node : Crystal::EnumDef)","location":{"filename":"src/ameba/rule/style/type_names.cr","line_number":82,"url":null},"def":{"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)","args_html":"(source, node : Crystal::ModuleDef)","location":{"filename":"src/ameba/rule/style/type_names.cr","line_number":86,"url":null},"def":{"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":[],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":null,"aliased_html":null,"const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Favour if over unless with else\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Style","kind":"module","full_name":"Ameba::Rule::Style","name":"Style"},"doc":"A rule that disallows the use of an `else` block with the `unless`.\n\nFor example, the rule considers these valid:\n\n```\nunless something\n :ok\nend\n\nif something\n :one\nelse\n :two\nend\n```\n\nBut it considers this one invalid as it is an `unless` with an `else`:\n\n```\nunless something\n :one\nelse\n :two\nend\n```\n\nThe solution is to swap the order of the blocks, and change the `unless` to\nan `if`, so the previous invalid example would become this:\n\n```\nif something\n :two\nelse\n :one\nend\n```\n\nYAML configuration example:\n\n```\nStyle/UnlessElse:\n Enabled: true\n```\n","summary":"
A rule that disallows the use of an else block with the unless.
","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","args_html":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","location":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows the use of an `else` block with the `unless`.\n\nFor example, the rule considers these valid:\n\n```\nunless something\n :ok\nend\n\nif something\n :one\nelse\n :two\nend\n```\n\nBut it considers this one invalid as it is an `unless` with an `else`:\n\n```\nunless something\n :one\nelse\n :two\nend\n```\n\nThe solution is to swap the order of the blocks, and change the `unless` to\nan `if`, so the previous invalid example would become this:\n\n```\nif something\n :two\nelse\n :one\nend\n```\n\nYAML configuration example:\n\n```\nStyle/UnlessElse:\n Enabled: true\n```\n","summary":"
A rule that disallows the use of an else block with the unless.
","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","args_html":"(config = nil)","location":{"filename":"src/ameba/rule/style/unless_else.cr","line_number":46,"url":null},"def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","args_html":" : String","location":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","args_html":"(description : String)","location":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","args_html":" : Bool","location":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","args_html":"(enabled)","location":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","args_html":" : Array(String)?","location":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","args_html":"(excluded : Array(String)?)","location":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","args_html":" : Ameba::Severity","location":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","args_html":"(severity)","location":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_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)","args_html":"(source, node : Crystal::Unless)","location":{"filename":"src/ameba/rule/style/unless_else.cr","line_number":53,"url":null},"def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Unless"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if node.else.nop?\n return\nend\nissue_for(node, MSG)\n"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Style/VariableNames","path":"Ameba/Rule/Style/VariableNames.html","kind":"struct","full_name":"Ameba::Rule::Style::VariableNames","name":"VariableNames","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":null,"aliased_html":null,"const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Var name should be underscore-cased: %s, not %s\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Style","kind":"module","full_name":"Ameba::Rule::Style","name":"Style"},"doc":"A rule that enforces variable names to be in underscored case.\n\nFor example, these variable names are considered valid:\n\n```\nvar_name = 1\nname = 2\n_another_good_name = 3\n```\n\nAnd these are invalid variable names:\n\n```\nmyBadNamedVar = 1\nwrong_Name = 2\n```\n\nYAML configuration example:\n\n```\nStyle/VariableNames:\n Enabled: true\n```\n","summary":"
A rule that enforces variable names to be in underscored case.
","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","args_html":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","location":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_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)","args_html":"(config = nil)","location":{"filename":"src/ameba/rule/style/variable_names.cr","line_number":26,"url":null},"def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","args_html":" : String","location":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","args_html":"(description : String)","location":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","args_html":" : Bool","location":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","args_html":"(enabled)","location":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","args_html":" : Array(String)?","location":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","args_html":"(excluded : Array(String)?)","location":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","args_html":" : Ameba::Severity","location":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","args_html":"(severity)","location":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_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)","args_html":"(source, node : Crystal::Var)","location":{"filename":"src/ameba/rule/style/variable_names.cr","line_number":39,"url":null},"def":{"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)","args_html":"(source, node : Crystal::InstanceVar)","location":{"filename":"src/ameba/rule/style/variable_names.cr","line_number":43,"url":null},"def":{"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)","args_html":"(source, node : Crystal::ClassVar)","location":{"filename":"src/ameba/rule/style/variable_names.cr","line_number":47,"url":null},"def":{"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":[],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":null,"aliased_html":null,"const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"While statement using true literal as condition\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Style","kind":"module","full_name":"Ameba::Rule::Style","name":"Style"},"doc":"A rule that disallows the use of `while true` instead of using the idiomatic `loop`\n\nFor example, this is considered invalid:\n\n```\nwhile true\n do_something\n break if some_condition\nend\n```\n\nAnd should be replaced by the following:\n\n```\nloop do\n do_something\n break if some_condition\nend\n```\n\nYAML configuration example:\n\n```\nStyle/WhileTrue:\n Enabled: true\n```\n","summary":"
A rule that disallows the use of while true instead of using the idiomatic loop
","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","args_html":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","location":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows the use of `while true` instead of using the idiomatic `loop`\n\nFor example, this is considered invalid:\n\n```\nwhile true\n do_something\n break if some_condition\nend\n```\n\nAnd should be replaced by the following:\n\n```\nloop do\n do_something\n break if some_condition\nend\n```\n\nYAML configuration example:\n\n```\nStyle/WhileTrue:\n Enabled: true\n```\n","summary":"
A rule that disallows the use of while true instead of using the idiomatic loop
","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","args_html":"(config = nil)","location":{"filename":"src/ameba/rule/style/while_true.cr","line_number":29,"url":null},"def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","args_html":" : String","location":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","args_html":"(description : String)","location":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","args_html":" : Bool","location":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","args_html":"(enabled)","location":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","args_html":" : Array(String)?","location":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","args_html":"(excluded : Array(String)?)","location":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","args_html":" : Ameba::Severity","location":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","args_html":"(severity)","location":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node:Crystal::While)-instance-method","html_id":"test(source,node:Crystal::While)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::While"}],"args_string":"(source, node : Crystal::While)","args_html":"(source, node : Crystal::While)","location":{"filename":"src/ameba/rule/style/while_true.cr","line_number":36,"url":null},"def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::While"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if node.cond.true_literal?\nelse\n return\nend\nissue_for(node, MSG)\n"}}],"macros":[],"types":[]}]}]},{"html_id":"ameba/Ameba/Runner","path":"Ameba/Runner.html","kind":"class","full_name":"Ameba::Runner","name":"Runner","abstract":false,"superclass":{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},"ancestors":[{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":null,"aliased_html":null,"const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba","kind":"module","full_name":"Ameba","name":"Ameba"},"doc":"Represents a runner for inspecting sources files.\nHolds a list of rules to do inspection based on,\nlist of sources to run inspection on and a formatter\nto prepare a report.\n\n```\nconfig = Ameba::Config.load\nrunner = Ameba::Runner.new config\nrunner.run.success? # => true or false\n```\n","summary":"
Represents a runner for inspecting sources files.
","class_methods":[],"constructors":[{"id":"new(config:Config)-class-method","html_id":"new(config:Config)-class-method","name":"new","doc":"Instantiates a runner using a `config`.\n\n```\nconfig = Ameba::Config.load\nconfig.files = files\nconfig.formatter = formatter\n\nAmeba::Runner.new config\n```\n","summary":"
Instantiates a runner using a config.
","abstract":false,"args":[{"name":"config","doc":null,"default_value":"","external_name":"config","restriction":"Config"}],"args_string":"(config : Config)","args_html":"(config : Config)","location":{"filename":"src/ameba/runner.cr","line_number":42,"url":null},"def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"","external_name":"config","restriction":"Config"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"_ = allocate\n_.initialize(config)\nif _.responds_to?(:finalize)\n ::GC.add_finalizer(_)\nend\n_\n"}}],"instance_methods":[{"id":"explain(location,output=STDOUT)-instance-method","html_id":"explain(location,output=STDOUT)-instance-method","name":"explain","doc":"Explains an issue at a specified *location*.\n\nRunner should perform inspection before doing the explain.\nThis is necessary to be able to find the issue at a specified location.\n\n```\nrunner = Ameba::Runner.new config\nrunner.run\nrunner.explain({file: file, line: l, column: c})\n```\n","summary":"
Explains an issue at a specified location.
","abstract":false,"args":[{"name":"location","doc":null,"default_value":"","external_name":"location","restriction":""},{"name":"output","doc":null,"default_value":"STDOUT","external_name":"output","restriction":""}],"args_string":"(location, output = STDOUT)","args_html":"(location, output = STDOUT)","location":{"filename":"src/ameba/runner.cr","line_number":118,"url":null},"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":"","args_html":"","location":{"filename":"src/ameba/runner.cr","line_number":69,"url":null},"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)","args_html":" : Array(Source)","location":{"filename":"src/ameba/runner.cr","line_number":18,"url":null},"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":"","args_html":"","location":{"filename":"src/ameba/runner.cr","line_number":131,"url":null},"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":[],"repository_name":"ameba","program":false,"enum":true,"alias":false,"aliased":null,"aliased_html":null,"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)","args_html":"(name : String)","location":{"filename":"src/ameba/severity.cr","line_number":23,"url":null},"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":"","args_html":"","location":{"filename":"src/ameba/severity.cr","line_number":5,"url":null},"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":"","args_html":"","location":{"filename":"src/ameba/severity.cr","line_number":3,"url":null},"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":"","args_html":"","location":{"filename":"src/ameba/severity.cr","line_number":12,"url":null},"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":"","args_html":"","location":{"filename":"src/ameba/severity.cr","line_number":4,"url":null},"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":[],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":null,"aliased_html":null,"const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba","kind":"module","full_name":"Ameba","name":"Ameba"},"doc":"Converter for `YAML.mapping` which converts severity enum to and from YAML.","summary":"
Converter for YAML.mapping which converts severity enum to and from YAML.
","class_methods":[{"id":"from_yaml(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"from_yaml(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"from_yaml","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","args_html":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","location":{"filename":"src/ameba/severity.cr","line_number":32,"url":null},"def":{"name":"from_yaml","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if node.is_a?(YAML::Nodes::Scalar)\nelse\n raise(\"Severity must be a scalar, not #{node.class}\")\nend\ncase value = node.value\nwhen String\n Severity.parse(value)\nwhen Nil\n nil\nelse\n raise(\"Incorrect severity: #{value}\")\nend\n"}},{"id":"to_yaml(value:Severity,yaml:YAML::Nodes::Builder)-class-method","html_id":"to_yaml(value:Severity,yaml:YAML::Nodes::Builder)-class-method","name":"to_yaml","doc":null,"summary":null,"abstract":false,"args":[{"name":"value","doc":null,"default_value":"","external_name":"value","restriction":"Severity"},{"name":"yaml","doc":null,"default_value":"","external_name":"yaml","restriction":"YAML::Nodes::Builder"}],"args_string":"(value : Severity, yaml : YAML::Nodes::Builder)","args_html":"(value : Severity, yaml : YAML::Nodes::Builder)","location":{"filename":"src/ameba/severity.cr","line_number":45,"url":null},"def":{"name":"to_yaml","args":[{"name":"value","doc":null,"default_value":"","external_name":"value","restriction":"Severity"},{"name":"yaml","doc":null,"default_value":"","external_name":"yaml","restriction":"YAML::Nodes::Builder"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"yaml.scalar(value)"}}],"constructors":[],"instance_methods":[],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Source","path":"Ameba/Source.html","kind":"class","full_name":"Ameba::Source","name":"Source","abstract":false,"superclass":{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},"ancestors":[{"html_id":"ameba/Ameba/Reportable","kind":"module","full_name":"Ameba::Reportable","name":"Reportable"},{"html_id":"ameba/Ameba/InlineComments","kind":"module","full_name":"Ameba::InlineComments","name":"InlineComments"},{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":null,"aliased_html":null,"const":false,"constants":[],"included_modules":[{"html_id":"ameba/Ameba/InlineComments","kind":"module","full_name":"Ameba::InlineComments","name":"InlineComments"},{"html_id":"ameba/Ameba/Reportable","kind":"module","full_name":"Ameba::Reportable","name":"Reportable"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba","kind":"module","full_name":"Ameba","name":"Ameba"},"doc":"An entity that represents a Crystal source file.\nHas path, lines of code and issues reported by rules.","summary":"
An entity that represents a Crystal source file.
","class_methods":[],"constructors":[{"id":"new(code:String,path="")-class-method","html_id":"new(code:String,path="")-class-method","name":"new","doc":"Creates a new source by `code` and `path`.\n\nFor example:\n\n```\npath = \"./src/source.cr\"\nAmeba::Source.new File.read(path), path\n```\n","summary":"
","abstract":false,"args":[],"args_string":"","args_html":"","location":{"filename":"src/ameba/source.cr","line_number":52,"url":null},"def":{"name":"ast","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@ast || (@ast = (Crystal::Parser.new(code)).tap do |parser|\n parser.wants_doc = true\nend.tap do |parser|\n parser.filename = @path\nend.parse)"}},{"id":"code:String-instance-method","html_id":"code:String-instance-method","name":"code","doc":"Crystal code (content of a source file).","summary":"
Crystal code (content of a source file).
","abstract":false,"args":[],"args_string":" : String","args_html":" : String","location":{"filename":"src/ameba/source.cr","line_number":12,"url":null},"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":"","args_html":"","location":{"filename":"src/ameba/source.cr","line_number":60,"url":null},"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":"","args_html":"","location":{"filename":"src/ameba/source.cr","line_number":41,"url":null},"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)","args_html":"(filepath)","location":{"filename":"src/ameba/source.cr","line_number":65,"url":null},"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","args_html":" : String","location":{"filename":"src/ameba/source.cr","line_number":9,"url":null},"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":[],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":null,"aliased_html":null,"const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba","kind":"module","full_name":"Ameba","name":"Ameba"},"doc":"Represents Crystal syntax tokenizer based on `Crystal::Lexer`.\n\n```\nsource = Ameba::Source.new code, path\ntokenizer = Ameba::Tokenizer.new(source)\ntokenizer.run do |token|\n puts token\nend\n```\n","summary":"
Represents Crystal syntax tokenizer based on Crystal::Lexer.
","class_methods":[],"constructors":[{"id":"new(lexer:Crystal::Lexer)-class-method","html_id":"new(lexer:Crystal::Lexer)-class-method","name":"new","doc":"Instantiates Tokenizer using a `lexer`.\n\n```\nlexer = Crystal::Lexer.new(code)\nAmeba::Tokenizer.new(lexer)\n```\n","summary":"
Instantiates Tokenizer using a lexer.
","abstract":false,"args":[{"name":"lexer","doc":null,"default_value":"","external_name":"lexer","restriction":"Crystal::Lexer"}],"args_string":"(lexer : Crystal::Lexer)","args_html":"(lexer : Crystal::Lexer)","location":{"filename":"src/ameba/tokenizer.cr","line_number":37,"url":null},"def":{"name":"new","args":[{"name":"lexer","doc":null,"default_value":"","external_name":"lexer","restriction":"Crystal::Lexer"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"_ = allocate\n_.initialize(lexer)\nif _.responds_to?(:finalize)\n ::GC.add_finalizer(_)\nend\n_\n"}},{"id":"new(source)-class-method","html_id":"new(source)-class-method","name":"new","doc":"Instantiates Tokenizer using a `source`.\n\n```\nsource = Ameba::Source.new code, path\nAmeba::Tokenizer.new(source)\n```\n","summary":"
Instantiates Tokenizer using a source.
","abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"args_string":"(source)","args_html":"(source)","location":{"filename":"src/ameba/tokenizer.cr","line_number":22,"url":null},"def":{"name":"new","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"_ = allocate\n_.initialize(source)\nif _.responds_to?(:finalize)\n ::GC.add_finalizer(_)\nend\n_\n"}}],"instance_methods":[{"id":"run(&block:Crystal::Token->_)-instance-method","html_id":"run(&block:Crystal::Token->_)-instance-method","name":"run","doc":"Runs the tokenizer and yields each token as a block argument.\n\n```\nAmeba::Tokenizer.new(source).run do |token|\n puts token\nend\n```\n","summary":"
Runs the tokenizer and yields each token as a block argument.
","abstract":false,"args":[],"args_string":"(&block : Crystal::Token -> _)","args_html":"(&block : Crystal::Token -> _)","location":{"filename":"src/ameba/tokenizer.cr","line_number":48,"url":null},"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/bedf3a68/src/ameba.cr#L24"},{"filename":"src/ameba/glob_utils.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/glob_utils.cr#L1"},{"filename":"src/ameba/inline_comments.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/inline_comments.cr#L1"},{"filename":"src/ameba/issue.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/issue.cr#L1"},{"filename":"src/ameba/reportable.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/reportable.cr#L1"},{"filename":"src/ameba/runner.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/runner.cr#L1"},{"filename":"src/ameba/severity.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/severity.cr#L1"},{"filename":"src/ameba/source.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/source.cr#L1"},{"filename":"src/ameba/tokenizer.cr","line_number":3,"url":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/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":"
","abstract":false,"args":[{"name":"config","doc":null,"default_value":"Config.load","external_name":"config","restriction":""}],"args_string":"(config = Config.load)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba.cr#L39","def":{"name":"run","args":[{"name":"config","doc":null,"default_value":"Config.load","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"(Runner.new(config)).run"}}],"macros":[],"types":[{"html_id":"ameba/Ameba/AST","path":"Ameba/AST.html","kind":"module","full_name":"Ameba::AST","name":"AST","abstract":false,"superclass":null,"ancestors":[],"locations":[{"filename":"src/ameba/ast/branch.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/ast/branch.cr#L1"},{"filename":"src/ameba/ast/branchable.cr","line_number":3,"url":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/ast/branchable.cr#L3"},{"filename":"src/ameba/ast/flow_expression.cr","line_number":3,"url":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/ast/flow_expression.cr#L3"},{"filename":"src/ameba/ast/scope.cr","line_number":3,"url":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/ast/scope.cr#L3"},{"filename":"src/ameba/ast/variabling/argument.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/ast/variabling/argument.cr#L1"},{"filename":"src/ameba/ast/variabling/assignment.cr","line_number":4,"url":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/ast/variabling/assignment.cr#L4"},{"filename":"src/ameba/ast/variabling/ivariable.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/ast/variabling/ivariable.cr#L1"},{"filename":"src/ameba/ast/variabling/reference.cr","line_number":3,"url":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/ast/variabling/reference.cr#L3"},{"filename":"src/ameba/ast/variabling/variable.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/ast/variabling/variable.cr#L1"},{"filename":"src/ameba/ast/visitors/base_visitor.cr","line_number":4,"url":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/ast/visitors/base_visitor.cr#L4"},{"filename":"src/ameba/ast/visitors/counting_visitor.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/ast/visitors/counting_visitor.cr#L1"},{"filename":"src/ameba/ast/visitors/flow_expression_visitor.cr","line_number":4,"url":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/ast/visitors/flow_expression_visitor.cr#L4"},{"filename":"src/ameba/ast/visitors/node_visitor.cr","line_number":3,"url":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/ast/visitors/node_visitor.cr#L3"},{"filename":"src/ameba/ast/visitors/redundant_control_expression_visitor.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/ast/visitors/redundant_control_expression_visitor.cr#L1"},{"filename":"src/ameba/ast/visitors/scope_visitor.cr","line_number":3,"url":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/ast/visitors/scope_visitor.cr#L3"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"NODES","name":"NODES","value":"[Alias, IsA, Assign, Call, Block, Case, ClassDef, ClassVar, Def, EnumDef, ExceptionHandler, Expressions, HashLiteral, If, InstanceVar, LibDef, ModuleDef, NilLiteral, StringInterpolation, Unless, Var, When, While, Until]","doc":"List of nodes to be visited by Ameba's rules.","summary":"
List of nodes to be visited by Ameba's rules.
"}],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba","kind":"module","full_name":"Ameba","name":"Ameba"},"doc":"A module that helps to traverse Crystal AST using `Crystal::Visitor`.","summary":"
A module that helps to traverse Crystal AST using Crystal::Visitor.
","class_methods":[],"constructors":[],"instance_methods":[],"macros":[],"types":[{"html_id":"ameba/Ameba/AST/Argument","path":"Ameba/AST/Argument.html","kind":"class","full_name":"Ameba::AST::Argument","name":"Argument","abstract":false,"superclass":{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},"ancestors":[{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/ast/variabling/argument.cr","line_number":15,"url":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/ast/variabling/argument.cr#L15"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/AST","kind":"module","full_name":"Ameba::AST","name":"AST"},"doc":"Represents the argument of some node.\nHolds the reference to the variable, thus to scope.\n\nFor example, all these vars are arguments:\n\n```\ndef method(a, b, c = 10, &block)\n 3.times do |i|\n end\n\n ->(x : Int32) {}\nend\n```","summary":"
Represents the argument of some node.
","class_methods":[],"constructors":[{"id":"new(node,variable)-class-method","html_id":"new(node,variable)-class-method","name":"new","doc":"Creates a new argument.\n\n```\nArgument.new(node, variable)\n```","summary":"
Creates a new argument.
","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""},{"name":"variable","doc":null,"default_value":"","external_name":"variable","restriction":""}],"args_string":"(node, variable)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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":"
","abstract":false,"args":[],"args_string":" : Crystal::Var | Crystal::Arg","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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":" : Scope","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/src/ameba/ast/visitors/base_visitor.cr#L19","def":{"name":"new","args":[{"name":"rule","doc":null,"default_value":"","external_name":"rule","restriction":""},{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"_ = allocate\n_.initialize(rule, source)\nif _.responds_to?(:finalize)\n ::GC.add_finalizer(_)\nend\n_\n"}}],"instance_methods":[{"id":"visit(node:Crystal::ASTNode)-instance-method","html_id":"visit(node:Crystal::ASTNode)-instance-method","name":"visit","doc":"A main visit method that accepts `Crystal::ASTNode`.\nReturns true meaning all child nodes will be traversed.","summary":"
A main visit method that accepts Crystal::ASTNode.
","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ASTNode"}],"args_string":"(node : Crystal::ASTNode)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/ast/visitors/base_visitor.cr#L25","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ASTNode"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"true"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/AST/Branch","path":"Ameba/AST/Branch.html","kind":"class","full_name":"Ameba::AST::Branch","name":"Branch","abstract":false,"superclass":{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},"ancestors":[{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/ast/branch.cr","line_number":15,"url":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/ast/branch.cr#L15"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/AST","kind":"module","full_name":"Ameba::AST","name":"AST"},"doc":"Represents the branch in Crystal code.\nBranch is a part of a branchable statement.\nFor example, the branchable if statement contains 3 branches:\n\n```\nif a = something # --> Branch A\n a = 1 # --> Branch B\n put a if out # --> Branch C\nelse\n do_something a # --> Branch D\nend\n```\n","summary":"
Represents the branch in Crystal code.
","class_methods":[{"id":"of(node:Crystal::ASTNode,parent_node:Crystal::ASTNode)-class-method","html_id":"of(node:Crystal::ASTNode,parent_node:Crystal::ASTNode)-class-method","name":"of","doc":"Constructs a new branch based on the node some parent scope.\n\n```\nBranch.of(assign_node, def_node)\n```","summary":"
Constructs a new branch based on the node some parent scope.
","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ASTNode"},{"name":"parent_node","doc":null,"default_value":"","external_name":"parent_node","restriction":"Crystal::ASTNode"}],"args_string":"(node : Crystal::ASTNode, parent_node : Crystal::ASTNode)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/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/bedf3a68/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/bedf3a68/src/ameba/ast/branch.cr#L33","def":{"name":"new","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""},{"name":"parent","doc":null,"default_value":"","external_name":"parent","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"_ = allocate\n_.initialize(node, parent)\nif _.responds_to?(:finalize)\n ::GC.add_finalizer(_)\nend\n_\n"}}],"instance_methods":[{"id":"==(other:self)-instance-method","html_id":"==(other:self)-instance-method","name":"==","doc":"Returns `true` if this reference is the same as *other*. Invokes `same?`.","summary":"
Returns true if this reference is the same as other.
","abstract":false,"args":[{"name":"hasher","doc":null,"default_value":"","external_name":"hasher","restriction":""}],"args_string":"(hasher)","source_link":null,"def":{"name":"hash","args":[{"name":"hasher","doc":null,"default_value":"","external_name":"hasher","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"hasher = node.hash(hasher)\nhasher = location.hash(hasher)\nhasher\n"}},{"id":"in_loop?-instance-method","html_id":"in_loop?-instance-method","name":"in_loop?","doc":"Returns true if current branch is in a loop, false - otherwise.\nFor example, this branch is in a loop:\n\n```\nwhile true\n handle_input # this branch is in a loop\n if wrong_input\n show_message # this branch is also in a loop.\n end\nend\n```\n","summary":"
Returns true if current branch is in a loop, false - otherwise.
","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/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/bedf3a68/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/bedf3a68/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":"
","abstract":false,"args":[],"args_string":" : Branchable","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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":"
","abstract":false,"args":[],"args_string":" : Branchable?","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/src/ameba/ast/visitors/node_visitor.cr#L42","def":{"name":"new","args":[{"name":"rule","doc":null,"default_value":"","external_name":"rule","restriction":""},{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"skip","doc":null,"default_value":"nil","external_name":"skip","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"_ = allocate\n_.initialize(rule, source, skip)\nif _.responds_to?(:finalize)\n ::GC.add_finalizer(_)\nend\n_\n"}}],"instance_methods":[{"id":"visit(node:Crystal::Alias)-instance-method","html_id":"visit(node:Crystal::Alias)-instance-method","name":"visit","doc":"A visit callback for `Crystal::Alias` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"
A visit callback for Crystal::Alias node.
","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Alias"}],"args_string":"(node : Crystal::Alias)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/ast/visitors/node_visitor.cr#L47","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Alias"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::Until)-instance-method","html_id":"visit(node:Crystal::Until)-instance-method","name":"visit","doc":"A visit callback for `Crystal::Until` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"
A visit callback for Crystal::Until node.
","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Until"}],"args_string":"(node : Crystal::Until)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/ast/visitors/node_visitor.cr#L47","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Until"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::While)-instance-method","html_id":"visit(node:Crystal::While)-instance-method","name":"visit","doc":"A visit callback for `Crystal::While` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"
A visit callback for Crystal::While node.
","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::While"}],"args_string":"(node : Crystal::While)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/ast/visitors/node_visitor.cr#L47","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::While"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::When)-instance-method","html_id":"visit(node:Crystal::When)-instance-method","name":"visit","doc":"A visit callback for `Crystal::When` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"
A visit callback for Crystal::When node.
","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::When"}],"args_string":"(node : Crystal::When)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/ast/visitors/node_visitor.cr#L47","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::When"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::Var)-instance-method","html_id":"visit(node:Crystal::Var)-instance-method","name":"visit","doc":"A visit callback for `Crystal::Var` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"
A visit callback for Crystal::Var node.
","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Var"}],"args_string":"(node : Crystal::Var)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/ast/visitors/node_visitor.cr#L47","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Var"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::Unless)-instance-method","html_id":"visit(node:Crystal::Unless)-instance-method","name":"visit","doc":"A visit callback for `Crystal::Unless` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"
A visit callback for Crystal::Unless node.
","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Unless"}],"args_string":"(node : Crystal::Unless)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/ast/visitors/node_visitor.cr#L47","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Unless"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::StringInterpolation)-instance-method","html_id":"visit(node:Crystal::StringInterpolation)-instance-method","name":"visit","doc":"A visit callback for `Crystal::StringInterpolation` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"
A visit callback for Crystal::StringInterpolation node.
","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::StringInterpolation"}],"args_string":"(node : Crystal::StringInterpolation)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/ast/visitors/node_visitor.cr#L47","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::StringInterpolation"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::NilLiteral)-instance-method","html_id":"visit(node:Crystal::NilLiteral)-instance-method","name":"visit","doc":"A visit callback for `Crystal::NilLiteral` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"
A visit callback for Crystal::NilLiteral node.
","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::NilLiteral"}],"args_string":"(node : Crystal::NilLiteral)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/ast/visitors/node_visitor.cr#L47","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::NilLiteral"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::ModuleDef)-instance-method","html_id":"visit(node:Crystal::ModuleDef)-instance-method","name":"visit","doc":"A visit callback for `Crystal::ModuleDef` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"
A visit callback for Crystal::ModuleDef node.
","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ModuleDef"}],"args_string":"(node : Crystal::ModuleDef)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/ast/visitors/node_visitor.cr#L47","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ModuleDef"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::LibDef)-instance-method","html_id":"visit(node:Crystal::LibDef)-instance-method","name":"visit","doc":"A visit callback for `Crystal::LibDef` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"
A visit callback for Crystal::LibDef node.
","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::LibDef"}],"args_string":"(node : Crystal::LibDef)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/ast/visitors/node_visitor.cr#L47","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::LibDef"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::InstanceVar)-instance-method","html_id":"visit(node:Crystal::InstanceVar)-instance-method","name":"visit","doc":"A visit callback for `Crystal::InstanceVar` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"
A visit callback for Crystal::InstanceVar node.
","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::InstanceVar"}],"args_string":"(node : Crystal::InstanceVar)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/ast/visitors/node_visitor.cr#L47","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::InstanceVar"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::If)-instance-method","html_id":"visit(node:Crystal::If)-instance-method","name":"visit","doc":"A visit callback for `Crystal::If` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"
A visit callback for Crystal::If node.
","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::If"}],"args_string":"(node : Crystal::If)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/ast/visitors/node_visitor.cr#L47","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::If"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::HashLiteral)-instance-method","html_id":"visit(node:Crystal::HashLiteral)-instance-method","name":"visit","doc":"A visit callback for `Crystal::HashLiteral` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"
A visit callback for Crystal::HashLiteral node.
","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::HashLiteral"}],"args_string":"(node : Crystal::HashLiteral)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/ast/visitors/node_visitor.cr#L47","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::HashLiteral"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::Expressions)-instance-method","html_id":"visit(node:Crystal::Expressions)-instance-method","name":"visit","doc":"A visit callback for `Crystal::Expressions` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"
A visit callback for Crystal::Expressions node.
","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Expressions"}],"args_string":"(node : Crystal::Expressions)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/ast/visitors/node_visitor.cr#L47","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Expressions"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::ExceptionHandler)-instance-method","html_id":"visit(node:Crystal::ExceptionHandler)-instance-method","name":"visit","doc":"A visit callback for `Crystal::ExceptionHandler` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"
A visit callback for Crystal::ExceptionHandler node.
","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ExceptionHandler"}],"args_string":"(node : Crystal::ExceptionHandler)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/ast/visitors/node_visitor.cr#L47","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ExceptionHandler"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::EnumDef)-instance-method","html_id":"visit(node:Crystal::EnumDef)-instance-method","name":"visit","doc":"A visit callback for `Crystal::EnumDef` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"
A visit callback for Crystal::EnumDef node.
","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::EnumDef"}],"args_string":"(node : Crystal::EnumDef)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/ast/visitors/node_visitor.cr#L47","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::EnumDef"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::Def)-instance-method","html_id":"visit(node:Crystal::Def)-instance-method","name":"visit","doc":"A visit callback for `Crystal::Def` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"
A visit callback for Crystal::Def node.
","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Def"}],"args_string":"(node : Crystal::Def)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/ast/visitors/node_visitor.cr#L47","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Def"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::ClassVar)-instance-method","html_id":"visit(node:Crystal::ClassVar)-instance-method","name":"visit","doc":"A visit callback for `Crystal::ClassVar` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"
A visit callback for Crystal::ClassVar node.
","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ClassVar"}],"args_string":"(node : Crystal::ClassVar)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/ast/visitors/node_visitor.cr#L47","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ClassVar"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::ClassDef)-instance-method","html_id":"visit(node:Crystal::ClassDef)-instance-method","name":"visit","doc":"A visit callback for `Crystal::ClassDef` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"
A visit callback for Crystal::ClassDef node.
","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ClassDef"}],"args_string":"(node : Crystal::ClassDef)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/ast/visitors/node_visitor.cr#L47","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::ClassDef"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::Case)-instance-method","html_id":"visit(node:Crystal::Case)-instance-method","name":"visit","doc":"A visit callback for `Crystal::Case` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"
A visit callback for Crystal::Case node.
","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Case"}],"args_string":"(node : Crystal::Case)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/ast/visitors/node_visitor.cr#L47","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Case"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::Block)-instance-method","html_id":"visit(node:Crystal::Block)-instance-method","name":"visit","doc":"A visit callback for `Crystal::Block` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"
A visit callback for Crystal::Block node.
","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Block"}],"args_string":"(node : Crystal::Block)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/ast/visitors/node_visitor.cr#L47","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Block"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::Call)-instance-method","html_id":"visit(node:Crystal::Call)-instance-method","name":"visit","doc":"A visit callback for `Crystal::Call` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"
A visit callback for Crystal::Call node.
","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Call"}],"args_string":"(node : Crystal::Call)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/ast/visitors/node_visitor.cr#L47","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Call"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::Assign)-instance-method","html_id":"visit(node:Crystal::Assign)-instance-method","name":"visit","doc":"A visit callback for `Crystal::Assign` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"
A visit callback for Crystal::Assign node.
","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Assign"}],"args_string":"(node : Crystal::Assign)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/ast/visitors/node_visitor.cr#L47","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Assign"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node:Crystal::IsA)-instance-method","html_id":"visit(node:Crystal::IsA)-instance-method","name":"visit","doc":"A visit callback for `Crystal::IsA` node.\nReturns true meaning that child nodes will be traversed as well.","summary":"
A visit callback for Crystal::IsA node.
","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::IsA"}],"args_string":"(node : Crystal::IsA)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/ast/visitors/node_visitor.cr#L47","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::IsA"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@rule.test(@source, node)\ntrue\n"}},{"id":"visit(node)-instance-method","html_id":"visit(node)-instance-method","name":"visit","doc":null,"summary":null,"abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"args_string":"(node)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/ast/visitors/node_visitor.cr#L56","def":{"name":"visit","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (skip = @skip)\nelse\n return true\nend\n!(skip.includes?(node.class))\n"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/AST/RedundantControlExpressionVisitor","path":"Ameba/AST/RedundantControlExpressionVisitor.html","kind":"class","full_name":"Ameba::AST::RedundantControlExpressionVisitor","name":"RedundantControlExpressionVisitor","abstract":false,"superclass":{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},"ancestors":[{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/ast/visitors/redundant_control_expression_visitor.cr","line_number":5,"url":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/ast/visitors/redundant_control_expression_visitor.cr#L5"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/AST","kind":"module","full_name":"Ameba::AST","name":"AST"},"doc":"A class that utilizes a logic to traverse AST nodes and\nfire a source test callback if a redundant `Crystal::ControlExpression`\nis reached.","summary":"
A class that utilizes a logic to traverse AST nodes and fire a source test callback if a redundant Crystal::ControlExpression is reached.
","class_methods":[],"constructors":[{"id":"new(rule,source,node)-class-method","html_id":"new(rule,source,node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"rule","doc":null,"default_value":"","external_name":"rule","restriction":""},{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"args_string":"(rule, source, node)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/ast/visitors/redundant_control_expression_visitor.cr#L15","def":{"name":"new","args":[{"name":"rule","doc":null,"default_value":"","external_name":"rule","restriction":""},{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"_ = allocate\n_.initialize(rule, source, node)\nif _.responds_to?(:finalize)\n ::GC.add_finalizer(_)\nend\n_\n"}}],"instance_methods":[{"id":"node:Crystal::ASTNode-instance-method","html_id":"node:Crystal::ASTNode-instance-method","name":"node","doc":"A node to run traversal on.","summary":"
A node to run traversal on.
","abstract":false,"args":[],"args_string":" : Crystal::ASTNode","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/src/ameba/ast/scope.cr#L39","def":{"name":"new","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""},{"name":"outer_scope","doc":null,"default_value":"nil","external_name":"outer_scope","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"_ = allocate\n_.initialize(node, outer_scope)\nif _.responds_to?(:finalize)\n ::GC.add_finalizer(_)\nend\n_\n"}}],"instance_methods":[{"id":"==(other:self)-instance-method","html_id":"==(other:self)-instance-method","name":"==","doc":"Returns `true` if this reference is the same as *other*. Invokes `same?`.","summary":"
Returns true if this reference is the same as other.
","abstract":false,"args":[{"name":"other","doc":null,"default_value":"","external_name":"other","restriction":"self"}],"args_string":"(other : self)","source_link":null,"def":{"name":"==","args":[{"name":"other","doc":null,"default_value":"","external_name":"other","restriction":"self"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if node == other.node\nelse\n return false\nend\nif location == other.location\nelse\n return false\nend\ntrue\n"}},{"id":"add_argument(node)-instance-method","html_id":"add_argument(node)-instance-method","name":"add_argument","doc":"Creates a new argument in the current scope.\n\n```\nscope = Scope.new(class_node, nil)\nscope.add_argument(arg_node)\n```","summary":"
Creates a new argument in the current scope.
","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"args_string":"(node)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/src/ameba/ast/scope.cr#L30","def":{"name":"end_location","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":1,"block_arg":null,"return_type":"","visibility":"Public","body":"node.end_location(*args, **options) do |*yield_args|\n yield *yield_args\nend"}},{"id":"eql?(node)-instance-method","html_id":"eql?(node)-instance-method","name":"eql?","doc":"Returns true if the `node` represents exactly\nthe same Crystal node as `@node`.","summary":"
Returns true if the #node represents exactly the same Crystal node as @node.
","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"args_string":"(node)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/ast/scope.cr#L174","def":{"name":"eql?","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"((node == @node) && (!node.location.nil?)) && (node.location == @node.location)"}},{"id":"find_variable(name:String)-instance-method","html_id":"find_variable(name:String)-instance-method","name":"find_variable","doc":"Returns variable by its name or nil if it does not exist.\n\n```\nscope = Scope.new(class_node, nil)\nscope.find_variable(\"foo\")\n```","summary":"
Returns variable by its name or nil if it does not exist.
","abstract":false,"args":[{"name":"hasher","doc":null,"default_value":"","external_name":"hasher","restriction":""}],"args_string":"(hasher)","source_link":null,"def":{"name":"hash","args":[{"name":"hasher","doc":null,"default_value":"","external_name":"hasher","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"hasher = node.hash(hasher)\nhasher = location.hash(hasher)\nhasher\n"}},{"id":"in_macro?-instance-method","html_id":"in_macro?-instance-method","name":"in_macro?","doc":"Returns true if current scope sits inside a macro.","summary":"
Returns true if current scope sits inside a macro.
","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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.
","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/bedf3a68/src/ameba/ast/util.cr#L135","def":{"name":"exit?","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"((node.is_a?(Crystal::Call) && (node.name == \"exit\")) && node.args.size <= 1) && node.obj.nil?"}},{"id":"flow_command?(node,in_loop)-instance-method","html_id":"flow_command?(node,in_loop)-instance-method","name":"flow_command?","doc":"Returns true if node is a flow command, false - otherwise.\nNode represents a flow command if it is a control expression,\nor special call node that interrupts execution (i.e. raise, exit, abort).","summary":"
Returns true if node is a flow command, false - otherwise.
","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""},{"name":"in_loop","doc":null,"default_value":"","external_name":"in_loop","restriction":""}],"args_string":"(node, in_loop)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/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.
Returns true if current node is a literal, false otherwise.
","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"args_string":"(node)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/ast/util.cr#L4","def":{"name":"literal?","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"case node\nwhen Crystal::NilLiteral, Crystal::BoolLiteral, Crystal::NumberLiteral, Crystal::CharLiteral, Crystal::StringLiteral, Crystal::SymbolLiteral, Crystal::RegexLiteral, Crystal::ProcLiteral, Crystal::MacroLiteral\n true\nwhen Crystal::RangeLiteral\n (literal?(node.from)) && (literal?(node.to))\nwhen Crystal::ArrayLiteral, Crystal::TupleLiteral\n node.elements.all? do |el|\n literal?(el)\n end\nwhen Crystal::HashLiteral\n node.entries.all? do |entry|\n (literal?(entry.key)) && (literal?(entry.value))\n end\nwhen Crystal::NamedTupleLiteral\n node.entries.all? do |entry|\n literal?(entry.value)\n end\nelse\n false\nend"}},{"id":"loop?(node)-instance-method","html_id":"loop?(node)-instance-method","name":"loop?","doc":"Returns true if node represents a loop.","summary":"
Returns true if node represents a loop.
","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"args_string":"(node)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/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 true if node represents raise method call.
","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"args_string":"(node)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/ast/util.cr#L129","def":{"name":"raise?","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"((node.is_a?(Crystal::Call) && (node.name == \"raise\")) && (node.args.size == 1)) && node.obj.nil?"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/AST/Variable","path":"Ameba/AST/Variable.html","kind":"class","full_name":"Ameba::AST::Variable","name":"Variable","abstract":false,"superclass":{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},"ancestors":[{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/ast/variabling/variable.cr","line_number":4,"url":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/ast/variabling/variable.cr#L4"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[{"html_id":"ameba/Ameba/AST/Reference","kind":"class","full_name":"Ameba::AST::Reference","name":"Reference"}],"including_types":[],"namespace":{"html_id":"ameba/Ameba/AST","kind":"module","full_name":"Ameba::AST","name":"AST"},"doc":"Represents the existence of the local variable.\nHolds the var node and variable assigments.","summary":"
Represents the existence of the local variable.
","class_methods":[],"constructors":[{"id":"new(node,scope)-class-method","html_id":"new(node,scope)-class-method","name":"new","doc":"Creates a new variable(in the scope).\n\n```\nVariable.new(node, scope)\n```\n","summary":"
Creates a new variable(in the scope).
","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""},{"name":"scope","doc":null,"default_value":"","external_name":"scope","restriction":""}],"args_string":"(node, scope)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/src/ameba/ast/variabling/variable.cr#L114","def":{"name":"captured_by_block?","args":[{"name":"scope","doc":null,"default_value":"@scope","external_name":"scope","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"scope.inner_scopes.each do |inner_scope|\n if inner_scope.block? && (inner_scope.references?(self))\n return true\n end\n if captured_by_block?(inner_scope)\n return true\n end\nend\nfalse\n"}},{"id":"declared_before?(node)-instance-method","html_id":"declared_before?(node)-instance-method","name":"declared_before?","doc":"Returns true if the variable is delcared before the `node`.","summary":"
Returns true if the variable is delcared before the #node.
","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"args_string":"(node)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/ast/variabling/variable.cr#L160","def":{"name":"declared_before?","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"var_location, node_location = location, node.location\nif var_location.nil? || node_location.nil?\n return\nend\n(var_location.line_number < node_location.line_number) || ((var_location.line_number == node_location.line_number) && var_location.column_number < node_location.column_number)\n"}},{"id":"end_location(*args,**options)-instance-method","html_id":"end_location(*args,**options)-instance-method","name":"end_location","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/ast/variabling/variable.cr#L21","def":{"name":"end_location","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.end_location(*args, **options)"}},{"id":"end_location(*args,**options,&)-instance-method","html_id":"end_location(*args,**options,&)-instance-method","name":"end_location","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options, &)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/ast/variabling/variable.cr#L21","def":{"name":"end_location","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":1,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.end_location(*args, **options) do |*yield_args|\n yield *yield_args\nend"}},{"id":"eql?(node)-instance-method","html_id":"eql?(node)-instance-method","name":"eql?","doc":"Returns true if the `node` represents exactly\nthe same Crystal node as `@node`.","summary":"
Returns true if the #node represents exactly the same Crystal node as @node.
","abstract":false,"args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"args_string":"(node)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/ast/variabling/variable.cr#L153","def":{"name":"eql?","args":[{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"(node.is_a?(Crystal::Var) && (node.name == @node.name)) && (node.location == @node.location)"}},{"id":"ignored?-instance-method","html_id":"ignored?-instance-method","name":"ignored?","doc":"Returns true if the name starts with '_', false if not.","summary":"
Returns true if the name starts with '_', false if not.
","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/ast/variabling/variable.cr#L147","def":{"name":"ignored?","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"name.starts_with?('_')"}},{"id":"location(*args,**options)-instance-method","html_id":"location(*args,**options)-instance-method","name":"location","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/src/ameba/ast/variabling/variable.cr#L15","def":{"name":"scope","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Scope","visibility":"Public","body":"@scope"}},{"id":"special?-instance-method","html_id":"special?-instance-method","name":"special?","doc":"Returns true if it is a special variable, i.e `$?`.","summary":"
Returns true if it is a special variable, i.e $?.
","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/ast/variabling/variable.cr#L35","def":{"name":"special?","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.special_var?"}},{"id":"target_of?(assign)-instance-method","html_id":"target_of?(assign)-instance-method","name":"target_of?","doc":"Returns true if the variable is a target (on the left) of the assignment,\nfalse otherwise.","summary":"
Returns true if the variable is a target (on the left) of the assignment, false otherwise.
","abstract":false,"args":[{"name":"assign","doc":null,"default_value":"","external_name":"assign","restriction":""}],"args_string":"(assign)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/ast/variabling/variable.cr#L135","def":{"name":"target_of?","args":[{"name":"assign","doc":null,"default_value":"","external_name":"assign","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"case assign\nwhen Crystal::Assign\n eql?(assign.target)\nwhen Crystal::OpAssign\n eql?(assign.target)\nwhen Crystal::MultiAssign\n assign.targets.any? do |t|\n eql?(t)\n end\nwhen Crystal::UninitializedVar\n eql?(assign.var)\nelse\n false\nend"}},{"id":"to_s(*args,**options)-instance-method","html_id":"to_s(*args,**options)-instance-method","name":"to_s","doc":null,"summary":null,"abstract":false,"args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"args_string":"(*args, **options)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/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/bedf3a68/src/ameba/ast/variabling/variable.cr#L23","def":{"name":"to_s","args":[{"name":"args","doc":null,"default_value":"","external_name":"args","restriction":""}],"double_splat":{"name":"options","doc":null,"default_value":"","external_name":"options","restriction":""},"splat_index":0,"yields":1,"block_arg":null,"return_type":"","visibility":"Public","body":"@node.to_s(*args, **options) do |*yield_args|\n yield *yield_args\nend"}},{"id":"used_in_macro?(scope=@scope)-instance-method","html_id":"used_in_macro?(scope=@scope)-instance-method","name":"used_in_macro?","doc":"Returns true if current variable potentially referenced in a macro literal,\nfalse if not.","summary":"
Returns true if current variable potentially referenced in a macro literal, false if not.
","abstract":false,"args":[{"name":"scope","doc":null,"default_value":"@scope","external_name":"scope","restriction":""}],"args_string":"(scope = @scope)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/ast/variabling/variable.cr#L125","def":{"name":"used_in_macro?","args":[{"name":"scope","doc":null,"default_value":"@scope","external_name":"scope","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"scope.inner_scopes.each do |inner_scope|\n if (MacroLiteralFinder.new(inner_scope.node)).references?(node)\n return true\n end\nend\nif (outer_scope = scope.outer_scope) && (used_in_macro?(outer_scope))\n return true\nend\nfalse\n"}}],"macros":[],"types":[]}]},{"html_id":"ameba/Ameba/Config","path":"Ameba/Config.html","kind":"class","full_name":"Ameba::Config","name":"Config","abstract":false,"superclass":{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},"ancestors":[{"html_id":"ameba/Ameba/GlobUtils","kind":"module","full_name":"Ameba::GlobUtils","name":"GlobUtils"},{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/config.cr","line_number":15,"url":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/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":"
","class_methods":[{"id":"formatter_names-class-method","html_id":"formatter_names-class-method","name":"formatter_names","doc":null,"summary":null,"abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/config.cr#L86","def":{"name":"formatter_names","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"AVAILABLE_FORMATTERS.keys.join(\"|\")"}},{"id":"load(path=PATH,colors=true)-class-method","html_id":"load(path=PATH,colors=true)-class-method","name":"load","doc":"Loads YAML configuration file by `path`.\n\n```\nconfig = Ameba::Config.load\n```\n","summary":"
Loads YAML configuration file by path.
","abstract":false,"args":[{"name":"path","doc":null,"default_value":"PATH","external_name":"path","restriction":""},{"name":"colors","doc":null,"default_value":"true","external_name":"colors","restriction":""}],"args_string":"(path = PATH, colors = true)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/config.cr#L78","def":{"name":"load","args":[{"name":"path","doc":null,"default_value":"PATH","external_name":"path","restriction":""},{"name":"colors","doc":null,"default_value":"true","external_name":"colors","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"begin\n Colorize.enabled = colors\n content = File.exists?(path) ? File.read(path) : \"{}\"\n Config.new(YAML.parse(content))\nrescue e\n raise(\"Config file is invalid: #{e.message}\")\nend"}}],"constructors":[],"instance_methods":[{"id":"excluded:Array(String)-instance-method","html_id":"excluded:Array(String)-instance-method","name":"excluded","doc":"Represents a list of paths to exclude from globs.\nCan have wildcards.\n\n```\nconfig = Ameba::Config.load\nconfig.excluded = [\"spec\", \"src/server/*.cr\"]\n```","summary":"
Represents a list of paths to exclude from globs.
","abstract":false,"args":[],"args_string":" : Array(String)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/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/bedf3a68/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":[{"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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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":[{"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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/src/ameba/formatter/todo_formatter.cr#L1"},{"filename":"src/ameba/formatter/util.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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.
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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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":"
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/bedf3a68/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/bedf3a68/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/bedf3a68/src/ameba/inline_comments.cr#L3"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"COMMENT_DIRECTIVE_REGEX","name":"COMMENT_DIRECTIVE_REGEX","value":"/# ameba:(?\\w+) (?\\w+(?:\\/\\w+)?(?:,? \\w+(?:\\/\\w+)?)*)/","doc":null,"summary":null}],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[{"html_id":"ameba/Ameba/Source","kind":"class","full_name":"Ameba::Source","name":"Source"}],"namespace":{"html_id":"ameba/Ameba","kind":"module","full_name":"Ameba","name":"Ameba"},"doc":"A module that utilizes inline comments parsing and processing logic.","summary":"
A module that utilizes inline comments parsing and processing logic.
","class_methods":[],"constructors":[],"instance_methods":[{"id":"comment?(line_number:Int32)-instance-method","html_id":"comment?(line_number:Int32)-instance-method","name":"comment?","doc":"Returns true if the line at the given `line_number` is a comment.","summary":"
Returns true if the line at the given line_number is a comment.
","abstract":false,"args":[{"name":"line_number","doc":null,"default_value":"","external_name":"line_number","restriction":"Int32"}],"args_string":"(line_number : Int32)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/inline_comments.cr#L80","def":{"name":"comment?","args":[{"name":"line_number","doc":null,"default_value":"","external_name":"line_number","restriction":"Int32"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if line = lines[line_number]?\n comment?(line)\nend"}},{"id":"location_disabled?(location,rule)-instance-method","html_id":"location_disabled?(location,rule)-instance-method","name":"location_disabled?","doc":"Returns true if current location is disabled for a particular rule,\nfalse otherwise.\n\nLocation is disabled in two cases:\n 1. The line of the location ends with a comment directive.\n 2. The line above the location is a comment directive.\n\nFor example, here are two examples of disabled location:\n\n```\n# ameba:disable Style/LargeNumbers\nTime.epoch(1483859302)\n\nTime.epoch(1483859302) # ameba:disable Style/LargeNumbers\n```\n\nBut here are examples which are not considered as disabled location:\n\n```\n# ameba:disable Style/LargeNumbers\n#\nTime.epoch(1483859302)\n\nif use_epoch? # ameba:disable Style/LargeNumbers\n Time.epoch(1483859302)\nend\n```\n","summary":"
Returns true if current location is disabled for a particular rule, false otherwise.
","abstract":false,"args":[{"name":"location","doc":null,"default_value":"","external_name":"location","restriction":""},{"name":"rule","doc":null,"default_value":"","external_name":"rule","restriction":""}],"args_string":"(location, rule)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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":"
","class_methods":[],"constructors":[],"instance_methods":[{"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/bedf3a68/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,end_location,message,status=nil)-instance-method","html_id":"add_issue(rule,location,end_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":""},{"name":"end_location","doc":null,"default_value":"","external_name":"end_location","restriction":""},{"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, end_location, message, status = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/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":""},{"name":"end_location","doc":null,"default_value":"","external_name":"end_location","restriction":""},{"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),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/bedf3a68/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/bedf3a68/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":"
","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/src/ameba/rule/base.cr#L30","def":{"name":"new","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"x = allocate\nif x.responds_to?(:finalize)\n ::GC.add_finalizer(x)\nend\nx\n"}}],"instance_methods":[{"id":"==(other)-instance-method","html_id":"==(other)-instance-method","name":"==","doc":"Returns `true` if this struct is equal to *other*.\n\nBoth structs's instance vars are compared to each other. Thus, two\nstructs are considered equal if each of their instance variables are\nequal. Subclasses should override this method to provide specific\nequality semantics.\n\n```\nstruct Point\n def initialize(@x : Int32, @y : Int32)\n end\nend\n\np1 = Point.new 1, 2\np2 = Point.new 1, 2\np3 = Point.new 3, 4\n\np1 == p2 # => true\np1 == p3 # => false\n```","summary":"
Returns true if this struct is equal to other.
","abstract":false,"args":[{"name":"other","doc":null,"default_value":"","external_name":"other","restriction":""}],"args_string":"(other)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/rule/base.cr#L113","def":{"name":"==","args":[{"name":"other","doc":null,"default_value":"","external_name":"other","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"name == other.try(&.name)"}},{"id":"catch(source:Source)-instance-method","html_id":"catch(source:Source)-instance-method","name":"catch","doc":"A convenient addition to `#test` method that does the same\nbut returns a passed in `source` as an addition.\n\n```\nsource = MyRule.new.catch(source)\nsource.valid?\n```\n","summary":"
A convenient addition to #test method that does the same but returns a passed in source as an addition.
","abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":"Source"}],"args_string":"(source : Source)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/rule/base.cr#L54","def":{"name":"catch","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":"Source"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"source.tap do |s|\n test(s)\nend"}},{"id":"excluded?(source)-instance-method","html_id":"excluded?(source)-instance-method","name":"excluded?","doc":"Checks whether the source is excluded from this rule.\nIt searches for a path in `excluded` property which matches\nthe one of the given source.\n\n```\nmy_rule.excluded?(source) # => true or false\n```\n","summary":"
Checks whether the source is excluded from this rule.
","abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"args_string":"(source)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/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/bedf3a68/src/ameba/rule/base.cr#L83","def":{"name":"group","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"({{ @type }}).group_name"}},{"id":"hash-instance-method","html_id":"hash-instance-method","name":"hash","doc":"Generates an `UInt64` hash value for this object.\n\nThis method must have the property that `a == b` implies `a.hash == b.hash`.\n\nThe hash value is used along with `==` by the `Hash` class to determine if two objects\nreference the same hash key.\n\nSubclasses must not override this method. Instead, they must define `hash(hasher)`,\nthough usually the macro `def_hash` can be used to generate this method.","summary":"
Generates an UInt64 hash value for this object.
","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/rule/base.cr#L117","def":{"name":"hash","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"name.hash"}},{"id":"name-instance-method","html_id":"name-instance-method","name":"name","doc":"Returns a name of this rule, which is basically a class name.\n\n```\nstruct MyRule < Ameba::Rule::Base\n def test(source)\n end\nend\n\nMyRule.new.name # => \"MyRule\"\n```\n","summary":"
Returns a name of this rule, which is basically a class name.
","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/src/ameba/rule/layout/line_length.cr#L12"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Line too long\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Layout","kind":"module","full_name":"Ameba::Rule::Layout","name":"Layout"},"doc":"A rule that disallows lines longer than `max_length` number of symbols.\n\nYAML configuration example:\n\n```\nLayout/LineLength:\n Enabled: true\n MaxLength: 100\n```\n","summary":"
A rule that disallows lines longer than #max_length number of symbols.
","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows lines longer than `max_length` number of symbols.\n\nYAML configuration example:\n\n```\nLayout/LineLength:\n Enabled: true\n MaxLength: 100\n```\n","summary":"
A rule that disallows lines longer than #max_length number of symbols.
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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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":"
","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_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/bedf3a68/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/bedf3a68/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/bedf3a68/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":"
","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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.
","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows `rand(0)` and `rand(1)` calls.\nSuch calls always return `0`.\n\nFor example:\n\n```\nrand(1)\n```\n\nShould be written as:\n\n```\nrand\n# or\nrand(2)\n```\n\nYAML configuration example:\n\n```\nLint/RandZero:\n Enabled: true\n```\n","summary":"
A rule that disallows rand(0) and rand(1) calls.
","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/rule/lint/rand_zero.cr#L26","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node:Crystal::Call)-instance-method","html_id":"test(source,node:Crystal::Call)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Call"}],"args_string":"(source, node : Crystal::Call)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/rule/lint/rand_zero.cr#L33","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Call"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (((((node.name == \"rand\") && (node.args.size == 1)) && (arg = node.args.first)) && (arg.is_a?(Crystal::NumberLiteral))) && (value = arg.value)) && ((value == \"0\") || (value == \"1\"))\nelse\n return\nend\nissue_for(node, MSG % node)\n"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Lint/RedundantStringCoercion","path":"Ameba/Rule/Lint/RedundantStringCoercion.html","kind":"struct","full_name":"Ameba::Rule::Lint::RedundantStringCoercion","name":"RedundantStringCoercion","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/Ameba/AST/Util","kind":"module","full_name":"Ameba::AST::Util","name":"Util"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/lint/redundant_string_coercion.cr","line_number":24,"url":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/rule/lint/redundant_string_coercion.cr#L24"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Redundant use of `Object#to_s` in interpolation\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/Ameba/AST/Util","kind":"module","full_name":"Ameba::AST::Util","name":"Util"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Lint","kind":"module","full_name":"Ameba::Rule::Lint","name":"Lint"},"doc":"A rule that disallows string conversion in string interpolation,\nwhich is redundant.\n\nFor example, this is considered invalid:\n\n```\n\"Hello, #{name.to_s}\"\n```\n\nAnd this is valid:\n\n```\n\"Hello, #{name}\"\n```\n\nYAML configuration example:\n\n```\nLint/RedundantStringCoersion\n Enabled: true\n```\n","summary":"
A rule that disallows string conversion in string interpolation, which is redundant.
","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows string conversion in string interpolation,\nwhich is redundant.\n\nFor example, this is considered invalid:\n\n```\n\"Hello, #{name.to_s}\"\n```\n\nAnd this is valid:\n\n```\n\"Hello, #{name}\"\n```\n\nYAML configuration example:\n\n```\nLint/RedundantStringCoersion\n Enabled: true\n```\n","summary":"
A rule that disallows string conversion in string interpolation, which is redundant.
","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/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/bedf3a68/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/bedf3a68/src/ameba/rule/lint/redundant_with_index.cr#L30"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Lint","kind":"module","full_name":"Ameba::Rule::Lint","name":"Lint"},"doc":"A rule that disallows redundant `with_index` calls.\n\nFor example, this is considered invalid:\n```\ncollection.each.with_index do |e|\n # ...\nend\n\ncollection.each_with_index do |e, _|\n # ...\nend\n```\n\nand it should be written as follows:\n\n```\ncollection.each do |e|\n # ...\nend\n```\n\nYAML configuration example:\n\n```\nLint/RedundantWithIndex:\n Enabled: true\n```\n","summary":"
A rule that disallows redundant with_index calls.
","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows redundant `with_index` calls.\n\nFor example, this is considered invalid:\n```\ncollection.each.with_index do |e|\n # ...\nend\n\ncollection.each_with_index do |e, _|\n # ...\nend\n```\n\nand it should be written as follows:\n\n```\ncollection.each do |e|\n # ...\nend\n```\n\nYAML configuration example:\n\n```\nLint/RedundantWithIndex:\n Enabled: true\n```\n","summary":"
A rule that disallows redundant with_index calls.
","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/rule/lint/redundant_with_index.cr#L30","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node:Crystal::Call)-instance-method","html_id":"test(source,node:Crystal::Call)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Call"}],"args_string":"(source, node : Crystal::Call)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/rule/lint/redundant_with_index.cr#L35","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Call"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"args, block = node.args, node.block\nif (args.size > 1 || block.nil?) || (with_index_arg?(block.not_nil!))\n return\nend\ncase node.name\nwhen \"with_index\"\n report(source, node, \"Remove redundant with_index\")\nwhen \"each_with_index\"\n report(source, node, \"Use each instead of each_with_index\")\nelse\nend\n"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Lint/RedundantWithObject","path":"Ameba/Rule/Lint/RedundantWithObject.html","kind":"struct","full_name":"Ameba::Rule::Lint::RedundantWithObject","name":"RedundantWithObject","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/lint/redundant_with_object.cr","line_number":31,"url":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/rule/lint/redundant_with_object.cr#L31"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Lint","kind":"module","full_name":"Ameba::Rule::Lint","name":"Lint"},"doc":"A rule that disallows redundant `each_with_object` calls.\n\nFor example, this is considered invalid:\n\n```\ncollection.each_with_object(0) do |e|\n # ...\nend\n\ncollection.each_with_object(0) do |e, _|\n # ...\nend\n```\n\nand it should be written as follows:\n\n```\ncollection.each do |e|\n # ...\nend\n```\n\nYAML configuration example:\n\n```\nLint/RedundantWithObject:\n Enabled: true\n```\n","summary":"
A rule that disallows redundant each_with_object calls.
","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows redundant `each_with_object` calls.\n\nFor example, this is considered invalid:\n\n```\ncollection.each_with_object(0) do |e|\n # ...\nend\n\ncollection.each_with_object(0) do |e, _|\n # ...\nend\n```\n\nand it should be written as follows:\n\n```\ncollection.each do |e|\n # ...\nend\n```\n\nYAML configuration example:\n\n```\nLint/RedundantWithObject:\n Enabled: true\n```\n","summary":"
A rule that disallows redundant each_with_object calls.
","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/rule/lint/redundant_with_object.cr#L31","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node:Crystal::Call)-instance-method","html_id":"test(source,node:Crystal::Call)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Call"}],"args_string":"(source, node : Crystal::Call)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/rule/lint/redundant_with_object.cr#L36","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Call"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (((node.name != \"each_with_object\") || (node.args.size != 1)) || node.block.nil?) || (with_index_arg?(node.block.not_nil!))\n return\nend\nissue_for(node.name_location, node.name_end_location, \"Use each instead of each_with_object\")\n"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Lint/ShadowedArgument","path":"Ameba/Rule/Lint/ShadowedArgument.html","kind":"struct","full_name":"Ameba::Rule::Lint::ShadowedArgument","name":"ShadowedArgument","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/lint/shadowed_argument.cr","line_number":39,"url":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/rule/lint/shadowed_argument.cr#L39"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Argument `%s` is assigned before it is used\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Lint","kind":"module","full_name":"Ameba::Rule::Lint","name":"Lint"},"doc":"A rule that disallows shadowed arguments.\n\nFor example, this is considered invalid:\n\n```\ndo_something do |foo|\n foo = 1 # shadows block argument\n foo\nend\n\ndef do_something(foo)\n foo = 1 # shadows method argument\n foo\nend\n```\n\nand it should be written as follows:\n\n```\ndo_something do |foo|\n foo = foo + 42\n foo\nend\n\ndef do_something(foo)\n foo = foo + 42\n foo\nend\n```\n\nYAML configuration example:\n\n```\nLint/ShadowedArgument:\n Enabled: true\n```\n","summary":"
A rule that disallows shadowed arguments.
","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows shadowed arguments.\n\nFor example, this is considered invalid:\n\n```\ndo_something do |foo|\n foo = 1 # shadows block argument\n foo\nend\n\ndef do_something(foo)\n foo = 1 # shadows method argument\n foo\nend\n```\n\nand it should be written as follows:\n\n```\ndo_something do |foo|\n foo = foo + 42\n foo\nend\n\ndef do_something(foo)\n foo = foo + 42\n foo\nend\n```\n\nYAML configuration example:\n\n```\nLint/ShadowedArgument:\n Enabled: true\n```\n","summary":"
A rule that disallows shadowed arguments.
","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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.
A rule that disallows methods with a cyclomatic complexity higher than MaxComplexity
","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows methods with a cyclomatic complexity higher than `MaxComplexity`\n\nYAML configuration example:\n\n```\nMetrics/CyclomaticComplexity:\n Enabled: true\n MaxComplexity: 10\n```\n","summary":"
A rule that disallows methods with a cyclomatic complexity higher than MaxComplexity
","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/rule/metrics/cyclomatic_complexity.cr#L12","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"max_complexity:Int32-instance-method","html_id":"max_complexity:Int32-instance-method","name":"max_complexity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Int32","source_link":null,"def":{"name":"max_complexity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Int32","visibility":"Public","body":"@max_complexity"}},{"id":"max_complexity=(max_complexity:Int32)-instance-method","html_id":"max_complexity=(max_complexity:Int32)-instance-method","name":"max_complexity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"max_complexity","doc":null,"default_value":"","external_name":"max_complexity","restriction":"Int32"}],"args_string":"(max_complexity : Int32)","source_link":null,"def":{"name":"max_complexity=","args":[{"name":"max_complexity","doc":null,"default_value":"","external_name":"max_complexity","restriction":"Int32"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@max_complexity = max_complexity"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node:Crystal::Def)-instance-method","html_id":"test(source,node:Crystal::Def)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Def"}],"args_string":"(source, node : Crystal::Def)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/rule/metrics/cyclomatic_complexity.cr#L20","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Def"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"complexity = (AST::CountingVisitor.new(node)).count\nif complexity > max_complexity && (location = node.name_location)\n issue_for(location, def_name_end_location(node), MSG % {complexity, max_complexity})\nend\n"}}],"macros":[],"types":[]}]},{"html_id":"ameba/Ameba/Rule/Performance","path":"Ameba/Rule/Performance.html","kind":"module","full_name":"Ameba::Rule::Performance","name":"Performance","abstract":false,"superclass":null,"ancestors":[],"locations":[{"filename":"src/ameba/rule/performance/any_after_filter.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/rule/performance/any_after_filter.cr#L1"},{"filename":"src/ameba/rule/performance/first_last_after_filter.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/rule/performance/first_last_after_filter.cr#L1"},{"filename":"src/ameba/rule/performance/size_after_filter.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/rule/performance/size_after_filter.cr#L1"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule","kind":"module","full_name":"Ameba::Rule","name":"Rule"},"doc":null,"summary":null,"class_methods":[],"constructors":[],"instance_methods":[],"macros":[],"types":[{"html_id":"ameba/Ameba/Rule/Performance/AnyAfterFilter","path":"Ameba/Rule/Performance/AnyAfterFilter.html","kind":"struct","full_name":"Ameba::Rule::Performance::AnyAfterFilter","name":"AnyAfterFilter","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/performance/any_after_filter.cr","line_number":28,"url":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/rule/performance/any_after_filter.cr#L28"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"ANY_NAME","name":"ANY_NAME","value":"\"any?\"","doc":null,"summary":null},{"id":"MSG","name":"MSG","value":"\"Use `#{ANY_NAME} {...}` instead of `%s {...}.#{ANY_NAME}`\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Performance","kind":"module","full_name":"Ameba::Rule::Performance","name":"Performance"},"doc":"This rule is used to identify usage of `any?` calls that follow filters.\n\nFor example, this is considered invalid:\n\n```\n[1, 2, 3].select { |e| e > 2 }.any?\n[1, 2, 3].reject { |e| e >= 2 }.any?\n```\n\nAnd it should be written as this:\n\n```\n[1, 2, 3].any? { |e| e > 2 }\n[1, 2, 3].any? { |e| e < 2 }\n```\n\nYAML configuration example:\n\n```\nPerformance/AnyAfterFilter:\n Enabled: true\n FilterNames:\n - select\n - reject\n```\n","summary":"
This rule is used to identify usage of any? calls that follow filters.
","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"This rule is used to identify usage of `any?` calls that follow filters.\n\nFor example, this is considered invalid:\n\n```\n[1, 2, 3].select { |e| e > 2 }.any?\n[1, 2, 3].reject { |e| e >= 2 }.any?\n```\n\nAnd it should be written as this:\n\n```\n[1, 2, 3].any? { |e| e > 2 }\n[1, 2, 3].any? { |e| e < 2 }\n```\n\nYAML configuration example:\n\n```\nPerformance/AnyAfterFilter:\n Enabled: true\n FilterNames:\n - select\n - reject\n```\n","summary":"
This rule is used to identify usage of any? calls that follow filters.
","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/rule/performance/any_after_filter.cr#L28","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"filter_names:Array(String)-instance-method","html_id":"filter_names:Array(String)-instance-method","name":"filter_names","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)","source_link":null,"def":{"name":"filter_names","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String)","visibility":"Public","body":"@filter_names"}},{"id":"filter_names=(filter_names:Array(String))-instance-method","html_id":"filter_names=(filter_names:Array(String))-instance-method","name":"filter_names=","doc":null,"summary":null,"abstract":false,"args":[{"name":"filter_names","doc":null,"default_value":"","external_name":"filter_names","restriction":"Array(String)"}],"args_string":"(filter_names : Array(String))","source_link":null,"def":{"name":"filter_names=","args":[{"name":"filter_names","doc":null,"default_value":"","external_name":"filter_names","restriction":"Array(String)"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@filter_names = filter_names"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node:Crystal::Call)-instance-method","html_id":"test(source,node:Crystal::Call)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Call"}],"args_string":"(source, node : Crystal::Call)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/rule/performance/any_after_filter.cr#L37","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Call"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (node.name == ANY_NAME) && (obj = node.obj)\nelse\n return\nend\nif ((node.block.nil? && obj.is_a?(Crystal::Call)) && (filter_names.includes?(obj.name))) && (!obj.block.nil?)\n issue_for(obj.name_location, node.name_end_location, MSG % obj.name)\nend\n"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Performance/FirstLastAfterFilter","path":"Ameba/Rule/Performance/FirstLastAfterFilter.html","kind":"struct","full_name":"Ameba::Rule::Performance::FirstLastAfterFilter","name":"FirstLastAfterFilter","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/performance/first_last_after_filter.cr","line_number":27,"url":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/rule/performance/first_last_after_filter.cr#L27"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"CALL_NAMES","name":"CALL_NAMES","value":"[\"first\", \"last\", \"first?\", \"last?\"] of ::String","doc":null,"summary":null},{"id":"MSG","name":"MSG","value":"\"Use `find {...}` instead of `%s {...}.%s`\"","doc":null,"summary":null},{"id":"MSG_REVERSE","name":"MSG_REVERSE","value":"\"Use `reverse_each.find {...}` instead of `%s {...}.%s`\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Performance","kind":"module","full_name":"Ameba::Rule::Performance","name":"Performance"},"doc":"This rule is used to identify usage of `first/last/first?/last?` calls that follow filters.\n\nFor example, this is considered inefficient:\n\n```\n[-1, 0, 1, 2].select { |e| e > 0 }.first?\n[-1, 0, 1, 2].select { |e| e > 0 }.last?\n```\n\nAnd can be written as this:\n\n```\n[-1, 0, 1, 2].find { |e| e > 0 }\n[-1, 0, 1, 2].reverse_each.find { |e| e > 0 }\n```\n\nYAML configuration example:\n\n```\nPerformance/FirstLastAfterFilter\n Enabled: true\n FilterNames:\n - select\n```\n","summary":"
This rule is used to identify usage of first/last/first?/last? calls that follow filters.
","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"This rule is used to identify usage of `first/last/first?/last?` calls that follow filters.\n\nFor example, this is considered inefficient:\n\n```\n[-1, 0, 1, 2].select { |e| e > 0 }.first?\n[-1, 0, 1, 2].select { |e| e > 0 }.last?\n```\n\nAnd can be written as this:\n\n```\n[-1, 0, 1, 2].find { |e| e > 0 }\n[-1, 0, 1, 2].reverse_each.find { |e| e > 0 }\n```\n\nYAML configuration example:\n\n```\nPerformance/FirstLastAfterFilter\n Enabled: true\n FilterNames:\n - select\n```\n","summary":"
This rule is used to identify usage of first/last/first?/last? calls that follow filters.
","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/rule/performance/first_last_after_filter.cr#L27","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"filter_names:Array(String)-instance-method","html_id":"filter_names:Array(String)-instance-method","name":"filter_names","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)","source_link":null,"def":{"name":"filter_names","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String)","visibility":"Public","body":"@filter_names"}},{"id":"filter_names=(filter_names:Array(String))-instance-method","html_id":"filter_names=(filter_names:Array(String))-instance-method","name":"filter_names=","doc":null,"summary":null,"abstract":false,"args":[{"name":"filter_names","doc":null,"default_value":"","external_name":"filter_names","restriction":"Array(String)"}],"args_string":"(filter_names : Array(String))","source_link":null,"def":{"name":"filter_names=","args":[{"name":"filter_names","doc":null,"default_value":"","external_name":"filter_names","restriction":"Array(String)"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@filter_names = filter_names"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node:Crystal::Call)-instance-method","html_id":"test(source,node:Crystal::Call)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Call"}],"args_string":"(source, node : Crystal::Call)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/rule/performance/first_last_after_filter.cr#L46","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Call"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (CALL_NAMES.includes?(node.name)) && (obj = node.obj)\nelse\n return\nend\nif node.args.any?\n return\nend\nif ((node.block.nil? && obj.is_a?(Crystal::Call)) && (filter_names.includes?(obj.name))) && (!obj.block.nil?)\n message = node.name.includes?(CALL_NAMES.first) ? MSG : MSG_REVERSE\n issue_for(obj.name_location, node.name_end_location, message % {obj.name, node.name})\nend\n"}},{"id":"test(source)-instance-method","html_id":"test(source)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"args_string":"(source)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/rule/performance/first_last_after_filter.cr#L37","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"AST::NodeVisitor.new(self, source, skip: [Crystal::Macro, Crystal::MacroExpression, Crystal::MacroIf, Crystal::MacroFor])"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Performance/SizeAfterFilter","path":"Ameba/Rule/Performance/SizeAfterFilter.html","kind":"struct","full_name":"Ameba::Rule::Performance::SizeAfterFilter","name":"SizeAfterFilter","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/performance/size_after_filter.cr","line_number":34,"url":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/rule/performance/size_after_filter.cr#L34"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Use `count {...}` instead of `%s {...}.#{SIZE_NAME}`.\"","doc":null,"summary":null},{"id":"SIZE_NAME","name":"SIZE_NAME","value":"\"size\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Performance","kind":"module","full_name":"Ameba::Rule::Performance","name":"Performance"},"doc":"This rule is used to identify usage of `size` calls that follow filter.\n\nFor example, this is considered invalid:\n\n```\n[1, 2, 3].select { |e| e > 2 }.size\n[1, 2, 3].reject { |e| e < 2 }.size\n[1, 2, 3].select(&.< 2).size\n[0, 1, 2].select(&.zero?).size\n[0, 1, 2].reject(&.zero?).size\n```\n\nAnd it should be written as this:\n\n```\n[1, 2, 3].count { |e| e > 2 }\n[1, 2, 3].count { |e| e >= 2 }\n[1, 2, 3].count(&.< 2)\n[0, 1, 2].count(&.zero?)\n[0, 1, 2].count(&.!= 0)\n```\n\nYAML configuration example:\n\n```\nPerformance/SizeAfterFilter:\n Enabled: true\n FilterNames:\n - select\n - reject\n```\n","summary":"
This rule is used to identify usage of size calls that follow filter.
","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"This rule is used to identify usage of `size` calls that follow filter.\n\nFor example, this is considered invalid:\n\n```\n[1, 2, 3].select { |e| e > 2 }.size\n[1, 2, 3].reject { |e| e < 2 }.size\n[1, 2, 3].select(&.< 2).size\n[0, 1, 2].select(&.zero?).size\n[0, 1, 2].reject(&.zero?).size\n```\n\nAnd it should be written as this:\n\n```\n[1, 2, 3].count { |e| e > 2 }\n[1, 2, 3].count { |e| e >= 2 }\n[1, 2, 3].count(&.< 2)\n[0, 1, 2].count(&.zero?)\n[0, 1, 2].count(&.!= 0)\n```\n\nYAML configuration example:\n\n```\nPerformance/SizeAfterFilter:\n Enabled: true\n FilterNames:\n - select\n - reject\n```\n","summary":"
This rule is used to identify usage of size calls that follow filter.
","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/rule/performance/size_after_filter.cr#L34","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"filter_names:Array(String)-instance-method","html_id":"filter_names:Array(String)-instance-method","name":"filter_names","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)","source_link":null,"def":{"name":"filter_names","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String)","visibility":"Public","body":"@filter_names"}},{"id":"filter_names=(filter_names:Array(String))-instance-method","html_id":"filter_names=(filter_names:Array(String))-instance-method","name":"filter_names=","doc":null,"summary":null,"abstract":false,"args":[{"name":"filter_names","doc":null,"default_value":"","external_name":"filter_names","restriction":"Array(String)"}],"args_string":"(filter_names : Array(String))","source_link":null,"def":{"name":"filter_names=","args":[{"name":"filter_names","doc":null,"default_value":"","external_name":"filter_names","restriction":"Array(String)"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@filter_names = filter_names"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node:Crystal::Call)-instance-method","html_id":"test(source,node:Crystal::Call)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Call"}],"args_string":"(source, node : Crystal::Call)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/rule/performance/size_after_filter.cr#L52","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Call"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (node.name == SIZE_NAME) && (obj = node.obj)\nelse\n return\nend\nif (obj.is_a?(Crystal::Call) && (filter_names.includes?(obj.name))) && (!obj.block.nil?)\n issue_for(obj.name_location, node.name_end_location, MSG % obj.name)\nend\n"}},{"id":"test(source)-instance-method","html_id":"test(source)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"args_string":"(source)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/rule/performance/size_after_filter.cr#L43","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"AST::NodeVisitor.new(self, source, skip: [Crystal::Macro, Crystal::MacroExpression, Crystal::MacroIf, Crystal::MacroFor])"}}],"macros":[],"types":[]}]},{"html_id":"ameba/Ameba/Rule/Style","path":"Ameba/Rule/Style.html","kind":"module","full_name":"Ameba::Rule::Style","name":"Style","abstract":false,"superclass":null,"ancestors":[],"locations":[{"filename":"src/ameba/rule/style/constant_names.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/rule/style/constant_names.cr#L1"},{"filename":"src/ameba/rule/style/is_a_nil.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/rule/style/is_a_nil.cr#L1"},{"filename":"src/ameba/rule/style/large_numbers.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/rule/style/large_numbers.cr#L1"},{"filename":"src/ameba/rule/style/method_names.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/rule/style/method_names.cr#L1"},{"filename":"src/ameba/rule/style/negated_conditions_in_unless.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/rule/style/negated_conditions_in_unless.cr#L1"},{"filename":"src/ameba/rule/style/predicate_name.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/rule/style/predicate_name.cr#L1"},{"filename":"src/ameba/rule/style/redundant_begin.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/rule/style/redundant_begin.cr#L1"},{"filename":"src/ameba/rule/style/redundant_next.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/rule/style/redundant_next.cr#L1"},{"filename":"src/ameba/rule/style/redundant_return.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/rule/style/redundant_return.cr#L1"},{"filename":"src/ameba/rule/style/type_names.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/rule/style/type_names.cr#L1"},{"filename":"src/ameba/rule/style/unless_else.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/rule/style/unless_else.cr#L1"},{"filename":"src/ameba/rule/style/variable_names.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/rule/style/variable_names.cr#L1"},{"filename":"src/ameba/rule/style/while_true.cr","line_number":1,"url":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/rule/style/while_true.cr#L1"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule","kind":"module","full_name":"Ameba::Rule","name":"Rule"},"doc":null,"summary":null,"class_methods":[],"constructors":[],"instance_methods":[],"macros":[],"types":[{"html_id":"ameba/Ameba/Rule/Style/ConstantNames","path":"Ameba/Rule/Style/ConstantNames.html","kind":"struct","full_name":"Ameba::Rule::Style::ConstantNames","name":"ConstantNames","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/style/constant_names.cr","line_number":25,"url":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/rule/style/constant_names.cr#L25"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Constant name should be screaming-cased: %s, not %s\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Style","kind":"module","full_name":"Ameba::Rule::Style","name":"Style"},"doc":"A rule that enforces constant names to be in screaming case.\n\nFor example, these constant names are considered valid:\n\n```\nLUCKY_NUMBERS = [3, 7, 11]\nDOCUMENTATION_URL = \"http://crystal-lang.org/docs\"\n```\n\nAnd these are invalid names:\n\n```\nmyBadConstant = 1\nWrong_NAME = 2\n```\n\nYAML configuration example:\n\n```\nStyle/ConstantNames:\n Enabled: true\n```\n","summary":"
A rule that enforces constant names to be in screaming case.
","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that enforces constant names to be in screaming case.\n\nFor example, these constant names are considered valid:\n\n```\nLUCKY_NUMBERS = [3, 7, 11]\nDOCUMENTATION_URL = \"http://crystal-lang.org/docs\"\n```\n\nAnd these are invalid names:\n\n```\nmyBadConstant = 1\nWrong_NAME = 2\n```\n\nYAML configuration example:\n\n```\nStyle/ConstantNames:\n Enabled: true\n```\n","summary":"
A rule that enforces constant names to be in screaming case.
","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/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/bedf3a68/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/bedf3a68/src/ameba/rule/style/is_a_nil.cr#L23"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Use `nil?` instead of `is_a?(Nil)`\"","doc":null,"summary":null},{"id":"PATH_NIL_NAMES","name":"PATH_NIL_NAMES","value":"[\"Nil\"] of ::String","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Style","kind":"module","full_name":"Ameba::Rule::Style","name":"Style"},"doc":"A rule that disallows calls to `is_a?(Nil)` in favor of `nil?`.\n\nThis is considered bad:\n\n```\nvar.is_a? Nil\n```\n\nAnd needs to be written as:\n\n```\nvar.nil?\n```\n\nYAML configuration example:\n\n```\nStyle/IsANil:\n Enabled: true\n```\n","summary":"
A rule that disallows calls to is_a?(Nil) in favor of nil?.
","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows calls to `is_a?(Nil)` in favor of `nil?`.\n\nThis is considered bad:\n\n```\nvar.is_a? Nil\n```\n\nAnd needs to be written as:\n\n```\nvar.nil?\n```\n\nYAML configuration example:\n\n```\nStyle/IsANil:\n Enabled: true\n```\n","summary":"
A rule that disallows calls to is_a?(Nil) in favor of nil?.
","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/rule/style/is_a_nil.cr#L23","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node:Crystal::IsA)-instance-method","html_id":"test(source,node:Crystal::IsA)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::IsA"}],"args_string":"(source, node : Crystal::IsA)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/rule/style/is_a_nil.cr#L31","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::IsA"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if node.nil_check?\n return\nend\nconst = node.const\nif const.is_a?(Crystal::Path) && (const.names == PATH_NIL_NAMES)\n issue_for(const, MSG)\nend\n"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Style/LargeNumbers","path":"Ameba/Rule/Style/LargeNumbers.html","kind":"struct","full_name":"Ameba::Rule::Style::LargeNumbers","name":"LargeNumbers","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/style/large_numbers.cr","line_number":30,"url":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/rule/style/large_numbers.cr#L30"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Large numbers should be written with underscores: %s\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Style","kind":"module","full_name":"Ameba::Rule::Style","name":"Style"},"doc":"A rule that disallows usage of large numbers without underscore.\nThese do not affect the value of the number, but can help read\nlarge numbers more easily.\n\nFor example, these are considered invalid:\n\n```\n10000\n141592654\n5.12345\n```\n\nAnd has to be rewritten as the following:\n\n```\n10_000\n141_592_654\n5.123_45\n```\n\nYAML configuration example:\n\n```\nStyle/LargeNumbers:\n Enabled: true\n IntMinDigits: 5 # i.e. integers higher than 9999\n```\n","summary":"
A rule that disallows usage of large numbers without underscore.
","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows usage of large numbers without underscore.\nThese do not affect the value of the number, but can help read\nlarge numbers more easily.\n\nFor example, these are considered invalid:\n\n```\n10000\n141592654\n5.12345\n```\n\nAnd has to be rewritten as the following:\n\n```\n10_000\n141_592_654\n5.123_45\n```\n\nYAML configuration example:\n\n```\nStyle/LargeNumbers:\n Enabled: true\n IntMinDigits: 5 # i.e. integers higher than 9999\n```\n","summary":"
A rule that disallows usage of large numbers without underscore.
","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/src/ameba/rule/style/predicate_name.cr#L32"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Favour method name '%s?' over '%s'\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Style","kind":"module","full_name":"Ameba::Rule::Style","name":"Style"},"doc":"A rule that disallows tautological predicate names, meaning those that\nstart with the prefix `has_` or the prefix `is_`. Ignores if the alternative isn't valid Crystal code (e.g. `is_404?`).\n\nFavour these:\n\n```\ndef valid?(x)\nend\n\ndef picture?(x)\nend\n```\n\nOver these:\n\n```\ndef is_valid?(x)\nend\n\ndef has_picture?(x)\nend\n```\n\nYAML configuration example:\n\n```\nStyle/PredicateName:\n Enabled: true\n```\n","summary":"
A rule that disallows tautological predicate names, meaning those that start with the prefix has_ or the prefix is_.
","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows tautological predicate names, meaning those that\nstart with the prefix `has_` or the prefix `is_`. Ignores if the alternative isn't valid Crystal code (e.g. `is_404?`).\n\nFavour these:\n\n```\ndef valid?(x)\nend\n\ndef picture?(x)\nend\n```\n\nOver these:\n\n```\ndef is_valid?(x)\nend\n\ndef has_picture?(x)\nend\n```\n\nYAML configuration example:\n\n```\nStyle/PredicateName:\n Enabled: true\n```\n","summary":"
A rule that disallows tautological predicate names, meaning those that start with the prefix has_ or the prefix is_.
","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/rule/style/predicate_name.cr#L32","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Bool","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled:Bool)-instance-method","html_id":"enabled=(enabled:Bool)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":"Bool"}],"args_string":"(enabled : Bool)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":"Bool"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node:Crystal::Def)-instance-method","html_id":"test(source,node:Crystal::Def)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Def"}],"args_string":"(source, node : Crystal::Def)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/rule/style/predicate_name.cr#L40","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Def"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if node.name =~ (/^(is|has)_(\\w+)\\?/)\n alternative = $~[2]\n if alternative =~ (/^[a-z][a-zA-Z_0-9]*$/)\n else\n return\n end\n issue_for(node, MSG % {alternative, node.name})\nend"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Style/RedundantBegin","path":"Ameba/Rule/Style/RedundantBegin.html","kind":"struct","full_name":"Ameba::Rule::Style::RedundantBegin","name":"RedundantBegin","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/Ameba/AST/Util","kind":"module","full_name":"Ameba::AST::Util","name":"Util"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/style/redundant_begin.cr","line_number":59,"url":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/rule/style/redundant_begin.cr#L59"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Redundant `begin` block detected\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/Ameba/AST/Util","kind":"module","full_name":"Ameba::AST::Util","name":"Util"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Style","kind":"module","full_name":"Ameba::Rule::Style","name":"Style"},"doc":"A rule that disallows redundant begin blocks.\n\nCurrently it is able to detect:\n\n1. Exception handler block that can be used as a part of the method.\n\nFor example, this:\n\n```\ndef method\n begin\n read_content\n rescue\n close_file\n end\nend\n```\n\nshould be rewritten as:\n\n```\ndef method\n read_content\nrescue\n close_file\nend\n```\n\n2. begin..end block as a top level block in a method.\n\nFor example this is considered invalid:\n\n```\ndef method\n begin\n a = 1\n b = 2\n end\nend\n```\n\nand has to be written as the following:\n\n```\ndef method\n a = 1\n b = 2\nend\n```\n\nYAML configuration example:\n\n```\nStyle/RedundantBegin:\n Enabled: true\n```\n","summary":"
A rule that disallows redundant begin blocks.
","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows redundant begin blocks.\n\nCurrently it is able to detect:\n\n1. Exception handler block that can be used as a part of the method.\n\nFor example, this:\n\n```\ndef method\n begin\n read_content\n rescue\n close_file\n end\nend\n```\n\nshould be rewritten as:\n\n```\ndef method\n read_content\nrescue\n close_file\nend\n```\n\n2. begin..end block as a top level block in a method.\n\nFor example this is considered invalid:\n\n```\ndef method\n begin\n a = 1\n b = 2\n end\nend\n```\n\nand has to be written as the following:\n\n```\ndef method\n a = 1\n b = 2\nend\n```\n\nYAML configuration example:\n\n```\nStyle/RedundantBegin:\n Enabled: true\n```\n","summary":"
A rule that disallows redundant begin blocks.
","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/src/ameba/rule/style/unless_else.cr#L46"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Favour if over unless with else\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Style","kind":"module","full_name":"Ameba::Rule::Style","name":"Style"},"doc":"A rule that disallows the use of an `else` block with the `unless`.\n\nFor example, the rule considers these valid:\n\n```\nunless something\n :ok\nend\n\nif something\n :one\nelse\n :two\nend\n```\n\nBut it considers this one invalid as it is an `unless` with an `else`:\n\n```\nunless something\n :one\nelse\n :two\nend\n```\n\nThe solution is to swap the order of the blocks, and change the `unless` to\nan `if`, so the previous invalid example would become this:\n\n```\nif something\n :two\nelse\n :one\nend\n```\n\nYAML configuration example:\n\n```\nStyle/UnlessElse:\n Enabled: true\n```\n","summary":"
A rule that disallows the use of an else block with the unless.
","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows the use of an `else` block with the `unless`.\n\nFor example, the rule considers these valid:\n\n```\nunless something\n :ok\nend\n\nif something\n :one\nelse\n :two\nend\n```\n\nBut it considers this one invalid as it is an `unless` with an `else`:\n\n```\nunless something\n :one\nelse\n :two\nend\n```\n\nThe solution is to swap the order of the blocks, and change the `unless` to\nan `if`, so the previous invalid example would become this:\n\n```\nif something\n :two\nelse\n :one\nend\n```\n\nYAML configuration example:\n\n```\nStyle/UnlessElse:\n Enabled: true\n```\n","summary":"
A rule that disallows the use of an else block with the unless.
","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/rule/style/unless_else.cr#L46","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node:Crystal::Unless)-instance-method","html_id":"test(source,node:Crystal::Unless)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Unless"}],"args_string":"(source, node : Crystal::Unless)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/rule/style/unless_else.cr#L53","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::Unless"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if node.else.nop?\n return\nend\nissue_for(node, MSG)\n"}}],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Rule/Style/VariableNames","path":"Ameba/Rule/Style/VariableNames.html","kind":"struct","full_name":"Ameba::Rule::Style::VariableNames","name":"VariableNames","abstract":false,"superclass":{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},"ancestors":[{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"},{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/Ameba/Rule/Base","kind":"struct","full_name":"Ameba::Rule::Base","name":"Base"},{"html_id":"ameba/Ameba/Config/RuleConfig","kind":"module","full_name":"Ameba::Config::RuleConfig","name":"RuleConfig"},{"html_id":"ameba/Struct","kind":"struct","full_name":"Struct","name":"Struct"},{"html_id":"ameba/Value","kind":"struct","full_name":"Value","name":"Value"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/rule/style/variable_names.cr","line_number":26,"url":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/rule/style/variable_names.cr#L26"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"Var name should be underscore-cased: %s, not %s\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Style","kind":"module","full_name":"Ameba::Rule::Style","name":"Style"},"doc":"A rule that enforces variable names to be in underscored case.\n\nFor example, these variable names are considered valid:\n\n```\nvar_name = 1\nname = 2\n_another_good_name = 3\n```\n\nAnd these are invalid variable names:\n\n```\nmyBadNamedVar = 1\nwrong_Name = 2\n```\n\nYAML configuration example:\n\n```\nStyle/VariableNames:\n Enabled: true\n```\n","summary":"
A rule that enforces variable names to be in underscored case.
","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that enforces variable names to be in underscored case.\n\nFor example, these variable names are considered valid:\n\n```\nvar_name = 1\nname = 2\n_another_good_name = 3\n```\n\nAnd these are invalid variable names:\n\n```\nmyBadNamedVar = 1\nwrong_Name = 2\n```\n\nYAML configuration example:\n\n```\nStyle/VariableNames:\n Enabled: true\n```\n","summary":"
A rule that enforces variable names to be in underscored case.
","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/src/ameba/rule/style/while_true.cr#L29"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[{"id":"MSG","name":"MSG","value":"\"While statement using true literal as condition\"","doc":null,"summary":null}],"included_modules":[{"html_id":"ameba/YAML/Serializable","kind":"module","full_name":"YAML::Serializable","name":"Serializable"},{"html_id":"ameba/YAML/Serializable/Strict","kind":"module","full_name":"YAML::Serializable::Strict","name":"Strict"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba/Rule/Style","kind":"module","full_name":"Ameba::Rule::Style","name":"Style"},"doc":"A rule that disallows the use of `while true` instead of using the idiomatic `loop`\n\nFor example, this is considered invalid:\n\n```\nwhile true\n do_something\n break if some_condition\nend\n```\n\nAnd should be replaced by the following:\n\n```\nloop do\n do_something\n break if some_condition\nend\n```\n\nYAML configuration example:\n\n```\nStyle/WhileTrue:\n Enabled: true\n```\n","summary":"
A rule that disallows the use of while true instead of using the idiomatic loop
","class_methods":[],"constructors":[{"id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"new(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"new","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":null,"def":{"name":"new","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"new_from_yaml_node(ctx, node)"}},{"id":"new(config=nil)-class-method","html_id":"new(config=nil)-class-method","name":"new","doc":"A rule that disallows the use of `while true` instead of using the idiomatic `loop`\n\nFor example, this is considered invalid:\n\n```\nwhile true\n do_something\n break if some_condition\nend\n```\n\nAnd should be replaced by the following:\n\n```\nloop do\n do_something\n break if some_condition\nend\n```\n\nYAML configuration example:\n\n```\nStyle/WhileTrue:\n Enabled: true\n```\n","summary":"
A rule that disallows the use of while true instead of using the idiomatic loop
","abstract":false,"args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"args_string":"(config = nil)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/rule/style/while_true.cr#L29","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"nil","external_name":"config","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if (raw = config.try(&.raw)).is_a?(Hash)\n yaml = raw[rule_name]?.try(&.to_yaml)\nend\nfrom_yaml(yaml || \"{}\")\n"}}],"instance_methods":[{"id":"description:String-instance-method","html_id":"description:String-instance-method","name":"description","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : String","source_link":null,"def":{"name":"description","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"String","visibility":"Public","body":"@description"}},{"id":"description=(description:String)-instance-method","html_id":"description=(description:String)-instance-method","name":"description=","doc":null,"summary":null,"abstract":false,"args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"args_string":"(description : String)","source_link":null,"def":{"name":"description=","args":[{"name":"description","doc":null,"default_value":"","external_name":"description","restriction":"String"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@description = description"}},{"id":"enabled:Bool-instance-method","html_id":"enabled:Bool-instance-method","name":"enabled","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Bool","source_link":null,"def":{"name":"enabled","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled"}},{"id":"enabled=(enabled)-instance-method","html_id":"enabled=(enabled)-instance-method","name":"enabled=","doc":null,"summary":null,"abstract":false,"args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"args_string":"(enabled)","source_link":null,"def":{"name":"enabled=","args":[{"name":"enabled","doc":null,"default_value":"","external_name":"enabled","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@enabled = enabled"}},{"id":"excluded:Array(String)?-instance-method","html_id":"excluded:Array(String)?-instance-method","name":"excluded","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Array(String)?","source_link":null,"def":{"name":"excluded","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"Array(String) | ::Nil","visibility":"Public","body":"@excluded"}},{"id":"excluded=(excluded:Array(String)?)-instance-method","html_id":"excluded=(excluded:Array(String)?)-instance-method","name":"excluded=","doc":null,"summary":null,"abstract":false,"args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"args_string":"(excluded : Array(String)?)","source_link":null,"def":{"name":"excluded=","args":[{"name":"excluded","doc":null,"default_value":"","external_name":"excluded","restriction":"Array(String) | ::Nil"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@excluded = excluded"}},{"id":"severity:Ameba::Severity-instance-method","html_id":"severity:Ameba::Severity-instance-method","name":"severity","doc":null,"summary":null,"abstract":false,"args":[],"args_string":" : Ameba::Severity","source_link":null,"def":{"name":"severity","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity"}},{"id":"severity=(severity)-instance-method","html_id":"severity=(severity)-instance-method","name":"severity=","doc":null,"summary":null,"abstract":false,"args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"args_string":"(severity)","source_link":null,"def":{"name":"severity=","args":[{"name":"severity","doc":null,"default_value":"","external_name":"severity","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@severity = severity"}},{"id":"test(source,node:Crystal::While)-instance-method","html_id":"test(source,node:Crystal::While)-instance-method","name":"test","doc":null,"summary":null,"abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::While"}],"args_string":"(source, node : Crystal::While)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/rule/style/while_true.cr#L36","def":{"name":"test","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"Crystal::While"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if node.cond.true_literal?\nelse\n return\nend\nissue_for(node, MSG)\n"}}],"macros":[],"types":[]}]}]},{"html_id":"ameba/Ameba/Runner","path":"Ameba/Runner.html","kind":"class","full_name":"Ameba::Runner","name":"Runner","abstract":false,"superclass":{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},"ancestors":[{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/runner.cr","line_number":13,"url":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/runner.cr#L13"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba","kind":"module","full_name":"Ameba","name":"Ameba"},"doc":"Represents a runner for inspecting sources files.\nHolds a list of rules to do inspection based on,\nlist of sources to run inspection on and a formatter\nto prepare a report.\n\n```\nconfig = Ameba::Config.load\nrunner = Ameba::Runner.new config\nrunner.run.success? # => true or false\n```\n","summary":"
Represents a runner for inspecting sources files.
","class_methods":[],"constructors":[{"id":"new(config:Config)-class-method","html_id":"new(config:Config)-class-method","name":"new","doc":"Instantiates a runner using a `config`.\n\n```\nconfig = Ameba::Config.load\nconfig.files = files\nconfig.formatter = formatter\n\nAmeba::Runner.new config\n```\n","summary":"
Instantiates a runner using a config.
","abstract":false,"args":[{"name":"config","doc":null,"default_value":"","external_name":"config","restriction":"Config"}],"args_string":"(config : Config)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/runner.cr#L42","def":{"name":"new","args":[{"name":"config","doc":null,"default_value":"","external_name":"config","restriction":"Config"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"_ = allocate\n_.initialize(config)\nif _.responds_to?(:finalize)\n ::GC.add_finalizer(_)\nend\n_\n"}}],"instance_methods":[{"id":"explain(location,output=STDOUT)-instance-method","html_id":"explain(location,output=STDOUT)-instance-method","name":"explain","doc":"Explains an issue at a specified *location*.\n\nRunner should perform inspection before doing the explain.\nThis is necessary to be able to find the issue at a specified location.\n\n```\nrunner = Ameba::Runner.new config\nrunner.run\nrunner.explain({file: file, line: l, column: c})\n```\n","summary":"
Explains an issue at a specified location.
","abstract":false,"args":[{"name":"location","doc":null,"default_value":"","external_name":"location","restriction":""},{"name":"output","doc":null,"default_value":"STDOUT","external_name":"output","restriction":""}],"args_string":"(location, output = STDOUT)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/src/ameba/severity.cr#L31"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba","kind":"module","full_name":"Ameba","name":"Ameba"},"doc":"Converter for `YAML.mapping` which converts severity enum to and from YAML.","summary":"
Converter for YAML.mapping which converts severity enum to and from YAML.
","class_methods":[{"id":"from_yaml(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","html_id":"from_yaml(ctx:YAML::ParseContext,node:YAML::Nodes::Node)-class-method","name":"from_yaml","doc":null,"summary":null,"abstract":false,"args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"args_string":"(ctx : YAML::ParseContext, node : YAML::Nodes::Node)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/severity.cr#L32","def":{"name":"from_yaml","args":[{"name":"ctx","doc":null,"default_value":"","external_name":"ctx","restriction":"YAML::ParseContext"},{"name":"node","doc":null,"default_value":"","external_name":"node","restriction":"YAML::Nodes::Node"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"if node.is_a?(YAML::Nodes::Scalar)\nelse\n raise(\"Severity must be a scalar, not #{node.class}\")\nend\ncase value = node.value\nwhen String\n Severity.parse(value)\nwhen Nil\n nil\nelse\n raise(\"Incorrect severity: #{value}\")\nend\n"}},{"id":"to_yaml(value:Severity,yaml:YAML::Nodes::Builder)-class-method","html_id":"to_yaml(value:Severity,yaml:YAML::Nodes::Builder)-class-method","name":"to_yaml","doc":null,"summary":null,"abstract":false,"args":[{"name":"value","doc":null,"default_value":"","external_name":"value","restriction":"Severity"},{"name":"yaml","doc":null,"default_value":"","external_name":"yaml","restriction":"YAML::Nodes::Builder"}],"args_string":"(value : Severity, yaml : YAML::Nodes::Builder)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/severity.cr#L45","def":{"name":"to_yaml","args":[{"name":"value","doc":null,"default_value":"","external_name":"value","restriction":"Severity"},{"name":"yaml","doc":null,"default_value":"","external_name":"yaml","restriction":"YAML::Nodes::Builder"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"yaml.scalar(value)"}}],"constructors":[],"instance_methods":[],"macros":[],"types":[]},{"html_id":"ameba/Ameba/Source","path":"Ameba/Source.html","kind":"class","full_name":"Ameba::Source","name":"Source","abstract":false,"superclass":{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},"ancestors":[{"html_id":"ameba/Ameba/Reportable","kind":"module","full_name":"Ameba::Reportable","name":"Reportable"},{"html_id":"ameba/Ameba/InlineComments","kind":"module","full_name":"Ameba::InlineComments","name":"InlineComments"},{"html_id":"ameba/Reference","kind":"class","full_name":"Reference","name":"Reference"},{"html_id":"ameba/Object","kind":"class","full_name":"Object","name":"Object"}],"locations":[{"filename":"src/ameba/source.cr","line_number":4,"url":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/source.cr#L4"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[{"html_id":"ameba/Ameba/InlineComments","kind":"module","full_name":"Ameba::InlineComments","name":"InlineComments"},{"html_id":"ameba/Ameba/Reportable","kind":"module","full_name":"Ameba::Reportable","name":"Reportable"}],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba","kind":"module","full_name":"Ameba","name":"Ameba"},"doc":"An entity that represents a Crystal source file.\nHas path, lines of code and issues reported by rules.","summary":"
An entity that represents a Crystal source file.
","class_methods":[],"constructors":[{"id":"new(code:String,path="")-class-method","html_id":"new(code:String,path="")-class-method","name":"new","doc":"Creates a new source by `code` and `path`.\n\nFor example:\n\n```\npath = \"./src/source.cr\"\nAmeba::Source.new File.read(path), path\n```\n","summary":"
","abstract":false,"args":[],"args_string":"","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/source.cr#L52","def":{"name":"ast","args":[],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"@ast || (@ast = (Crystal::Parser.new(code)).tap do |parser|\n parser.wants_doc = true\nend.tap do |parser|\n parser.filename = @path\nend.parse)"}},{"id":"code:String-instance-method","html_id":"code:String-instance-method","name":"code","doc":"Crystal code (content of a source file).","summary":"
Crystal code (content of a source file).
","abstract":false,"args":[],"args_string":" : String","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/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/bedf3a68/src/ameba/tokenizer.cr#L14"}],"repository_name":"ameba","program":false,"enum":false,"alias":false,"aliased":"","const":false,"constants":[],"included_modules":[],"extended_modules":[],"subclasses":[],"including_types":[],"namespace":{"html_id":"ameba/Ameba","kind":"module","full_name":"Ameba","name":"Ameba"},"doc":"Represents Crystal syntax tokenizer based on `Crystal::Lexer`.\n\n```\nsource = Ameba::Source.new code, path\ntokenizer = Ameba::Tokenizer.new(source)\ntokenizer.run do |token|\n puts token\nend\n```\n","summary":"
Represents Crystal syntax tokenizer based on Crystal::Lexer.
","class_methods":[],"constructors":[{"id":"new(lexer:Crystal::Lexer)-class-method","html_id":"new(lexer:Crystal::Lexer)-class-method","name":"new","doc":"Instantiates Tokenizer using a `lexer`.\n\n```\nlexer = Crystal::Lexer.new(code)\nAmeba::Tokenizer.new(lexer)\n```\n","summary":"
Instantiates Tokenizer using a lexer.
","abstract":false,"args":[{"name":"lexer","doc":null,"default_value":"","external_name":"lexer","restriction":"Crystal::Lexer"}],"args_string":"(lexer : Crystal::Lexer)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/tokenizer.cr#L37","def":{"name":"new","args":[{"name":"lexer","doc":null,"default_value":"","external_name":"lexer","restriction":"Crystal::Lexer"}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"_ = allocate\n_.initialize(lexer)\nif _.responds_to?(:finalize)\n ::GC.add_finalizer(_)\nend\n_\n"}},{"id":"new(source)-class-method","html_id":"new(source)-class-method","name":"new","doc":"Instantiates Tokenizer using a `source`.\n\n```\nsource = Ameba::Source.new code, path\nAmeba::Tokenizer.new(source)\n```\n","summary":"
Instantiates Tokenizer using a source.
","abstract":false,"args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"args_string":"(source)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/src/ameba/tokenizer.cr#L22","def":{"name":"new","args":[{"name":"source","doc":null,"default_value":"","external_name":"source","restriction":""}],"double_splat":null,"splat_index":null,"yields":null,"block_arg":null,"return_type":"","visibility":"Public","body":"_ = allocate\n_.initialize(source)\nif _.responds_to?(:finalize)\n ::GC.add_finalizer(_)\nend\n_\n"}}],"instance_methods":[{"id":"run(&block:Crystal::Token->_)-instance-method","html_id":"run(&block:Crystal::Token->_)-instance-method","name":"run","doc":"Runs the tokenizer and yields each token as a block argument.\n\n```\nAmeba::Tokenizer.new(source).run do |token|\n puts token\nend\n```\n","summary":"
Runs the tokenizer and yields each token as a block argument.
","abstract":false,"args":[],"args_string":"(&block : Crystal::Token -> _)","source_link":"https://github.com/crystal-ameba/ameba/blob/bedf3a68/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