diff --git a/.travis.yml b/.travis.yml
index 697317e..9b68785 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,21 +1,19 @@
 language: dart
 
 dart:
+  - 2.0.0
   - dev
 
 dart_task:
-  - dartfmt
-  - dartanalyzer
   - test
+  - dartanalyzer
 
-  # Only run one instance of the formatter and the analyzer, rather than running
+# Only run one instance of the formatter and the analyzer, rather than running
 # them against each Dart version.
 matrix:
-  exclude:
-  - dart: stable
+  include:
+  - dart: dev
     dart_task: dartfmt
-  - dart: stable
-    dart_task: dartanalyzer
 
 # Only building master means that we don't run two builds for each pull request.
 branches:
diff --git a/analysis_options.yaml b/analysis_options.yaml
new file mode 100644
index 0000000..0711aca
--- /dev/null
+++ b/analysis_options.yaml
@@ -0,0 +1,43 @@
+include: package:pedantic/analysis_options.yaml
+analyzer:
+  strong-mode:
+    implicit-casts: false
+linter:
+  rules:
+    - avoid_empty_else
+    - avoid_init_to_null
+    - avoid_null_checks_in_equality_operators
+    - avoid_unused_constructor_parameters
+    - await_only_futures
+    - camel_case_types
+    - cancel_subscriptions
+    - constant_identifier_names
+    - control_flow_in_finally
+    - directives_ordering
+    - empty_catches
+    - empty_constructor_bodies
+    - empty_statements
+    - hash_and_equals
+    - implementation_imports
+    - iterable_contains_unrelated_type
+    - library_names
+    - library_prefixes
+    - list_remove_unrelated_type
+    - non_constant_identifier_names
+    - overridden_fields
+    - package_api_docs
+    - package_names
+    - package_prefixed_library_names
+    - prefer_equal_for_default_values
+    - prefer_final_fields
+    - prefer_generic_function_type_aliases
+    - prefer_is_not_empty
+    - slash_for_doc_comments
+    - test_types_in_equals
+    - throw_in_finally
+    - type_init_formals
+    - unnecessary_brace_in_string_interps
+    - unnecessary_const
+    - unnecessary_new
+    - unrelated_type_equality_checks
+    - valid_regexps
diff --git a/lib/test_process.dart b/lib/test_process.dart
index cf99b09..733648c 100644
--- a/lib/test_process.dart
+++ b/lib/test_process.dart
@@ -82,11 +82,11 @@
       String executable, Iterable<String> arguments,
       {String workingDirectory,
       Map<String, String> environment,
-      bool includeParentEnvironment: true,
-      bool runInShell: false,
+      bool includeParentEnvironment = true,
+      bool runInShell = false,
       String description,
       Encoding encoding,
-      bool forwardStdio: false}) async {
+      bool forwardStdio = false}) async {
     var process = await Process.start(executable, arguments.toList(),
         workingDirectory: workingDirectory,
         environment: environment,
@@ -101,7 +101,7 @@
     }
 
     encoding ??= utf8;
-    return new TestProcess(process, description,
+    return TestProcess(process, description,
         encoding: encoding, forwardStdio: forwardStdio);
   }
 
@@ -113,20 +113,20 @@
   /// This is protected, which means it should only be called by subclasses.
   @protected
   TestProcess(Process process, this.description,
-      {Encoding encoding, bool forwardStdio: false})
+      {Encoding encoding, bool forwardStdio = false})
       : _process = process,
-        _stdoutSplitter = new StreamSplitter(process.stdout
+        _stdoutSplitter = StreamSplitter(process.stdout
             .transform(encoding.decoder)
             .transform(const LineSplitter())),
-        _stderrSplitter = new StreamSplitter(process.stderr
+        _stderrSplitter = StreamSplitter(process.stderr
             .transform(encoding.decoder)
             .transform(const LineSplitter())) {
     addTearDown(_tearDown);
     expect(_process.exitCode.then((_) => _logOutput()), completes,
         reason: "Process `$description` never exited.");
 
-    _stdout = new StreamQueue(stdoutStream());
-    _stderr = new StreamQueue(stderrStream());
+    _stdout = StreamQueue(stdoutStream());
+    _stderr = StreamQueue(stderrStream());
 
     // Listen eagerly so that the lines are interleaved properly between the two
     // streams.
@@ -165,9 +165,9 @@
 
     // Wait a timer tick to ensure that all available lines have been flushed to
     // [_log].
-    await new Future.delayed(Duration.zero);
+    await Future.delayed(Duration.zero);
 
-    var buffer = new StringBuffer();
+    var buffer = StringBuffer();
     buffer.write("Process `$description` ");
     if (exitCodeOrNull == null) {
       buffer.writeln("was killed with SIGKILL in a tear-down. Output:");
@@ -205,7 +205,7 @@
   /// Throws an [UnsupportedError] on Windows.
   void signal(ProcessSignal signal) {
     if (Platform.isWindows) {
-      throw new UnsupportedError(
+      throw UnsupportedError(
           "TestProcess.signal() isn't supported on Windows.");
     }
 
diff --git a/pubspec.yaml b/pubspec.yaml
index 80f4d31..3b8296e 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -1,12 +1,12 @@
 name: test_process
-version: 1.0.4
+version: 1.0.5-dev
 
 description: A package for testing subprocesses.
 author: Dart Team <misc@dartlang.org>
 homepage: https://github.com/dart-lang/test_process
 
 environment:
-  sdk: '>=2.0.0-dev.55.0 <3.0.0'
+  sdk: '>=2.0.0 <3.0.0'
 
 dependencies:
   async: '>=1.12.0 <3.0.0'
@@ -15,4 +15,5 @@
   test: '>=0.12.42 <2.0.0'
 
 dev_dependencies:
+  pedantic: ^1.0.0
   test_descriptor: ^1.0.0
diff --git a/test/test_process_test.dart b/test/test_process_test.dart
index 08d8693..85b3424 100644
--- a/test/test_process_test.dart
+++ b/test/test_process_test.dart
@@ -11,7 +11,7 @@
 import 'package:test_descriptor/test_descriptor.dart' as d;
 import 'package:test_process/test_process.dart';
 
-final throwsTestFailure = throwsA(new TypeMatcher<TestFailure>());
+final throwsTestFailure = throwsA(TypeMatcher<TestFailure>());
 
 void main() {
   group("shouldExit()", () {
@@ -106,14 +106,14 @@
     await expectLater(process.stdout, emits('ready'));
     process.signal(ProcessSignal.sighup);
     await expectLater(process.stdout, emits('HUP'));
-    process.kill();
+    await process.kill();
   }, testOn: "!windows");
 }
 
 /// Starts a Dart process running [script] in a main method.
 Future<TestProcess> startDartProcess(String script) {
   var dartPath = p.join(d.sandbox, 'test.dart');
-  new File(dartPath).writeAsStringSync('''
+  File(dartPath).writeAsStringSync('''
     import 'dart:async';
     import 'dart:convert';
     import 'dart:io';
@@ -127,5 +127,5 @@
     }
   ''');
 
-  return TestProcess.start(Platform.executable, ['--checked', dartPath]);
+  return TestProcess.start(Platform.executable, ['--enable-asserts', dartPath]);
 }
