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

Commit

Permalink
Merge bfb554a into 1149f5c
Browse files Browse the repository at this point in the history
  • Loading branch information
dkrutskikh committed Nov 29, 2020
2 parents 1149f5c + bfb554a commit 257b837
Show file tree
Hide file tree
Showing 32 changed files with 131 additions and 129 deletions.
14 changes: 7 additions & 7 deletions bin/metrics.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@ import 'dart:io';

import 'package:dart_code_metrics/metrics_analyzer.dart';
import 'package:dart_code_metrics/reporters.dart';
import 'package:dart_code_metrics/src/cli/arguments_parser.dart';
import 'package:dart_code_metrics/src/cli/arguments_validation.dart';
import 'package:dart_code_metrics/src/cli/arguments_validation_exceptions.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 All @@ -25,10 +25,10 @@ Future<void> main(List<String> args) async {
arguments[rootFolderName] as String,
arguments.rest,
arguments[ignoredFilesName] as String,
int.tryParse(arguments[cyclomaticComplexityThreshold] as String ?? ''),
int.tryParse(arguments[linesOfExecutableCodeThreshold] as String ?? ''),
int.tryParse(arguments[numberOfArgumentsThreshold] as String ?? ''),
int.tryParse(arguments[numberOfMethodsThreshold] as String ?? ''),
int.tryParse(arguments[cyclomaticComplexityKey] as String ?? ''),
int.tryParse(arguments[linesOfExecutableCodeKey] as String ?? ''),
int.tryParse(arguments[numberOfArgumentsKey] as String ?? ''),
int.tryParse(arguments[numberOfMethodsKey] as String ?? ''),
arguments[reporterName] as String,
arguments[verboseName] as bool,
ViolationLevel.fromString(arguments[setExitOnViolationLevel] as String),
Expand Down
4 changes: 2 additions & 2 deletions lib/metrics_analyzer.dart
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
export 'package:dart_code_metrics/src/analysis_options.dart';
export 'package:dart_code_metrics/src/config/analysis_options.dart';
export 'package:dart_code_metrics/src/config/config.dart';
export 'package:dart_code_metrics/src/metrics_analysis_runner.dart';
export 'package:dart_code_metrics/src/metrics_analyzer.dart';
export 'package:dart_code_metrics/src/metrics_records_builder.dart';
export 'package:dart_code_metrics/src/metrics_records_store.dart';
export 'package:dart_code_metrics/src/models/config.dart';
2 changes: 1 addition & 1 deletion lib/src/analyzer_plugin/analyzer_plugin.dart
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,8 @@ import 'package:analyzer_plugin/protocol/protocol_common.dart' as plugin;
import 'package:analyzer_plugin/protocol/protocol_generated.dart' as plugin;
import 'package:source_span/source_span.dart';

import '../analysis_options.dart';
import '../anti_patterns_factory.dart';
import '../config/analysis_options.dart';
import '../ignore_info.dart';
import '../metrics/cyclomatic_complexity/control_flow_ast_visitor.dart';
import '../metrics/cyclomatic_complexity/cyclomatic_config.dart';
Expand Down
6 changes: 3 additions & 3 deletions lib/src/analyzer_plugin/analyzer_plugin_config.dart
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import 'package:dart_code_metrics/src/anti_patterns/base_pattern.dart';
import 'package:dart_code_metrics/src/rules/base_rule.dart';
import 'package:glob/glob.dart';
import 'package:meta/meta.dart';

import '../models/config.dart';
import '../anti_patterns/base_pattern.dart';
import '../config/config.dart';
import '../rules/base_rule.dart';

