No description
Find a file
2018-12-15 22:16:40 +02: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 UnusedArgument: fix crystal upgrade regression 2018-12-12 22:21:33 +02:00
src Remove unneded argument 2018-12-15 22:16:40 +02:00
.dockerignore Use make to build ameba in docker, add installation info 2018-08-25 13:55:07 +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 Crystal code formatting check on Travis 2018-09-03 23:03:52 +03:00
Dockerfile Use make to build ameba in docker, add installation info 2018-08-25 13:55:07 +03:00
LICENSE Allow to configure formatter via configuration file 2018-01-25 16:53:08 +02:00
Makefile Add --all cli flag that enables all available rules 2018-07-04 15:20:35 +03:00
README.md Show affected code while using a default formatter 2018-12-12 21:45:00 +02:00
shard.yml Bump v0.8.1 2018-10-20 18:27:34 +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.

See also Roadmap.

Usage

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

$ ameba
Inspecting 107 files.

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

src/ameba/formatter/flycheck_formatter.cr:4:33
Lint/UnusedArgument: Unused argument `location`
> source.issues.each do |e, location|
                            ^

src/ameba/formatter/base_formatter.cr:12:7
Lint/UselessAssign: Useless assignment to variable `s`
> return s += issues.size
         ^

Finished in 542.64 milliseconds

129 inspected, 2 failures.

Installation

As a project dependency:

Add this to your application's shard.yml:

development_dependencies:
  ameba:
    github: veelenga/ameba
    version: 0.8.1

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

Docker

Build the image:

$ docker build -t ameba/ameba .

To use the resulting image on a local source folder, mount the current (or target) directory into /src:

$ docker run -v $(pwd):/src ameba/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.

Only/Except

One or more rules, or a one or more group of rules can be included or excluded via command line arguments:

$ ameba --only   Lint/Syntax # runs only Lint/Syntax rule
$ ameba --only   Style,Lint  # runs only rules from Style and Lint groups
$ ameba --except Lint/Syntax # runs all rules except Lint/Syntax
$ ameba --except Style,Lint  # runs all rules except rules in Style and Lint groups

Inline disabling

One or more rules or one or more group of rules can be disabled using inline directives:

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

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

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

Editor integration

Credits & inspirations

Contributors

  • veelenga Vitalii Elenhaupt - creator, maintainer