Limit code block checking to only when not ignored (#2917)

diff --git a/lib/src/model/documentation_comment.dart b/lib/src/model/documentation_comment.dart
index 5aa082b..c940951 100644
--- a/lib/src/model/documentation_comment.dart
+++ b/lib/src/model/documentation_comment.dart
@@ -735,7 +735,15 @@
   /// Analyze fenced code blocks present in the documentation comment,
   /// warning if there is no language specified.
   void _analyzeCodeBlocks(String docs) {
+    if (config.packageWarningOptions
+            .warningModes[PackageWarning.missingCodeBlockLanguage] ==
+        PackageWarningMode.ignore) {
+      return;
+    }
     final results = _codeBlockPattern.allMatches(docs).toList(growable: false);
+    if (results.isEmpty) {
+      return;
+    }
     final firstOfPair = <Match>[];
     for (var i = 0; i < results.length; i++) {
       if (i.isEven && i != results.length - 1) {
diff --git a/test/documentation_comment_test.dart b/test/documentation_comment_test.dart
index 1f722d1..aee4869 100644
--- a/test/documentation_comment_test.dart
+++ b/test/documentation_comment_test.dart
@@ -57,9 +57,6 @@
         messageForMissingPackageMeta:
             PubPackageMeta.messageForMissingPackageMeta,
       );
-      var optionSet = await DartdocOptionRoot.fromOptionGenerators(
-          'dartdoc', [createDartdocOptions], packageMetaProvider);
-      optionSet.parseArguments([]);
       packageConfigProvider = FakePackageConfigProvider();
       // To build the package graph, we always ask package_config for a
       // [PackageConfig] for the SDK directory. Put a dummy entry in.
@@ -69,12 +66,24 @@
       projectRoot = utils.writePackage(
           packageName, resourceProvider, packageConfigProvider);
       projectRoot
+          .getChildAssumingFile('dartdoc_options.yaml')
+          .writeAsStringSync('''
+      dartdoc:
+        warnings:
+          - missing-code-block-language
+      ''');
+
+      projectRoot
           .getChildAssumingFolder('lib')
           .getChildAssumingFile('a.dart')
           .writeAsStringSync('''
 /// Documentation comment.
 int x;
 ''');
+
+      var optionSet = await DartdocOptionRoot.fromOptionGenerators(
+          'dartdoc', [createDartdocOptions], packageMetaProvider);
+      optionSet.parseArguments([]);
       packageGraph = await utils.bootBasicPackage(
           projectRoot.path, packageMetaProvider, packageConfigProvider,
           additionalArguments: []);