diff --git a/analysis_options.yaml b/analysis_options.yaml
index e539e7c..71933c5 100644
--- a/analysis_options.yaml
+++ b/analysis_options.yaml
@@ -1,5 +1,5 @@
 # Dart analyzer dislikes this line. https://github.com/dart-lang/dart-pad/issues/1720
-# include: package:pedantic/analysis_options.1.9.0.yaml
+# include: package:pedantic/analysis_options.1.11.0.yaml
 
 analyzer:
   language:
@@ -16,7 +16,6 @@
 
 linter:
   rules:
-    - await_only_futures
     - directives_ordering
     - prefer_final_fields
     - prefer_final_in_for_each
diff --git a/lib/src/sdk_manager.dart b/lib/src/sdk_manager.dart
index 99e078e..03b30c5 100644
--- a/lib/src/sdk_manager.dart
+++ b/lib/src/sdk_manager.dart
@@ -78,7 +78,7 @@
   /// Read and return the Flutter sdk configuration file info
   /// (`flutter-sdk-version.yaml`).
   static Map<String, Object> getSdkConfigInfo() {
-    final File file =
+    final file =
         File(path.join(Directory.current.path, 'flutter-sdk-version.yaml'));
     return (loadYaml(file.readAsStringSync()) as Map).cast<String, Object>();
   }
@@ -88,7 +88,7 @@
   ///
   /// Note that this is an expensive operation.
   Future<FlutterSdk> createFromConfigFile() async {
-    final Map<String, Object> sdkConfig = getSdkConfigInfo();
+    final sdkConfig = getSdkConfigInfo();
 
     // flutter_sdk:
     //   channel: beta
@@ -97,8 +97,7 @@
       throw "No key 'flutter_sdk' found in sdk config file";
     }
 
-    final Map<String, Object> config =
-        (sdkConfig['flutter_sdk'] as Map).cast<String, Object>();
+    final config = (sdkConfig['flutter_sdk'] as Map).cast<String, Object>();
 
     if (config.containsKey('channel') && config.containsKey('version')) {
       throw "config file contains both 'channel' and 'version' config settings";
@@ -121,7 +120,7 @@
   Future<FlutterSdk> createUsingFlutterChannel({
     @required String channel,
   }) async {
-    final _DownloadedFlutterSdk sdk = await _cloneSdkIfNecessary();
+    final sdk = await _cloneSdkIfNecessary();
 
     // git checkout master
     await sdk.checkout('master');
@@ -146,7 +145,7 @@
   Future<FlutterSdk> createUsingFlutterVersion({
     @required String version,
   }) async {
-    final _DownloadedFlutterSdk sdk = await _cloneSdkIfNecessary();
+    final sdk = await _cloneSdkIfNecessary();
 
     // git checkout master
     await sdk.checkout('master');
@@ -159,7 +158,7 @@
   }
 
   Future<_DownloadedFlutterSdk> _cloneSdkIfNecessary() async {
-    final _DownloadedFlutterSdk sdk = _DownloadedFlutterSdk(flutterSdkPath);
+    final sdk = _DownloadedFlutterSdk(flutterSdkPath);
 
     if (!Directory(sdk.flutterSdkPath).existsSync()) {
       // This takes perhaps ~20 seconds.
diff --git a/pubspec.yaml b/pubspec.yaml
index 80888d9..3540650 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -30,7 +30,7 @@
   expected_output: ^1.2.0
   grinder: ^0.8.0
   mock_request: ^1.0.7
-  pedantic: ^1.9.0
+  pedantic: ^1.11.0
   shelf_router_generator: ^0.7.0+1
   synchronized: ^2.1.0
   test: ^1.6.4
diff --git a/tool/grind.dart b/tool/grind.dart
index 7b802af..4c8afc7 100644
--- a/tool/grind.dart
+++ b/tool/grind.dart
@@ -19,7 +19,7 @@
   return grind(args);
 }
 
-@Task("Make sure SDKs are appropriately initialized")
+@Task('Make sure SDKs are appropriately initialized')
 @Depends(setupFlutterSdk)
 void sdkInit() async {
   await SdkManager.sdk.init();
@@ -329,7 +329,7 @@
     RunOptions runOptions,
     String workingDirectory}) async {
   runOptions = mergeWorkingDirectory(workingDirectory, runOptions);
-  log("${executable} ${arguments.join(' ')}");
+  log("$executable ${arguments.join(' ')}");
   runOptions ??= RunOptions();
 
   final proc = await Process.start(executable, arguments,
diff --git a/tool/update_sdk.dart b/tool/update_sdk.dart
index c375be6..3ea0c86 100644
--- a/tool/update_sdk.dart
+++ b/tool/update_sdk.dart
@@ -11,8 +11,8 @@
   final info = DownloadingSdkManager.getSdkConfigInfo();
   print('configuration: $info\n');
 
-  final DownloadingSdkManager sdkManager = DownloadingSdkManager();
-  final FlutterSdk sdk = await sdkManager.createFromConfigFile();
+  final sdkManager = DownloadingSdkManager();
+  final sdk = await sdkManager.createFromConfigFile();
 
   print('\nSDK setup complete (${sdk.flutterSdkPath}).');
 }
