Update dependencies and enable/fix a number of lints (#120)

diff --git a/pkgs/shelf_router_generator/analysis_options.yaml b/pkgs/shelf_router_generator/analysis_options.yaml
index 108d105..d357e1a 100644
--- a/pkgs/shelf_router_generator/analysis_options.yaml
+++ b/pkgs/shelf_router_generator/analysis_options.yaml
@@ -1 +1,63 @@
 include: package:pedantic/analysis_options.yaml
+
+analyzer:
+  strong-mode:
+    implicit-casts: false
+
+linter:
+  rules:
+    - avoid_dynamic_calls
+    - sort_pub_dependencies
+    - avoid_function_literals_in_foreach_calls
+    - avoid_private_typedef_functions
+    - avoid_redundant_argument_values
+    - avoid_renaming_method_parameters
+    - avoid_returning_null_for_void
+    - avoid_unused_constructor_parameters
+    - await_only_futures
+    - camel_case_types
+    - constant_identifier_names
+    - directives_ordering
+    - empty_statements
+    - file_names
+    - implementation_imports
+    - iterable_contains_unrelated_type
+    - join_return_with_assignment
+    - lines_longer_than_80_chars
+    - list_remove_unrelated_type
+    - missing_whitespace_between_adjacent_strings
+    - no_runtimeType_toString
+    - non_constant_identifier_names
+    - only_throw_errors
+    - overridden_fields
+    - package_names
+    - package_prefixed_library_names
+    - prefer_asserts_in_initializer_lists
+    - prefer_const_constructors
+    - prefer_const_declarations
+    - prefer_expression_function_bodies
+    - prefer_final_locals
+    - prefer_function_declarations_over_variables
+    - prefer_if_null_operators
+    - prefer_initializing_formals
+    - prefer_inlined_adds
+    - prefer_interpolation_to_compose_strings
+    - prefer_is_not_operator
+    - prefer_null_aware_operators
+    - prefer_relative_imports
+    - prefer_typing_uninitialized_variables
+    - prefer_void_to_null
+    - provide_deprecation_message
+    - test_types_in_equals
+    - throw_in_finally
+    - type_annotate_public_apis
+    - unnecessary_brace_in_string_interps
+    - unnecessary_lambdas
+    - unnecessary_null_aware_assignments
+    - unnecessary_overrides
+    - unnecessary_parenthesis
+    - unnecessary_statements
+    - unnecessary_string_interpolations
+    - use_is_even_rather_than_modulo
+    - use_string_buffers
+    - void_checks
diff --git a/pkgs/shelf_router_generator/example/main.dart b/pkgs/shelf_router_generator/example/main.dart
index ac701b8..ca68090 100644
--- a/pkgs/shelf_router_generator/example/main.dart
+++ b/pkgs/shelf_router_generator/example/main.dart
@@ -15,9 +15,10 @@
 // @dart=2.12
 
 import 'dart:async' show Future;
-import 'package:shelf_router/shelf_router.dart';
+
 import 'package:shelf/shelf.dart';
 import 'package:shelf/shelf_io.dart' as shelf_io;
+import 'package:shelf_router/shelf_router.dart';
 
 // Generated code will be written to 'main.g.dart'
 part 'main.g.dart';
@@ -28,21 +29,18 @@
   // But either all URL-parameters or none of the URL parameters must be taken
   // as parameters by the handler.
   @Route.get('/say-hi/<name>')
-  Response _hi(Request request, String name) {
-    return Response.ok('hi $name');
-  }
+  Response _hi(Request request, String name) => Response.ok('hi $name');
 
   // Embedded URL parameters may also be associated with a regular-expression
   // that the pattern must match.
   @Route.get('/user/<userId|[0-9]+>')
-  Response _user(Request request, String userId) {
-    return Response.ok('User has the user-number: $userId');
-  }
+  Response _user(Request request, String userId) =>
+      Response.ok('User has the user-number: $userId');
 
   // Handlers can be asynchronous (returning `FutureOr` is also allowed).
   @Route.get('/wave')
   Future<Response> _wave(Request request) async {
-    await Future.delayed(Duration(milliseconds: 100));
+    await Future.delayed(const Duration(milliseconds: 100));
     return Response.ok('_o/');
   }
 
@@ -53,7 +51,7 @@
   // You can catch all verbs and use a URL-parameter with a regular expression
   // that matches everything to catch app.
   @Route.all('/<ignored|.*>')
-  Response _404(Request request) => Response.notFound('Page not found');
+  Response _notFound(Request request) => Response.notFound('Page not found');
 
   // The generated function _$ServiceRouter can be used to get a [Handler]
   // for this object. This can be used with [shelf_io.serve].
@@ -64,14 +62,12 @@
   // A handler can have more that one route :)
   @Route.get('/messages')
   @Route.get('/messages/')
-  Future<Response> _messages(Request request) async {
-    return Response.ok('[]');
-  }
+  Future<Response> _messages(Request request) async => Response.ok('[]');
 
   // This nested catch-all, will only catch /api/.* when mounted above.
   // Notice that ordering if annotated handlers and mounts is significant.
   @Route.all('/<ignored|.*>')
-  Response _404(Request request) => Response.notFound('null');
+  Response _notFound(Request request) => Response.notFound('null');
 
   // The generated function _$ApiRouter can be used to expose a [Router] for
   // this object.
diff --git a/pkgs/shelf_router_generator/example/main.g.dart b/pkgs/shelf_router_generator/example/main.g.dart
index 818c193..16d9a47 100644
--- a/pkgs/shelf_router_generator/example/main.g.dart
+++ b/pkgs/shelf_router_generator/example/main.g.dart
@@ -13,7 +13,7 @@
   router.add('GET', r'/user/<userId|[0-9]+>', service._user);
   router.add('GET', r'/wave', service._wave);
   router.mount(r'/api/', service._api);
-  router.all(r'/<ignored|.*>', service._404);
+  router.all(r'/<ignored|.*>', service._notFound);
   return router;
 }
 
