Enable consistent analysis within packages directory (#6884)

diff --git a/packages/devtools_shared/analysis_options.yaml b/packages/devtools_shared/analysis_options.yaml
new file mode 100644
index 0000000..5e2133e
--- /dev/null
+++ b/packages/devtools_shared/analysis_options.yaml
@@ -0,0 +1 @@
+include: ../analysis_options.yaml
diff --git a/packages/devtools_shared/lib/src/memory/memory_json.dart b/packages/devtools_shared/lib/src/memory/memory_json.dart
index 66718f6..b5c6166 100644
--- a/packages/devtools_shared/lib/src/memory/memory_json.dart
+++ b/packages/devtools_shared/lib/src/memory/memory_json.dart
@@ -30,7 +30,7 @@
     Map<String, dynamic>? argDecodedMap,
   }) {
     final Map<String, dynamic> decodedMap =
-        argDecodedMap == null ? jsonDecode(argJsonString) : argDecodedMap;
+        argDecodedMap ?? jsonDecode(argJsonString);
     Map<String, dynamic> payload = decodedMap[payloadName];
 
     int payloadVersion = payload[jsonVersionField];
diff --git a/packages/devtools_shared/lib/src/server/file_system.dart b/packages/devtools_shared/lib/src/server/file_system.dart
index 73c2d4d..93c2ecb 100644
--- a/packages/devtools_shared/lib/src/server/file_system.dart
+++ b/packages/devtools_shared/lib/src/server/file_system.dart
@@ -39,7 +39,7 @@
 
   /// Creates the ~/.flutter-devtools directory if it does not already exist.
   static void ensureDevToolsDirectory() {
-    Directory('${devToolsDir()}').createSync();
+    Directory(devToolsDir()).createSync();
   }
 
   /// Returns a DevTools file from the given path.
diff --git a/packages/devtools_shared/lib/src/server/server_api.dart b/packages/devtools_shared/lib/src/server/server_api.dart
index 4182b26..f80b2a0 100644
--- a/packages/devtools_shared/lib/src/server/server_api.dart
+++ b/packages/devtools_shared/lib/src/server/server_api.dart
@@ -304,10 +304,10 @@
   shelf.Response logScreenView() => notImplemented();
 
   /// Return the value of the property.
-  shelf.Response getCompleted(String value) => shelf.Response.ok('$value');
+  shelf.Response getCompleted(String value) => shelf.Response.ok(value);
 
   /// Return the value of the property after the property value has been set.
-  shelf.Response setCompleted(String value) => shelf.Response.ok('$value');
+  shelf.Response setCompleted(String value) => shelf.Response.ok(value);
 
   /// A [shelf.Response] for API calls that encountered a request problem e.g.,
   /// setActiveSurvey not called.
diff --git a/packages/devtools_shared/lib/src/server/usage.dart b/packages/devtools_shared/lib/src/server/usage.dart
index 43dc59c..074fbf8 100644
--- a/packages/devtools_shared/lib/src/server/usage.dart
+++ b/packages/devtools_shared/lib/src/server/usage.dart
@@ -103,7 +103,6 @@
 
   set analyticsEnabled(bool value) {
     properties['analyticsEnabled'] = value;
-    return properties['analyticsEnabled'];
   }
 
   bool surveyNameExists(String surveyName) => properties[surveyName] != null;
@@ -234,7 +233,7 @@
     }
 
     try {
-      _file.writeAsStringSync(_jsonEncoder.convert(_map) + '\n');
+      _file.writeAsStringSync('${_jsonEncoder.convert(_map)}\n');
     } catch (_) {}
   }
 
diff --git a/packages/devtools_shared/lib/src/test/cli_test_driver.dart b/packages/devtools_shared/lib/src/test/cli_test_driver.dart
index 09df1d0..049eb13 100644
--- a/packages/devtools_shared/lib/src/test/cli_test_driver.dart
+++ b/packages/devtools_shared/lib/src/test/cli_test_driver.dart
@@ -144,7 +144,7 @@
         await _waitForIsolate(serviceConnection, 'PauseStart');
     await serviceConnection.resume(isolate.id!);
 
-    Future<void> _onTeardown() async {
+    Future<void> onTeardown() async {
       await linesSubscription.cancel();
       await lineController.close();
     }
@@ -156,7 +156,7 @@
       uri,
       serviceConnection,
       vm.isolates!,
-      _onTeardown,
+      onTeardown,
     );
   }
 
diff --git a/packages/devtools_shared/lib/src/test/io_utils.dart b/packages/devtools_shared/lib/src/test/io_utils.dart
index 3de8bc4..9d96409 100644
--- a/packages/devtools_shared/lib/src/test/io_utils.dart
+++ b/packages/devtools_shared/lib/src/test/io_utils.dart
@@ -20,7 +20,7 @@
   final String envKey =
       Platform.operatingSystem == 'windows' ? 'APPDATA' : 'HOME';
   final String? value = Platform.environment[envKey];
