Class: RuboCop::Formatter::JSONFormatter Private
- Inherits:
-
BaseFormatter
- Object
- BaseFormatter
- RuboCop::Formatter::JSONFormatter
- Includes:
- PathUtil
- Defined in:
- lib/rubocop/formatter/json_formatter.rb
Overview
This class is part of a private API. You should avoid using this class if possible, as it may be removed or be changed in the future.
This formatter formats the report data in JSON format.
Constant Summary
Constants included from PathUtil
Instance Attribute Summary collapse
- #output_hash ⇒ Object readonly private
Attributes inherited from BaseFormatter
Instance Method Summary collapse
- #file_finished(file, offenses) ⇒ Object private
- #finished(inspected_files) ⇒ Object private
- #hash_for_file(file, offenses) ⇒ Object private
-
#hash_for_location(offense) ⇒ Object
private
TODO: Consider better solution for Offense#real_column.
- #hash_for_offense(offense) ⇒ Object private
-
#initialize(output, options = {}) ⇒ JSONFormatter
constructor
private
A new instance of JSONFormatter.
- #metadata_hash ⇒ Object private
- #started(target_files) ⇒ Object private
Methods included from PathUtil
absolute?, glob?, hidden_dir?, hidden_file?, hidden_file_in_not_hidden_dir?, match_path?, maybe_hidden_file?, relative_path, smart_path
Methods inherited from BaseFormatter
Constructor Details
#initialize(output, options = {}) ⇒ JSONFormatter
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Returns a new instance of JSONFormatter.
14 15 16 17 |
# File 'lib/rubocop/formatter/json_formatter.rb', line 14 def initialize(output, = {}) super @output_hash = { metadata: , files: [], summary: { offense_count: 0 } } end |
Instance Attribute Details
#output_hash ⇒ Object (readonly)
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
12 13 14 |
# File 'lib/rubocop/formatter/json_formatter.rb', line 12 def output_hash @output_hash end |
Instance Method Details
#file_finished(file, offenses) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
23 24 25 26 |
# File 'lib/rubocop/formatter/json_formatter.rb', line 23 def file_finished(file, offenses) output_hash[:files] << hash_for_file(file, offenses) output_hash[:summary][:offense_count] += offenses.count end |
#finished(inspected_files) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
28 29 30 31 |
# File 'lib/rubocop/formatter/json_formatter.rb', line 28 def finished(inspected_files) output_hash[:summary][:inspected_file_count] = inspected_files.count output.write output_hash.to_json end |
#hash_for_file(file, offenses) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
43 44 45 46 47 48 |
# File 'lib/rubocop/formatter/json_formatter.rb', line 43 def hash_for_file(file, offenses) { path: smart_path(file), offenses: offenses.map { |o| hash_for_offense(o) } } end |
#hash_for_location(offense) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
TODO: Consider better solution for Offense#real_column.
The minimum value of `start_column: real_column` is 1.
So, the minimum value of `last_column` should be 1.
And non-zero value of `last_column` should be used as is.
65 66 67 68 69 70 71 72 73 74 75 76 77 |
# File 'lib/rubocop/formatter/json_formatter.rb', line 65 def hash_for_location(offense) { start_line: offense.line, start_column: offense.real_column, last_line: offense.last_line, last_column: offense.last_column.zero? ? 1 : offense.last_column, length: offense.location.length, # `line` and `column` exist for compatibility. # Use `start_line` and `start_column` instead. line: offense.line, column: offense.real_column } end |
#hash_for_offense(offense) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
50 51 52 53 54 55 56 57 58 59 |
# File 'lib/rubocop/formatter/json_formatter.rb', line 50 def hash_for_offense(offense) { severity: offense.severity.name, message: offense., cop_name: offense.cop_name, corrected: offense.corrected?, correctable: offense.correctable?, location: hash_for_location(offense) } end |
#metadata_hash ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
33 34 35 36 37 38 39 40 41 |
# File 'lib/rubocop/formatter/json_formatter.rb', line 33 def { rubocop_version: RuboCop::Version::STRING, ruby_engine: RUBY_ENGINE, ruby_version: RUBY_VERSION, ruby_patchlevel: RUBY_PATCHLEVEL.to_s, ruby_platform: RUBY_PLATFORM } end |
#started(target_files) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
19 20 21 |
# File 'lib/rubocop/formatter/json_formatter.rb', line 19 def started(target_files) output_hash[:summary][:target_file_count] = target_files.count end |