diff --git a/analysis_options.yaml b/analysis_options.yaml
index b26ea47..05e042e 100644
--- a/analysis_options.yaml
+++ b/analysis_options.yaml
@@ -4,7 +4,6 @@
     implicit-casts: false
   errors:
     dead_code: error
-    override_on_non_overriding_method: error
     unused_element: error
     unused_import: error
     unused_local_variable: error
diff --git a/lib/shelf_packages_handler.dart b/lib/shelf_packages_handler.dart
index f3b5d68..677db97 100644
--- a/lib/shelf_packages_handler.dart
+++ b/lib/shelf_packages_handler.dart
@@ -41,4 +41,4 @@
 /// This is useful for ensuring that `package:` imports work for all entrypoints
 /// in Dartium.
 Handler packagesDirHandler({PackageResolver resolver}) =>
-    DirHandler("packages", packagesHandler(resolver: resolver));
+    DirHandler('packages', packagesHandler(resolver: resolver));
diff --git a/lib/src/dir_handler.dart b/lib/src/dir_handler.dart
index bd8bb8c..264b756 100644
--- a/lib/src/dir_handler.dart
+++ b/lib/src/dir_handler.dart
@@ -33,6 +33,6 @@
       return _inner(request.change(path: p.url.joinAll(segments.take(i + 1))));
     }
 
-    return Response.notFound("Not found.");
+    return Response.notFound('Not found.');
   }
 }
