Commit Graph

315 Commits

Author SHA1 Message Date
Danny Tuppeny 343ffd1ea8 [analysis_server] Fix URI/path comparisons for Windows in the Scheduler
We can't use `uri.path` to get a file path from a `file:///` URI because on Windows it will be incorrect. Instead, we should use `toFilePath()`... however, it's possible in future we'll have non-file URIs here (macros etc.), so it's better to compare URIs directly.

Fixes https://github.com/dart-lang/sdk/issues/59615

Change-Id: I9b4badb96edc9f7dae57b1fa399d0e4fef8bb86a
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/397620
Reviewed-by: Keerti Parthasarathy <keertip@google.com>
Reviewed-by: Jaime Wren <jwren@google.com>
Commit-Queue: Keerti Parthasarathy <keertip@google.com>
2024-11-26 21:52:58 +00:00
Keerti Parthasarathy f7c9899217 [Message scheduler] Implement handling one message at a time.
Change-Id: I2294a7f209414a499fce05c0180358ec271349fe
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/386581
Commit-Queue: Keerti Parthasarathy <keertip@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2024-11-22 01:12:11 +00:00
Sam Rawlins e5274a522e DAS: Use new package:args API for less casting
Change-Id: Ib0fbdebb6c703202f13330d7bf53eade26fa73de
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/396040
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Auto-Submit: Samuel Rawlins <srawlins@google.com>
2024-11-18 19:34:39 +00:00
Sam Rawlins fbf331e0dd DAS: reformat source code with tall-style
Change-Id: I42b4a44fd6a2197e499e8623274b3cd1a4b5556f
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/394003
Commit-Queue: Samuel Rawlins <srawlins@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Bob Nystrom <rnystrom@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2024-11-06 23:04:00 +00:00
Keerti Parthasarathy da1930ab6c Add cancellation token for legacy requests in message scheduler
Change-Id: I6b0837edbf373d2b8b72b16ed47d157c097347d7
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/393681
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Keerti Parthasarathy <keertip@google.com>
2024-11-06 12:58:02 +00:00
Keerti Parthasarathy 1d1cbf2837 Move cancellation token creation to MessageScheduler
Change-Id: I1def99245a7f063c5613cb9b82d75b686aff9ce7
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/391203
Commit-Queue: Keerti Parthasarathy <keertip@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2024-10-22 16:23:09 +00:00
Danny Tuppeny 0bd1bffa84 [analysis_server] Show analysis driver scheduler timings in the diagnostic pages
The `AnalysisDriverScheduler` already keeps timings of all of its operations (in `accumulatedPerformance`), but they're not easily accessible to users and might help track down some kinds of performance issues.

This adds a new page to the diagnostics server that shows the timings, as well as a reset button to clear them so they can collect numbers just for a specific operation(s).

