This involves a large refactoring of completion_metrics.dart, extracting
out some common code into completion_metrics_base.dart
The code in completion_metrics.dart and completion_metrics_base.dart is
largely unchanged, but restructured to fit the sub-class structure.
* Rename CompletionMetricsComputer -> CompletionQualityMetricsComputer,
as this is focused on quality metrics.
* Extract out applyOverlay and removeOverlay methods.
* Extract out computeSuggestionsAndMetrics, code which is run per
ExpectedCompletion.
* Extract out setupForResolution, for code custom to the quality
computer.
The meat of this change though is in completion_metrics_client.dart:
* _AnalysisServerClient is code which was extracted from
package:dartdev/src/analysis_server.dart. It may seem like an odd
choice when we have package:analysis_server_client, but I think
dartdev's client is fairly mature in creating a short-lived client,
and handling crashes, etc. If this should be re-combined with dartdev,
I think there are open questions about where that should live, and I'd
like to address that in a follow-up.
* The client does not perform overlays yet.
* The client does not track slowest requests yet.
* The client does not have support for performance metrics which DAS
tracks itself. Adding this is high priority.
Change-Id: Ib259f78e4646d10b61559bfd5700d98a95d14d43
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/243522
Commit-Queue: Samuel Rawlins <srawlins@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>