Work towards https://github.com/dart-lang/sdk/issues/62686 `dart analyze` uses an 'analysis.setAnalysisRoots' "command" to let the analysis server know that the user requested, for example, `dart analyze foo` or `dart analyze foo/bar.dart`. This was not conveyed to analyzer plugins, so analyzer plugins will always analyze the entire context collection. (For some reason, only files in the "analysis roots" were reported in stdout; maybe DAS or dartdev does its own filtering on diagnostics.) This change forwards the `setAnalysisRoots` request to DAS plugins using a new protocol message that mirrors the one for the server. We should not change the behavior of `analysis.setContextRoots` for legacy plugins, so we keep sending that request as per usual. Then we send `analysis.setAnalysisRoots` at the same time. If we receive an `analysis.setAnalysisRoots` message, dispose and delete references to the existing context collection, and instantiate a new one, with the specified `included` and `excluded` paths. Change-Id: I53627da1c30351a22b5e5410a557bf486620a7aa Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/505041 Commit-Queue: Samuel Rawlins <srawlins@google.com> Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
A framework for building plugins for the analysis server.
Warning
This package is for legacy support and is not recommended for new plugin development.
For modern plugin implementations, use the
analysis_server_pluginpackage instead.See its documentation for the latest architecture and examples.
Usage
Note: The plugin support is not currently available for general use.
Plugins are written in Dart and are run in the same VM as the analysis server. The analysis server runs each plugin in a separate isolate and communicates with the plugin using a plugin API. This API is similar to the API used by the analysis server to communicate with clients.
Plugins are automatically discovered and run by the analysis server.
This package contains support code to make it easier to write a plugin. There is a tutorial describing how to use the support in this package.
Support
Post issues and feature requests on the issue tracker.
Questions and discussions are welcome at the Dart Analyzer Discussion Group.
License
See the LICENSE file.