diff --git a/analysis_options.yaml b/analysis_options.yaml
index 8dc8263..4190e9a 100644
--- a/analysis_options.yaml
+++ b/analysis_options.yaml
@@ -20,10 +20,12 @@
     - directives_ordering
     - only_throw_errors
     - package_api_docs
+    - prefer_const_declarations
+    - prefer_final_locals
+    - prefer_single_quotes
     - test_types_in_equals
     - throw_in_finally
-    - prefer_final_locals
+    - unnecessary_raw_strings
     - use_if_null_to_convert_nulls_to_bools
     - use_raw_strings
     - use_super_parameters
-    - unnecessary_raw_strings
diff --git a/lib/src/inline_syntaxes/code_syntax.dart b/lib/src/inline_syntaxes/code_syntax.dart
index efc415d..afd6371 100644
--- a/lib/src/inline_syntaxes/code_syntax.dart
+++ b/lib/src/inline_syntaxes/code_syntax.dart
@@ -20,7 +20,7 @@
   //
   // This conforms to the delimiters of inline code, both in Markdown.pl, and
   // CommonMark.
-  static final String _pattern = r'(`+(?!`))((?:.|\n)*?[^`])\1(?!`)';
+  static const _pattern = r'(`+(?!`))((?:.|\n)*?[^`])\1(?!`)';
 
   CodeSyntax() : super(_pattern);
 
diff --git a/lib/src/inline_syntaxes/color_swatch_syntax.dart b/lib/src/inline_syntaxes/color_swatch_syntax.dart
index 0998d74..e44fdbf 100644
--- a/lib/src/inline_syntaxes/color_swatch_syntax.dart
+++ b/lib/src/inline_syntaxes/color_swatch_syntax.dart
@@ -35,7 +35,7 @@
   /// * `hsl(540,70%,50%)`
   /// * `HSLA(540,70%,50%,0.3)`
   /// * `Hsla(540,70%,50%,0.3)`
-  static final String _pattern =
+  static const _pattern =
       '`((#([A-Fa-f0-9]{3}|[A-Fa-f0-9]{4}|[A-Fa-f0-9]{6}|[A-Fa-f0-9]{8}))|'
       r'([Rr][Gg][Bb][Aa]?\((\d+[%]?),(\d+[%]?),(\d+[%]?),?(\d+\.?\d+[%]?)?\))|'
       r'([Hh][Ss][Ll][Aa]?\((\d+[%]?),(\d+[%]?),(\d+[%]?),?(\d+\.?\d+[%]?)?\)))`';
diff --git a/lib/src/inline_syntaxes/delimiter_syntax.dart b/lib/src/inline_syntaxes/delimiter_syntax.dart
index 7b48ce2..4c71b17 100644
--- a/lib/src/inline_syntaxes/delimiter_syntax.dart
+++ b/lib/src/inline_syntaxes/delimiter_syntax.dart
@@ -217,7 +217,7 @@
       ']');
 
   // TODO(srawlins): Unicode whitespace
-  static final String whitespace = ' \t\r\n';
+  static const whitespace = ' \t\r\n';
 
   @override
   Text node;
