Class: RuboCop::Formatter::BaseFormatter


Abstract base class for formatter, implements all public API methods.

Creating Custom Formatter

You can create a custom formatter by subclassing RuboCop::Formatter::BaseFormatter and overriding some methods or by implementing all the methods by duck typing.

Using Custom Formatter in Command Line

You can tell RuboCop to use your custom formatter with a combination of --format and --require option. For example, when you have defined MyCustomFormatter in ./path/to/my_custom_formatter.rb, you would type this command:

rubocop --require ./path/to/my_custom_formatter --format MyCustomFormatter

Note: The path passed to --require is directly passed to Kernel.require. If your custom formatter file is not in $LOAD_PATH, you need to specify the path as relative path prefixed with ./ explicitly or absolute path.

Method Invocation Order

For example, when RuboCop inspects 2 files, the invocation order should be like this:

  • #initialize

  • #started

  • #file_started

  • #file_finished

  • #file_started

  • #file_finished

  • #finished

Class Method Summary

Instance Attribute Summary

Instance Method Summary

Constructor Details

.new(output, options = {}) ⇒ BaseFormatter


  • output (IO)

    $stdout or opened file

[ GitHub ]

# File 'lib/rubocop/formatter/base_formatter.rb', line 63

def initialize(output, options = {})
  @output = output
  @options = options

Instance Attribute Details

#optionsHash (readonly)

[ GitHub ]

# File 'lib/rubocop/formatter/base_formatter.rb', line 57

attr_reader :options

#outputIO (readonly)


  • (IO)

    the IO object passed to #initialize

See Also:

  • #initialize
[ GitHub ]

# File 'lib/rubocop/formatter/base_formatter.rb', line 50

attr_reader :output

Instance Method Details

#file_finished(file, offenses)

This method returns an undefined value.

Invoked at the end of inspecting each files.


See Also:

[ GitHub ]

# File 'lib/rubocop/formatter/base_formatter.rb', line 104

def file_finished(file, offenses); end

#file_started(file, options)

This method returns an undefined value.

Invoked at the beginning of inspecting each files.


  • file (String)

    the file path

  • options (Hash)

    file specific information, currently this is always empty.

[ GitHub ]

# File 'lib/rubocop/formatter/base_formatter.rb', line 89

def file_started(file, options); end


This method returns an undefined value.

Invoked after all files are inspected or interrupted by user.


  • inspected_files (Array(String))

    the inspected file paths. This would be same as target_files passed to #started unless RuboCop is interrupted by user.

[ GitHub ]

# File 'lib/rubocop/formatter/base_formatter.rb', line 116

def finished(inspected_files); end


This method returns an undefined value.

Invoked once before any files are inspected.


  • target_files (Array(String))

    all target file paths to be inspected

[ GitHub ]

# File 'lib/rubocop/formatter/base_formatter.rb', line 76

def started(target_files); end