add a --use-cfe option to flutter analyze (#20742)
* add a --use-cfe option to flutter analyze
* useCFE ==> useCfe
diff --git a/packages/flutter_tools/lib/src/commands/analyze.dart b/packages/flutter_tools/lib/src/commands/analyze.dart
index c79ba29..915eb8b 100644
--- a/packages/flutter_tools/lib/src/commands/analyze.dart
+++ b/packages/flutter_tools/lib/src/commands/analyze.dart
@@ -34,6 +34,10 @@
valueHelp: 'path-to-sdk',
help: 'The path to the Dart SDK.',
hide: !verboseHelp);
+ argParser.addFlag('use-cfe',
+ help: 'Run the analysis server with the --use-cfe option. This is a '
+ 'temporary flag for use while the analyzer migrates to the CFE.',
+ hide: !verboseHelp);
// Hidden option to enable a benchmarking mode.
argParser.addFlag('benchmark',
diff --git a/packages/flutter_tools/lib/src/commands/analyze_once.dart b/packages/flutter_tools/lib/src/commands/analyze_once.dart
index 5d49ee6..610c319 100644
--- a/packages/flutter_tools/lib/src/commands/analyze_once.dart
+++ b/packages/flutter_tools/lib/src/commands/analyze_once.dart
@@ -73,7 +73,11 @@
final String sdkPath = argResults['dart-sdk'] ?? sdk.dartSdkPath;
- final AnalysisServer server = new AnalysisServer(sdkPath, directories.toList());
+ final AnalysisServer server = new AnalysisServer(
+ sdkPath,
+ directories.toList(),
+ useCfe: argResults.wasParsed('use-cfe') ? argResults['use-cfe'] : null,
+ );
StreamSubscription<bool> subscription;
subscription = server.onAnalyzing.listen((bool isAnalyzing) {
diff --git a/packages/flutter_tools/lib/src/dart/analysis.dart b/packages/flutter_tools/lib/src/dart/analysis.dart
index ce13ccf..8c07f09 100644
--- a/packages/flutter_tools/lib/src/dart/analysis.dart
+++ b/packages/flutter_tools/lib/src/dart/analysis.dart
@@ -14,10 +14,11 @@
import '../globals.dart';
class AnalysisServer {
- AnalysisServer(this.sdkPath, this.directories);
+ AnalysisServer(this.sdkPath, this.directories, { this.useCfe });
final String sdkPath;
final List<String> directories;
+ final bool useCfe;
Process _process;
final StreamController<bool> _analyzingController =
@@ -37,6 +38,10 @@
sdkPath,
];
+ if (useCfe != null) {
+ command.add(useCfe ? '--use-cfe' : '--no-use-cfe');
+ }
+
printTrace('dart ${command.skip(1).join(' ')}');
_process = await processManager.start(command);
// This callback hookup can't throw.
diff --git a/packages/flutter_tools/test/commands/analyze_once_test.dart b/packages/flutter_tools/test/commands/analyze_once_test.dart
index 28ed74f..61cd9fe 100644
--- a/packages/flutter_tools/test/commands/analyze_once_test.dart
+++ b/packages/flutter_tools/test/commands/analyze_once_test.dart
@@ -178,6 +178,23 @@
tryToDelete(tempDir);
}
});
+
+ testUsingContext('use-cfe flag is recognized', () async {
+ const String contents = '''
+StringBuffer bar = StringBuffer('baz');
+''';
+ final Directory tempDir = fs.systemTempDirectory.createTempSync();
+ tempDir.childFile('main.dart').writeAsStringSync(contents);
+ try {
+ await runCommand(
+ command: new AnalyzeCommand(workingDirectory: fs.directory(tempDir)),
+ arguments: <String>['analyze', '--no-use-cfe'],
+ statusTextContains: <String>['No issues found!'],
+ );
+ } finally {
+ tempDir.deleteSync(recursive: true);
+ }
+ });
});
}