diff --git a/lib/src/inline_syntaxes/email_autolink_syntax.dart b/lib/src/inline_syntaxes/email_autolink_syntax.dart
index f5b5962..e7b90ff 100644
--- a/lib/src/inline_syntaxes/email_autolink_syntax.dart
+++ b/lib/src/inline_syntaxes/email_autolink_syntax.dart
@@ -12,7 +12,7 @@
 ///
 /// See <http://spec.commonmark.org/0.28/#email-address>.
 class EmailAutolinkSyntax extends InlineSyntax {
-  static final _email =
+  static const _email =
       r'''[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}'''
       r'''[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*''';
 
diff --git a/test/document_test.dart b/test/document_test.dart
index 8a26900..42ca40f 100644
--- a/test/document_test.dart
+++ b/test/document_test.dart
@@ -54,7 +54,7 @@
 
       test('encodeHtml spaces are preserved in text', () {
         // Example to get a <p> tag rendered before a text node.
-        final contents = 'Sample\n\n<pre>\n A\n B\n</pre>';
+        const contents = 'Sample\n\n<pre>\n A\n B\n</pre>';
         final document = Document(encodeHtml: true);
         final lines = LineSplitter.split(contents).toList();
         final nodes = BlockParser(lines, document).parseLines();
@@ -64,7 +64,7 @@
 
       test('encode double quotes, greater than, and less than when escaped',
           () {
-        final contents = r'\>\"\< Hello';
+        const contents = r'\>\"\< Hello';
         final document = Document(encodeHtml: true);
         final nodes = document.parseInline(contents);
         expect(nodes, hasLength(1));
@@ -113,7 +113,7 @@
       });
 
       test('leave double quotes, greater than, and less than when escaped', () {
-        final contents = r'\>\"\< Hello';
+        const contents = r'\>\"\< Hello';
         final document = Document(encodeHtml: false);
         final nodes = document.parseInline(contents);
         expect(nodes, hasLength(1));
diff --git a/tool/dartdoc_compare.dart b/tool/dartdoc_compare.dart
index e0195ba..7186d79 100644
--- a/tool/dartdoc_compare.dart
+++ b/tool/dartdoc_compare.dart
@@ -121,7 +121,7 @@
       }
       final out = Directory.systemTemp
           .createTempSync('dartdoc-compare-${markdownRef}__');
-      final cmd = 'dart';
+      const cmd = 'dart';
       final args = [dartdocBin, '--output=${out.path}'];
 
       if (sdk) {
diff --git a/tool/stats.dart b/tool/stats.dart
index a212e6c..d09b0df 100644
--- a/tool/stats.dart
+++ b/tool/stats.dart
@@ -220,7 +220,7 @@
     sink = stdout;
   }
 
-  final encoder = const JsonEncoder.withIndent(' ', _convert);
+  const encoder = JsonEncoder.withIndent(' ', _convert);
   try {
     sink.writeln(encoder.convert(scores));
   } on JsonUnsupportedObjectError catch (e) {
diff --git a/tool/update_blns.dart b/tool/update_blns.dart
index b48b8a7..1f50e36 100644
--- a/tool/update_blns.dart
+++ b/tool/update_blns.dart
@@ -2,9 +2,9 @@
 import 'dart:convert';
 import 'dart:io';
 
-final _blnsJsonRawUrl =
+const _blnsJsonRawUrl =
     'https://github.com/minimaxir/big-list-of-naughty-strings/raw/master/blns.json';
-final _blnsFilePath = 'test/blns.dart';
+const _blnsFilePath = 'test/blns.dart';
 
 Future<void> main() async {
   final client = HttpClient();
diff --git a/tool/update_emojis.dart b/tool/update_emojis.dart
index 6b11e7a..396be33 100644
--- a/tool/update_emojis.dart
+++ b/tool/update_emojis.dart
@@ -9,9 +9,9 @@
 // update_github_emojis.dart now generates the emoji list using the GitHub API
 // to retrieve the emoji list.  It uses this emoji source as a source to keep
 // binary compatibility with the Unicode sequences for each emoji found here.
-final _emojisJsonRawUrl =
+const _emojisJsonRawUrl =
     'https://raw.githubusercontent.com/muan/emojilib/v2.4.0/emojis.json';
-final _emojisFilePath = 'lib/src/legacy_emojis.dart';
+const _emojisFilePath = 'lib/src/legacy_emojis.dart';
 
 Future<void> main() async {
   final client = HttpClient();
diff --git a/tool/update_github_emojis.dart b/tool/update_github_emojis.dart
index 5431d31..5fbf60c 100644
--- a/tool/update_github_emojis.dart
+++ b/tool/update_github_emojis.dart
@@ -26,11 +26,11 @@
 /// The 'cricket' emoji changes from `🏏` to `🦗`, legacy available as 'cricket_game'.
 /// (if the -g flag us used to force using the GitHub Unicode sequences for the
 /// emoji then additionally the 'email' emoji changes from '✉️' to '📧').
-final _emojisJsonRawUrl = 'https://api.github.com/emojis';
-final _emojisFilePath = 'lib/src/emojis.dart';
+const _emojisJsonRawUrl = 'https://api.github.com/emojis';
+const _emojisFilePath = 'lib/src/emojis.dart';
 
 /// Reference to emoji map within legacy_emojis.dart
-final legacyEmojis = legacy.emojis;
+const legacyEmojis = legacy.emojis;
 
 /// AUTO GENERATED by [reconcile_emojis.dart] - this only needed to be done ONCE
 /// during the reconciliation process with the legacy emoji.
