add an `allAnalysisOptions` getter to driver based contexts

Change-Id: I0dc6a2508ba89afc86a663cbd0557d168a0c7cc1
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/334643
Commit-Queue: Phil Quitslund <pquitslund@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
diff --git a/pkg/analysis_server/lib/src/analytics/analytics_manager.dart b/pkg/analysis_server/lib/src/analytics/analytics_manager.dart
index 55de01a..74cedf9 100644
--- a/pkg/analysis_server/lib/src/analytics/analytics_manager.dart
+++ b/pkg/analysis_server/lib/src/analytics/analytics_manager.dart
@@ -18,6 +18,7 @@
 import 'package:analysis_server/src/protocol_server.dart';
 import 'package:analysis_server/src/status/pages.dart';
 import 'package:analyzer/dart/analysis/analysis_context.dart';
+import 'package:analyzer/src/dart/analysis/driver_based_analysis_context.dart';
 import 'package:collection/collection.dart';
 import 'package:leak_tracker/src/usage_tracking/model.dart';
 import 'package:meta/meta.dart';
@@ -147,15 +148,20 @@
   /// Record that the [contexts] have been created.
   void createdAnalysisContexts(List<AnalysisContext> contexts) {
     for (var context in contexts) {
-      for (var rule in context.analysisOptions.lintRules) {
-        var name = rule.name;
-        _lintUsageCounts[name] = (_lintUsageCounts[name] ?? 0) + 1;
-      }
-      for (var processor in context.analysisOptions.errorProcessors) {
-        var severity = processor.severity?.name ?? 'ignore';
-        var severityCounts =
-            _severityAdjustments.putIfAbsent(processor.code, () => {});
-        severityCounts[severity] = (severityCounts[severity] ?? 0) + 1;
+      var allOptions =
+          (context as DriverBasedAnalysisContext).allAnalysisOptions;
+      for (var analysisOptions in allOptions) {
+        for (var rule in analysisOptions.lintRules) {
+          var name = rule.name;
+          _lintUsageCounts[name] = (_lintUsageCounts[name] ?? 0) + 1;
+        }
+
+        for (var processor in analysisOptions.errorProcessors) {
+          var severity = processor.severity?.name ?? 'ignore';
+          var severityCounts =
+              _severityAdjustments.putIfAbsent(processor.code, () => {});
+          severityCounts[severity] = (severityCounts[severity] ?? 0) + 1;
+        }
       }
     }
   }
diff --git a/pkg/analyzer/lib/src/dart/analysis/driver_based_analysis_context.dart b/pkg/analyzer/lib/src/dart/analysis/driver_based_analysis_context.dart
index 7140ce7..38c0e31 100644
--- a/pkg/analyzer/lib/src/dart/analysis/driver_based_analysis_context.dart
+++ b/pkg/analyzer/lib/src/dart/analysis/driver_based_analysis_context.dart
@@ -32,6 +32,9 @@
     AnalysisDriver? analysisDriver,
   ]);
 
+  /// Get all the analysis options objects associated with this context.
+  List<AnalysisOptions> get allAnalysisOptions => [analysisOptions];
+
   @override
   AnalysisOptions get analysisOptions => driver.analysisOptions;