diff --git a/changelog/fix_last_column_number_for_json_formatter.md b/changelog/fix_last_column_number_for_json_formatter.md new file mode 100644 index 00000000000..3065d74a835 --- /dev/null +++ b/changelog/fix_last_column_number_for_json_formatter.md @@ -0,0 +1 @@ +* [#10242](https://github.com/rubocop/rubocop/pull/10242): Fix `last_column` value for `JSONFormatter`. ([@koic][]) diff --git a/lib/rubocop/formatter/json_formatter.rb b/lib/rubocop/formatter/json_formatter.rb index 91fa29c8fb7..792e990deb8 100644 --- a/lib/rubocop/formatter/json_formatter.rb +++ b/lib/rubocop/formatter/json_formatter.rb @@ -59,12 +59,15 @@ def hash_for_offense(offense) end # 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. def hash_for_location(offense) { start_line: offense.line, start_column: offense.real_column, last_line: offense.last_line, - last_column: offense.last_column, + 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. diff --git a/spec/rubocop/formatter/json_formatter_spec.rb b/spec/rubocop/formatter/json_formatter_spec.rb index 18b318bd82f..928ef8ba858 100644 --- a/spec/rubocop/formatter/json_formatter_spec.rb +++ b/spec/rubocop/formatter/json_formatter_spec.rb @@ -166,7 +166,7 @@ start_line: 1, start_column: 1, last_line: 1, - last_column: 0, + last_column: 1, length: 0, line: 1, column: 1