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

Commit 006f077

Browse files
authored
fix: skip synthetic tokens while compute 'Source lines of Code' (#487)
* fix: skip synthetic tokens while compute 'Source lines of Code' * chore: revert experimental code
1 parent eb5412c commit 006f077

File tree

4 files changed

+27
-36
lines changed

4 files changed

+27
-36
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
* feat: improve static code diagnostic `prefer-extracting-callbacks`: don't trigger on empty function blocks and ignore Flutter builder functions.
88
* feat: improve unused files check, add support for `vm:entry-point` annotation.
99
* fix: compute NumberOfParametersMetric only for functions and methods.
10+
* fix: skip synthetic tokens while compute 'Source lines of Code'.
1011

1112
## 4.3.3
1213

lib/src/analyzers/lint_analyzer/metrics/metrics_factory.dart

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -33,14 +33,10 @@ final _implementedMetrics = <String, Metric Function(Map<String, Object>)>{
3333

3434
Iterable<Metric> getMetrics({
3535
required Map<String, Object> config,
36-
Iterable<String> patternsDependencies = const [],
3736
EntityType? measuredType,
3837
}) {
39-
final _metrics = _implementedMetrics.keys.map(
40-
(id) => _implementedMetrics[id]!(
41-
!patternsDependencies.contains(id) ? config : {},
42-
),
43-
);
38+
final _metrics =
39+
_implementedMetrics.keys.map((id) => _implementedMetrics[id]!(config));
4440

4541
return measuredType != null
4642
? _metrics

lib/src/analyzers/lint_analyzer/metrics/metrics_list/source_lines_of_code/source_code_visitor.dart

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,10 @@ class SourceCodeVisitor extends RecursiveAstVisitor<void> {
3535
void _collectFunctionBodyData(Token? firstToken, Token? lastToken) {
3636
var token = firstToken;
3737
while (token != lastToken && token != null) {
38-
_linesWithCode.add(_lineInfo.getLocation(token.offset).lineNumber);
38+
if (!token.isSynthetic) {
39+
_linesWithCode.add(_lineInfo.getLocation(token.offset).lineNumber);
40+
}
41+
3942
token = token.next;
4043
}
4144
}

lib/src/config_builder/config_builder.dart

Lines changed: 20 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -25,35 +25,26 @@ class ConfigBuilder {
2525
String excludesRootFolder, {
2626
Iterable<Metric<num>>? classMetrics,
2727
Iterable<Metric<num>>? functionMetrics,
28-
}) {
29-
final patterns = getPatternsById(config);
30-
final patternsDependencies = patterns
31-
.map((pattern) => pattern.dependentMetricIds)
32-
.expand((e) => e)
33-
.toSet();
34-
35-
return LintAnalysisConfig(
36-
prepareExcludes(config.excludePatterns, excludesRootFolder),
37-
getRulesById(config.rules),
38-
prepareExcludes(config.excludeForRulesPatterns, excludesRootFolder),
39-
patterns,
40-
classMetrics ??
41-
getMetrics(
42-
config: config.metrics,
43-
patternsDependencies: patternsDependencies,
44-
measuredType: EntityType.classEntity,
45-
),
46-
functionMetrics ??
47-
getMetrics(
48-
config: config.metrics,
49-
patternsDependencies: patternsDependencies,
50-
measuredType: EntityType.methodEntity,
51-
),
52-
prepareExcludes(config.excludeForMetricsPatterns, excludesRootFolder),
53-
config.metrics,
54-
excludesRootFolder,
55-
);
56-
}
28+
}) =>
29+
LintAnalysisConfig(
30+
prepareExcludes(config.excludePatterns, excludesRootFolder),
31+
getRulesById(config.rules),
32+
prepareExcludes(config.excludeForRulesPatterns, excludesRootFolder),
33+
getPatternsById(config),
34+
classMetrics ??
35+
getMetrics(
36+
config: config.metrics,
37+
measuredType: EntityType.classEntity,
38+
),
39+
functionMetrics ??
40+
getMetrics(
41+
config: config.metrics,
42+
measuredType: EntityType.methodEntity,
43+
),
44+
prepareExcludes(config.excludeForMetricsPatterns, excludesRootFolder),
45+
config.metrics,
46+
excludesRootFolder,
47+
);
5748

5849
static UnusedFilesConfig getUnusedFilesConfigFromArgs(
5950
Iterable<String> excludePatterns,

0 commit comments

Comments
 (0)