bench | ||
bin | ||
spec | ||
src | ||
.editorconfig | ||
.gitignore | ||
.travis.yml | ||
LICENSE | ||
Makefile | ||
README.md | ||
shard.yml |
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
- Vim: vim-crystal (via Syntastic)
- Emacs: ameba.el
Credits & inspirations
Contributors
- veelenga Vitalii Elenhaupt - creator, maintainer