The default configuration of ruby-lint should be suitable for most people. However, depending on your code base you may get an unusual amount of false positives. In particular the class {RubyLint::Analysis::UndefinedMethods} can produce a lot of false positives.
ruby-lint allows developers to customize the various parts of the tool such as what kind of messages to report and what types of analysis to run. This can be done in two different ways:
- Using CLI options
- Using a configuration file
The first option is useful if you want to change something only once or if you're messing around with the various options. If you actually want your changes to stick around you'll want to use a configuration file instead.
When running the CLI ruby-lint will try to load one of the following two configuration files:
- $PWD/ruby-lint.yml
- $HOME/.ruby-lint.yml
Here $PWD
refers to the current working directory and $HOME
to the user's
home directory. If ruby-lint finds a configuration file in the current working
directory the global one will not be loaded. This allows you to use project
specific settings in combination with a global configuration file as a
fallback.
Configuration files are simple YAML files. An example of such a configuration file is the following:
---
directories:
- lib
ignore_paths:
- lib/ruby-lint/definitions
- lib/ruby-lint/cli
The requires
option can be used to specify a list of Ruby files that should
be loaded before analysis is performed. The primary use case of this option is
to load extra definitions that don't come with ruby-lint by default.
Example:
---
requires:
- ruby-lint/definitions/gems/devise
By default this option is left empty. You do not need to use this option for loading built-in definitions unless stated otherwise. For example, definitions for Rails are loaded automatically.
The report_levels
option can be used to specify a list of the enabled
reporting levels. The following levels are currently available:
- info
- warning
- error
By default all of these are enabled.
Example:
---
report_levels:
- warning
- error
The short, human readable name of the presenter to use for displaying the analysis results. The following presenters are currently available:
- text
- json
- syntastic
- emacs
The default presenter is text
.
Example:
---
presenter: text
A list of the short, human readable names of the analysis classes to enable. The following analysis classes are currently available:
argument_amount
pedantics
shadowing_variables
undefined_methods
undefined_variables
unused_variables
useless_equality_checks
By default all of these are enabled.
Example:
---
analysis_classes:
- argument_amount
- pedantics
A list of directories to search in for externally defined constants. By default
this is set to $PWD/app
and $PWD/lib
(depending on which directories
exist). For most applications you do not need to change this value.
Example:
---
directories:
- app
- lib
A list of patterns to apply to the directories
option to filter out unwanted
directories. For example, you could use this to search for files in the lib/
directory but exclude lib/foo/bar:
---
directories:
- lib
ignore_paths:
- lib/foo/bar
Example:
---
ignore_paths:
- lib/ruby-lint/definitions