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

Commit 5574a46

Browse files
committed
feat: cleanup metrics configs
1 parent 179c505 commit 5574a46

File tree

2 files changed

+35
-22
lines changed

2 files changed

+35
-22
lines changed

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

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

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

4145
return measuredType != null
4246
? _metrics

lib/src/config_builder/config_builder.dart

Lines changed: 29 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -25,26 +25,35 @@ class ConfigBuilder {
2525
String excludesRootFolder, {
2626
Iterable<Metric<num>>? classMetrics,
2727
Iterable<Metric<num>>? functionMetrics,
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-
);
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+
}
4857

4958
static UnusedFilesConfig getUnusedFilesConfigFromArgs(
5059
Iterable<String> excludePatterns,

0 commit comments

Comments
 (0)