Skip to content
This repository was archived by the owner on Jul 16, 2023. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 3 additions & 7 deletions lib/src/analyzers/lint_analyzer/anti_patterns/pattern_utils.dart
Original file line number Diff line number Diff line change
Expand Up @@ -24,15 +24,11 @@ Issue createIssue({
/// Returns a url of a page containing documentation associated with [pattern]
Uri documentation(Pattern pattern) => Uri(
scheme: 'https',
host: 'github.com',
host: 'dartcodemetrics.dev',
pathSegments: [
'dart-code-checker',
'dart-code-metrics',
'blob',
'master',
'doc',
'docs',
'anti-patterns',
'${pattern.id}.md',
pattern.id,
],
);

Expand Down
10 changes: 3 additions & 7 deletions lib/src/analyzers/lint_analyzer/metrics/metric_utils.dart
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,11 @@ import 'models/metric_value_level.dart';
/// Returns the url of a page containing documentation associated with [metricId]
Uri documentation(String metricId) => Uri(
scheme: 'https',
host: 'github.com',
host: 'dartcodemetrics.dev',
pathSegments: [
'dart-code-checker',
'dart-code-metrics',
'blob',
'master',
'doc',
'docs',
'metrics',
'$metricId.md',
metricId,
],
);

Expand Down
19 changes: 19 additions & 0 deletions lib/src/analyzers/lint_analyzer/rules/models/angular_rule.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
import '../../models/severity.dart';
import 'rule.dart';
import 'rule_documentation.dart';
import 'rule_type.dart';

abstract class AngularRule extends Rule {
const AngularRule({
required String id,
required RuleDocumentation documentation,
required Severity severity,
required Iterable<String> excludes,
}) : super(
id: id,
type: RuleType.angular,
documentation: documentation,
severity: severity,
excludes: excludes,
);
}
19 changes: 19 additions & 0 deletions lib/src/analyzers/lint_analyzer/rules/models/common_rule.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
import '../../models/severity.dart';
import 'rule.dart';
import 'rule_documentation.dart';
import 'rule_type.dart';

abstract class CommonRule extends Rule {
const CommonRule({
required String id,
required RuleDocumentation documentation,
required Severity severity,
required Iterable<String> excludes,
}) : super(
id: id,
type: RuleType.common,
documentation: documentation,
severity: severity,
excludes: excludes,
);
}
19 changes: 19 additions & 0 deletions lib/src/analyzers/lint_analyzer/rules/models/flutter_rule.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
import '../../models/severity.dart';
import 'rule.dart';
import 'rule_documentation.dart';
import 'rule_type.dart';

abstract class FlutterRule extends Rule {
const FlutterRule({
required String id,
required RuleDocumentation documentation,
required Severity severity,
required Iterable<String> excludes,
}) : super(
id: id,
type: RuleType.flutter,
documentation: documentation,
severity: severity,
excludes: excludes,
);
}
19 changes: 19 additions & 0 deletions lib/src/analyzers/lint_analyzer/rules/models/intl_rule.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
import '../../models/severity.dart';
import 'rule.dart';
import 'rule_documentation.dart';
import 'rule_type.dart';

abstract class IntlRule extends Rule {
const IntlRule({
required String id,
required RuleDocumentation documentation,
required Severity severity,
required Iterable<String> excludes,
}) : super(
id: id,
type: RuleType.intl,
documentation: documentation,
severity: severity,
excludes: excludes,
);
}
5 changes: 5 additions & 0 deletions lib/src/analyzers/lint_analyzer/rules/models/rule.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import '../../models/internal_resolved_unit_result.dart';
import '../../models/issue.dart';
import '../../models/severity.dart';
import 'rule_documentation.dart';
import 'rule_type.dart';

/// An interface to communicate with a rules
///
Expand All @@ -10,6 +11,9 @@ abstract class Rule {
/// The id of the rule.
final String id;

/// The type of the rule.
final RuleType type;

/// The documentation associated with the rule
final RuleDocumentation documentation;

Expand All @@ -22,6 +26,7 @@ abstract class Rule {
/// Initialize a newly created [Rule].
const Rule({
required this.id,
required this.type,
required this.documentation,
required this.severity,
required this.excludes,
Expand Down
11 changes: 11 additions & 0 deletions lib/src/analyzers/lint_analyzer/rules/models/rule_type.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
/// Represents a rule type. Used by documentation path construction.
class RuleType {
final String value;

const RuleType._(this.value);

static const common = RuleType._('common');
static const flutter = RuleType._('flutter');
static const intl = RuleType._('intl');
static const angular = RuleType._('angular');
}
11 changes: 4 additions & 7 deletions lib/src/analyzers/lint_analyzer/rules/rule_utils.dart
Original file line number Diff line number Diff line change
Expand Up @@ -28,15 +28,12 @@ Issue createIssue({
/// Returns a url of a page containing documentation associated with [rule]
Uri documentation(Rule rule) => Uri(
scheme: 'https',
host: 'github.com',
host: 'dartcodemetrics.dev',
pathSegments: [
'dart-code-checker',
'dart-code-metrics',
'blob',
'master',
'doc',
'docs',
'rules',
'${rule.id}.md',
rule.type.value,
rule.id,
],
);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,13 +9,13 @@ import '../../../models/internal_resolved_unit_result.dart';
import '../../../models/issue.dart';
import '../../../models/severity.dart';
import '../../flutter_rule_utils.dart';
import '../../models/rule.dart';
import '../../models/flutter_rule.dart';
import '../../models/rule_documentation.dart';
import '../../rule_utils.dart';

part 'visitor.dart';

class AlwaysRemoveListenerRule extends Rule {
class AlwaysRemoveListenerRule extends FlutterRule {
static const String ruleId = 'always-remove-listener';

static const _warningMessage =
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,13 @@ import '../../../../../utils/node_utils.dart';
import '../../../models/internal_resolved_unit_result.dart';
import '../../../models/issue.dart';
import '../../../models/severity.dart';
import '../../models/rule.dart';
import '../../models/common_rule.dart';
import '../../models/rule_documentation.dart';
import '../../rule_utils.dart';

part 'visitor.dart';

class AvoidLateKeywordRule extends Rule {
class AvoidLateKeywordRule extends CommonRule {
static const String ruleId = 'avoid-late-keyword';

static const _warning = "Avoid using 'late' keyword.";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,13 @@ import '../../../../../utils/node_utils.dart';
import '../../../models/internal_resolved_unit_result.dart';
import '../../../models/issue.dart';
import '../../../models/severity.dart';
import '../../models/rule.dart';
import '../../models/common_rule.dart';
import '../../models/rule_documentation.dart';
import '../../rule_utils.dart';

part 'visitor.dart';

class AvoidNonNullAssertionRule extends Rule {
class AvoidNonNullAssertionRule extends CommonRule {
static const String ruleId = 'avoid-non-null-assertion';

static const _warning = 'Avoid using non null assertion.';
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,13 @@ import '../../../../../utils/node_utils.dart';
import '../../../models/internal_resolved_unit_result.dart';
import '../../../models/issue.dart';
import '../../../models/severity.dart';
import '../../models/rule.dart';
import '../../models/angular_rule.dart';
import '../../models/rule_documentation.dart';
import '../../rule_utils.dart';

part 'visitor.dart';

class AvoidPreserveWhitespaceFalseRule extends Rule {
class AvoidPreserveWhitespaceFalseRule extends AngularRule {
static const String ruleId = 'avoid-preserve-whitespace-false';

static const _warning = 'Avoid using preserveWhitespace: false.';
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,15 +7,15 @@ import '../../../models/internal_resolved_unit_result.dart';
import '../../../models/issue.dart';
import '../../../models/severity.dart';
import '../../flutter_rule_utils.dart';
import '../../models/rule.dart';
import '../../models/flutter_rule.dart';
import '../../models/rule_documentation.dart';
import '../../rule_utils.dart';

part 'config_parser.dart';
part 'visit_declaration.dart';
part 'visitor.dart';

class AvoidReturningWidgetsRule extends Rule {
class AvoidReturningWidgetsRule extends FlutterRule {
static const String ruleId = 'avoid-returning-widgets';

static const _warningMessage = 'Avoid returning widgets from a function.';
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,13 @@ import '../../../models/internal_resolved_unit_result.dart';
import '../../../models/issue.dart';
import '../../../models/severity.dart';
import '../../flutter_rule_utils.dart';
import '../../models/rule.dart';
import '../../models/flutter_rule.dart';
import '../../models/rule_documentation.dart';
import '../../rule_utils.dart';

part 'visitor.dart';

class AvoidUnnecessarySetStateRule extends Rule {
class AvoidUnnecessarySetStateRule extends FlutterRule {
static const String ruleId = 'avoid-unnecessary-setstate';

static const _warningMessage =
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,15 +8,15 @@ import '../../../../../utils/node_utils.dart';
import '../../../models/internal_resolved_unit_result.dart';
import '../../../models/issue.dart';
import '../../../models/severity.dart';
import '../../models/rule.dart';
import '../../models/common_rule.dart';
import '../../models/rule_documentation.dart';
import '../../rule_utils.dart';

part 'visitor.dart';

// Inspired by PVS-Studio (https://www.viva64.com/en/w/v6022/)

class AvoidUnusedParametersRule extends Rule {
class AvoidUnusedParametersRule extends CommonRule {
static const String ruleId = 'avoid-unused-parameters';

static const _warningMessage = 'Parameter is unused.';
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,13 @@ import '../../../models/internal_resolved_unit_result.dart';
import '../../../models/issue.dart';
import '../../../models/severity.dart';
import '../../flutter_rule_utils.dart';
import '../../models/rule.dart';
import '../../models/flutter_rule.dart';
import '../../models/rule_documentation.dart';
import '../../rule_utils.dart';

part 'visitor.dart';

class AvoidWrappingInPaddingRule extends Rule {
class AvoidWrappingInPaddingRule extends FlutterRule {
static const String ruleId = 'avoid-wrapping-in-padding';

static const _warning =
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,13 @@ import '../../../models/internal_resolved_unit_result.dart';
import '../../../models/issue.dart';
import '../../../models/replacement.dart';
import '../../../models/severity.dart';
import '../../models/rule.dart';
import '../../models/common_rule.dart';
import '../../models/rule_documentation.dart';
import '../../rule_utils.dart';

part 'visitor.dart';

class BinaryExpressionOperandOrderRule extends Rule {
class BinaryExpressionOperandOrderRule extends CommonRule {
static const String ruleId = 'binary-expression-operand-order';

static const _warningMessage =
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,14 +9,14 @@ import '../../../../../utils/string_extension.dart';
import '../../../models/internal_resolved_unit_result.dart';
import '../../../models/issue.dart';
import '../../../models/severity.dart';
import '../../models/rule.dart';
import '../../models/angular_rule.dart';
import '../../models/rule_documentation.dart';
import '../../rule_utils.dart';

part 'config_parser.dart';
part 'visitor.dart';

class ComponentAnnotationArgumentsOrderingRule extends Rule {
class ComponentAnnotationArgumentsOrderingRule extends AngularRule {
static const ruleId = 'component-annotation-arguments-ordering';

static const _warningMessage = 'should be before';
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,15 +6,15 @@ import '../../../models/internal_resolved_unit_result.dart';
import '../../../models/issue.dart';
import '../../../models/replacement.dart';
import '../../../models/severity.dart';
import '../../models/rule.dart';
import '../../models/common_rule.dart';
import '../../models/rule_documentation.dart';
import '../../rule_utils.dart';

part 'visitor.dart';

// Inspired by TSLint (https://palantir.github.io/tslint/rules/number-literal-format/)

class DoubleLiteralFormatRule extends Rule {
class DoubleLiteralFormatRule extends CommonRule {
static const String ruleId = 'double-literal-format';

static const _warningLeadingZero =
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import '../../../../../utils/string_extension.dart';
import '../../../models/internal_resolved_unit_result.dart';
import '../../../models/issue.dart';
import '../../../models/severity.dart';
import '../../models/rule.dart';
import '../../models/common_rule.dart';
import '../../models/rule_documentation.dart';
import '../../rule_utils.dart';

Expand All @@ -17,7 +17,7 @@ part 'visitor.dart';

// Inspired by TSLint (https://palantir.github.io/tslint/rules/member-ordering/)

class MemberOrderingRule extends Rule {
class MemberOrderingRule extends CommonRule {
static const ruleId = 'member-ordering';

static const _warningMessage = 'should be before';
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import '../../../../../utils/node_utils.dart';
import '../../../models/internal_resolved_unit_result.dart';
import '../../../models/issue.dart';
import '../../../models/severity.dart';
import '../../models/rule.dart';
import '../../models/common_rule.dart';
import '../../models/rule_documentation.dart';
import '../../rule_utils.dart';

Expand All @@ -20,7 +20,7 @@ part 'models/member_type.dart';
part 'models/modifier.dart';
part 'visitor.dart';

class MemberOrderingExtendedRule extends Rule {
class MemberOrderingExtendedRule extends CommonRule {
static const ruleId = 'member-ordering-extended';

static const _warningMessage = 'should be before';
Expand Down
Loading