@@ -21,6 +21,6 @@
   final router = Router();
   router.add('GET', r'/messages', service._messages);
   router.add('GET', r'/messages/', service._messages);
-  router.all(r'/<ignored|.*>', service._404);
+  router.all(r'/<ignored|.*>', service._notFound);
   return router;
 }
diff --git a/pkgs/shelf_router_generator/lib/src/shelf_router_generator.dart b/pkgs/shelf_router_generator/lib/src/shelf_router_generator.dart
index bdeb0a6..ec6e378 100644
--- a/pkgs/shelf_router_generator/lib/src/shelf_router_generator.dart
+++ b/pkgs/shelf_router_generator/lib/src/shelf_router_generator.dart
@@ -23,15 +23,17 @@
 import 'package:meta/meta.dart';
 import 'package:shelf/shelf.dart' as shelf;
 import 'package:shelf_router/shelf_router.dart' as shelf_router;
+
+// ignore: implementation_imports
 import 'package:shelf_router/src/router_entry.dart' show RouterEntry;
 import 'package:source_gen/source_gen.dart' as g;
 
 // Type checkers that we need later
-final _routeType = g.TypeChecker.fromRuntime(shelf_router.Route);
-final _routerType = g.TypeChecker.fromRuntime(shelf_router.Router);
-final _responseType = g.TypeChecker.fromRuntime(shelf.Response);
-final _requestType = g.TypeChecker.fromRuntime(shelf.Request);
-final _stringType = g.TypeChecker.fromRuntime(String);
+const _routeType = g.TypeChecker.fromRuntime(shelf_router.Route);
+const _routerType = g.TypeChecker.fromRuntime(shelf_router.Router);
+const _responseType = g.TypeChecker.fromRuntime(shelf.Response);
+const _requestType = g.TypeChecker.fromRuntime(shelf.Request);
+const _stringType = g.TypeChecker.fromRuntime(String);
 
 /// A representation of a handler that was annotated with [Route].
 class _Handler {
@@ -43,12 +45,11 @@
 
 /// Find members of a class annotated with [shelf_router.Route].
 List<ExecutableElement> getAnnotatedElementsOrderBySourceOffset(
-    ClassElement cls) {
-  return <ExecutableElement>[
-    ...cls.methods.where(_routeType.hasAnnotationOfExact),
-    ...cls.accessors.where(_routeType.hasAnnotationOfExact)
-  ]..sort((a, b) => (a.nameOffset ?? -1).compareTo(b.nameOffset ?? -1));
-}
+        ClassElement cls) =>
+    <ExecutableElement>[
+      ...cls.methods.where(_routeType.hasAnnotationOfExact),
+      ...cls.accessors.where(_routeType.hasAnnotationOfExact)
+    ]..sort((a, b) => (a.nameOffset ?? -1).compareTo(b.nameOffset ?? -1));
 
 /// Generate a `_$<className>Router(<className> service)` method that returns a
 /// [shelf_router.Router] configured based on annotated handlers.