It involves some tweaks to the server to handle `POST` (because we shouldn't really use `GET` to mutate anything).

Change-Id: Ia49d471aaa1637a0c978f75569556b26982367d8
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/388561
Reviewed-by: Samuel Rawlins <srawlins@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
2024-10-07 17:10:16 +00:00
Danny Tuppeny df010e598f Support DTD requests in the message scheduler
Most DTD tests are currently skipped because we're not currently exposing the LSP handlers, however I temporarily added them and verified with this change that those tests pass (both success and error requests).

Change-Id: I001b7b07c99be18a3711a434bdd081a631e4b4c2
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/383842
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Keerti Parthasarathy <keertip@google.com>
Reviewed-by: Keerti Parthasarathy <keertip@google.com>
2024-09-10 16:42:47 +00:00
Keerti Parthasarathy caa36cfe83 Add a MessageScheduler queue that all incoming messages to the analysis server go through.
Change-Id: I3770b5a1a8faa391fb35a5a1e3d2678dbc4fb3f2
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/383703
Commit-Queue: Keerti Parthasarathy <keertip@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2024-09-05 20:45:59 +00:00
Danny Tuppeny 916272331b [analysis_server] Remove the singleton uriConverter and pass explicitly to all toJson/fromJson methods
This avoids accidentally using the converter when talking to plugins, (at least for now) URIs are never expected, and file paths should always be used regardless of which mode the server is in.

This unfortunately touches a _lot_ of code, so I've pushed in many separate patch sets to Gerrit.

Fixes https://github.com/Dart-Code/Dart-Code/issues/5156

Change-Id: I312c3e2cbc35a05a078aaa0138aec7288b3c7dd6
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/373745
Reviewed-by: Samuel Rawlins <srawlins@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
2024-07-02 14:15:11 +00:00
Danny Tuppeny 3833a7bd3e [dartdev]/[analysis_server] Report server errors to "dart analyze" to prevent misleading output for parse/analysis exceptions
If analysis failed due to an exception, "dart analyze" may still report "no issues found" because it didn't get any server errors.

It didn't get server errors for a number of reasons:

1. Analysis errors were silent (see https://github.com/dart-lang/sdk/issues/39284)
2. `server` in ErrorNotifier was always `null` because the code that set it did so too early
3. `ErrorNotifier` was never added to the instrumentation service, so never got called anyway

Additionally, "dart analyze" printed "No errors found!" even if server errors occurred (as long as the server didn't crash).

This change fixes up the server reference in ErrorNotifier, adds it to the instrumentation service and uses a new flag ("--disable-silent-analysis-exceptions") to allow opting-in to getting analysis errors to the client. It also updates "dart analyze" to not print "No errors found!" (and to not use a 0 exit code) when server errors occur.

Because this change "fixes" ErrorNotifier, it's possible that with this change clients will now get additional error notifications (non-silent exceptions that were being dropped previously) which could result in users seeing more errors - but presumably errors that should have been reported before anyway.

Fixes https://github.com/dart-lang/sdk/issues/49931

Change-Id: I4948117c78b8f382550b7641076de443250bba6b
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/358902
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
2024-05-28 19:10:40 +00:00
Konstantin Shcheglov 017bed7b9a CQ. Enable unnecessary_final in analysis_server/
Change-Id: Ieb62a1c774a5e8f5a22deaa8e8e5fff6f9f849dc
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/366960
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Phil Quitslund <pquitslund@google.com>
2024-05-16 21:20:28 +00:00
Devon Carew 8d6ad53c7e [pkg/analysis_server] remove use of package:usage
Change-Id: I3a18670b6131f4e8c445217f1b302e64a74f591c
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/365489
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Devon Carew <devoncarew@google.com>
2024-05-07 22:11:29 +00:00
Konstantin Shcheglov 5c07c89a35 Enable 'unnecessary_final' in analysis_server/.
Change-Id: I71ee934b915d4aff924cf5925f87bcc9adc6c015
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/362901
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2024-04-16 20:04:15 +00:00
Konstantin Shcheglov 8968e5500a CQ. Enable avoid_redundant_argument_values in analysis_server/
Change-Id: If9c09f81bdbac890553573a8491ca27cb4f22dd7
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/353805
Reviewed-by: Phil Quitslund <pquitslund@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2024-02-26 19:51:41 +00:00
Brian Wilkerson 2404a0cb4c Add a flag to disable debouncing of status notifications
I tried to find tests related to the server's command-line options, but
we don't appear to test them.

Change-Id: I0c840deca19402acc59fd5c126be46e4bb2de81d
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/348765
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
2024-01-27 16:08:10 +00:00
Sam Rawlins 3f91beb64f analyzer: Separate FixProcessor from built-in fix producer mappings
In order for CorrectionProducers to be used in analyzer plugins, we
need to access DartFixContributor which needs to compute fixes via
FixProcessor. So both DartFixContributor and FixProcessor need to be
moved into analyzer_plugin (eventually). For now, to support
prototyping, I am moving FixProcessor to its own library, and
separating all of the built in mappings (from diagnostic to producer
generators).

I think this separation actually stands on its own as being tidier,
simplifying fix_internal.dart, and separating code from data, as it
were.

Work towards https://github.com/dart-lang/sdk/issues/53402

Cq-Include-Trybots: luci.dart.try:flutter-analyze-try,analyzer-win-release-try
Change-Id: I3b4fadc7ed94c23597d72bef7dcd832380d34e9a
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/345561
Commit-Queue: Samuel Rawlins <srawlins@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
2024-01-15 23:41:29 +00:00
Parker Lougheed 597d7e4d82 [analysis_server] Verify training dev server waits for analysis to complete
Without this fix, the notification handlers were being called multiple times
due to the original listener not closing in time.

Fixes https://github.com/dart-lang/sdk/issues/51017
Closes https://github.com/dart-lang/sdk/issues/54161

Bug: https://github.com/dart-lang/sdk/issues/51017
Change-Id: I969e46496a9a330252cf8247b97cb057befabbc1
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/337882
Reviewed-by: Samuel Rawlins <srawlins@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
2023-11-27 18:54:59 +00:00
pq 440ea59ee0 enable flutter_style_todos in server
Change-Id: I4921d538e1498e66c8cab2d84dfcad21d1a7b555
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/335952
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Phil Quitslund <pquitslund@google.com>
2023-11-14 21:08:12 +00:00
Helin Shiah 6b03758f76 Collect analytics from VS Code remote usages
This is the ID sometimes sent for internal VS Code users, and we want to capture these users as well for some internal IDE tracking.

Change-Id: Id3b5aa89eacefb873e88b59745014454a89e6a73
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/321323
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Helin Shiah <helinx@google.com>
2023-08-17 20:24:30 +00:00
eliasyishak 34f0e26d45 Swapping NoopAnalytics for noop from package:unified_analytics
Change-Id: I3419a128830ae434fa37bd10a1fc8a3da146fd89
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/313880
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Elias Yishak <eliasyishak@google.com>
2023-07-14 19:15:20 +00:00
Polina Cherkasova c192336dde Add auto-snapshotting and usage reporting.
Change-Id: I84b48cc750638ab3bcc138f2a0425442559e6d54
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/304212
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Commit-Queue: Polina Cherkasova <polinach@google.com>
Reviewed-by: Ilya Yanok <yanok@google.com>
Reviewed-by: Samuel Rawlins <srawlins@google.com>
2023-05-22 18:00:26 +00:00
Ilya Yanok 0c5e1e8e48 Revert "Add auto-snapshotting and usage reporting."
This reverts commit 5fa6c5ed2a.

Reason for revert: breaks G3, we need to update //third_party/dart/leak_tracker first

Original change's description:
> Add auto-snapshotting and usage reporting.
>
> First attempt merged without passing bots and was rolled back: https://dart-review.googlesource.com/c/sdk/+/300862
>
> Change-Id: I782bf4d92394055e1f60a4275b5045e3622e239f
> Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/304101
> Reviewed-by: Samuel Rawlins <srawlins@google.com>
> Commit-Queue: Polina Cherkasova <polinach@google.com>

Change-Id: I8f1643e20f8d134cbf917dc43731798a1234cc2b
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/304181
Commit-Queue: Ilya Yanok <yanok@google.com>
Reviewed-by: Samuel Rawlins <srawlins@google.com>
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
2023-05-17 22:03:17 +00:00
Polina Cherkasova 5fa6c5ed2a Add auto-snapshotting and usage reporting.
First attempt merged without passing bots and was rolled back: https://dart-review.googlesource.com/c/sdk/+/300862

Change-Id: I782bf4d92394055e1f60a4275b5045e3622e239f
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/304101
Reviewed-by: Samuel Rawlins <srawlins@google.com>
Commit-Queue: Polina Cherkasova <polinach@google.com>
2023-05-17 17:56:47 +00:00
Daco Harkes dba0758120 Revert "Add auto-snapshotting and analytics for memory usage."
This reverts commit 5f1e7ade45.

Reason for revert: bots are failing

Original change's description:
> Add auto-snapshotting and analytics for memory usage.
>
> See video linked to issue: https://github.com/flutter/devtools/issues/5606
>
> Change-Id: I9f22031871e30bc7160e2c49b0423fb64df62223
> Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/300862
> Reviewed-by: Samuel Rawlins <srawlins@google.com>
> Reviewed-by: Jacob Richman <jacobr@google.com>

Change-Id: I54cb3943230ab1229cc8b2c9df40e9c71765df19
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/303881
Auto-Submit: Polina Cherkasova <polinach@google.com>
Reviewed-by: Polina Cherkasova <polinach@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Samuel Rawlins <srawlins@google.com>
Commit-Queue: Daco Harkes <dacoharkes@google.com>
2023-05-17 07:43:26 +00:00
Polina Cherkasova 5f1e7ade45 Add auto-snapshotting and analytics for memory usage.
See video linked to issue: https://github.com/flutter/devtools/issues/5606

Change-Id: I9f22031871e30bc7160e2c49b0423fb64df62223
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/300862
Reviewed-by: Samuel Rawlins <srawlins@google.com>
Reviewed-by: Jacob Richman <jacobr@google.com>
2023-05-16 20:15:12 +00:00
Janice Collins 1abf129bf8 Enable crash reporting via the unified_analytics consent mechanism.
This pulls in the `okToSend` method from https://github.com/dart-lang/tools/pull/79 in the tools repository.

Bug: https://github.com/dart-lang/sdk/issues/28633
Change-Id: I512d041750050338699d3635ba426cc0acdd5a20
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/295380
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Janice Collins <jcollins@google.com>
Auto-Submit: Janice Collins <jcollins@google.com>
2023-04-14 17:29:28 +00:00
Janice Collins 17dd6d27cc Enable analytics support for VSCode.
Change-Id: Iea17bf917deccadb26a78470fabfb6fe5f4ada71
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/292900
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Janice Collins <jcollins@google.com>
2023-04-05 18:19:21 +00:00
Janice Collins 27d6918ab9 Update for vscode only and latest version of unified_analytics for
analysis server.

Change-Id: I6a5e8a4424ccdf8a40c08a3cd2d697c2108422e6
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/292201
Commit-Queue: Janice Collins <jcollins@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Keerti Parthasarathy <keertip@google.com>
2023-03-31 22:17:14 +00:00
Brian Wilkerson f4bbc427c3 Implement the legacy protocol for showing messages and URIs to users
There is a desire to unify the two subclasses of the analysis server,
but I didn't attempt to do that in this CL.

Change-Id: I17bbf4f6247fc547df1c82f02e74c50eabe7aadc
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/291000
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Jaime Wren <jwren@google.com>
2023-03-24 18:10:17 +00:00
Janice Collins 68353d76a4 Add a flag to disable the new unified_analytics for a single session.
- Adds a new flag, `--suppress-analytics` to the `dart` command to
  disable both the unified and the legacy analytics for a single
  session while deprecating the existing flag, `--[no-]analytics` used
  for disabling the legacy analytics on a single pass.
- Pipelines the flag from `dart` through `dart analyze` and `dart fix`
  to the execution of the analysis server.
- Updates all applicable uses of `dart analyze`, `dart fix`, and the
  analysis_server binary entry points in the SDK to disable analytics
  for the test infrastructure.

Bug: https://github.com/dart-lang/sdk/issues/49445
Change-Id: I1302cad7e04b21454aa7d9e8ee72a876b231377d
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/287661
Reviewed-by: William Hesse <whesse@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Janice Collins <jcollins@google.com>
2023-03-16 18:00:57 +00:00
Brian Wilkerson e2d8a5e66e Compute and report to analytics the flutter version
Change-Id: I1432d52f0708370cfe78accb216d93de4ce4479a
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/287244
Reviewed-by: Keerti Parthasarathy <keertip@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
2023-03-09 05:02:39 +00:00
Sam Rawlins 8a9188aae5 [analysis_server] Avoid future-of-implicit-dynamic types
This clears all of the implicit `Future<dynamic>` types in lib/.

Also a few `extends XyzVisitor<(implicit) dynamic>` are made into
`extends XyzVisitor<void>`.

Also a few raw Stream, StreamController, and Completer types.

Change-Id: I2471cc56d2d2d0545e5e103fff3189e745a54b49
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/287245
Commit-Queue: Samuel Rawlins <srawlins@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
2023-03-08 06:22:57 +00:00
Brian Wilkerson a4a255e1a9 Reland: Convert the AnalyticsManager to use the analytics package
Change-Id: Id3fd3fa172a77fe081ad3f718ba2c893dfd550e4
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/286600
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Keerti Parthasarathy <keertip@google.com>
2023-03-06 17:24:17 +00:00
Brian Wilkerson 07c5db4d53 Revert "Convert the AnalyticsManager to use the analytics package"
This reverts commit 0b8986902e.

Reason for revert: Breaks downstream systems

Original change's description:
> Convert the AnalyticsManager to use the analytics package
>
> Change-Id: Id1822668e0ed7e12e88e990fa02247616b2e54e6
> Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/285400
> Reviewed-by: Elias Yishak <eliasyishak@google.com>
> Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
> Reviewed-by: Keerti Parthasarathy <keertip@google.com>

Change-Id: Ief9d611cf1259ae460c38fadb299f9e09d74d0f3
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/286242
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Commit-Queue: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Auto-Submit: Brian Wilkerson <brianwilkerson@google.com>
2023-03-01 19:37:16 +00:00
Brian Wilkerson 0b8986902e Convert the AnalyticsManager to use the analytics package
Change-Id: Id1822668e0ed7e12e88e990fa02247616b2e54e6
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/285400
Reviewed-by: Elias Yishak <eliasyishak@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Keerti Parthasarathy <keertip@google.com>
2023-03-01 17:54:52 +00:00
Jens Johansen e45a1b362a [analyzer] Receive stdin in an isolate to increase responsiveness
Before this CL, typing in a big file in IntelliJ on Windows could lead
to longer and longer latency (read: taking longer and longer from you're
finished writing and the code is error free until the editor doesn't
report an error --- I've reached 40 seconds for a simple print statement
in my testing).

This is caused by a number of things; this CL fixes the issue by
receiving data from stdin in an isolate.

Background:
* The IntelliJ plugin sends the whole file on every change in a file.
  Files can be big though, and e.g. `ast.dart` in the kernel package is
  almost 500 kb.
* The IntelliJ plugin sends the data in chunks of size ~8192 bytes.
* On Windows (but not Linux) it is also received in chunks of that size.
* Darts `LineSplitter` is currently quadratic in behavior
  (https://github.com/dart-lang/sdk/issues/51167) (to be fixed with
  https://dart-review.googlesource.com/c/sdk/+/280100)

Even with the fix of `LineSplitter`, when editing `ast.dart` in IntelliJ
on Windows, (as long as one is typing fast enough) we'll create a longer
and longer queue of messages (with more and more latency).
In testing I reached ~40 seconds of latency, i.e. after I was done
typing and there were no more errors it took ~40 seconds before the
Analyzer and the editor agreed.

I think what's happening is something like this:
* You type a character in IntelliJ in Windows.
* IntelliJ sends two requests: Updated content (the whole file, i.e.
  lots of data) and "give me completions".
* You type another character (I seem to type one character every ~150 ms
  when typing) and it sends two new requests.
* When receiving is slow it processes everything. So it updates the file
  and marks the file for being analyzed. Then it processes the
  completion requests which "forces" the file to be analyzed. This takes
  more than 150 ms, so it gets behind. More and more so for each
  character typed.

Receiving in an isolate means that once the main thread receives
(now via a `ReceivePort`) it receives more data and can now skip some of
the completion requests meaning that it doesn't analyze the file for the
"intermittent" updates.

Change-Id: I43507412abfddcfb903d90d86226172b291bdb47
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/280321
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Jens Johansen <jensj@google.com>
2023-02-07 07:10:28 +00:00
Jens Johansen 2cfc0146e1 [analyzer] Keep stats about slow queries around longer
This CL keeps slow (500+ ms) requests around for longer (to a total of
1000 of them), saves the start time of the request and prints a little
more on the details page.

The overall idea is that having a record of slow requests is better
for debugging performance related issues than only having the newest
50 requests which basically requires one to "catch it" as it's being
slow.
Currently the 500 ms deadline for "slow" and 1000 requests saved was
just grabbed from thin air; we can adjust them later if needed.

Change-Id: Ib0d6e1fc2daad215d8745249abdc82f831a83785
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/279087
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Jens Johansen <jensj@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2023-01-18 08:26:58 +00:00
Danny Tuppeny ef2c7916f5 [analysis_server] Exclude instrumentation log file from logged watch events to prevent loops
Fixes https://github.com/dart-lang/sdk/issues/48885.

Change-Id: Idebfd9d4f2867b3053c0ece49b300926956fab2a
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/275061
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2022-12-12 20:09:36 +00:00
Brian Wilkerson 60773b9135 Rename two classes
Change-Id: I3fe6f0e4a4f3e8d04994a21c97e608fe8065e5ac
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/253902
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
2022-08-08 04:11:19 +00:00
Jaime Wren d61562d765 Extend the LSP Analysis Server support to include the DetachableFileSystemManager support
The DetachableFileSystemManager API also changes slightly with this change resolving a TODO.

Change-Id: I388b352c987e6c96f95fcabd9a532cbfcfa39e4f
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/251580
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Jaime Wren <jwren@google.com>
2022-07-14 21:10:39 +00:00
Konstantin Shcheglov 33295f8247 Add more await or unawaited() to DAS.
Change-Id: I45b2b988141c235b6fbe50e69fa018627e20e004
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/251146
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2022-07-12 00:59:01 +00:00
Brian Wilkerson 9f97ab9602 Restructure analytics support
I wanted to be able to plug in different kinds of analytics reporters,
and that's still a goal, but with the desire to make it possible for
users to see what data we are collecting I needed to change the level
at which reporters are plugged in.

This CL doesn't change the behavior of the code, but it does split the
classes out into separate files and collapse the AnalyticsManager class
and its subclasses into a single class, requiring that different
reporters be implemented by implementing the Analytics class instead.

Change-Id: Ia98ff225f97ae747d89c61fe98f520ce0b5e9961
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/249943
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
2022-06-27 21:19:32 +00:00
Sam Rawlins 567b45fb1d Add the enable-experiment flag back to DAS
Bug: https://github.com/dart-lang/sdk/issues/48960
Change-Id: I6576f45e63e28902986db844df49a06a71385704
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/245202
Commit-Queue: Samuel Rawlins <srawlins@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
2022-06-16 16:26:39 +00:00
Brian Wilkerson 3e1bad6e7a Record startup information for analytics
In order to avoid passing several pieces of data through several layers
of the API, this change passes the analytics manager down. This means
that we're creating the manager earlier, but I think it keeps the code
cleaner.

Change-Id: I096e416c1aa445f5f7382ae666b3d02d0abf0a0f
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/246320
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
2022-05-27 19:29:20 +00:00
Danny Tuppeny 5f15aefcab [analysis_server] Record timings for recent LSP requests and show in server diagnostics
Change-Id: I1bfb03faa9ce3240c700c93cb4ab677dc1aff520
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/243820
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
2022-05-05 15:29:55 +00:00
Konstantin Shcheglov 833795d54c Enforce use_super_parameters in analysis_server/.
Change-Id: I834e56b62df36782772e299e4279c408e9f8ec0d
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/241241
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2022-04-15 18:13:44 +00:00
pq 16b436151a migrate server to recommended lints
See: https://github.com/dart-lang/sdk/issues/48785

Change-Id: I1bec40cc0b52e5df5f07c35ec993e08c56a59cbe
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/240907
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Phil Quitslund <pquitslund@google.com>
2022-04-12 13:34:12 +00:00
Devon Carew 1a72a4ca8f [analysis server] remove the dep on package:cli_util
Change-Id: I9a3b7b8c23dc324ad62f0d9b456e608d365133c0
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/232423
Auto-Submit: Devon Carew <devoncarew@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2022-02-10 21:27:34 +00:00
Konstantin Shcheglov 2170c061b0 Add Element.libraryUri and CompletionSuggestion.isNotImported
Remove libraryUrisToImport and libraryUriToImportIndex.

Change-Id: Iafe27d6fb0c5ce0c623567a0384a4579274b151f
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/227580
Reviewed-by: Jaime Wren <jwren@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2022-01-11 19:53:14 +00:00