castwide / solargraph

A Ruby language server.
https://solargraph.org
MIT License
1.87k stars 154 forks source link

Fix for when rubocop diagnostics returns empty string #635

Closed CKolkey closed 1 year ago

CKolkey commented 1 year ago

I have been getting the following issue with rubocop diagnostics, the result of which is that diagnostics stop updating in my editor. Here are the logs.

Running via neovim in ruby 3.1.3

[ERROR][2023-02-16 10:46:38] .../vim/lsp/rpc.lua:734    "rpc"   "bin/bundle"    "stderr"
#<Thread:0x000000010a49f420 solargraph-0.48.0/lib/solargraph/language_server/host/diagnoser.rb:45 run> terminated with exception (report_on_exception is true):\n"
[ERROR][2023-02-16 10:46:38] .../vim/lsp/rpc.lua:734    "rpc"   "bin/bundle"    "stderr"
"solargraph-0.48.0/lib/solargraph/diagnostics/rubocop.rb:35:in `rescue in diagnose': undefined method `message' for nil:NilClass (NoMethodError)
raise DiagnosticsError, \"RuboCop returned invalid data: #{e.message}\"
                                                           ^^^^^^^^

from solargraph-0.48.0/lib/solargraph/diagnostics/rubocop.rb:25:in `diagnose'
from solargraph-0.48.0/lib/solargraph/library.rb:363:in `block in diagnose'
from solargraph-0.48.0/lib/solargraph/library.rb:362:in `each_pair'
from solargraph-0.48.0/lib/solargraph/library.rb:362:in `diagnose'
from solargraph-0.48.0/lib/solargraph/language_server/host.rb:211:in `diagnose'\n"
[ERROR][2023-02-16 10:46:38] .../vim/lsp/rpc.lua:734    "rpc"   "bin/bundle"    "stderr"
from solargraph-0.48.0/lib/solargraph/language_server/host/diagnoser.rb:66:in `tick'
from solargraph-0.48.0/lib/solargraph/language_server/host/diagnoser.rb:47:in `block in start'
>>>> json-2.6.3/lib/json/common.rb:216:in `parse': unexpected token at '' (JSON::ParserError)
from json-2.6.3/lib/json/common.rb:216:in `parse'
from solargraph-0.48.0/lib/solargraph/diagnostics/rubocop.rb:31:in `diagnose'
from solargraph-0.48.0/lib/solargraph/library.rb:363:in `block in diagnose'
from solargraph-0.48.0/lib/solargraph/library.rb:362:in `each_pair'
from solargraph-0.48.0/lib/solargraph/library.rb:362:in `diagnose'
from solargraph-0.48.0/lib/solargraph/language_server/host.rb:211:in `diagnose'
from solargraph-0.48.0/lib/solargraph/language_server/host/diagnoser.rb:66:in `tick'
from solargraph-0.48.0/lib/solargraph/language_server/host/diagnoser.rb:47:in `block in start'
castwide commented 1 year ago

:+1: