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

Commit

Permalink
migrate on MetricValue (#198)
Browse files Browse the repository at this point in the history
* migrate on MetricValueLevel

* migrate on MetricValue
  • Loading branch information
dkrutskikh committed Jan 8, 2021
1 parent 33c8e8e commit 039ab72
Show file tree
Hide file tree
Showing 17 changed files with 202 additions and 263 deletions.
6 changes: 3 additions & 3 deletions bin/metrics.dart
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
import 'dart:io';

import 'package:code_checker/metrics.dart';
import 'package:dart_code_metrics/metrics_analyzer.dart';
import 'package:dart_code_metrics/reporters.dart';
import 'package:dart_code_metrics/src/config/cli/arguments_parser.dart';
import 'package:dart_code_metrics/src/config/cli/arguments_validation.dart';
import 'package:dart_code_metrics/src/config/cli/arguments_validation_exceptions.dart';
import 'package:dart_code_metrics/src/models/violation_level.dart';
import 'package:dart_code_metrics/src/reporters/utility_selector.dart';
import 'package:path/path.dart' as p;

Expand Down Expand Up @@ -33,7 +33,7 @@ Future<void> main(List<String> args) async {
arguments[reporterName] as String,
arguments[verboseName] as bool,
arguments[gitlabCompatibilityName] as bool,
ViolationLevel.fromString(arguments[setExitOnViolationLevel] as String),
MetricValueLevel.fromString(arguments[setExitOnViolationLevel] as String),
);
} on FormatException catch (e) {
print('${e.message}\n');
Expand Down Expand Up @@ -62,7 +62,7 @@ Future<void> _runAnalysis(
String reporterType,
bool verbose,
bool gitlab,
ViolationLevel setExitOnViolationLevel,
MetricValueLevel setExitOnViolationLevel,
) async {
final analysisOptionsFile =
File(p.absolute(rootFolder, analysisOptionsFileName));
Expand Down
6 changes: 2 additions & 4 deletions lib/src/analyzer_plugin/analyzer_plugin.dart
Original file line number Diff line number Diff line change
Expand Up @@ -363,8 +363,7 @@ class MetricsAnalyzerPlugin extends ServerPlugin {
SourceLocation startSourceLocation,
AnalyzerPluginConfig config,
) =>
UtilitySelector.isIssueLevel(
functionReport.cyclomaticComplexity.violationLevel)
UtilitySelector.isIssueLevel(functionReport.cyclomaticComplexity.level)
? metricReportToAnalysisErrorFixes(
startSourceLocation,
function.declaration.end - startSourceLocation.offset,
Expand All @@ -379,8 +378,7 @@ class MetricsAnalyzerPlugin extends ServerPlugin {
SourceLocation startSourceLocation,
AnalyzerPluginConfig config,
) =>
UtilitySelector.isIssueLevel(
functionReport.maximumNestingLevel.violationLevel)
UtilitySelector.isIssueLevel(functionReport.maximumNestingLevel.level)
? metricReportToAnalysisErrorFixes(
startSourceLocation,
function.declaration.end - startSourceLocation.offset,
Expand Down
5 changes: 2 additions & 3 deletions lib/src/models/component_report.dart
Original file line number Diff line number Diff line change
@@ -1,10 +1,9 @@
import 'package:code_checker/metrics.dart';
import 'package:meta/meta.dart';

import 'report_metric.dart';

@immutable
class ComponentReport {
final ReportMetric<int> methodsCount;
final MetricValue<int> methodsCount;

const ComponentReport({@required this.methodsCount});
}
13 changes: 6 additions & 7 deletions lib/src/models/function_report.dart
Original file line number Diff line number Diff line change
@@ -1,14 +1,13 @@
import 'package:code_checker/metrics.dart';
import 'package:meta/meta.dart';

import 'report_metric.dart';

@immutable
class FunctionReport {
final ReportMetric<int> cyclomaticComplexity;
final ReportMetric<int> linesOfExecutableCode;
final ReportMetric<double> maintainabilityIndex;
final ReportMetric<int> argumentsCount;
final ReportMetric<int> maximumNestingLevel;
final MetricValue<int> cyclomaticComplexity;
final MetricValue<int> linesOfExecutableCode;
final MetricValue<double> maintainabilityIndex;
final MetricValue<int> argumentsCount;
final MetricValue<int> maximumNestingLevel;

const FunctionReport({
@required this.cyclomaticComplexity,
Expand Down
10 changes: 0 additions & 10 deletions lib/src/models/report_metric.dart

This file was deleted.

36 changes: 0 additions & 36 deletions lib/src/models/violation_level.dart

This file was deleted.

11 changes: 4 additions & 7 deletions lib/src/reporters/code_climate/code_climate_reporter.dart
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ class CodeClimateReporter implements Reporter {
final report = UtilitySelector.componentReport(component, reportConfig);

return [
if (UtilitySelector.isIssueLevel(report.methodsCount.violationLevel))
if (UtilitySelector.isIssueLevel(report.methodsCount.level))
CodeClimateIssue.numberOfMethods(
component.firstLine,
component.lastLine,
Expand Down Expand Up @@ -71,8 +71,7 @@ class CodeClimateReporter implements Reporter {
final func = record.functions[key];
final report = UtilitySelector.functionReport(func, reportConfig);

if (UtilitySelector.isIssueLevel(
report.cyclomaticComplexity.violationLevel)) {
if (UtilitySelector.isIssueLevel(report.cyclomaticComplexity.level)) {
issues.add(CodeClimateIssue.cyclomaticComplexity(
func,
report.cyclomaticComplexity.value,
Expand All @@ -82,8 +81,7 @@ class CodeClimateReporter implements Reporter {
));
}

if (UtilitySelector.isIssueLevel(
report.maintainabilityIndex.violationLevel)) {
if (UtilitySelector.isIssueLevel(report.maintainabilityIndex.level)) {
issues.add(CodeClimateIssue.maintainabilityIndex(
func,
report.maintainabilityIndex.value.toInt(),
Expand All @@ -92,8 +90,7 @@ class CodeClimateReporter implements Reporter {
));
}

if (UtilitySelector.isIssueLevel(
report.maximumNestingLevel.violationLevel)) {
if (UtilitySelector.isIssueLevel(report.maximumNestingLevel.level)) {
issues.add(CodeClimateIssue.maximumNestingLevel(
func,
report.maximumNestingLevel.value,
Expand Down
27 changes: 13 additions & 14 deletions lib/src/reporters/console_reporter.dart
Original file line number Diff line number Diff line change
@@ -1,11 +1,10 @@
import 'package:ansicolor/ansicolor.dart';
import 'package:code_checker/metrics.dart';
import 'package:code_checker/rules.dart';
import 'package:meta/meta.dart';

import '../config/config.dart';
import '../models/file_record.dart';
import '../models/report_metric.dart';
import '../models/violation_level.dart';
import '../reporters/reporter.dart';
import '../reporters/utility_selector.dart';

Expand All @@ -17,17 +16,17 @@ class ConsoleReporter implements Reporter {
final bool reportAll;

final _colorPens = {
ViolationLevel.alarm: AnsiPen()..red(),
ViolationLevel.warning: AnsiPen()..yellow(),
ViolationLevel.noted: AnsiPen()..blue(),
ViolationLevel.none: AnsiPen()..white(),
MetricValueLevel.alarm: AnsiPen()..red(),
MetricValueLevel.warning: AnsiPen()..yellow(),
MetricValueLevel.noted: AnsiPen()..blue(),
MetricValueLevel.none: AnsiPen()..white(),
};

static const _humanReadableLabel = {
ViolationLevel.alarm: 'ALARM',
ViolationLevel.warning: 'WARNING',
ViolationLevel.noted: 'NOTED',
ViolationLevel.none: '',
MetricValueLevel.alarm: 'ALARM',
MetricValueLevel.warning: 'WARNING',
MetricValueLevel.noted: 'NOTED',
MetricValueLevel.none: '',
};

final _severityColors = {
Expand Down Expand Up @@ -133,9 +132,9 @@ class ConsoleReporter implements Reporter {
return lines;
}

bool _isNeedToReport(ReportMetric metric) =>
metric.violationLevel != ViolationLevel.none;
bool _isNeedToReport(MetricValue metric) =>
metric.level != MetricValueLevel.none;

String _report(ReportMetric<num> metric, String humanReadableName) =>
'$humanReadableName: ${_colorPens[metric.violationLevel]('${metric.value.toInt()}')}';
String _report(MetricValue<num> metric, String humanReadableName) =>
'$humanReadableName: ${_colorPens[metric.level]('${metric.value.toInt()}')}';
}
25 changes: 13 additions & 12 deletions lib/src/reporters/html/html_reporter.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,30 +2,30 @@ import 'dart:convert';
import 'dart:io';
import 'dart:isolate';

import 'package:code_checker/metrics.dart';
import 'package:html/dom.dart';
import 'package:meta/meta.dart';
import 'package:path/path.dart' as p;

import '../../config/config.dart';
import '../../models/file_record.dart';
import '../../models/file_report.dart';
import '../../models/violation_level.dart';
import '../reporter.dart';
import '../utility_selector.dart';
import 'utility_functions.dart';

const _violationLevelFunctionStyle = {
ViolationLevel.alarm: 'metrics-source-code__text--attention-complexity',
ViolationLevel.warning: 'metrics-source-code__text--warning-complexity',
ViolationLevel.noted: 'metrics-source-code__text--noted-complexity',
ViolationLevel.none: 'metrics-source-code__text--normal-complexity',
MetricValueLevel.alarm: 'metrics-source-code__text--attention-complexity',
MetricValueLevel.warning: 'metrics-source-code__text--warning-complexity',
MetricValueLevel.noted: 'metrics-source-code__text--noted-complexity',
MetricValueLevel.none: 'metrics-source-code__text--normal-complexity',
};

const _violationLevelLineStyle = {
ViolationLevel.alarm: 'metrics-source-code__line--attention-complexity',
ViolationLevel.warning: 'metrics-source-code__line--warning-complexity',
ViolationLevel.noted: 'metrics-source-code__line--noted-complexity',
ViolationLevel.none: 'metrics-source-code__line--normal-complexity',
MetricValueLevel.alarm: 'metrics-source-code__line--attention-complexity',
MetricValueLevel.warning: 'metrics-source-code__line--warning-complexity',
MetricValueLevel.noted: 'metrics-source-code__line--noted-complexity',
MetricValueLevel.none: 'metrics-source-code__line--normal-complexity',
};

const _cyclomaticComplexity = 'Cyclomatic complexity';
Expand Down Expand Up @@ -364,9 +364,10 @@ class HtmlReporter implements Reporter {
..classes.add('metrics-source-code__complexity');
for (var i = 1; i <= sourceFileLines.length; ++i) {
final functionReport = record.functions.values.firstWhere(
(functionReport) =>
functionReport.firstLine <= i && functionReport.lastLine >= i,
orElse: () => null);
(functionReport) =>
functionReport.firstLine <= i && functionReport.lastLine >= i,
orElse: () => null,
);

final complexityValueElement = Element.tag('div')
..classes.add('metrics-source-code__text');
Expand Down
6 changes: 3 additions & 3 deletions lib/src/reporters/html/utility_functions.dart
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import 'package:code_checker/metrics.dart';
import 'package:html/dom.dart';

import '../../models/report_metric.dart';
import 'html_reporter.dart';

const _violations = 'violations';
Expand Down Expand Up @@ -28,9 +28,9 @@ Element renderSummaryMetric(
..text = value);
}

Element renderFunctionMetric(String name, ReportMetric<num> metric) {
Element renderFunctionMetric(String name, MetricValue<num> metric) {
final metricName = name.toLowerCase();
final violationLevel = metric.violationLevel.toString().toLowerCase();
final violationLevel = metric.level.toString();

return Element.tag('div')
..classes.add('metrics-source-code__tooltip-section')
Expand Down
7 changes: 3 additions & 4 deletions lib/src/reporters/json_reporter.dart
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
import 'dart:convert';

import 'package:code_checker/metrics.dart';
import 'package:code_checker/rules.dart';
import 'package:meta/meta.dart';

import '../config/config.dart';
import '../models/file_record.dart';
import '../models/report_metric.dart';
import 'reporter.dart';
import 'utility_selector.dart';

Expand Down Expand Up @@ -101,9 +101,8 @@ class JsonReporter implements Reporter {
})
.toList();

Map<String, Object> _report(ReportMetric<num> metric, String metricName) => {
Map<String, Object> _report(MetricValue<num> metric, String metricName) => {
metricName: metric.value.toInt(),
'$metricName-violation-level':
metric.violationLevel.toString().toLowerCase(),
'$metricName-violation-level': metric.level.toString(),
};
}
Loading

0 comments on commit 039ab72

Please sign in to comment.