gitextract_e8xowmtu/ ├── .ameba.yml ├── .ameba.yml.schema.json ├── .dockerignore ├── .editorconfig ├── .gitattributes ├── .github/ │ ├── dependabot.yml │ └── workflows/ │ ├── add-docs-version-to-json-index.yml │ ├── build-and-deploy-docs.yml │ ├── ci.yml │ ├── compare-json-schema.yml │ ├── docker-image.yml │ ├── docs.yml │ ├── release.yml │ ├── typos.yml │ └── update-json-schema.yml ├── .gitignore ├── .typos.toml ├── Dockerfile ├── LICENSE ├── Makefile ├── README.md ├── bench/ │ └── check_sources.cr ├── bin/ │ └── ameba.cr ├── shard.yml ├── spec/ │ ├── ameba/ │ │ ├── ast/ │ │ │ ├── flow_expression_spec.cr │ │ │ ├── liveness_analyzer_spec.cr │ │ │ ├── scope_spec.cr │ │ │ ├── util_spec.cr │ │ │ ├── variabling/ │ │ │ │ ├── argument_spec.cr │ │ │ │ ├── assignment_spec.cr │ │ │ │ ├── reference_spec.cr │ │ │ │ ├── type_dec_variable_spec.cr │ │ │ │ └── variable_spec.cr │ │ │ └── visitors/ │ │ │ ├── counting_visitor_spec.cr │ │ │ ├── elseif_aware_node_visitor_spec.cr │ │ │ ├── flow_expression_visitor_spec.cr │ │ │ ├── implicit_return_visitor_spec.cr │ │ │ ├── node_visitor_spec.cr │ │ │ ├── redundant_control_expression_visitor_spec.cr │ │ │ ├── scope_calls_with_self_receiver_visitor_spec.cr │ │ │ ├── scope_visitor_spec.cr │ │ │ └── top_level_nodes_visitor_spec.cr │ │ ├── base_spec.cr │ │ ├── cli/ │ │ │ └── cmd_spec.cr │ │ ├── config_spec.cr │ │ ├── ext/ │ │ │ └── location_spec.cr │ │ ├── formatter/ │ │ │ ├── disabled_formatter_spec.cr │ │ │ ├── dot_formatter_spec.cr │ │ │ ├── explain_formatter_spec.cr │ │ │ ├── flycheck_formatter_spec.cr │ │ │ ├── github_actions_formatter_spec.cr │ │ │ ├── json_formatter_spec.cr │ │ │ ├── todo_formatter_spec.cr │ │ │ └── util_spec.cr │ │ ├── glob_utils_spec.cr │ │ ├── inline_comments_spec.cr │ │ ├── issue_spec.cr │ │ ├── presenter/ │ │ │ ├── rule_collection_presenter_spec.cr │ │ │ ├── rule_presenter_spec.cr │ │ │ └── rule_versions_presenter_spec.cr │ │ ├── reportable_spec.cr │ │ ├── rule/ │ │ │ ├── base_spec.cr │ │ │ ├── documentation/ │ │ │ │ ├── admonition_spec.cr │ │ │ │ └── documentation_spec.cr │ │ │ ├── layout/ │ │ │ │ ├── line_length_spec.cr │ │ │ │ ├── trailing_blank_lines_spec.cr │ │ │ │ └── trailing_whitespace_spec.cr │ │ │ ├── lint/ │ │ │ │ ├── ambiguous_assignment_spec.cr │ │ │ │ ├── assignment_in_call_argument_spec.cr │ │ │ │ ├── bad_directive_spec.cr │ │ │ │ ├── comparison_to_boolean_spec.cr │ │ │ │ ├── debug_calls_spec.cr │ │ │ │ ├── debugger_statement_spec.cr │ │ │ │ ├── duplicate_branch_spec.cr │ │ │ │ ├── duplicate_enum_value_spec.cr │ │ │ │ ├── duplicate_method_signature_spec.cr │ │ │ │ ├── duplicate_when_condition_spec.cr │ │ │ │ ├── duplicated_require_spec.cr │ │ │ │ ├── else_nil_spec.cr │ │ │ │ ├── empty_ensure_spec.cr │ │ │ │ ├── empty_expression_spec.cr │ │ │ │ ├── empty_loop_spec.cr │ │ │ │ ├── enum_member_name_conflict_spec.cr │ │ │ │ ├── formatting_spec.cr │ │ │ │ ├── hash_duplicated_key_spec.cr │ │ │ │ ├── literal_assignments_in_expressions_spec.cr │ │ │ │ ├── literal_in_condition_spec.cr │ │ │ │ ├── literal_in_interpolation_spec.cr │ │ │ │ ├── literals_comparison_spec.cr │ │ │ │ ├── missing_block_argument_spec.cr │ │ │ │ ├── non_existent_rule_spec.cr │ │ │ │ ├── not_nil_after_no_bang_spec.cr │ │ │ │ ├── not_nil_spec.cr │ │ │ │ ├── percent_arrays_spec.cr │ │ │ │ ├── rand_zero_spec.cr │ │ │ │ ├── redundant_string_cercion_spec.cr │ │ │ │ ├── redundant_with_index_spec.cr │ │ │ │ ├── redundant_with_object_spec.cr │ │ │ │ ├── require_parentheses_spec.cr │ │ │ │ ├── self_initialize_definition_spec.cr │ │ │ │ ├── shadowed_argument_spec.cr │ │ │ │ ├── shadowed_exception_spec.cr │ │ │ │ ├── shadowing_outer_local_var_spec.cr │ │ │ │ ├── shared_var_in_fiber_spec.cr │ │ │ │ ├── signal_trap_spec.cr │ │ │ │ ├── spec_eq_with_bool_or_nil_literal_spec.cr │ │ │ │ ├── spec_filename_spec.cr │ │ │ │ ├── spec_focus_spec.cr │ │ │ │ ├── syntax_spec.cr │ │ │ │ ├── top_level_operator_definition_spec.cr │ │ │ │ ├── trailing_rescue_exception_spec.cr │ │ │ │ ├── typos_spec.cr │ │ │ │ ├── unneeded_disable_directive_spec.cr │ │ │ │ ├── unreachable_code_spec.cr │ │ │ │ ├── unused_argument_spec.cr │ │ │ │ ├── unused_block_argument_spec.cr │ │ │ │ ├── unused_expression_spec.cr │ │ │ │ ├── unused_rescue_variable_spec.cr │ │ │ │ ├── useless_assign_spec.cr │ │ │ │ ├── useless_condition_in_when_spec.cr │ │ │ │ ├── useless_visibility_modifier_spec.cr │ │ │ │ ├── void_outside_lib_spec.cr │ │ │ │ └── whitespace_around_macro_expression_spec.cr │ │ │ ├── metrics/ │ │ │ │ └── cyclomatic_complexity_spec.cr │ │ │ ├── naming/ │ │ │ │ ├── accessor_method_name_spec.cr │ │ │ │ ├── ascii_identifiers_spec.cr │ │ │ │ ├── binary_operator_parameter_name_spec.cr │ │ │ │ ├── block_parameter_name_spec.cr │ │ │ │ ├── constant_names_spec.cr │ │ │ │ ├── filename_spec.cr │ │ │ │ ├── method_names_spec.cr │ │ │ │ ├── predicate_name_spec.cr │ │ │ │ ├── query_bool_methods_spec.cr │ │ │ │ ├── rescued_exceptions_variable_name_spec.cr │ │ │ │ ├── type_names_spec.cr │ │ │ │ └── variable_names_spec.cr │ │ │ ├── performance/ │ │ │ │ ├── any_after_filter_spec.cr │ │ │ │ ├── any_instead_of_present_spec.cr │ │ │ │ ├── base_spec.cr │ │ │ │ ├── chained_call_with_no_bang_spec.cr │ │ │ │ ├── compact_after_map_spec.cr │ │ │ │ ├── excessive_allocations_spec.cr │ │ │ │ ├── first_last_after_filter_spec.cr │ │ │ │ ├── flatten_after_map_spec.cr │ │ │ │ ├── map_instead_of_block_spec.cr │ │ │ │ ├── minmax_after_map_spec.cr │ │ │ │ ├── size_after_filter_spec.cr │ │ │ │ └── times_map_spec.cr │ │ │ ├── style/ │ │ │ │ ├── array_literal_syntax_spec.cr │ │ │ │ ├── call_parentheses_spec.cr │ │ │ │ ├── elsif_spec.cr │ │ │ │ ├── guard_clause_spec.cr │ │ │ │ ├── hash_literal_syntax_spec.cr │ │ │ │ ├── heredoc_escape_spec.cr │ │ │ │ ├── heredoc_indent_spec.cr │ │ │ │ ├── is_a_filter_spec.cr │ │ │ │ ├── is_a_nil_spec.cr │ │ │ │ ├── large_numbers_spec.cr │ │ │ │ ├── multiline_curly_block_spec.cr │ │ │ │ ├── multiline_string_literal_spec.cr │ │ │ │ ├── negated_conditions_in_unless_spec.cr │ │ │ │ ├── parentheses_around_condition_spec.cr │ │ │ │ ├── percent_literal_delimiters_spec.cr │ │ │ │ ├── redundant_begin_spec.cr │ │ │ │ ├── redundant_next_spec.cr │ │ │ │ ├── redundant_nil_in_control_expression_spec.cr │ │ │ │ ├── redundant_return_spec.cr │ │ │ │ ├── redundant_self_spec.cr │ │ │ │ ├── unless_else_spec.cr │ │ │ │ ├── verbose_block_spec.cr │ │ │ │ ├── verbose_nil_type_spec.cr │ │ │ │ └── while_true_spec.cr │ │ │ └── typing/ │ │ │ ├── macro_call_argument_type_restriction_spec.cr │ │ │ ├── method_parameter_type_restriction_spec.cr │ │ │ ├── method_return_type_restriction_spec.cr │ │ │ └── proc_literal_return_type_restriction_spec.cr │ │ ├── runner_spec.cr │ │ ├── severity_spec.cr │ │ ├── source/ │ │ │ └── rewriter_spec.cr │ │ ├── source_spec.cr │ │ ├── spec/ │ │ │ └── annotated_source_spec.cr │ │ ├── tokenizer_spec.cr │ │ └── version_spec.cr │ ├── ameba_spec.cr │ ├── fixtures/ │ │ └── .ameba.yml │ └── spec_helper.cr └── src/ ├── ameba/ │ ├── ast/ │ │ ├── flow_expression.cr │ │ ├── liveness_analyzer.cr │ │ ├── scope.cr │ │ ├── util.cr │ │ ├── variabling/ │ │ │ ├── argument.cr │ │ │ ├── assignment.cr │ │ │ ├── ivariable.cr │ │ │ ├── reference.cr │ │ │ ├── type_dec_variable.cr │ │ │ └── variable.cr │ │ └── visitors/ │ │ ├── base_visitor.cr │ │ ├── counting_visitor.cr │ │ ├── elseif_aware_node_visitor.cr │ │ ├── flow_expression_visitor.cr │ │ ├── implicit_return_visitor.cr │ │ ├── macro_reference_finder.cr │ │ ├── node_visitor.cr │ │ ├── redundant_control_expression_visitor.cr │ │ ├── scope_calls_with_self_receiver_visitor.cr │ │ ├── scope_visitor.cr │ │ └── top_level_nodes_visitor.cr │ ├── cli/ │ │ └── cmd.cr │ ├── config/ │ │ ├── loader.cr │ │ └── rule_config.cr │ ├── config.cr │ ├── ext/ │ │ └── location.cr │ ├── formatter/ │ │ ├── base_formatter.cr │ │ ├── disabled_formatter.cr │ │ ├── dot_formatter.cr │ │ ├── explain_formatter.cr │ │ ├── flycheck_formatter.cr │ │ ├── github_actions_formatter.cr │ │ ├── json_formatter.cr │ │ ├── todo_formatter.cr │ │ └── util.cr │ ├── glob_utils.cr │ ├── inline_comments.cr │ ├── issue.cr │ ├── json_schema/ │ │ └── builder.cr │ ├── presenter/ │ │ ├── base_presenter.cr │ │ ├── rule_collection_presenter.cr │ │ ├── rule_presenter.cr │ │ └── rule_versions_presenter.cr │ ├── reportable.cr │ ├── rule/ │ │ ├── base.cr │ │ ├── documentation/ │ │ │ ├── admonition.cr │ │ │ └── documentation.cr │ │ ├── layout/ │ │ │ ├── line_length.cr │ │ │ ├── trailing_blank_lines.cr │ │ │ └── trailing_whitespace.cr │ │ ├── lint/ │ │ │ ├── ambiguous_assignment.cr │ │ │ ├── assignment_in_call_argument.cr │ │ │ ├── bad_directive.cr │ │ │ ├── comparison_to_boolean.cr │ │ │ ├── debug_calls.cr │ │ │ ├── debugger_statement.cr │ │ │ ├── duplicate_branch.cr │ │ │ ├── duplicate_enum_value.cr │ │ │ ├── duplicate_method_signature.cr │ │ │ ├── duplicate_when_condition.cr │ │ │ ├── duplicated_require.cr │ │ │ ├── else_nil.cr │ │ │ ├── empty_ensure.cr │ │ │ ├── empty_expression.cr │ │ │ ├── empty_loop.cr │ │ │ ├── enum_member_name_conflict.cr │ │ │ ├── formatting.cr │ │ │ ├── hash_duplicated_key.cr │ │ │ ├── literal_assignments_in_expressions.cr │ │ │ ├── literal_in_condition.cr │ │ │ ├── literal_in_interpolation.cr │ │ │ ├── literals_comparison.cr │ │ │ ├── missing_block_argument.cr │ │ │ ├── non_existent_rule.cr │ │ │ ├── not_nil.cr │ │ │ ├── not_nil_after_no_bang.cr │ │ │ ├── percent_arrays.cr │ │ │ ├── rand_zero.cr │ │ │ ├── redundant_string_coercion.cr │ │ │ ├── redundant_with_index.cr │ │ │ ├── redundant_with_object.cr │ │ │ ├── require_parentheses.cr │ │ │ ├── self_initialize_definition.cr │ │ │ ├── shadowed_argument.cr │ │ │ ├── shadowed_exception.cr │ │ │ ├── shadowing_outer_local_var.cr │ │ │ ├── shared_var_in_fiber.cr │ │ │ ├── signal_trap.cr │ │ │ ├── spec_eq_with_bool_or_nil_literal.cr │ │ │ ├── spec_filename.cr │ │ │ ├── spec_focus.cr │ │ │ ├── syntax.cr │ │ │ ├── top_level_operator_definition.cr │ │ │ ├── trailing_rescue_exception.cr │ │ │ ├── typos.cr │ │ │ ├── unneeded_disable_directive.cr │ │ │ ├── unreachable_code.cr │ │ │ ├── unused_argument.cr │ │ │ ├── unused_block_argument.cr │ │ │ ├── unused_expression.cr │ │ │ ├── unused_rescue_variable.cr │ │ │ ├── useless_assign.cr │ │ │ ├── useless_condition_in_when.cr │ │ │ ├── useless_visibility_modifier.cr │ │ │ ├── void_outside_lib.cr │ │ │ └── whitespace_around_macro_expression.cr │ │ ├── metrics/ │ │ │ └── cyclomatic_complexity.cr │ │ ├── naming/ │ │ │ ├── accessor_method_name.cr │ │ │ ├── ascii_identifiers.cr │ │ │ ├── binary_operator_parameter_name.cr │ │ │ ├── block_parameter_name.cr │ │ │ ├── constant_names.cr │ │ │ ├── filename.cr │ │ │ ├── method_names.cr │ │ │ ├── predicate_name.cr │ │ │ ├── query_bool_methods.cr │ │ │ ├── rescued_exceptions_variable_name.cr │ │ │ ├── type_names.cr │ │ │ └── variable_names.cr │ │ ├── performance/ │ │ │ ├── any_after_filter.cr │ │ │ ├── any_instead_of_present.cr │ │ │ ├── base.cr │ │ │ ├── chained_call_with_no_bang.cr │ │ │ ├── compact_after_map.cr │ │ │ ├── excessive_allocations.cr │ │ │ ├── first_last_after_filter.cr │ │ │ ├── flatten_after_map.cr │ │ │ ├── map_instead_of_block.cr │ │ │ ├── minmax_after_map.cr │ │ │ ├── size_after_filter.cr │ │ │ └── times_map.cr │ │ ├── style/ │ │ │ ├── array_literal_syntax.cr │ │ │ ├── call_parentheses.cr │ │ │ ├── elsif.cr │ │ │ ├── guard_clause.cr │ │ │ ├── hash_literal_syntax.cr │ │ │ ├── heredoc_escape.cr │ │ │ ├── heredoc_indent.cr │ │ │ ├── is_a_filter.cr │ │ │ ├── is_a_nil.cr │ │ │ ├── large_numbers.cr │ │ │ ├── multiline_curly_block.cr │ │ │ ├── multiline_string_literal.cr │ │ │ ├── negated_conditions_in_unless.cr │ │ │ ├── parentheses_around_condition.cr │ │ │ ├── percent_literal_delimiters.cr │ │ │ ├── redundant_begin.cr │ │ │ ├── redundant_next.cr │ │ │ ├── redundant_nil_in_control_expression.cr │ │ │ ├── redundant_return.cr │ │ │ ├── redundant_self.cr │ │ │ ├── unless_else.cr │ │ │ ├── verbose_block.cr │ │ │ ├── verbose_nil_type.cr │ │ │ └── while_true.cr │ │ └── typing/ │ │ ├── macro_call_argument_type_restriction.cr │ │ ├── method_parameter_type_restriction.cr │ │ ├── method_return_type_restriction.cr │ │ └── proc_literal_return_type_restriction.cr │ ├── runner.cr │ ├── severity.cr │ ├── source/ │ │ ├── corrector.cr │ │ ├── rewriter/ │ │ │ └── action.cr │ │ └── rewriter.cr │ ├── source.cr │ ├── spec/ │ │ ├── annotated_source.cr │ │ ├── be_valid.cr │ │ ├── expect_issue.cr │ │ ├── support.cr │ │ └── util.cr │ ├── tokenizer.cr │ └── version.cr ├── ameba.cr ├── cli.cr ├── contrib/ │ └── read_type_doc.cr └── json-schema-builder.cr