@@ -106,7 +107,7 @@
 
 class ShelfRouterGenerator extends g.Generator {
   @override
-  Future<String> generate(g.LibraryReader library, BuildStep step) async {
+  Future<String> generate(g.LibraryReader library, BuildStep buildStep) async {
     // Create a map from ClassElement to list of annotated elements sorted by
     // offset in source code, this is not type checked yet.
     final classes = <ClassElement, List<_Handler>>{};
@@ -262,8 +263,8 @@
   }
 }
 
-/// Type checks for the case where [shelf_router.Route.mount] is used to annotate
-/// a getter that returns a [shelf_router.Router].
+/// Type checks for the case where [shelf_router.Route.mount] is used to
+/// annotate a getter that returns a [shelf_router.Router].
 void _typeCheckMount(_Handler h) {
   if (h.element.isStatic) {
     throw g.InvalidGenerationSourceError(
diff --git a/pkgs/shelf_router_generator/pubspec.yaml b/pkgs/shelf_router_generator/pubspec.yaml
index e297c4a..3443a37 100644
--- a/pkgs/shelf_router_generator/pubspec.yaml
+++ b/pkgs/shelf_router_generator/pubspec.yaml
@@ -6,21 +6,24 @@
 homepage: https://github.com/google/dart-neats/tree/master/shelf_router_generator
 repository: https://github.com/google/dart-neats.git
 issue_tracker: https://github.com/google/dart-neats/labels/pkg:shelf_router_generator
+
 dependencies:
+  analyzer: ^1.2.0
   build: ^2.0.0
   build_config: ^0.4.0
-  source_gen: ^0.9.1
-  analyzer: ^1.2.0
-  shelf_router: ^1.0.0
   code_builder: ^3.2.0
-  shelf: ^1.1.0
-  meta: ^1.1.7
   http_methods: ^1.0.0
+  meta: ^1.1.7
+  shelf: ^1.1.0
+  shelf_router: ^1.0.0
+  source_gen: ^1.0.0
+
 dev_dependencies:
-  test: ^1.5.3
-  http: ^0.13.0
-  build_verify: ^2.0.0
   build_runner: ^1.4.0
+  build_verify: ^2.0.0
+  http: ^0.13.0
   pedantic: ^1.4.0
+  test: ^1.5.3
+
 environment:
   sdk: '>=2.11.99 <3.0.0'
diff --git a/pkgs/shelf_router_generator/test/server/api.dart b/pkgs/shelf_router_generator/test/server/api.dart
index 7392169..f27323a 100644
--- a/pkgs/shelf_router_generator/test/server/api.dart
+++ b/pkgs/shelf_router_generator/test/server/api.dart
@@ -22,19 +22,15 @@
 
 class Api {
   @Route.get('/time')
-  Response _time(Request request) {
-    return Response.ok('it is about now');
-  }
+  Response _time(Request request) => Response.ok('it is about now');
 
   @Route.get('/to-uppercase/<word|.*>')
-  Future<Response> _toUpperCase(Request request, String word) async {
-    return Response.ok(word.toUpperCase());
-  }
+  Future<Response> _toUpperCase(Request request, String word) async =>
+      Response.ok(word.toUpperCase());
 
   @Route.get(r'/$string-escape')
-  Response _stringEscapingWorks(Request request) {
-    return Response.ok('Just testing string escaping');
-  }
+  Response _stringEscapingWorks(Request request) =>
+      Response.ok('Just testing string escaping');
 
   Router get router => _$ApiRouter(this);
 }
diff --git a/pkgs/shelf_router_generator/test/server/server.dart b/pkgs/shelf_router_generator/test/server/server.dart
index 6bce173..b882bdf 100644
--- a/pkgs/shelf_router_generator/test/server/server.dart
+++ b/pkgs/shelf_router_generator/test/server/server.dart
@@ -29,9 +29,7 @@
     _server = await shelf_io.serve(_service.router, 'localhost', 0);
   }
 
-  Future<void> stop() {
-    return _server.close();
-  }
+  Future<void> stop() => _server.close();
 
   Uri get uri => Uri(
         scheme: 'http',
diff --git a/pkgs/shelf_router_generator/test/server/service.dart b/pkgs/shelf_router_generator/test/server/service.dart
index bce88dc..681038b 100644
--- a/pkgs/shelf_router_generator/test/server/service.dart
+++ b/pkgs/shelf_router_generator/test/server/service.dart
@@ -25,20 +25,17 @@
 class Service {
   @Route.get('/say-hello')
   @Route.get('/say-hello/')
-  Response _sayHello(Request request) {
-    return Response.ok('hello world');
-  }
+  Response _sayHello(Request request) => Response.ok('hello world');
 
   @Route.get('/wave')
   FutureOr<Response> _wave(Request request) async {
-    await Future.delayed(Duration(milliseconds: 50));
+    await Future.delayed(const Duration(milliseconds: 50));
     return Response.ok('_o/');
   }
 
   @Route.get('/greet/<user>')
-  Future<Response> _greet(Request request, String user) async {
-    return Response.ok('Greetings, $user');
-  }
+  Future<Response> _greet(Request request, String user) async =>
+      Response.ok('Greetings, $user');
 
   @Route.get('/hi/<user>')
   Future<Response> _hi(Request request) async {
@@ -57,7 +54,6 @@
 
 class UnrelatedThing {
   @EndPoint.put('/api/test')
-  Future<Response> unrelatedMethod(Request request) async {
-    return Response.ok('hello world');
-  }
+  Future<Response> unrelatedMethod(Request request) async =>
+      Response.ok('hello world');
 }
diff --git a/pkgs/shelf_router_generator/test/server_test.dart b/pkgs/shelf_router_generator/test/server_test.dart
index 984ebf7..28199fc 100644
--- a/pkgs/shelf_router_generator/test/server_test.dart
+++ b/pkgs/shelf_router_generator/test/server_test.dart
@@ -21,8 +21,8 @@
 
 void main() {
   final server = Server();
-  setUpAll(() => server.start());
-  tearDownAll(() => server.stop());
+  setUpAll(server.start);
+  tearDownAll(server.stop);
 
   void testGet({
     required String path,