diff --git a/lib/src/package_config_handler.dart b/lib/src/package_config_handler.dart
index 7d192a0..563e66c 100644
--- a/lib/src/package_config_handler.dart
+++ b/lib/src/package_config_handler.dart
@@ -34,7 +34,7 @@
     return _packageHandlers.putIfAbsent(package, () {
       return AsyncHandler(_resolver.urlFor(package).then((url) {
         var handler = url == null
-            ? (_) => Response.notFound("Package $package not found.")
+            ? (_) => Response.notFound('Package $package not found.')
             : createStaticHandler(p.fromUri(url), serveFilesOutsidePath: true);
 
         return handler;
diff --git a/test/packages_handler_test.dart b/test/packages_handler_test.dart
index 75043eb..85938b6 100644
--- a/test/packages_handler_test.dart
+++ b/test/packages_handler_test.dart
@@ -14,10 +14,10 @@
   String dir;
   setUp(() {
     dir =
-        Directory.systemTemp.createTempSync("shelf_packages_handler_test").path;
+        Directory.systemTemp.createTempSync('shelf_packages_handler_test').path;
     Directory(dir).createSync();
-    Directory("$dir/foo").createSync();
-    File("$dir/foo/foo.dart")
+    Directory('$dir/foo').createSync();
+    File('$dir/foo/foo.dart')
         .writeAsStringSync("void main() => print('in foo');");
   });
 
@@ -25,115 +25,115 @@
     Directory(dir).deleteSync(recursive: true);
   });
 
-  group("packagesHandler", () {
-    test("defaults to the current method of package resolution", () async {
+  group('packagesHandler', () {
+    test('defaults to the current method of package resolution', () async {
       var handler = packagesHandler();
       var request = Request(
-          "GET",
-          Uri.parse("http://example.com/shelf_packages_handler/"
-              "shelf_packages_handler.dart"));
+          'GET',
+          Uri.parse('http://example.com/shelf_packages_handler/'
+              'shelf_packages_handler.dart'));
       var response = await handler(request);
       expect(response.statusCode, equals(200));
       expect(
-          await response.readAsString(), contains("Handler packagesHandler"));
+          await response.readAsString(), contains('Handler packagesHandler'));
     });
 
-    group("with a package root", () {
+    group('with a package root', () {
       PackageResolver resolver;
       setUp(() => resolver = PackageResolver.root(p.toUri(dir)));
 
-      test("looks up a real file", () async {
+      test('looks up a real file', () async {
         var handler = packagesHandler(resolver: resolver);
         var request =
-            Request("GET", Uri.parse("http://example.com/foo/foo.dart"));
+            Request('GET', Uri.parse('http://example.com/foo/foo.dart'));
         var response = await handler(request);
         expect(response.statusCode, equals(200));
-        expect(await response.readAsString(), contains("in foo"));
+        expect(await response.readAsString(), contains('in foo'));
       });
 
-      test("404s for a nonexistent file", () async {
+      test('404s for a nonexistent file', () async {
         var handler = packagesHandler(resolver: resolver);
         var request =
-            Request("GET", Uri.parse("http://example.com/foo/bar.dart"));
+            Request('GET', Uri.parse('http://example.com/foo/bar.dart'));
         var response = await handler(request);
         expect(response.statusCode, equals(404));
       });
     });
 
-    group("with a package config", () {
+    group('with a package config', () {
       PackageResolver resolver;
       setUp(() {
-        resolver = PackageResolver.config({"foo": p.toUri("$dir/foo")});
+        resolver = PackageResolver.config({'foo': p.toUri('$dir/foo')});
       });
 
-      test("looks up a real file", () async {
+      test('looks up a real file', () async {
         var handler = packagesHandler(resolver: resolver);
         var request =
-            Request("GET", Uri.parse("http://example.com/foo/foo.dart"));
+            Request('GET', Uri.parse('http://example.com/foo/foo.dart'));
         var response = await handler(request);
         expect(response.statusCode, equals(200));
-        expect(await response.readAsString(), contains("in foo"));
+        expect(await response.readAsString(), contains('in foo'));
       });
 
-      test("404s for a nonexistent package", () async {
+      test('404s for a nonexistent package', () async {
         var handler = packagesHandler(resolver: resolver);
         var request =
-            Request("GET", Uri.parse("http://example.com/bar/foo.dart"));
+            Request('GET', Uri.parse('http://example.com/bar/foo.dart'));
         var response = await handler(request);
         expect(response.statusCode, equals(404));
       });
 
-      test("404s for a nonexistent file", () async {
+      test('404s for a nonexistent file', () async {
         var handler = packagesHandler(resolver: resolver);
         var request =
-            Request("GET", Uri.parse("http://example.com/foo/bar.dart"));
+            Request('GET', Uri.parse('http://example.com/foo/bar.dart'));
         var response = await handler(request);
         expect(response.statusCode, equals(404));
       });
     });
   });
 
-  group("packagesDirHandler", () {
-    test("supports a directory at the root of the URL", () async {
+  group('packagesDirHandler', () {
+    test('supports a directory at the root of the URL', () async {
       var handler = packagesDirHandler();
       var request = Request(
-          "GET",
-          Uri.parse("http://example.com/packages/shelf_packages_handler/"
-              "shelf_packages_handler.dart"));
+          'GET',
+          Uri.parse('http://example.com/packages/shelf_packages_handler/'
+              'shelf_packages_handler.dart'));
       var response = await handler(request);
       expect(response.statusCode, equals(200));
       expect(
-          await response.readAsString(), contains("Handler packagesHandler"));
+          await response.readAsString(), contains('Handler packagesHandler'));
     });
 
-    test("supports a directory deep in the URL", () async {
+    test('supports a directory deep in the URL', () async {
       var handler = packagesDirHandler();
       var request = Request(
-          "GET",
-          Uri.parse("http://example.com/foo/bar/very/deep/packages/"
-              "shelf_packages_handler/shelf_packages_handler.dart"));
+          'GET',
+          Uri.parse('http://example.com/foo/bar/very/deep/packages/'
+              'shelf_packages_handler/shelf_packages_handler.dart'));
       var response = await handler(request);
       expect(response.statusCode, equals(200));
       expect(
-          await response.readAsString(), contains("Handler packagesHandler"));
+          await response.readAsString(), contains('Handler packagesHandler'));
     });
 
-    test("404s for a URL without a packages directory", () async {
+    test('404s for a URL without a packages directory', () async {
       var handler = packagesDirHandler();
       var request = Request(
-          "GET",
-          Uri.parse("http://example.com/shelf_packages_handler/"
-              "shelf_packages_handler.dart"));
+          'GET',
+          Uri.parse('http://example.com/shelf_packages_handler/'
+              'shelf_packages_handler.dart'));
       var response = await handler(request);
       expect(response.statusCode, equals(404));
     });
 
-    test("404s for a non-existent file within a packages directory", () async {
+    test('404s for a non-existent file within a packages directory', () async {
       var handler = packagesDirHandler();
       var request = Request(
-          "GET",
-          Uri.parse("http://example.com/packages/shelf_packages_handler/"
-              "non_existent.dart"));
+          'GET',
+          Uri.parse('http://example.com/packages/shelf_packages_handler/'
+              'non_existent.dart'));
       var response = await handler(request);
       expect(response.statusCode, equals(404));
     });
