No description
Find a file
2018-05-09 12:53:01 +03:00
bench Silent formatter in benchmarks 2017-11-18 00:13:14 +02:00
bin Ameba cli & binary (#7) 2017-11-01 17:21:41 +02:00
spec Do not report unneeded disable directive if directive is used one line above 2018-05-09 00:14:46 +03:00
src Support Crystal <= 0.24.2 2018-05-09 12:53:01 +03:00
.editorconfig Hello, Ameba 2017-10-26 19:46:58 +03:00
.gitignore Ignore dwarf file 2018-05-08 22:19:52 +03:00
.travis.yml Revert 6d485d4edf 2018-03-18 19:51:33 +02:00
LICENSE Allow to configure formatter via configuration file 2018-01-25 16:53:08 +02:00
Makefile Drop --no-debug flag when building 2018-04-13 20:55:35 +03:00
README.md Improve usage info & remove useless stuff 2018-05-09 00:28:06 +03:00
shard.yml v0.5.1 2018-04-12 19:22:42 +03:00

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't 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