Add @override annotations to flutter framework
diff --git a/packages/flutter_tools/lib/src/commands/analyze.dart b/packages/flutter_tools/lib/src/commands/analyze.dart
index f1326c3..b0a2ab3 100644
--- a/packages/flutter_tools/lib/src/commands/analyze.dart
+++ b/packages/flutter_tools/lib/src/commands/analyze.dart
@@ -118,8 +118,13 @@
     argParser.addFlag('watch', help: 'Run analysis continuously, watching the filesystem for changes.', negatable: false);
   }
 
+  @override
   String get name => 'analyze';
+
+  @override
   String get description => 'Analyze the project\'s Dart code.';
+
+  @override
   bool get requiresProjectRoot => false;
 
   bool get isFlutterRepo {
@@ -760,6 +765,7 @@
   int get startColumn => json['location']['startColumn'];
   int get offset => json['location']['offset'];
 
+  @override
   int compareTo(AnalysisError other) {
     // Sort in order of file path, error location, severity, and message.
     if (file != other.file)
@@ -775,6 +781,7 @@
     return message.compareTo(other.message);
   }
 
+  @override
   String toString() {
     String relativePath = path.relative(file);
     return '${severity.toLowerCase().padLeft(7)} • $message • $relativePath:$startLine:$startColumn';
diff --git a/packages/flutter_tools/lib/src/commands/apk.dart b/packages/flutter_tools/lib/src/commands/apk.dart
index d6dc01b..6b13c7e 100644
--- a/packages/flutter_tools/lib/src/commands/apk.dart
+++ b/packages/flutter_tools/lib/src/commands/apk.dart
@@ -136,7 +136,10 @@
 }
 
 class ApkCommand extends FlutterCommand {
+  @override
   final String name = 'apk';
+
+  @override
   final String description = 'Build an Android APK package.';
 
   ApkCommand() {
diff --git a/packages/flutter_tools/lib/src/commands/build.dart b/packages/flutter_tools/lib/src/commands/build.dart
index 04d80ce..54a5447 100644
--- a/packages/flutter_tools/lib/src/commands/build.dart
+++ b/packages/flutter_tools/lib/src/commands/build.dart
@@ -11,7 +11,10 @@
 import '../toolchain.dart';
 
 class BuildCommand extends FlutterCommand {
+  @override
   final String name = 'build';
+
+  @override
   final String description = 'Package your Flutter app into an FLX.';
 
   BuildCommand() {
@@ -42,6 +45,7 @@
     return await super.run();
   }
 
+  @override
   Future<int> runInProject() async {
     String compilerPath = argResults['compiler'];
 
diff --git a/packages/flutter_tools/lib/src/commands/create.dart b/packages/flutter_tools/lib/src/commands/create.dart
index 4024580..0610177 100644
--- a/packages/flutter_tools/lib/src/commands/create.dart
+++ b/packages/flutter_tools/lib/src/commands/create.dart
@@ -16,8 +16,13 @@
 import '../template.dart';
 
 class CreateCommand extends Command {
+  @override
   final String name = 'create';
+
+  @override
   final String description = 'Create a new Flutter project.';
+
+  @override
   final List<String> aliases = <String>['init'];
 
   CreateCommand() {
@@ -38,6 +43,7 @@
     );
   }
 
+  @override
   String get invocation => "${runner.executableName} $name <output directory>";
 
   @override
diff --git a/packages/flutter_tools/lib/src/commands/daemon.dart b/packages/flutter_tools/lib/src/commands/daemon.dart
index e2a477a..4f205e4 100644
--- a/packages/flutter_tools/lib/src/commands/daemon.dart
+++ b/packages/flutter_tools/lib/src/commands/daemon.dart
@@ -28,14 +28,20 @@
 class DaemonCommand extends FlutterCommand {
   DaemonCommand({ bool hideCommand: false }) : _hideCommand = hideCommand;
 
+  @override
   final String name = 'daemon';
+
+  @override
   final String description = 'Run a persistent, JSON-RPC based server to communicate with devices.';
   final bool _hideCommand;
 
+  @override
   bool get requiresProjectRoot => false;
 
+  @override
   bool get hidden => _hideCommand;
 
+  @override
   Future<int> runInProject() {
     printStatus('Starting device daemon...');
 
@@ -155,6 +161,7 @@
 
   FlutterCommand get command => daemon.daemonCommand;
 
+  @override
   String toString() => name;
 
   void handleCommand(String command, dynamic id, dynamic args) {
@@ -220,6 +227,7 @@
     return new Future<Null>.value();
   }
 
+  @override
   void dispose() {
     _subscription?.cancel();
   }
@@ -371,6 +379,7 @@
     return new Future<Null>.value();
   }
 
+  @override
   void dispose() {
     for (PollingDeviceDiscovery discoverer in _discoverers) {
       discoverer.dispose();
@@ -410,14 +419,17 @@
 
   Stream<LogMessage> get onMessage => _messageController.stream;
 
+  @override
   void printError(String message, [StackTrace stackTrace]) {
     _messageController.add(new LogMessage('error', message, stackTrace));
   }
 
+  @override
   void printStatus(String message) {
     _messageController.add(new LogMessage('status', message));
   }
 
+  @override
   void printTrace(String message) {
     // This is a lot of traffic to send over the wire.
   }
diff --git a/packages/flutter_tools/lib/src/commands/devices.dart b/packages/flutter_tools/lib/src/commands/devices.dart
index 1f3b071..dd94309 100644
--- a/packages/flutter_tools/lib/src/commands/devices.dart
+++ b/packages/flutter_tools/lib/src/commands/devices.dart
@@ -10,12 +10,19 @@
 import '../runner/flutter_command.dart';
 
 class DevicesCommand extends FlutterCommand {
+  @override
   final String name = 'devices';
+
+  @override
   final String description = 'List all connected devices.';
+
+  @override
   final List<String> aliases = <String>['list'];
 
+  @override
   bool get requiresProjectRoot => false;
 
+  @override
   Future<int> runInProject() async {
     if (!doctor.canListAnything) {
       printError("Unable to locate a development device; please run 'flutter doctor' for "
diff --git a/packages/flutter_tools/lib/src/commands/doctor.dart b/packages/flutter_tools/lib/src/commands/doctor.dart
index dd30c60..188024d 100644
--- a/packages/flutter_tools/lib/src/commands/doctor.dart
+++ b/packages/flutter_tools/lib/src/commands/doctor.dart
@@ -10,11 +10,16 @@
 import '../runner/version.dart';
 
 class DoctorCommand extends FlutterCommand {
+  @override
   final String name = 'doctor';
+
+  @override
   final String description = 'Show information about the installed tooling.';
 
+  @override
   bool get requiresProjectRoot => false;
 
+  @override
   Future<int> runInProject() async {
     // general info
     String flutterRoot = ArtifactStore.flutterRoot;
diff --git a/packages/flutter_tools/lib/src/commands/drive.dart b/packages/flutter_tools/lib/src/commands/drive.dart
index 5cbbe6f..72e4e70 100644
--- a/packages/flutter_tools/lib/src/commands/drive.dart
+++ b/packages/flutter_tools/lib/src/commands/drive.dart
@@ -64,8 +64,13 @@
         help: 'Listen to the given port for a debug connection.');
   }
 
+  @override
   final String name = 'drive';
+
+  @override
   final String description = 'Runs Flutter Driver tests for the current project.';
+
+  @override
   final List<String> aliases = <String>['driver'];
 
   Device _device;
diff --git a/packages/flutter_tools/lib/src/commands/install.dart b/packages/flutter_tools/lib/src/commands/install.dart
index a801b22..3e68041 100644
--- a/packages/flutter_tools/lib/src/commands/install.dart
+++ b/packages/flutter_tools/lib/src/commands/install.dart
@@ -10,9 +10,13 @@
 import '../runner/flutter_command.dart';
 
 class InstallCommand extends FlutterCommand {
+  @override
   final String name = 'install';
+
+  @override
   final String description = 'Install a Flutter app on an attached device.';
 
+  @override
   bool get requiresDevice => true;
 
   @override
diff --git a/packages/flutter_tools/lib/src/commands/listen.dart b/packages/flutter_tools/lib/src/commands/listen.dart
index 14cc781..1550a08 100644
--- a/packages/flutter_tools/lib/src/commands/listen.dart
+++ b/packages/flutter_tools/lib/src/commands/listen.dart
@@ -10,9 +10,14 @@
 import 'run.dart';
 
 class ListenCommand extends RunCommandBase {
+  @override
   final String name = 'listen';
+
+  @override
   final String description =
     'Listen for changes to files and reload the running app (Android only).';
+
+  @override
   final String usageFooter =
     'By default, only listens to "./" and "./lib/". To listen to additional directories, list them on\n'
     'the command line.';
@@ -22,8 +27,10 @@
 
   ListenCommand({ this.singleRun: false });
 
+  @override
   bool get androidOnly => true;
 
+  @override
   bool get requiresDevice => true;
 
   @override
diff --git a/packages/flutter_tools/lib/src/commands/logs.dart b/packages/flutter_tools/lib/src/commands/logs.dart
index 9170c12..5190685 100644
--- a/packages/flutter_tools/lib/src/commands/logs.dart
+++ b/packages/flutter_tools/lib/src/commands/logs.dart
@@ -9,7 +9,10 @@
 import '../runner/flutter_command.dart';
 
 class LogsCommand extends FlutterCommand {
+  @override
   final String name = 'logs';
+
+  @override
   final String description = 'Show log output for running Flutter apps.';
 
   LogsCommand() {
@@ -20,10 +23,13 @@
     );
   }
 
+  @override
   bool get requiresProjectRoot => false;
 
+  @override
   bool get requiresDevice => true;
 
+  @override
   Future<int> runInProject() async {
     Device device = deviceForCommand;
 
diff --git a/packages/flutter_tools/lib/src/commands/refresh.dart b/packages/flutter_tools/lib/src/commands/refresh.dart
index 7f7ced0..1c4b54b 100644
--- a/packages/flutter_tools/lib/src/commands/refresh.dart
+++ b/packages/flutter_tools/lib/src/commands/refresh.dart
@@ -12,15 +12,20 @@
 import '../runner/flutter_command.dart';
 
 class RefreshCommand extends FlutterCommand {
+  @override
   final String name = 'refresh';
+
+  @override
   final String description = 'Build and deploy the Dart code in a Flutter app (Android only).';
 
   RefreshCommand() {
     addTargetOption();
   }
 
+  @override
   bool get androidOnly => true;
 
+  @override
   bool get requiresDevice => true;
 
   @override
diff --git a/packages/flutter_tools/lib/src/commands/run.dart b/packages/flutter_tools/lib/src/commands/run.dart
index 09f627e..eefe535 100644
--- a/packages/flutter_tools/lib/src/commands/run.dart
+++ b/packages/flutter_tools/lib/src/commands/run.dart
@@ -53,8 +53,13 @@
 }
 
 class RunCommand extends RunCommandBase {
+  @override
   final String name = 'run';
+
+  @override
   final String description = 'Run your Flutter app on an attached device.';
+
+  @override
   final List<String> aliases = <String>['start'];
 
   RunCommand() {
@@ -76,6 +81,7 @@
         help: 'Listen to the given port for a debug connection.');
   }
 
+  @override
   bool get requiresDevice => true;
 
   @override
diff --git a/packages/flutter_tools/lib/src/commands/run_mojo.dart b/packages/flutter_tools/lib/src/commands/run_mojo.dart
index 3f9bde4..d7e1642 100644
--- a/packages/flutter_tools/lib/src/commands/run_mojo.dart
+++ b/packages/flutter_tools/lib/src/commands/run_mojo.dart
@@ -18,7 +18,10 @@
 const String _kDefaultBundlePath = 'build/app.flx';
 
 class RunMojoCommand extends FlutterCommand {
+  @override
   final String name = 'run_mojo';
+
+  @override
   final String description = 'Run a Flutter app in mojo (from github.com/domokit/mojo).';
   final bool _hideCommand;
 
@@ -37,7 +40,10 @@
     argParser.addOption('devtools-path', help: 'Path to mojo devtools\' mojo_run command.');
   }
 
+  @override
   bool get requiresProjectRoot => false;
+
+  @override
   bool get hidden => _hideCommand;
 
   // TODO(abarth): Why not use path.absolute?
diff --git a/packages/flutter_tools/lib/src/commands/stop.dart b/packages/flutter_tools/lib/src/commands/stop.dart
index fd38f38..9a4ad86 100644
--- a/packages/flutter_tools/lib/src/commands/stop.dart
+++ b/packages/flutter_tools/lib/src/commands/stop.dart
@@ -10,9 +10,13 @@
 import '../runner/flutter_command.dart';
 
 class StopCommand extends FlutterCommand {
+  @override
   final String name = 'stop';
+
+  @override
   final String description = 'Stop your Flutter app on an attached device.';
 
+  @override
   bool get requiresDevice => true;
 
   @override
diff --git a/packages/flutter_tools/lib/src/commands/test.dart b/packages/flutter_tools/lib/src/commands/test.dart
index c50cece..50d1e8e 100644
--- a/packages/flutter_tools/lib/src/commands/test.dart
+++ b/packages/flutter_tools/lib/src/commands/test.dart
@@ -23,8 +23,13 @@
     );
   }
 
+  @override
   String get name => 'test';
+
+  @override
   String get description => 'Run Flutter unit tests for the current project (Linux only).';
+
+  @override
   bool get requiresProjectRoot => false;
 
   @override
diff --git a/packages/flutter_tools/lib/src/commands/trace.dart b/packages/flutter_tools/lib/src/commands/trace.dart
index 4387a60..fe6a54f 100644
--- a/packages/flutter_tools/lib/src/commands/trace.dart
+++ b/packages/flutter_tools/lib/src/commands/trace.dart
@@ -10,8 +10,13 @@
 import '../runner/flutter_command.dart';
 
 class TraceCommand extends FlutterCommand {
+  @override
   final String name = 'trace';
+
+  @override
   final String description = 'Start and stop tracing for a running Flutter app (Android only).';
+
+  @override
   final String usageFooter =
     '\`trace\` called with no arguments will automatically start tracing, delay a set amount of\n'
     'time (controlled by --duration), and stop tracing. To explicitly control tracing, call trace\n'
@@ -25,8 +30,10 @@
         defaultsTo: '10', abbr: 'd', help: 'Duration in seconds to trace.');
   }
 
+  @override
   bool get androidOnly => true;
 
+  @override
   bool get requiresDevice => true;
 
   @override
diff --git a/packages/flutter_tools/lib/src/commands/update_packages.dart b/packages/flutter_tools/lib/src/commands/update_packages.dart
index e89c3da..4f08273 100644
--- a/packages/flutter_tools/lib/src/commands/update_packages.dart
+++ b/packages/flutter_tools/lib/src/commands/update_packages.dart
@@ -32,12 +32,17 @@
     );
   }
 
+  @override
   final String name = 'update-packages';
+
+  @override
   final String description = 'Update the packages inside the Flutter repo.';
 
+  @override
   bool get hidden => _hideCommand;
   final bool _hideCommand;
 
+  @override
   bool get requiresProjectRoot => false;
 
   @override
diff --git a/packages/flutter_tools/lib/src/commands/upgrade.dart b/packages/flutter_tools/lib/src/commands/upgrade.dart
index fbe67ee..a4b327f 100644
--- a/packages/flutter_tools/lib/src/commands/upgrade.dart
+++ b/packages/flutter_tools/lib/src/commands/upgrade.dart
@@ -11,7 +11,10 @@
 import '../runner/version.dart';
 
 class UpgradeCommand extends FlutterCommand {
+  @override
   final String name = 'upgrade';
+
+  @override
   final String description = 'Upgrade your copy of Flutter.';
 
   @override