All Versions
Latest Version
Avg Release Cycle
63 days
Latest Release
191 days ago

Changelog History

  • v0.11.0

    November 29, 2019

    šŸ†• New features & improvements

    • šŸ‘• --gen-config now does not generate a todo file if there are no linting issues, see 2704a0d
    • šŸ‘€ A new AST structure typeof is added to the list of scope, so rules now properly report unused assignment, shadowed variables etc, see 677c757

      typeof(begin foo = 1 # unused variable# ...end)

    Note: Such kind of structure is usually used as type specs when the compiler can report a problem at the compilation step instead of runtime.

    • šŸ‘• Ameba can now lint in parallel, see #118
    • šŸ†• New rule: RedundantWithIndex, see #120
    • šŸ†• New rule: RedundantWithObject, see #121

    šŸ› Bug fixes

    • šŸ‘• Lint/UnusedArgument: fails to recognized used argument inside macro #117
    • šŸ›  Generated TODO file could have duplicated sections in yaml file. This is fixed by 1115965, 4ae0195
    • šŸ›  A custom bin/ run file could be deleted even it was already created by the user. This is fixed by 4a54f6d
    • Previously Ameba reported false positiveness if argument is shadowed by instance variable:

      def bar(@foo) @foo.try do |foo| endend

    šŸ›  This is fixed by 6b56c87

  • v0.10.1

    September 14, 2019

    šŸ›  Fixes and improvements:

    • CyclomaticCompexity: report only def name b868d88
    • šŸ‘‰ Make Ameba::VERSION work with paths containing spaces #114
    • šŸ”Œ Ameba supports external plugins #112
    • ā¬‡ļø Drop support of Crystal 0.24.2 9065a5f
  • v0.10.0

    June 06, 2019
  • v0.9.2

    June 03, 2019

    šŸ‘Œ Improvements

    • Rules now have severities. The --fail-level can be set to control the level of failure #100

    šŸ› Bug fixes

    • Stop calculating cyclomatic complexity for methods which have Macro cā€¦ #99
    • šŸŽ Invalid Performance/SizeAfterFilter in macros #102
    • šŸŽ Incorrect detection of Performance/FirstLastAfterFilter when first returns more than 1 #104
  • v0.9.1

    March 23, 2019
    • šŸ‘€ Now globs can be used to exclude files as a cli argument: (see 3c5e3cd)

      $ ameba path/to/shard/*.cr !path/to/shard/lib $ ameba . !lib

    • šŸ‘€ Formatting to explain the issue at a point is slightly adjusted to be markdown compatible, see f294bb6

    • šŸ†• New integrations added:

    • šŸ†• New Rule: Metrics/CyclomaticComplexity, see #92

    • šŸ‘Œ Improved Lint/LiteralInCondition rule, so it is able to report literals properly verifying them recursively. see #96

  • v0.9.0

    January 09, 2019

    šŸ†• New Features

    • šŸ†• New rules:
      • UnreachableCode #82, #83
      • RedundantReturn #87
    • šŸ‘ Allow showing the affected code in the default report #85
    • Let Ameba explain the issue at a specified location #86
    • Codacy-Ameba integration project, which is still in review by the Codacy team.

    šŸ‘Œ Improvements

    • šŸ‘€ Correct the end location of the issue reported by ConstantNames, see e951c07
    • šŸ‘€ Correct the end location of the issue reported by MethodNames, see f8dab3b
    • šŸ‘€ Correct the line number of the issue reported by TrailingBlankLines, see 32ac199

    šŸ› Bug fixes

    • šŸ›  Fix regression with UnusedArgument rule and crystal latest release, see 60ce034
  • v0.8.1

    October 20, 2018

    šŸ‘Œ Improvements

    • šŸ³ Run ameba in docker #73
    • šŸ†• New rules:
      • Performance/SizeAfterFilter #74
      • Performance/AnyAfterFilter #75
      • Performance/FirstLastAfterFilter #76

    šŸ›  Bugfixes

    • šŸ”§ Generate UTC (instead of local) time in a configuration file 18ac04d
    • Correctly process record declaration at a top level #78
    • šŸ›  Fix Style/RedundantBegin: begin-end in a proc literal 12aa48c
  • v0.8.0

    August 15, 2018

    šŸ†• New Features

    • šŸ’… Now rules have namespaces (i.e. style, lint, layout), see #63
    • šŸ‘€ It became possible to run only rules that belong to a specific namespace, see #65

      $ ameba --only Style,Lint $ ameba --except Style

    • šŸ‘€ It became possible to disable a group of rules by inline directive, see 98f0aa7

      time = Time.epoch(1483859302) # ameba:disable Style, Lint

    šŸ‘Œ Improvements

    • šŸ›  Fix Makefile to avoid rebuild if bin/ameba exists, see #69
    • šŸ‘€ Disable PredicateName and LargeNumbers rules by default, see 970ca4b
    • 0ļøāƒ£ Now ameba accepts --all cli flag, that enables all available rules (even if they are disabled by default), 248c5a6
    • āž• Added --no-color cli flag to disable colorizing, see d60aea1

    šŸ›  Bugfixes

    • šŸ‘€ Correctly handle type declarations in scopes, see 04c7300
    • šŸ‘€ Ignore outer shadowing of throwaway variables, see dbac46b
  • v0.7.0

    June 15, 2018

    šŸ†• New Features:

    • Now Ameba has a Roadmap
    • šŸš€ Crystal 0.25.0 support, see #57
    • šŸ†• New rule ShadowingOuterLocalVar, which detects the shadowing of outer local variables, see #59
    • šŸ†• New rule ShadowedArgument, which detects the shadowing of arguments, see #60

    šŸ‘Œ Improvements:

    • šŸ‘€ Now it is possible to include/exclude files in a config using a wildcard, see #61
    • šŸ‘€ Error is renamed to Issue which is semantically more correct, see #62
    • šŸ‘€ JSON reporter now reports the end location of the issue, see #62

    šŸ›  Bugfixing:

    • šŸ‘€ Now LargeNumbers rule doesn't report false positiveness for float number with less than 3 digits after comma, see 1cea21b
    • šŸ‘€ Now RedundantBegin rule does not report false positiveness if there is an inner error handler, see 3887da1, #56
  • v0.6.0

    May 13, 2018

    šŸ†• New features:

    • Detection of useless assignments #41
    • Detection of unused arguments #52
    • JSON output formatter #54
    • šŸ‘• SublimeText linter plugin #55

    šŸ‘Œ Improvements:

    • āž• Add a space delimiter to duplicated hash keys d307f01
    • ā¬‡ļø Drop --no-debug flag when building 5647621
    • Constantize error messages #50
    • šŸ‘Œ Improve usage info 58e6b42

    šŸ›  Bugfixes:

    • Do not report unneeded disable directive if the directive is used one line above 1fc0c52
    • Ignore config if todo formatter is used 6579c8f