From af3aa61fa1b8c5a955f4a1b88fc26727af4870e3 Mon Sep 17 00:00:00 2001 From: xJac0b Date: Thu, 5 Jun 2025 12:52:03 +0200 Subject: [PATCH 1/6] feat: lint default constructor only --- .../avoid_using_api_linter.dart | 29 +++++++++++++++++++ .../analysis_options.yaml | 4 +++ .../lib/identifier_class_source_ban_test.dart | 1 + 3 files changed, 34 insertions(+) diff --git a/lib/src/lints/avoid_using_api/avoid_using_api_linter.dart b/lib/src/lints/avoid_using_api/avoid_using_api_linter.dart index 70e74e61..fbd979eb 100644 --- a/lib/src/lints/avoid_using_api/avoid_using_api_linter.dart +++ b/lib/src/lints/avoid_using_api/avoid_using_api_linter.dart @@ -19,6 +19,9 @@ class AvoidUsingApiLinter { required this.config, }); + /// The identifier for the default constructor + static const String defaultConstructorIdentifier = '()'; + /// Access to the resolver for this lint context final CustomLintResolver resolver; @@ -191,6 +194,11 @@ class AvoidUsingApiLinter { String className, String source, ) { + if (identifier == defaultConstructorIdentifier) { + _banDefaultConstructor(className, source, entryCode); + return; + } + context.registry.addSimpleIdentifier((node) { final name = node.name; if (name != identifier) { @@ -281,4 +289,25 @@ class AvoidUsingApiLinter { reporter.atNode(node.identifier, entryCode); }); } + + void _banDefaultConstructor( + String className, + String source, + LintCode entryCode, + ) { + context.registry.addInstanceCreationExpression((node) { + final constructorName = node.constructorName.type.name2.lexeme; + if (constructorName != className || node.constructorName.name != null) { + return; + } + + final sourcePath = + node.constructorName.type.element2?.library2?.uri.toString(); + if (sourcePath == null || !_matchesSource(sourcePath, source)) { + return; + } + + reporter.atNode(node, entryCode); + }); + } } diff --git a/lint_test/avoid_using_api/identifier_class_source_ban/analysis_options.yaml b/lint_test/avoid_using_api/identifier_class_source_ban/analysis_options.yaml index 654a08ad..c4a4dcf2 100644 --- a/lint_test/avoid_using_api/identifier_class_source_ban/analysis_options.yaml +++ b/lint_test/avoid_using_api/identifier_class_source_ban/analysis_options.yaml @@ -7,6 +7,10 @@ custom_lint: - avoid_using_api: severity: warning entries: + - identifier: () + class_name: BannedCodeUsage + source: package:external_source + reason: "BannedCodeUsage() from package:external_source is not allowed" - identifier: test4 class_name: BannedCodeUsage source: package:external_source diff --git a/lint_test/avoid_using_api/identifier_class_source_ban/lib/identifier_class_source_ban_test.dart b/lint_test/avoid_using_api/identifier_class_source_ban/lib/identifier_class_source_ban_test.dart index 4e65729f..7e8570e6 100644 --- a/lint_test/avoid_using_api/identifier_class_source_ban/lib/identifier_class_source_ban_test.dart +++ b/lint_test/avoid_using_api/identifier_class_source_ban/lib/identifier_class_source_ban_test.dart @@ -5,6 +5,7 @@ import 'dart:collection'; import 'package:external_source/external_source.dart'; void testingBannedCodeLint() async { + // expect_lint: avoid_using_api final bannedCodeUsage = BannedCodeUsage(); // expect_lint: avoid_using_api BannedCodeUsage.test2(); From 7f4bea209c8b20babef94db5aea7fcbadd3e350c Mon Sep 17 00:00:00 2001 From: xJac0b Date: Thu, 5 Jun 2025 16:23:29 +0200 Subject: [PATCH 2/6] feat: add named parameter --- .../avoid_using_api_linter.dart | 66 +++++++++++++++++++ .../avoid_using_api/avoid_using_api_rule.dart | 13 ++++ .../avoid_using_api_entry_parameters.dart | 6 ++ .../external_source/lib/external_source.dart | 22 +++++-- .../named_parameter_ban/analysis_options.yaml | 39 +++++++++++ .../lib/named_parameter_ban_test.dart | 28 ++++++++ .../named_parameter_ban/pubspec.yaml | 17 +++++ 7 files changed, 184 insertions(+), 7 deletions(-) create mode 100644 lint_test/avoid_using_api/named_parameter_ban/analysis_options.yaml create mode 100644 lint_test/avoid_using_api/named_parameter_ban/lib/named_parameter_ban_test.dart create mode 100644 lint_test/avoid_using_api/named_parameter_ban/pubspec.yaml diff --git a/lib/src/lints/avoid_using_api/avoid_using_api_linter.dart b/lib/src/lints/avoid_using_api/avoid_using_api_linter.dart index fbd979eb..0bb46d57 100644 --- a/lib/src/lints/avoid_using_api/avoid_using_api_linter.dart +++ b/lib/src/lints/avoid_using_api/avoid_using_api_linter.dart @@ -310,4 +310,70 @@ class AvoidUsingApiLinter { reporter.atNode(node, entryCode); }); } + + /// Lints usages of a named parameter from a given source + void banUsageWithSpecificNamedParameter( + LintCode entryCode, + String identifier, + String namedParameter, + String className, + String source, + ) { + context.registry.addMethodInvocation((node) { + final methodName = node.methodName.name; + if (methodName != identifier) return; + + final enclosingElement = node.methodName.element?.enclosingElement2; + if (enclosingElement == null || enclosingElement.name3 != className) { + return; + } + + if (!_hasNamedParameter(node.argumentList, namedParameter)) { + return; + } + + final sourcePath = enclosingElement.library2?.uri.toString() ?? ''; + if (!_matchesSource(sourcePath, source)) { + return; + } + + reporter.atNode(node.methodName, entryCode); + }); + + context.registry.addInstanceCreationExpression((node) { + final String? expectedConstructorName; + if (identifier == defaultConstructorIdentifier) { + expectedConstructorName = null; + } else { + expectedConstructorName = identifier; + } + + final actualClassName = node.constructorName.type.name2.lexeme; + if (actualClassName != className) { + return; + } + + if (node.constructorName.name?.name != expectedConstructorName) { + return; + } + + if (!_hasNamedParameter(node.argumentList, namedParameter)) { + return; + } + + final sourcePath = + node.constructorName.type.element2?.library2?.uri.toString(); + if (sourcePath == null || !_matchesSource(sourcePath, source)) { + return; + } + + reporter.atNode(node, entryCode); + }); + } + + bool _hasNamedParameter(ArgumentList argumentList, String namedParameter) => + argumentList.arguments.any( + (arg) => + arg is NamedExpression && arg.name.label.name == namedParameter, + ); } diff --git a/lib/src/lints/avoid_using_api/avoid_using_api_rule.dart b/lib/src/lints/avoid_using_api/avoid_using_api_rule.dart index a60bcfdd..2e96d221 100644 --- a/lib/src/lints/avoid_using_api/avoid_using_api_rule.dart +++ b/lib/src/lints/avoid_using_api/avoid_using_api_rule.dart @@ -126,6 +126,19 @@ class AvoidUsingApiRule extends SolidLintRule { switch (entry) { case AvoidUsingApiEntryParameters(:final source) when source == null: break; + case AvoidUsingApiEntryParameters( + :final identifier?, + :final namedParameter?, + :final className?, + :final source? + ): + linter.banUsageWithSpecificNamedParameter( + entryCode, + identifier, + namedParameter, + className, + source, + ); case AvoidUsingApiEntryParameters( :final identifier?, :final className?, diff --git a/lib/src/lints/avoid_using_api/models/avoid_using_api_entry_parameters.dart b/lib/src/lints/avoid_using_api/models/avoid_using_api_entry_parameters.dart index 23cec1cd..337a5ca7 100644 --- a/lib/src/lints/avoid_using_api/models/avoid_using_api_entry_parameters.dart +++ b/lib/src/lints/avoid_using_api/models/avoid_using_api_entry_parameters.dart @@ -7,6 +7,7 @@ import 'package:solid_lints/src/utils/parameter_utils.dart'; /// /// Parameters: /// * identifier: Variable/method name +/// * named_parameter: Named parameter of the constructor/method /// * class_name: Name of the class containing the variable/method /// * source: Package (e.g., dart:async or package:example) /// * severity: The default severity of the lint for each entry. @@ -35,6 +36,9 @@ class AvoidUsingApiEntryParameters { /// Variable/method name final String? identifier; + /// Named parameter of the constrcutor/method + final String? namedParameter; + /// Name of the class containing the variable/method final String? className; @@ -56,6 +60,7 @@ class AvoidUsingApiEntryParameters { /// Constructor for [AvoidUsingApiEntryParameters] model const AvoidUsingApiEntryParameters({ this.identifier, + this.namedParameter, this.className, this.source, this.severity, @@ -70,6 +75,7 @@ class AvoidUsingApiEntryParameters { ) => AvoidUsingApiEntryParameters( identifier: json['identifier'] as String?, + namedParameter: json['named_parameter'] as String?, className: json['class_name'] as String?, source: json['source'] as String?, severity: decodeErrorSeverity(json['severity'] as String?), diff --git a/lint_test/avoid_using_api/external_source/lib/external_source.dart b/lint_test/avoid_using_api/external_source/lib/external_source.dart index 144c6bd1..125842ab 100644 --- a/lint_test/avoid_using_api/external_source/lib/external_source.dart +++ b/lint_test/avoid_using_api/external_source/lib/external_source.dart @@ -4,27 +4,35 @@ class BannedCodeUsage { final String test4 = 'Hello World'; - BannedCodeUsage(); + BannedCodeUsage({this.parameter1, this.parameter2}); - factory BannedCodeUsage.test3() { - return BannedCodeUsage(); + String? parameter1; + String? parameter2; + + factory BannedCodeUsage.test3({String? parameter1, String? parameter2}) { + return BannedCodeUsage( + parameter1: parameter1, + parameter2: parameter2, + ); } - void test() {} + BannedCodeUsage.test5({String? parameter1, String? parameter2}); + + void test({String? parameter1, String? parameter2}) {} - static String test2() { + static String test2({String? parameter1, String? parameter2}) { return 'Hello World'; } } const test2 = 'Hello World'; -void test() {} +void test({String? parameter1}) {} int banned = 5; extension BannedExtension on int { - int banned() => this + 10; + int banned({String? parameter1, String? parameter2}) => this + 10; int get bannedGetter => 10; } diff --git a/lint_test/avoid_using_api/named_parameter_ban/analysis_options.yaml b/lint_test/avoid_using_api/named_parameter_ban/analysis_options.yaml new file mode 100644 index 00000000..e60eddef --- /dev/null +++ b/lint_test/avoid_using_api/named_parameter_ban/analysis_options.yaml @@ -0,0 +1,39 @@ +analyzer: + plugins: + - ../../custom_lint + +custom_lint: + rules: + - avoid_using_api: + severity: warning + entries: + - identifier: () + named_parameter: parameter1 + class_name: BannedCodeUsage + source: package:external_source + reason: "Use parameter2 instead" + - identifier: test3 + named_parameter: parameter1 + class_name: BannedCodeUsage + source: package:external_source + reason: "Use parameter2 instead" + - identifier: test5 + named_parameter: parameter1 + class_name: BannedCodeUsage + source: package:external_source + reason: "Use parameter2 instead" + - identifier: test2 + named_parameter: parameter1 + class_name: BannedCodeUsage + source: package:external_source + reason: "Use parameter2 instead" + - identifier: test + named_parameter: parameter1 + class_name: BannedCodeUsage + source: package:external_source + reason: "Use parameter2 instead" + - identifier: banned + named_parameter: parameter1 + class_name: BannedExtension + source: package:external_source + reason: "Use parameter2 instead" diff --git a/lint_test/avoid_using_api/named_parameter_ban/lib/named_parameter_ban_test.dart b/lint_test/avoid_using_api/named_parameter_ban/lib/named_parameter_ban_test.dart new file mode 100644 index 00000000..64d997e4 --- /dev/null +++ b/lint_test/avoid_using_api/named_parameter_ban/lib/named_parameter_ban_test.dart @@ -0,0 +1,28 @@ +// ignore_for_file: unused_local_variable + +import 'package:external_source/external_source.dart'; + +void testingBannedCodeLint() async { + // expect_lint: avoid_using_api + final bannedCodeUsage = BannedCodeUsage(parameter1: ''); + + // expect_lint: avoid_using_api + final test3 = BannedCodeUsage.test3(parameter1: ''); + + // expect_lint: avoid_using_api + final test5 = BannedCodeUsage.test5(parameter1: ''); + + // expect_lint: avoid_using_api + BannedCodeUsage.test2( + parameter1: 'test', + ); + + final obj = BannedCodeUsage(); + // expect_lint: avoid_using_api + obj.test(parameter1: ''); + + test(parameter1: ''); + + // expect_lint: avoid_using_api + 2.banned(parameter1: ''); +} diff --git a/lint_test/avoid_using_api/named_parameter_ban/pubspec.yaml b/lint_test/avoid_using_api/named_parameter_ban/pubspec.yaml new file mode 100644 index 00000000..83756002 --- /dev/null +++ b/lint_test/avoid_using_api/named_parameter_ban/pubspec.yaml @@ -0,0 +1,17 @@ +name: identifier_class_source_ban +description: A sample command-line application. +version: 1.0.0 +publish_to: none + +environment: + sdk: ^3.1.3 + +dependencies: + external_source: + path: ../external_source + +dev_dependencies: + lints: ^3.0.0 + test: ^1.21.0 + solid_lints: + path: ../../../ From 2e3a597a0891b2e9059ff9e303425113ebe5b5b6 Mon Sep 17 00:00:00 2001 From: xJac0b Date: Thu, 5 Jun 2025 16:31:06 +0200 Subject: [PATCH 3/6] fix: rename test package --- lint_test/avoid_using_api/named_parameter_ban/pubspec.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lint_test/avoid_using_api/named_parameter_ban/pubspec.yaml b/lint_test/avoid_using_api/named_parameter_ban/pubspec.yaml index 83756002..db054efe 100644 --- a/lint_test/avoid_using_api/named_parameter_ban/pubspec.yaml +++ b/lint_test/avoid_using_api/named_parameter_ban/pubspec.yaml @@ -1,4 +1,4 @@ -name: identifier_class_source_ban +name: named_parameter_ban description: A sample command-line application. version: 1.0.0 publish_to: none From f0401e4e2a9c193792c0147c7ac07b890c250314 Mon Sep 17 00:00:00 2001 From: xJac0b Date: Thu, 5 Jun 2025 16:40:58 +0200 Subject: [PATCH 4/6] fix: add explicit null check --- lib/src/lints/avoid_using_api/avoid_using_api_linter.dart | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/lib/src/lints/avoid_using_api/avoid_using_api_linter.dart b/lib/src/lints/avoid_using_api/avoid_using_api_linter.dart index 0bb46d57..b8d3eb97 100644 --- a/lib/src/lints/avoid_using_api/avoid_using_api_linter.dart +++ b/lib/src/lints/avoid_using_api/avoid_using_api_linter.dart @@ -332,7 +332,12 @@ class AvoidUsingApiLinter { return; } - final sourcePath = enclosingElement.library2?.uri.toString() ?? ''; + final libSource = enclosingElement.library2; + if (libSource == null) { + return; + } + + final sourcePath = libSource.uri.toString(); if (!_matchesSource(sourcePath, source)) { return; } From b26b7c220da539cbe2c6c1f96b4ae513f9352bc6 Mon Sep 17 00:00:00 2001 From: xJac0b Date: Fri, 6 Jun 2025 10:21:25 +0200 Subject: [PATCH 5/6] CR fixes --- .../avoid_using_api_linter.dart | 16 +++--- .../external_source/lib/external_source.dart | 22 +++----- .../named_parameter_ban/analysis_options.yaml | 53 +++++++++---------- .../lib/named_parameter_ban.dart | 16 ++++++ .../lib/named_parameter_ban_test.dart | 28 +++++----- 5 files changed, 69 insertions(+), 66 deletions(-) create mode 100644 lint_test/avoid_using_api/named_parameter_ban/lib/named_parameter_ban.dart diff --git a/lib/src/lints/avoid_using_api/avoid_using_api_linter.dart b/lib/src/lints/avoid_using_api/avoid_using_api_linter.dart index b8d3eb97..a03b7eb6 100644 --- a/lib/src/lints/avoid_using_api/avoid_using_api_linter.dart +++ b/lib/src/lints/avoid_using_api/avoid_using_api_linter.dart @@ -328,7 +328,7 @@ class AvoidUsingApiLinter { return; } - if (!_hasNamedParameter(node.argumentList, namedParameter)) { + if (!_containsNamedParameter(node.argumentList, namedParameter)) { return; } @@ -346,10 +346,9 @@ class AvoidUsingApiLinter { }); context.registry.addInstanceCreationExpression((node) { - final String? expectedConstructorName; - if (identifier == defaultConstructorIdentifier) { - expectedConstructorName = null; - } else { + String? expectedConstructorName; + + if (identifier != defaultConstructorIdentifier) { expectedConstructorName = identifier; } @@ -362,7 +361,7 @@ class AvoidUsingApiLinter { return; } - if (!_hasNamedParameter(node.argumentList, namedParameter)) { + if (!_containsNamedParameter(node.argumentList, namedParameter)) { return; } @@ -376,7 +375,10 @@ class AvoidUsingApiLinter { }); } - bool _hasNamedParameter(ArgumentList argumentList, String namedParameter) => + bool _containsNamedParameter( + ArgumentList argumentList, + String namedParameter, + ) => argumentList.arguments.any( (arg) => arg is NamedExpression && arg.name.label.name == namedParameter, diff --git a/lint_test/avoid_using_api/external_source/lib/external_source.dart b/lint_test/avoid_using_api/external_source/lib/external_source.dart index 125842ab..144c6bd1 100644 --- a/lint_test/avoid_using_api/external_source/lib/external_source.dart +++ b/lint_test/avoid_using_api/external_source/lib/external_source.dart @@ -4,35 +4,27 @@ class BannedCodeUsage { final String test4 = 'Hello World'; - BannedCodeUsage({this.parameter1, this.parameter2}); + BannedCodeUsage(); - String? parameter1; - String? parameter2; - - factory BannedCodeUsage.test3({String? parameter1, String? parameter2}) { - return BannedCodeUsage( - parameter1: parameter1, - parameter2: parameter2, - ); + factory BannedCodeUsage.test3() { + return BannedCodeUsage(); } - BannedCodeUsage.test5({String? parameter1, String? parameter2}); - - void test({String? parameter1, String? parameter2}) {} + void test() {} - static String test2({String? parameter1, String? parameter2}) { + static String test2() { return 'Hello World'; } } const test2 = 'Hello World'; -void test({String? parameter1}) {} +void test() {} int banned = 5; extension BannedExtension on int { - int banned({String? parameter1, String? parameter2}) => this + 10; + int banned() => this + 10; int get bannedGetter => 10; } diff --git a/lint_test/avoid_using_api/named_parameter_ban/analysis_options.yaml b/lint_test/avoid_using_api/named_parameter_ban/analysis_options.yaml index e60eddef..557c6a83 100644 --- a/lint_test/avoid_using_api/named_parameter_ban/analysis_options.yaml +++ b/lint_test/avoid_using_api/named_parameter_ban/analysis_options.yaml @@ -8,32 +8,27 @@ custom_lint: severity: warning entries: - identifier: () - named_parameter: parameter1 - class_name: BannedCodeUsage - source: package:external_source - reason: "Use parameter2 instead" - - identifier: test3 - named_parameter: parameter1 - class_name: BannedCodeUsage - source: package:external_source - reason: "Use parameter2 instead" - - identifier: test5 - named_parameter: parameter1 - class_name: BannedCodeUsage - source: package:external_source - reason: "Use parameter2 instead" - - identifier: test2 - named_parameter: parameter1 - class_name: BannedCodeUsage - source: package:external_source - reason: "Use parameter2 instead" - - identifier: test - named_parameter: parameter1 - class_name: BannedCodeUsage - source: package:external_source - reason: "Use parameter2 instead" - - identifier: banned - named_parameter: parameter1 - class_name: BannedExtension - source: package:external_source - reason: "Use parameter2 instead" + named_parameter: badParameter + class_name: NamedParameterBan + source: package:named_parameter_ban + reason: "Use goodParameter instead" + - identifier: namedConstructor + named_parameter: badParameter + class_name: NamedParameterBan + source: package:named_parameter_ban + reason: "Use goodParameter instead" + - identifier: staticMethod + named_parameter: badParameter + class_name: NamedParameterBan + source: package:named_parameter_ban + reason: "Use goodParameter instead" + - identifier: method + named_parameter: badParameter + class_name: NamedParameterBan + source: package:named_parameter_ban + reason: "Use goodParameter instead" + - identifier: extensionMethod + named_parameter: badParameter + class_name: NamedParameterBanExtension + source: package:named_parameter_ban + reason: "Use goodParameter instead" diff --git a/lint_test/avoid_using_api/named_parameter_ban/lib/named_parameter_ban.dart b/lint_test/avoid_using_api/named_parameter_ban/lib/named_parameter_ban.dart new file mode 100644 index 00000000..c81889b3 --- /dev/null +++ b/lint_test/avoid_using_api/named_parameter_ban/lib/named_parameter_ban.dart @@ -0,0 +1,16 @@ +class NamedParameterBan { + NamedParameterBan({this.badParameter, this.goodParameter}); + + String? badParameter; + String? goodParameter; + + NamedParameterBan.namedConstructor( + {String? badParameter, String? goodParameter}) {} + + void method({String? badParameter, String? goodParameter}) {} + static void staticMethod({String? badParameter, String? goodParameter}) {} +} + +extension NamedParameterBanExtension on int { + String extensionMethod({String? badParameter, String? goodParameter}) => ''; +} diff --git a/lint_test/avoid_using_api/named_parameter_ban/lib/named_parameter_ban_test.dart b/lint_test/avoid_using_api/named_parameter_ban/lib/named_parameter_ban_test.dart index 64d997e4..1a583c72 100644 --- a/lint_test/avoid_using_api/named_parameter_ban/lib/named_parameter_ban_test.dart +++ b/lint_test/avoid_using_api/named_parameter_ban/lib/named_parameter_ban_test.dart @@ -1,28 +1,26 @@ -// ignore_for_file: unused_local_variable - -import 'package:external_source/external_source.dart'; +import 'package:named_parameter_ban/named_parameter_ban.dart'; void testingBannedCodeLint() async { // expect_lint: avoid_using_api - final bannedCodeUsage = BannedCodeUsage(parameter1: ''); - - // expect_lint: avoid_using_api - final test3 = BannedCodeUsage.test3(parameter1: ''); + NamedParameterBan(badParameter: ''); + NamedParameterBan(goodParameter: ''); // expect_lint: avoid_using_api - final test5 = BannedCodeUsage.test5(parameter1: ''); + NamedParameterBan.namedConstructor(badParameter: ''); + NamedParameterBan.namedConstructor(goodParameter: ''); // expect_lint: avoid_using_api - BannedCodeUsage.test2( - parameter1: 'test', + NamedParameterBan.staticMethod( + badParameter: 'test', ); + NamedParameterBan.staticMethod(goodParameter: ''); - final obj = BannedCodeUsage(); + final obj = NamedParameterBan(); // expect_lint: avoid_using_api - obj.test(parameter1: ''); - - test(parameter1: ''); + obj.method(badParameter: ''); + obj.method(goodParameter: ''); // expect_lint: avoid_using_api - 2.banned(parameter1: ''); + 0.extensionMethod(badParameter: ''); + 0.extensionMethod(goodParameter: ''); } From a2ebde3a9f8b6388b4d04838dd7d5bf49d3a7139 Mon Sep 17 00:00:00 2001 From: xJac0b Date: Fri, 6 Jun 2025 15:05:43 +0200 Subject: [PATCH 6/6] fix: make default constructor identifier field private --- lib/src/lints/avoid_using_api/avoid_using_api_linter.dart | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/src/lints/avoid_using_api/avoid_using_api_linter.dart b/lib/src/lints/avoid_using_api/avoid_using_api_linter.dart index a03b7eb6..12fe3a88 100644 --- a/lib/src/lints/avoid_using_api/avoid_using_api_linter.dart +++ b/lib/src/lints/avoid_using_api/avoid_using_api_linter.dart @@ -20,7 +20,7 @@ class AvoidUsingApiLinter { }); /// The identifier for the default constructor - static const String defaultConstructorIdentifier = '()'; + static const String _defaultConstructorIdentifier = '()'; /// Access to the resolver for this lint context final CustomLintResolver resolver; @@ -194,7 +194,7 @@ class AvoidUsingApiLinter { String className, String source, ) { - if (identifier == defaultConstructorIdentifier) { + if (identifier == _defaultConstructorIdentifier) { _banDefaultConstructor(className, source, entryCode); return; } @@ -348,7 +348,7 @@ class AvoidUsingApiLinter { context.registry.addInstanceCreationExpression((node) { String? expectedConstructorName; - if (identifier != defaultConstructorIdentifier) { + if (identifier != _defaultConstructorIdentifier) { expectedConstructorName = identifier; }