From 1c9f5067a4b0bb29962118d24d325d9adef6cf9b Mon Sep 17 00:00:00 2001 From: Parker Lougheed Date: Mon, 24 Jun 2024 17:15:18 -0500 Subject: [PATCH] [unified_analytics] Add lints to consistently use final --- pkgs/unified_analytics/analysis_options.yaml | 2 ++ .../example/unified_analytics_example.dart | 2 +- pkgs/unified_analytics/lib/src/asserts.dart | 6 +++--- pkgs/unified_analytics/lib/src/log_handler.dart | 6 +++--- pkgs/unified_analytics/lib/src/survey_handler.dart | 4 ++-- pkgs/unified_analytics/lib/src/user_property.dart | 2 +- pkgs/unified_analytics/lib/src/utils.dart | 4 ++-- pkgs/unified_analytics/test/event_test.dart | 2 +- .../test/unified_analytics_test.dart | 14 +++++++------- 9 files changed, 22 insertions(+), 20 deletions(-) diff --git a/pkgs/unified_analytics/analysis_options.yaml b/pkgs/unified_analytics/analysis_options.yaml index f61312ad..746ad64b 100644 --- a/pkgs/unified_analytics/analysis_options.yaml +++ b/pkgs/unified_analytics/analysis_options.yaml @@ -6,3 +6,5 @@ include: package:dart_flutter_team_lints/analysis_options.yaml linter: rules: - avoid_catches_without_on_clauses + - prefer_final_in_for_each + - prefer_final_locals diff --git a/pkgs/unified_analytics/example/unified_analytics_example.dart b/pkgs/unified_analytics/example/unified_analytics_example.dart index 47e5a7c4..e0ddaffd 100644 --- a/pkgs/unified_analytics/example/unified_analytics_example.dart +++ b/pkgs/unified_analytics/example/unified_analytics_example.dart @@ -23,7 +23,7 @@ final Analytics analytics = Analytics.development( // Timing a process and sending the event void main() async { - var start = DateTime.now(); + final start = DateTime.now(); // Each client using this package will have it's own // method to show the message but the below is a trivial diff --git a/pkgs/unified_analytics/lib/src/asserts.dart b/pkgs/unified_analytics/lib/src/asserts.dart index 1ba62012..199f4ee4 100644 --- a/pkgs/unified_analytics/lib/src/asserts.dart +++ b/pkgs/unified_analytics/lib/src/asserts.dart @@ -35,7 +35,7 @@ void checkBody(Map body) { } // Checks for each event object - for (var eventMap in events.cast>()) { + for (final eventMap in events.cast>()) { final eventName = eventMap['name'] as String; // GA4 Limitation: @@ -73,7 +73,7 @@ void checkBody(Map body) { } // Loop through each of the event parameters - for (var entry in eventParams.entries) { + for (final entry in eventParams.entries) { final key = entry.key; final value = entry.value; @@ -138,7 +138,7 @@ void checkBody(Map body) { } // Checks for each user property item - for (var entry in userProperties.entries) { + for (final entry in userProperties.entries) { final key = entry.key; final value = entry.value as Map; diff --git a/pkgs/unified_analytics/lib/src/log_handler.dart b/pkgs/unified_analytics/lib/src/log_handler.dart index d611b73a..be20b16a 100644 --- a/pkgs/unified_analytics/lib/src/log_handler.dart +++ b/pkgs/unified_analytics/lib/src/log_handler.dart @@ -136,7 +136,7 @@ class LogFileStats { @override String toString() { - final encoder = const JsonEncoder.withIndent(' '); + const encoder = JsonEncoder.withIndent(' '); return encoder.convert({ 'startDateTime': startDateTime.toString(), 'minsFromStartDateTime': minsFromStartDateTime, @@ -219,7 +219,7 @@ class LogHandler { final eventCount = {}; final flutterChannelCount = {}; final toolCount = {}; - for (var record in records) { + for (final record in records) { counter['sessions']!.add(record.sessionId); counter['tool']!.add(record.tool); if (record.flutterChannel != null) { @@ -432,7 +432,7 @@ class LogItem { hostOsVersion, locale, ]; - for (var value in values) { + for (final value in values) { if (value == null) return null; } diff --git a/pkgs/unified_analytics/lib/src/survey_handler.dart b/pkgs/unified_analytics/lib/src/survey_handler.dart index c3c01b2e..7461dfce 100644 --- a/pkgs/unified_analytics/lib/src/survey_handler.dart +++ b/pkgs/unified_analytics/lib/src/survey_handler.dart @@ -146,7 +146,7 @@ class Survey { @override String toString() { - final encoder = const JsonEncoder.withIndent(' '); + const encoder = JsonEncoder.withIndent(' '); return encoder.convert({ 'uniqueId': uniqueId, 'startDate': startDate.toString(), @@ -229,7 +229,7 @@ class SurveyHandler { // Initialize the list of persisted surveys and add to them // as they are being parsed - var persistedSurveys = {}; + final persistedSurveys = {}; contents.forEach((key, value) { value as Map; diff --git a/pkgs/unified_analytics/lib/src/user_property.dart b/pkgs/unified_analytics/lib/src/user_property.dart index d1a8bc07..f0e177d0 100644 --- a/pkgs/unified_analytics/lib/src/user_property.dart +++ b/pkgs/unified_analytics/lib/src/user_property.dart @@ -87,7 +87,7 @@ class UserProperty { /// https://developers.google.com/analytics/devguides/collection/protocol/ga4/user-properties?client_type=gtag Map> preparePayload() { return >{ - for (MapEntry entry in _toMap().entries) + for (final entry in _toMap().entries) entry.key: {'value': entry.value} }; } diff --git a/pkgs/unified_analytics/lib/src/utils.dart b/pkgs/unified_analytics/lib/src/utils.dart index 86d64c88..2bd0c79e 100644 --- a/pkgs/unified_analytics/lib/src/utils.dart +++ b/pkgs/unified_analytics/lib/src/utils.dart @@ -94,7 +94,7 @@ Map generateRequestBody({ /// contain all of the analytics files. Directory? getHomeDirectory(FileSystem fs) { String? home; - var envVars = io.Platform.environment; + final envVars = io.Platform.environment; if (io.Platform.isMacOS) { home = envVars['HOME']; @@ -320,7 +320,7 @@ class Uuid { /// random numbers as the source of the generated uuid. String generateV4() { // Generate xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx / 8-4-4-4-12. - var special = 8 + _random.nextInt(4); + final special = 8 + _random.nextInt(4); return '${_bitsDigits(16, 4)}${_bitsDigits(16, 4)}-' '${_bitsDigits(16, 4)}-' diff --git a/pkgs/unified_analytics/test/event_test.dart b/pkgs/unified_analytics/test/event_test.dart index 238d55cc..0a6167f4 100644 --- a/pkgs/unified_analytics/test/event_test.dart +++ b/pkgs/unified_analytics/test/event_test.dart @@ -620,7 +620,7 @@ void main() { test('Confirm all constructors were checked', () { var constructorCount = 0; - for (var declaration in reflectClass(Event).declarations.keys) { + for (final declaration in reflectClass(Event).declarations.keys) { // Count public constructors but omit private constructors if (declaration.toString().contains('Event.') && !declaration.toString().contains('Event._')) constructorCount++; diff --git a/pkgs/unified_analytics/test/unified_analytics_test.dart b/pkgs/unified_analytics/test/unified_analytics_test.dart index f2ef9602..2e78df42 100644 --- a/pkgs/unified_analytics/test/unified_analytics_test.dart +++ b/pkgs/unified_analytics/test/unified_analytics_test.dart @@ -649,7 +649,7 @@ ${initialTool.label}=$dateStamp,$toolsMessageVersion ]; expect(analytics.userPropertyMap.keys.length, userPropertyKeys.length, reason: 'There should only be ${userPropertyKeys.length} keys'); - for (var key in userPropertyKeys) { + for (final key in userPropertyKeys) { expect(analytics.userPropertyMap.keys.contains(key), true, reason: 'The $key variable is required'); } @@ -944,7 +944,7 @@ ${initialTool.label}=$dateStamp,$toolsMessageVersion secondAnalytics!.send(testEvent); // Query the log file stats to verify that there are two tools - var query = analytics.logFileStats()!; + final query = analytics.logFileStats()!; expect(query.toolCount, {'flutter-tool': 1, 'dart-tool': 1}, reason: 'There should have been two tools in the persisted logs'); @@ -1048,7 +1048,7 @@ ${initialTool.label}=$dateStamp,$toolsMessageVersion secondAnalytics!.send(testEvent); // Query the log file stats to verify that there are two tools - var query = analytics.logFileStats()!; + final query = analytics.logFileStats()!; expect(query.toolCount, {'dart-tool': 1}, reason: 'There should have only been on tool that sent events'); @@ -1059,7 +1059,7 @@ ${initialTool.label}=$dateStamp,$toolsMessageVersion // Sending a query with the first analytics instance which has flutter information // available should reflect in the query that there is 1 flutter channel present analytics.send(testEvent); - LogFileStats? query2 = analytics.logFileStats()!; + final query2 = analytics.logFileStats()!; expect(query2.toolCount, {'dart-tool': 1, 'flutter-tool': 1}, reason: 'Two different analytics instances have ' @@ -1098,7 +1098,7 @@ ${initialTool.label}=$dateStamp,$toolsMessageVersion var userPropLengthValid = true; final invalidUserProps = []; - for (var key in userPropPayload.keys) { + for (final key in userPropPayload.keys) { if (key.length > maxUserPropLength) { userPropLengthValid = false; invalidUserProps.add(key); @@ -1117,7 +1117,7 @@ ${initialTool.label}=$dateStamp,$toolsMessageVersion final toolLabelPattern = RegExp(r'^[a-zA-Z][a-zA-Z\_-]{0,35}$'); var toolLengthValid = true; final invalidTools = []; - for (var tool in DashTool.values) { + for (final tool in DashTool.values) { if (!toolLabelPattern.hasMatch(tool.label)) { toolLengthValid = false; invalidTools.add(tool); @@ -1137,7 +1137,7 @@ ${initialTool.label}=$dateStamp,$toolsMessageVersion final eventLabelPattern = RegExp(r'^[a-zA-Z]{1}[a-zA-Z0-9\_]{0,39}$'); var eventValid = true; final invalidEvents = []; - for (var event in DashEvent.values) { + for (final event in DashEvent.values) { if (!eventLabelPattern.hasMatch(event.label)) { eventValid = false; invalidEvents.add(event);