-  return value == null ? '.' : value;
+  return value ?? '.';
 }
 
 Stream<String> transformToLines(Stream<List<int>> byteStream) {
diff --git a/packages/devtools_shared/lib/src/test/test_utils.dart b/packages/devtools_shared/lib/src/test/test_utils.dart
index 0c7842a..9e6b83c 100644
--- a/packages/devtools_shared/lib/src/test/test_utils.dart
+++ b/packages/devtools_shared/lib/src/test/test_utils.dart
@@ -3,7 +3,7 @@
 // found in the LICENSE file.
 
 Future<void> waitFor(
-  Future<bool> condition(), {
+  Future<bool> Function() condition, {
   Duration timeout = const Duration(seconds: 10),
   String timeoutMessage = 'condition not satisfied',
   Duration delay = _shortDelay,
diff --git a/packages/devtools_shared/pubspec.yaml b/packages/devtools_shared/pubspec.yaml
index 90d87bc..878ee42 100644
--- a/packages/devtools_shared/pubspec.yaml
+++ b/packages/devtools_shared/pubspec.yaml
@@ -24,4 +24,5 @@
   yaml_edit: ^2.1.1
 
 dev_dependencies:
+  flutter_lints: ^2.0.3
   test: ^1.21.2
diff --git a/packages/devtools_shared/test/extensions/extension_enablement_test.dart b/packages/devtools_shared/test/extensions/extension_enablement_test.dart
index 9adb3cc..c370ce1 100644
--- a/packages/devtools_shared/test/extensions/extension_enablement_test.dart
+++ b/packages/devtools_shared/test/extensions/extension_enablement_test.dart
@@ -25,7 +25,7 @@
       tmpDir.deleteSync(recursive: true);
     });
 
-    File _optionsFileFromTmp() {
+    File optionsFileFromTmp() {
       final tmpFiles = tmpDir.listSync();
       expect(tmpFiles, isNotEmpty);
       final optionsFile =
@@ -40,7 +40,7 @@
         rootUri: tmpUri,
         extensionName: 'foo',
       );
-      final file = _optionsFileFromTmp();
+      final file = optionsFileFromTmp();
       expect(
         file.readAsStringSync(),
         '''
@@ -55,7 +55,7 @@
         extensionName: 'foo',
         enable: true,
       );
-      final file = _optionsFileFromTmp();
+      final file = optionsFileFromTmp();
       expect(
         file.readAsStringSync(),
         '''
@@ -75,7 +75,7 @@
         extensionName: 'bar',
         enable: false,
       );
-      final file = _optionsFileFromTmp();
+      final file = optionsFileFromTmp();
       expect(
         file.readAsStringSync(),
         '''
diff --git a/packages/devtools_shared/test/extensions/extension_manager_test.dart b/packages/devtools_shared/test/extensions/extension_manager_test.dart
index 342fee7..f8a4ac3 100644
--- a/packages/devtools_shared/test/extensions/extension_manager_test.dart
+++ b/packages/devtools_shared/test/extensions/extension_manager_test.dart
@@ -44,9 +44,9 @@
 
 Directory _createFromDir() {
   final from = Directory('tmp')..createSync();
-  File(p.join(from.path, 'foo.txt'))..createSync();
+  File(p.join(from.path, 'foo.txt')).createSync();
   final dir = Directory(p.join(from.path, 'bar'))..createSync();
-  File(p.join(dir.path, 'baz.txt'))..createSync();
+  File(p.join(dir.path, 'baz.txt')).createSync();
   final contents = _contentAsOrderedString(from);
   expect(
     contents,
diff --git a/packages/devtools_shared/test/extensions/extension_model_test.dart b/packages/devtools_shared/test/extensions/extension_model_test.dart
index e6002d2..8a7f5e7 100644
--- a/packages/devtools_shared/test/extensions/extension_model_test.dart
+++ b/packages/devtools_shared/test/extensions/extension_model_test.dart
@@ -222,7 +222,7 @@
       expect(
         () {
           DevToolsExtensionConfig.parse({
-            'name': 'name.with\'special\chars/',
+            'name': 'name.with\'specialchars/',
             'path': 'path/to/foo/extension',
             'issueTracker': 'www.google.com',
             'version': '1.0.0',
diff --git a/packages/devtools_test/analysis_options.yaml b/packages/devtools_test/analysis_options.yaml
new file mode 100644
index 0000000..5e2133e
--- /dev/null
+++ b/packages/devtools_test/analysis_options.yaml
@@ -0,0 +1 @@
+include: ../analysis_options.yaml
diff --git a/packages/devtools_test/lib/src/helpers/utils.dart b/packages/devtools_test/lib/src/helpers/utils.dart
index 8cb6feb..8a82937 100644
--- a/packages/devtools_test/lib/src/helpers/utils.dart
+++ b/packages/devtools_test/lib/src/helpers/utils.dart
@@ -41,10 +41,10 @@
   required Function callback,
 }) async {
   bool listenerCalled = false;
-  final listenerWrapped = () {
+  void listenerWrapped() {
     listenerCalled = true;
     listener();
-  };
+  }
 
   listenable.addListener(listenerWrapped);
   await callback();
@@ -54,7 +54,10 @@
 
 /// Returns a future that completes when a listenable has a value that satisfies
 /// [condition].
-Future<T> whenMatches<T>(ValueListenable<T> listenable, bool condition(T)) {
+Future<T> whenMatches<T>(
+  ValueListenable<T> listenable,
+  bool Function(T) condition,
+) {
   final completer = Completer<T>();
   void listener() {
     if (condition(listenable.value)) {
diff --git a/packages/devtools_test/lib/src/helpers/wrappers.dart b/packages/devtools_test/lib/src/helpers/wrappers.dart
index 2e00c23..252859b 100644
--- a/packages/devtools_test/lib/src/helpers/wrappers.dart
+++ b/packages/devtools_test/lib/src/helpers/wrappers.dart
@@ -94,7 +94,7 @@
   VMDeveloperToolsController? vmDeveloperTools,
   bool includeRouter = true,
 }) {
-  final _providers = [
+  final providers = [
     if (inspector != null)
       Provider<InspectorController>.value(value: inspector),
     if (logging != null) Provider<LoggingController>.value(value: logging),
@@ -116,7 +116,7 @@
   ];
   final child = wrapWithNotifications(
     MultiProvider(
-      providers: _providers,
+      providers: providers,
       child: widget,
     ),
   );
diff --git a/packages/devtools_test/lib/src/mocks/generated_mocks_factories.dart b/packages/devtools_test/lib/src/mocks/generated_mocks_factories.dart
index 5abd74d..b4c3728 100644
--- a/packages/devtools_test/lib/src/mocks/generated_mocks_factories.dart
+++ b/packages/devtools_test/lib/src/mocks/generated_mocks_factories.dart
@@ -218,22 +218,22 @@
   when(mockExtensionService.availableExtensions)
       .thenReturn(ImmediateValueNotifier(extensions));
 
-  final _stubEnabledStates = <String, ValueNotifier<ExtensionEnabledState>>{};
+  final stubEnabledStates = <String, ValueNotifier<ExtensionEnabledState>>{};
   for (final e in extensions) {
-    _stubEnabledStates[e.displayName] =
+    stubEnabledStates[e.displayName] =
         ValueNotifier<ExtensionEnabledState>(ExtensionEnabledState.none);
     when(mockExtensionService.enabledStateListenable(e.name))
-        .thenReturn(_stubEnabledStates[e.name.toLowerCase()]!);
+        .thenReturn(stubEnabledStates[e.name.toLowerCase()]!);
     when(mockExtensionService.enabledStateListenable(e.name.toLowerCase()))
-        .thenReturn(_stubEnabledStates[e.name.toLowerCase()]!);
+        .thenReturn(stubEnabledStates[e.name.toLowerCase()]!);
     when(mockExtensionService.setExtensionEnabledState(e, enable: true))
         .thenAnswer((_) async {
-      _stubEnabledStates[e.name.toLowerCase()]!.value =
+      stubEnabledStates[e.name.toLowerCase()]!.value =
           ExtensionEnabledState.enabled;
     });
     when(mockExtensionService.setExtensionEnabledState(e, enable: false))
         .thenAnswer((_) async {
-      _stubEnabledStates[e.name.toLowerCase()]!.value =
+      stubEnabledStates[e.name.toLowerCase()]!.value =
           ExtensionEnabledState.disabled;
     });
   }
diff --git a/packages/devtools_test/pubspec.yaml b/packages/devtools_test/pubspec.yaml
index dcb1537..7b15560 100644
--- a/packages/devtools_test/pubspec.yaml
+++ b/packages/devtools_test/pubspec.yaml
@@ -26,6 +26,8 @@
     sdk: flutter
   flutter_test:
     sdk: flutter
+  integration_test:
+    sdk: flutter
   meta: ^1.9.1
   mockito: ^5.4.1
   path: ^1.8.0
@@ -46,5 +48,4 @@
 
 dev_dependencies:
   build_runner: ^2.3.3
-  integration_test:
-    sdk: flutter
+  flutter_lints: ^2.0.3