d0f27293ce
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>
analysis_server_plugin package
This package offers support for writing Dart analysis server plugins, for Dart 3.10 (Flutter 3.38) and later.
Analysis server plugins empower developers to contribute their own Dart static
analysis in IDEs and at the command line via dart analyze and flutter analyze. Analysis server plugins can offer the following static analyses:
- analysis rules, which report diagnostics in the IDE, and at the command line
- IDE quick fixes, which are local refactorings offered to users to correct a given diagnostic
- IDE quick assists, which are local refactorings that are offered at specific syntax nodes in code, but do not necessarily correct a static code issue
Review the following documents for how to write and how to use analysis server plugins: