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

Commit

Permalink
a bit refactor
Browse files Browse the repository at this point in the history
  • Loading branch information
dkrutskikh committed Dec 5, 2020
1 parent 9286a71 commit f847697
Show file tree
Hide file tree
Showing 8 changed files with 161 additions and 188 deletions.
3 changes: 1 addition & 2 deletions lib/src/analyzer_plugin/analyzer_plugin.dart
Expand Up @@ -11,7 +11,6 @@ import 'package:analyzer/src/context/context_root.dart';
// ignore: implementation_imports
import 'package:analyzer/src/dart/analysis/driver.dart';
import 'package:analyzer_plugin/plugin/plugin.dart';
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';

Expand Down Expand Up @@ -373,7 +372,7 @@ class MetricsAnalyzerPlugin extends ServerPlugin {
for (final file in filesToFullyResolve) {
final contextRoot = contextRootContaining(file);
if (contextRoot != null) {
// TODO(dmitrykrutskih): Which driver should we use if there is no context root?
// TODO(dkrutskikh): Which driver should we use if there is no context root?
final driver = driverMap[contextRoot];
filesByDriver.putIfAbsent(driver, () => <String>[]).add(file);
}
Expand Down
34 changes: 17 additions & 17 deletions lib/src/metrics_analyzer.dart
Expand Up @@ -136,23 +136,23 @@ class MetricsAnalyzer {
function.declaration.visitChildren(linesWithCodeAstVisitor);

builder.recordFunction(
function,
FunctionRecord(
firstLine: lineInfo
.getLocation(function.declaration
.firstTokenAfterCommentAndMetadata.offset)
.lineNumber,
lastLine: lineInfo
.getLocation(function.declaration.endToken.end)
.lineNumber,
argumentsCount: getArgumentsCount(function),
cyclomaticComplexityLines:
Map.unmodifiable(controlFlowAstVisitor.complexityLines),
linesWithCode: linesWithCodeAstVisitor.linesWithCode,
operators:
Map.unmodifiable(halsteadVolumeAstVisitor.operators),
operands:
Map.unmodifiable(halsteadVolumeAstVisitor.operands)));
function,
FunctionRecord(
firstLine: lineInfo
.getLocation(function
.declaration.firstTokenAfterCommentAndMetadata.offset)
.lineNumber,
lastLine: lineInfo
.getLocation(function.declaration.endToken.end)
.lineNumber,
argumentsCount: getArgumentsCount(function),
cyclomaticComplexityLines:
Map.unmodifiable(controlFlowAstVisitor.complexityLines),
linesWithCode: linesWithCodeAstVisitor.linesWithCode,
operators: Map.unmodifiable(halsteadVolumeAstVisitor.operators),
operands: Map.unmodifiable(halsteadVolumeAstVisitor.operands),
),
);
}
}

Expand Down
20 changes: 10 additions & 10 deletions lib/src/models/file_report.dart
Expand Up @@ -3,30 +3,30 @@ import 'package:meta/meta.dart';
@immutable
class FileReport {
final int averageArgumentsCount;
final int totalArgumentsCountViolations;
final int argumentsCountViolations;

final double averageMaintainabilityIndex;
final int totalMaintainabilityIndexViolations;
final int maintainabilityIndexViolations;

final int averageMethodsCount;
final int totalMethodsCountViolations;
final int methodsCountViolations;

final int totalCyclomaticComplexity;
final int totalCyclomaticComplexityViolations;
final int cyclomaticComplexityViolations;

final int totalLinesOfExecutableCode;
final int totalLinesOfExecutableCodeViolations;
final int linesOfExecutableCodeViolations;

const FileReport({
@required this.averageArgumentsCount,
@required this.totalArgumentsCountViolations,
@required this.argumentsCountViolations,
@required this.averageMaintainabilityIndex,
@required this.totalMaintainabilityIndexViolations,
@required this.maintainabilityIndexViolations,
@required this.averageMethodsCount,
@required this.totalMethodsCountViolations,
@required this.methodsCountViolations,
@required this.totalCyclomaticComplexity,
@required this.totalCyclomaticComplexityViolations,
@required this.cyclomaticComplexityViolations,
@required this.totalLinesOfExecutableCode,
@required this.totalLinesOfExecutableCodeViolations,
@required this.linesOfExecutableCodeViolations,
});
}
25 changes: 15 additions & 10 deletions lib/src/reporters/code_climate/code_climate_reporter.dart
Expand Up @@ -8,7 +8,7 @@ import '../reporter.dart';
import '../utility_selector.dart';
import 'code_climate_issue.dart';

/// Creates reports in Codeclimate format widely understood by various CI and analysis tools
/// Creates reports in Code Climate format widely understood by various CI and analysis tools
// Code Climate Engine Specification https://github.com/codeclimate/platform/blob/master/spec/analyzers/SPEC.md
class CodeClimateReporter implements Reporter {
final Config reportConfig;
Expand Down Expand Up @@ -40,13 +40,24 @@ class CodeClimateReporter implements Reporter {
}),
];

return result
..addAll(_functionMetrics(record))
..addAll(record.issues.map((issue) =>
CodeClimateIssue.fromCodeIssue(issue, record.relativePath)))
..addAll(record.designIssues.map((issue) =>
CodeClimateIssue.fromDesignIssue(issue, record.relativePath)));
}

Iterable<CodeClimateIssue> _functionMetrics(FileRecord record) {
final issues = <CodeClimateIssue>[];

for (final key in record.functions.keys) {
final func = record.functions[key];
final report = UtilitySelector.functionReport(func, reportConfig);

if (UtilitySelector.isIssueLevel(
report.cyclomaticComplexity.violationLevel)) {
result.add(CodeClimateIssue.cyclomaticComplexity(
issues.add(CodeClimateIssue.cyclomaticComplexity(
func,
report.cyclomaticComplexity.value,
record.relativePath,
Expand All @@ -57,7 +68,7 @@ class CodeClimateReporter implements Reporter {

if (UtilitySelector.isIssueLevel(
report.maintainabilityIndex.violationLevel)) {
result.add(CodeClimateIssue.maintainabilityIndex(
issues.add(CodeClimateIssue.maintainabilityIndex(
func,
report.maintainabilityIndex.value.toInt(),
record.relativePath,
Expand All @@ -66,12 +77,6 @@ class CodeClimateReporter implements Reporter {
}
}

result
..addAll(record.issues.map((issue) =>
CodeClimateIssue.fromCodeIssue(issue, record.relativePath)))
..addAll(record.designIssues.map((issue) =>
CodeClimateIssue.fromDesignIssue(issue, record.relativePath)));

return result;
return issues;
}
}

0 comments on commit f847697

Please sign in to comment.