Upgrade dartdoc to 0.17.0 (#14929)

diff --git a/dev/bots/docs.sh b/dev/bots/docs.sh
index 58fa1b9..8324ce0 100755
--- a/dev/bots/docs.sh
+++ b/dev/bots/docs.sh
@@ -21,7 +21,7 @@
 fi
 
 # Install dartdoc.
-bin/cache/dart-sdk/bin/pub global activate dartdoc 0.16.0
+bin/cache/dart-sdk/bin/pub global activate dartdoc 0.17.0
 
 # This script generates a unified doc set, and creates
 # a custom index.html, placing everything into dev/docs/doc.
diff --git a/dev/tools/dartdoc.dart b/dev/tools/dartdoc.dart
index 161ed41..d7bec53 100644
--- a/dev/tools/dartdoc.dart
+++ b/dev/tools/dartdoc.dart
@@ -115,6 +115,11 @@
   if (args['json']) {
     dartdocBaseArgs.add('--json');
   }
+  if (args['validate-links']) {
+    dartdocBaseArgs.add('--validate-links');
+  } else {
+    dartdocBaseArgs.add('--no-validate-links');
+  }
   // Generate the documentation.
   final List<String> dartdocArgs = <String>[]..addAll(dartdocBaseArgs)..addAll(<String>[
     '--header', 'styles.html',
@@ -179,6 +184,8 @@
       help: 'Run dartdoc in checked mode.');
   parser.addFlag('json', negatable: true,
       help: 'Display json-formatted output from dartdoc and skip stdout/stderr prefixing.');
+  parser.addFlag('validate-links', negatable: true,
+      help: 'Display warnings for broken links generated by dartdoc (slow)');
   return parser;
 }