@immutable
class AnalyzerPluginConfig {
Expand Down
2 changes: 1 addition & 1 deletion lib/src/anti_patterns/base_pattern.dart
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import 'package:meta/meta.dart';

import '../models/config.dart';
import '../config/config.dart';
import '../models/design_issue.dart';
import '../models/source.dart';

Expand Down
2 changes: 1 addition & 1 deletion lib/src/anti_patterns/long_method.dart
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import 'package:meta/meta.dart';

import '../config/config.dart';
import '../lines_of_code/lines_with_code_ast_visitor.dart';
import '../models/config.dart';
import '../models/design_issue.dart';
import '../models/source.dart';
import '../scope_ast_visitor.dart';
Expand Down
2 changes: 1 addition & 1 deletion lib/src/anti_patterns/long_parameter_list.dart
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import 'package:meta/meta.dart';

import '../models/config.dart';
import '../config/config.dart';
import '../models/design_issue.dart';
import '../models/source.dart';
import '../scope_ast_visitor.dart';
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,11 @@ import 'dart:io';

import 'package:meta/meta.dart';

import 'models/config.dart';
import 'utils/object_extensions.dart';
import 'utils/yaml_utils.dart';
import '../utils/object_extensions.dart';
import '../utils/yaml_utils.dart';
import 'config.dart';

// Documantation about customizing static analysis located at https://dart.dev/guides/language/analysis-options
// Documentation about customizing static analysis located at https://dart.dev/guides/language/analysis-options

const String analysisOptionsFileName = 'analysis_options.yaml';

Expand Down Expand Up @@ -68,15 +68,13 @@ Config _readMetricsConfig(Map<String, Object> configMap) {
final configMap = metricsOptions[_metricsKey];
if (configMap is Map<String, Object>) {
return Config(
cyclomaticComplexityWarningLevel: configMap['cyclomatic-complexity']
cyclomaticComplexityWarningLevel: configMap[cyclomaticComplexityKey]
.as<int>(cyclomaticComplexityDefaultWarningLevel),
linesOfExecutableCodeWarningLevel:
(configMap['lines-of-executable-code'] ??
configMap['lines-of-code'])
.as<int>(linesOfExecutableCodeDefaultWarningLevel),
numberOfArgumentsWarningLevel: configMap['number-of-arguments']
linesOfExecutableCodeWarningLevel: configMap[linesOfExecutableCodeKey]
.as<int>(linesOfExecutableCodeDefaultWarningLevel),
numberOfArgumentsWarningLevel: configMap[numberOfArgumentsKey]
.as<int>(numberOfArgumentsDefaultWarningLevel),
numberOfMethodsWarningLevel: configMap['number-of-methods']
numberOfMethodsWarningLevel: configMap[numberOfMethodsKey]
.as<int>(numberOfMethodsDefaultWarningLevel),
);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,11 @@ import 'dart:io';
import 'package:args/args.dart';
import 'package:meta/meta.dart';

import '../../metrics_analyzer.dart';
import '../config.dart';

const usageHeader = 'Usage: metrics [options...] <directories>';
const helpFlagName = 'help';
const reporterName = 'reporter';
const cyclomaticComplexityThreshold = 'cyclomatic-complexity';
const linesOfExecutableCodeThreshold = 'lines-of-executable-code';
const numberOfArgumentsThreshold = 'number-of-arguments';
const numberOfMethodsThreshold = 'number-of-methods';
const verboseName = 'verbose';
const ignoredFilesName = 'ignore-files';
const rootFolderName = 'root-folder';
Expand Down Expand Up @@ -63,22 +59,22 @@ class _MetricOption {
void _appendMetricsThresholdOptions(ArgParser parser) {
const metrics = [
_MetricOption(
cyclomaticComplexityThreshold,
cyclomaticComplexityKey,
'Cyclomatic complexity threshold',
cyclomaticComplexityDefaultWarningLevel,
),
_MetricOption(
linesOfExecutableCodeThreshold,
linesOfExecutableCodeKey,
'Lines of executable code threshold',
linesOfExecutableCodeDefaultWarningLevel,
),
_MetricOption(
numberOfArgumentsThreshold,
numberOfArgumentsKey,
'Number of arguments threshold',
numberOfArgumentsDefaultWarningLevel,
),
_MetricOption(
numberOfMethodsThreshold,
numberOfMethodsKey,
'Number of methods threshold',
numberOfMethodsDefaultWarningLevel,
),
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
import 'dart:io';

import 'package:args/args.dart';
import 'package:dart_code_metrics/src/cli/arguments_parser.dart';
import 'package:dart_code_metrics/src/cli/arguments_validation_exceptions.dart';
import 'package:path/path.dart' as path;

import 'arguments_parser.dart';
import 'arguments_validation_exceptions.dart';

/// Umbrella method to run all checks
/// throws [InvalidArgumentException]
void validateArguments(ArgResults arguments) {
Expand Down
5 changes: 5 additions & 0 deletions lib/src/models/config.dart → lib/src/config/config.dart
Original file line number Diff line number Diff line change
@@ -1,5 +1,10 @@
import 'package:meta/meta.dart';

const cyclomaticComplexityKey = 'cyclomatic-complexity';
const linesOfExecutableCodeKey = 'lines-of-executable-code';
const numberOfArgumentsKey = 'number-of-arguments';
const numberOfMethodsKey = 'number-of-methods';

const cyclomaticComplexityDefaultWarningLevel = 20;
const linesOfExecutableCodeDefaultWarningLevel = 50;
const numberOfArgumentsDefaultWarningLevel = 4;
Expand Down
2 changes: 1 addition & 1 deletion lib/src/metrics_analysis_recorder.dart
Original file line number Diff line number Diff line change
Expand Up @@ -110,7 +110,7 @@ class MetricsAnalysisRecorder
functions: Map.unmodifiable(_functionRecords.map<String, FunctionRecord>(
(key, value) => MapEntry(getFunctionHumanReadableName(key), value))),
issues: _issues,
designIssue: _designIssues,
designIssues: _designIssues,
));
_relativeGroupPath = null;
_fileGroupPath = null;
Expand Down
4 changes: 2 additions & 2 deletions lib/src/metrics_analyzer.dart
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,10 @@ import 'package:analyzer/file_system/physical_file_system.dart';
import 'package:glob/glob.dart';
import 'package:path/path.dart' as p;

import 'analysis_options.dart';
import 'anti_patterns/base_pattern.dart';
import 'anti_patterns_factory.dart';
import 'config/analysis_options.dart';
import 'config/config.dart';
import 'halstead_volume/halstead_volume_ast_visitor.dart';
import 'ignore_info.dart';
import 'lines_of_code/lines_with_code_ast_visitor.dart';
Expand All @@ -18,7 +19,6 @@ import 'metrics/cyclomatic_complexity/cyclomatic_config.dart';
import 'metrics_records_store.dart';
import 'models/code_issue.dart';
import 'models/component_record.dart';
import 'models/config.dart';
import 'models/design_issue.dart';
import 'models/function_record.dart';
import 'models/source.dart';
Expand Down
4 changes: 2 additions & 2 deletions lib/src/models/file_record.dart
Original file line number Diff line number Diff line change
Expand Up @@ -14,14 +14,14 @@ class FileRecord {
final Map<String, FunctionRecord> functions;

final Iterable<CodeIssue> issues;
final Iterable<DesignIssue> designIssue;
final Iterable<DesignIssue> designIssues;

const FileRecord({
@required this.fullPath,
@required this.relativePath,
@required this.components,
@required this.functions,
@required this.issues,
@required this.designIssue,
@required this.designIssues,
});
}
4 changes: 2 additions & 2 deletions lib/src/reporters/code_climate/code_climate_reporter.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import 'dart:convert';

import 'package:meta/meta.dart';

import '../../models/config.dart';
import '../../config/config.dart';
import '../../models/file_record.dart';
import '../reporter.dart';
import '../utility_selector.dart';
Expand Down Expand Up @@ -68,7 +68,7 @@ class CodeClimateReporter implements Reporter {
result
..addAll(record.issues.map((issue) =>
CodeClimateIssue.fromCodeIssue(issue, record.relativePath)))
..addAll(record.designIssue.map((issue) =>
..addAll(record.designIssues.map((issue) =>
CodeClimateIssue.fromDesignIssue(issue, record.relativePath)));

return result;
Expand Down
17 changes: 9 additions & 8 deletions lib/src/reporters/console_reporter.dart
Original file line number Diff line number Diff line change
@@ -1,13 +1,14 @@
import 'package:ansicolor/ansicolor.dart';
import 'package:dart_code_metrics/src/models/code_issue_severity.dart';
import 'package:dart_code_metrics/src/models/config.dart';
import 'package:dart_code_metrics/src/models/file_record.dart';
import 'package:dart_code_metrics/src/models/report_metric.dart';
import 'package:dart_code_metrics/src/models/violation_level.dart';
import 'package:dart_code_metrics/src/reporters/reporter.dart';
import 'package:dart_code_metrics/src/reporters/utility_selector.dart';
import 'package:meta/meta.dart';

import '../config/config.dart';
import '../models/code_issue_severity.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';

/// Plain terminal reporter
class ConsoleReporter implements Reporter {
final Config reportConfig;
Expand Down Expand Up @@ -93,7 +94,7 @@ class ConsoleReporter implements Reporter {
}
});

for (final issue in analysisRecord.designIssue) {
for (final issue in analysisRecord.designIssues) {
final severity = _designIssuesColor(_designIssues.padRight(8));
final position =
'${issue.sourceSpan.start.line}:${issue.sourceSpan.start.column}';
Expand Down
2 changes: 1 addition & 1 deletion lib/src/reporters/github/github_reporter.dart
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ class GitHubReporter implements Reporter {
final reportStrings = <String>[];

for (final analysisRecord in records) {
for (final issue in analysisRecord.designIssue) {
for (final issue in analysisRecord.designIssues) {
reportStrings.add(
_commands.warning(issue.message, sourceSpan: issue.sourceSpan));
}
Expand Down
16 changes: 8 additions & 8 deletions lib/src/reporters/html/html_reporter.dart
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,14 @@ import 'dart:io';
import 'dart:isolate';

import 'package:html/dom.dart';
import 'package:dart_code_metrics/src/models/config.dart';
import 'package:dart_code_metrics/src/models/file_record.dart';
import 'package:dart_code_metrics/src/models/violation_level.dart';
import 'package:dart_code_metrics/src/reporters/reporter.dart';
import 'package:dart_code_metrics/src/reporters/utility_selector.dart';
import 'package:meta/meta.dart';
import 'package:path/path.dart' as p;

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

const _violationLevelFunctionStyle = {
Expand Down Expand Up @@ -479,7 +479,7 @@ class HtmlReporter implements Reporter {
complexityValueElement.classes.add(lineViolationStyle ?? '');
}

final architecturalIssues = record.designIssue.firstWhere(
final architecturalIssues = record.designIssues.firstWhere(
(element) => element.sourceSpan.start.line == i,
orElse: () => null);

Expand Down Expand Up @@ -652,8 +652,8 @@ class HtmlReporter implements Reporter {
if (record.issues.isNotEmpty)
renderSummaryMetric(_codeIssues, '${record.issues.length}',
withViolation: true),
if (record.designIssue.isNotEmpty)
renderSummaryMetric(_designIssues, '${record.designIssue.length}',
if (record.designIssues.isNotEmpty)
renderSummaryMetric(_designIssues, '${record.designIssues.length}',
withViolation: true),
]);
}
Expand Down

0 comments on commit 257b837

Please sign in to comment.