Skip to content

Commit

Permalink
[dartdev] ensure that we send absolute paths to the analysis server
Browse files Browse the repository at this point in the history
Bug: #40797
Change-Id: I4714c51b9a66dc853ba14d4893639a390cb7f5e9
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/137480
Reviewed-by: Jaime Wren <jwren@google.com>
Commit-Queue: Devon Carew <devoncarew@google.com>
  • Loading branch information
devoncarew authored and commit-bot@chromium.org committed Feb 27, 2020
1 parent ccd2f7e commit 15a3141
Show file tree
Hide file tree
Showing 2 changed files with 45 additions and 29 deletions.
69 changes: 40 additions & 29 deletions pkg/dartfix/lib/src/migrate/migrate.dart
Expand Up @@ -57,37 +57,42 @@ class MigrateCommand extends Command {
logger.stdout('Migrating ${options.directory}');
logger.stdout('');

Progress analyzingProgress =
Progress progress =
logger.progress('${ansi.emphasized('Analyzing project')}');

Server server = Server(
listener: logger.isVerbose ? _ServerListener(logger) : null,
);

await server.start(clientId: 'dart $name', clientVersion: _dartSdkVersion);
_ServerNotifications serverNotifications = _ServerNotifications(server);
await serverNotifications.listenToServer(server);
Server server =
Server(listener: logger.isVerbose ? _ServerListener(logger) : null);

Map<String, List<AnalysisError>> fileErrors = {};

serverNotifications.analysisErrorsEvents
.listen((AnalysisErrorsParams event) {
List<AnalysisError> errors = event.errors
.where((error) => error.severity == AnalysisErrorSeverity.ERROR)
.toList();
if (errors.isEmpty) {
fileErrors.remove(event.file);
} else {
fileErrors[event.file] = errors;
}
});
try {
await server.start(
clientId: 'dart $name', clientVersion: _dartSdkVersion);
_ServerNotifications serverNotifications = _ServerNotifications(server);
await serverNotifications.listenToServer(server);

serverNotifications.analysisErrorsEvents
.listen((AnalysisErrorsParams event) {
List<AnalysisError> errors = event.errors
.where((error) => error.severity == AnalysisErrorSeverity.ERROR)
.toList();
if (errors.isEmpty) {
fileErrors.remove(event.file);
} else {
fileErrors[event.file] = errors;
}
});

await server.send(ANALYSIS_REQUEST_SET_ANALYSIS_ROOTS,
AnalysisSetAnalysisRootsParams([options.directory], []).toJson());
var params =
AnalysisSetAnalysisRootsParams([options.directoryAbsolute], []);
await server.send(ANALYSIS_REQUEST_SET_ANALYSIS_ROOTS, params.toJson());

await serverNotifications.onNextAnalysisComplete;
await serverNotifications.onNextAnalysisComplete;

analyzingProgress.finish(showTiming: true);
progress.finish(showTiming: true);
} finally {
progress.cancel();
}

// Handle if there were any errors.
if (fileErrors.isEmpty) {
Expand Down Expand Up @@ -126,14 +131,20 @@ class MigrateCommand extends Command {

// Calculate migration suggestions.
logger.stdout('');
Progress migrationProgress = logger
progress = logger
.progress('${ansi.emphasized('Generating migration suggestions')}');

final EditDartfixParams params = EditDartfixParams([options.directory]);
params.includedFixes = ['non-nullable'];
Map<String, dynamic> json =
await server.send(EDIT_REQUEST_DARTFIX, params.toJson());
migrationProgress.finish(showTiming: true);
Map<String, dynamic> json;

try {
final EditDartfixParams params =
EditDartfixParams([options.directoryAbsolute]);
params.includedFixes = ['non-nullable'];
json = await server.send(EDIT_REQUEST_DARTFIX, params.toJson());
progress.finish(showTiming: true);
} finally {
progress.cancel();
}

EditDartfixResult migrationResults =
EditDartfixResult.fromJson(ResponseDecoder(null), 'result', json);
Expand Down
5 changes: 5 additions & 0 deletions pkg/dartfix/lib/src/migrate/options.dart
Expand Up @@ -2,8 +2,11 @@
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.

import 'dart:io';

import 'package:args/args.dart';
import 'package:args/src/arg_parser.dart';
import 'package:path/path.dart' as path;

class MigrateOptions {
static const ignoreErrorsOption = 'ignore-errors';
Expand All @@ -19,6 +22,8 @@ class MigrateOptions {
ignoreErrors = argResults[ignoreErrorsOption] as bool,
webPreview = argResults['web-preview'] as bool;

String get directoryAbsolute => Directory(path.canonicalize(directory)).path;

@override
String toString() {
return '[$directory]';
Expand Down

0 comments on commit 15a3141

Please sign in to comment.