Skip to content
This repository was archived by the owner on Jul 16, 2023. It is now read-only.

Commit d9ad9d5

Browse files
authored
fix: make check-unused-l10n report class fields (#517)
* fix: make check-unused-l10n report class fields * chore: remove additional toList calls
1 parent ab6a928 commit d9ad9d5

File tree

5 files changed

+58
-6
lines changed

5 files changed

+58
-6
lines changed

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
# Changelog
22

3+
## Unreleased
4+
5+
* fix: make check-unused-l10n report class fields.
6+
37
## 4.5.0-dev.2
48

59
* feat: add static code diagnostics `prefer-correct-type-name`, `prefer-last`, `avoid-nested-conditional-expressions`.

lib/src/analyzers/unused_l10n_analyzer/unused_l10n_analyzer.dart

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -166,8 +166,8 @@ class UnusedL10nAnalyzer {
166166
CompilationUnitElement unit,
167167
) {
168168
final unusedAccessors = classElement.accessors
169-
.where((field) => !usages.contains(field.name) && !field.isSynthetic)
170-
.toList();
169+
.where((field) => !usages.contains(field.name))
170+
.map((field) => field.isSynthetic ? field.nonSynthetic : field);
171171

172172
return unusedAccessors
173173
.map((accessor) => _createL10nIssues(accessor as ElementImpl, unit))
@@ -180,10 +180,8 @@ class UnusedL10nAnalyzer {
180180
CompilationUnitElement unit,
181181
) {
182182
final unusedMethods = classElement.methods
183-
.where(
184-
(method) => !usages.contains(method.name) && !method.isSynthetic,
185-
)
186-
.toList();
183+
.where((method) => !usages.contains(method.name))
184+
.map((method) => method.isSynthetic ? method.nonSynthetic : method);
187185

188186
return unusedMethods
189187
.map((method) => _createL10nIssues(method as ElementImpl, unit))

test/analyzers/unused_l10n_analyzer/unused_l10n_analyzer_test.dart

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,43 @@ void main() {
5050
expect(secondIssues.location.column, 3);
5151
});
5252

53+
test('should analyze files with custom class pattern', () async {
54+
final config = _createConfig(
55+
analyzerExcludePatterns: analyzerExcludes,
56+
classPattern: r'^S$',
57+
);
58+
59+
final result = await analyzer.runCliAnalysis(
60+
folders,
61+
rootDirectory,
62+
config,
63+
);
64+
65+
final report = result.single;
66+
expect(report.className, 'S');
67+
68+
final firstIssue = report.issues.elementAt(0);
69+
expect(firstIssue.memberName, 'field');
70+
expect(firstIssue.location.line, 13);
71+
expect(firstIssue.location.column, 3);
72+
73+
final secondIssues = report.issues.elementAt(1);
74+
expect(
75+
secondIssues.memberName,
76+
'method(String value)',
77+
);
78+
expect(secondIssues.location.line, 17);
79+
expect(secondIssues.location.column, 3);
80+
81+
final thirdIssues = report.issues.elementAt(2);
82+
expect(
83+
thirdIssues.memberName,
84+
'secondMethod(String value, num number)',
85+
);
86+
expect(thirdIssues.location.line, 19);
87+
expect(thirdIssues.location.column, 3);
88+
});
89+
5390
test('should report no issues for a custom class name pattern', () async {
5491
final config = _createConfig(
5592
analyzerExcludePatterns: analyzerExcludes,

test/resources/unused_l10n_analyzer/test_i18n.dart

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,3 +8,14 @@ class TestI18n {
88
static String secondMethod(String value, num number) =>
99
value + number.toString();
1010
}
11+
12+
class S {
13+
static const String field = 'field'; // LINT
14+
15+
static String get getter => 'getter';
16+
17+
static String method(String value) => value; // LINT
18+
19+
static String secondMethod(String value, num number) => // LINT
20+
value + number.toString();
21+
}

test/resources/unused_l10n_analyzer/unused_l10n_analyzer_example.dart

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@ import 'test_i18n.dart';
22

33
void main() {
44
final _ = TestI18n.method('value');
5+
6+
S.getter;
57
}
68

79
class SomeClass {

0 commit comments

Comments
 (0)