Shard Detail

ameba v0.6.0

A static code analysis tool for Crystal
crystal linter linter-plugin

Install & Use

Add the following code to your project's shard.yml under:

dependencies to use in production
- OR -
development_dependencies to use in development


ameba:
  github: crystal-ameba/ameba
  version: 0.6.0

Readme

Ameba

Code style linter for Crystal

(a single-celled animal that catches food and moves about by extending fingerlike projections of protoplasm)

About

Ameba is a static code analysis tool for the Crystal language. It enforces a consistent Crystal code style, also catches code smells and wrong code constructions.

Usage

Run ameba binary within your project directory to catch code issues:

$ ameba
Inspecting 107 files.

...............F.....................F...............................................
.....................

src/ameba/rule/unneeded_disable_directive.cr:29:7
UselessAssign: Useless assignment to variable `s`

src/ameba/formatter/flycheck_formatter.cr:5:21
UnusedArgument: Unused argument `location`

Finished in 248.9 milliseconds

107 inspected, 2 failures.

Installation

As a project dependency:

Add this to your application's shard.yml:

development_dependencies:
  ameba:
    github: veelenga/ameba

Build bin/ameba binary within your project directory while running shards install.

You may also want to use it on Travis:

# .travis.yml
language: crystal
install:
  - shards install
script:
  - crystal spec
  - bin/ameba

Using this config Ameba will inspect files just after the specs run. Travis will also fail the build if some problems detected.

OS X

$ brew tap veelenga/tap
$ brew install ameba

From sources

$ git clone https://github.com/veelenga/ameba && cd ameba
$ make install

Configuration

Default configuration file is .ameba.yml. It allows to configure rule properties, disable specific rules and exclude sources from the rules.

Generate new file by running ameba --gen-config.

Inline disabling

One or more rules can be disabled using inline directives:

# ameba:disable LargeNumbers
time = Time.epoch(1483859302)

time = Time.epoch(1483859302) # ameba:disable LargeNumbers

Editor integration

Credits & inspirations

Contributors

  • veelenga Vitalii Elenhaupt - creator, maintainer