diff --git a/CHANGELOG.md b/CHANGELOG.md index 1560bff392..3d8b17914e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,7 @@ * feat: improve static code diagnostic `prefer-extracting-callbacks`: don't trigger on empty function blocks and ignore Flutter builder functions. * feat: improve unused files check, add support for `vm:entry-point` annotation. * fix: compute NumberOfParametersMetric only for functions and methods. +* fix: skip synthetic tokens while compute 'Source lines of Code'. ## 4.3.3 diff --git a/lib/src/analyzers/lint_analyzer/metrics/metrics_factory.dart b/lib/src/analyzers/lint_analyzer/metrics/metrics_factory.dart index 21c7a2aa80..a11743197c 100644 --- a/lib/src/analyzers/lint_analyzer/metrics/metrics_factory.dart +++ b/lib/src/analyzers/lint_analyzer/metrics/metrics_factory.dart @@ -33,14 +33,10 @@ final _implementedMetrics = )>{ Iterable getMetrics({ required Map config, - Iterable patternsDependencies = const [], EntityType? measuredType, }) { - final _metrics = _implementedMetrics.keys.map( - (id) => _implementedMetrics[id]!( - !patternsDependencies.contains(id) ? config : {}, - ), - ); + final _metrics = + _implementedMetrics.keys.map((id) => _implementedMetrics[id]!(config)); return measuredType != null ? _metrics diff --git a/lib/src/analyzers/lint_analyzer/metrics/metrics_list/source_lines_of_code/source_code_visitor.dart b/lib/src/analyzers/lint_analyzer/metrics/metrics_list/source_lines_of_code/source_code_visitor.dart index 0e3e5b3d4b..90d16051a5 100644 --- a/lib/src/analyzers/lint_analyzer/metrics/metrics_list/source_lines_of_code/source_code_visitor.dart +++ b/lib/src/analyzers/lint_analyzer/metrics/metrics_list/source_lines_of_code/source_code_visitor.dart @@ -35,7 +35,10 @@ class SourceCodeVisitor extends RecursiveAstVisitor { void _collectFunctionBodyData(Token? firstToken, Token? lastToken) { var token = firstToken; while (token != lastToken && token != null) { - _linesWithCode.add(_lineInfo.getLocation(token.offset).lineNumber); + if (!token.isSynthetic) { + _linesWithCode.add(_lineInfo.getLocation(token.offset).lineNumber); + } + token = token.next; } } diff --git a/lib/src/config_builder/config_builder.dart b/lib/src/config_builder/config_builder.dart index a2ad0169fa..30863b0a52 100644 --- a/lib/src/config_builder/config_builder.dart +++ b/lib/src/config_builder/config_builder.dart @@ -25,35 +25,26 @@ class ConfigBuilder { String excludesRootFolder, { Iterable>? classMetrics, Iterable>? functionMetrics, - }) { - final patterns = getPatternsById(config); - final patternsDependencies = patterns - .map((pattern) => pattern.dependentMetricIds) - .expand((e) => e) - .toSet(); - - return LintAnalysisConfig( - prepareExcludes(config.excludePatterns, excludesRootFolder), - getRulesById(config.rules), - prepareExcludes(config.excludeForRulesPatterns, excludesRootFolder), - patterns, - classMetrics ?? - getMetrics( - config: config.metrics, - patternsDependencies: patternsDependencies, - measuredType: EntityType.classEntity, - ), - functionMetrics ?? - getMetrics( - config: config.metrics, - patternsDependencies: patternsDependencies, - measuredType: EntityType.methodEntity, - ), - prepareExcludes(config.excludeForMetricsPatterns, excludesRootFolder), - config.metrics, - excludesRootFolder, - ); - } + }) => + LintAnalysisConfig( + prepareExcludes(config.excludePatterns, excludesRootFolder), + getRulesById(config.rules), + prepareExcludes(config.excludeForRulesPatterns, excludesRootFolder), + getPatternsById(config), + classMetrics ?? + getMetrics( + config: config.metrics, + measuredType: EntityType.classEntity, + ), + functionMetrics ?? + getMetrics( + config: config.metrics, + measuredType: EntityType.methodEntity, + ), + prepareExcludes(config.excludeForMetricsPatterns, excludesRootFolder), + config.metrics, + excludesRootFolder, + ); static UnusedFilesConfig getUnusedFilesConfigFromArgs( Iterable excludePatterns,