analyzer_plugin generates Legacy protocol of Dart analyzer server instead of LSP

78 Views Asked by At

I try to write some custom lint rules. To achieve this, I used the analyzer_plugin package and I set up my project as it should be. Here is a simplified excerpt of the main class :

class LintAnalyzerPlugin extends ServerPlugin {

  @override
  Future<void> analyzeFile({required AnalysisContext analysisContext, required String path}) async {

    channel.sendNotification(
      AnalysisErrorsParams(path, [getAnalysisError(path)]).toNotification(),
    );
  }
}

channel.sendNotification is called but no message is displayed into VS Code Problems panel.

After some investigation, I found out that the JSON generated for the sent notification use Dart server Legacy protocol. But the Dart analyzer server run by Dart Code extension wait for LSP (Microsoft Language Server Protocol).

Fortunately the extension offers a setting to start the server with the Legacy protocol:

"dart.useLegacyAnalyzerProtocol": true

And now the VS Code Problems panel populates sent notifications.

Unfortunately Dart Code extension advises to use LSP because the Legacy protocol will eventually be removed some day.

Is it possible to generate LSP? Or did I miss something?

If anyone has any suggestions, I'm all ears.

0

There are 0 best solutions below