diff --git a/packages/flutter_tools/lib/src/commands/analyze.dart b/packages/flutter_tools/lib/src/commands/analyze.dart index de98d99799..d1e686e883 100644 --- a/packages/flutter_tools/lib/src/commands/analyze.dart +++ b/packages/flutter_tools/lib/src/commands/analyze.dart @@ -55,6 +55,11 @@ class AnalyzeCommand extends FlutterCommand { valueHelp: 'path-to-sdk', help: 'The path to the Dart SDK.', hide: !verboseHelp); + argParser.addOption('protocol-traffic-log', + valueHelp: 'path-to-protocol-traffic-log', + help: 'The path to write the request and response protocol. This is ' + 'only intended to be used for debugging the tooling.', + hide: !verboseHelp); // Hidden option to enable a benchmarking mode. argParser.addFlag('benchmark', diff --git a/packages/flutter_tools/lib/src/commands/analyze_base.dart b/packages/flutter_tools/lib/src/commands/analyze_base.dart index b9ee1081e9..478e52fb83 100644 --- a/packages/flutter_tools/lib/src/commands/analyze_base.dart +++ b/packages/flutter_tools/lib/src/commands/analyze_base.dart @@ -86,6 +86,7 @@ abstract class AnalyzeBase { String get sdkPath => argResults['dart-sdk'] as String ?? artifacts.getArtifactPath(Artifact.engineDartSdkPath); bool get isBenchmarking => argResults['benchmark'] as bool; bool get isDartDocs => argResults['dartdocs'] as bool; + String get protocolTrafficLog => argResults['protocol-traffic-log'] as String; static int countMissingDartDocs(List errors) { return errors.where((AnalysisError error) { diff --git a/packages/flutter_tools/lib/src/commands/analyze_continuously.dart b/packages/flutter_tools/lib/src/commands/analyze_continuously.dart index 84aa07e175..90d6dc32f1 100644 --- a/packages/flutter_tools/lib/src/commands/analyze_continuously.dart +++ b/packages/flutter_tools/lib/src/commands/analyze_continuously.dart @@ -77,6 +77,7 @@ class AnalyzeContinuously extends AnalyzeBase { platform: platform, processManager: processManager, terminal: terminal, + protocolTrafficLog: protocolTrafficLog, ); server.onAnalyzing.listen((bool isAnalyzing) => _handleAnalysisStatus(server, isAnalyzing)); server.onErrors.listen(_handleAnalysisErrors); diff --git a/packages/flutter_tools/lib/src/commands/analyze_once.dart b/packages/flutter_tools/lib/src/commands/analyze_once.dart index 6a559092c2..5e893e8e9b 100644 --- a/packages/flutter_tools/lib/src/commands/analyze_once.dart +++ b/packages/flutter_tools/lib/src/commands/analyze_once.dart @@ -95,6 +95,7 @@ class AnalyzeOnce extends AnalyzeBase { logger: logger, processManager: processManager, terminal: terminal, + protocolTrafficLog: protocolTrafficLog, ); Stopwatch timer; diff --git a/packages/flutter_tools/lib/src/dart/analysis.dart b/packages/flutter_tools/lib/src/dart/analysis.dart index ef873b2b37..66752b2c4e 100644 --- a/packages/flutter_tools/lib/src/dart/analysis.dart +++ b/packages/flutter_tools/lib/src/dart/analysis.dart @@ -29,11 +29,13 @@ class AnalysisServer { @required Logger logger, @required Platform platform, @required Terminal terminal, + String protocolTrafficLog, }) : _fileSystem = fileSystem, _processManager = processManager, _logger = logger, _platform = platform, - _terminal = terminal; + _terminal = terminal, + _protocolTrafficLog = protocolTrafficLog; final String sdkPath; final List directories; @@ -42,6 +44,7 @@ class AnalysisServer { final Logger _logger; final Platform _platform; final Terminal _terminal; + final String _protocolTrafficLog; Process _process; final StreamController _analyzingController = @@ -67,6 +70,8 @@ class AnalysisServer { '--disable-server-feature-search', '--sdk', sdkPath, + if (_protocolTrafficLog != null) + '--protocol-traffic-log=$_protocolTrafficLog', ]; _logger.printTrace('dart ${command.skip(1).join(' ')}');