blob: 901ba487079d422c34c898324a1e7318404a84a8 [file] [log] [blame]
// Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
import 'package:analyzer/error/error.dart';
/// Defines style and best practice recommendations.
///
/// Unlike [HintCode]s, which are akin to traditional static warnings from a
/// compiler, lint recommendations focus on matters of style and practices that
/// might aggregated to define a project's style guide.
class LintCode extends ErrorCode {
const LintCode(
String name,
String problemMessage, {
super.correctionMessage,
String? uniqueName,
}) : super(
problemMessage: problemMessage,
name: name,
uniqueName: uniqueName ?? 'LintCode.$name',
);
@override
ErrorSeverity get errorSeverity => ErrorSeverity.INFO;
@override
int get hashCode => uniqueName.hashCode;
@override
ErrorType get type => ErrorType.LINT;
@override
String get url => 'https://dart-lang.github.io/linter/lints/$name.html';
@override
bool operator ==(Object other) =>
other is LintCode && uniqueName == other.uniqueName;
}
/// Defines security-related best practice recommendations.
///
/// The primary difference from [LintCode]s is that these codes cannot be
/// suppressed with `// ignore:` or `// ignore_for_file:` comments.
class SecurityLintCode extends LintCode {
const SecurityLintCode(super.name, super.problemMessage,
{String? uniqueName, super.correctionMessage})
: super(uniqueName: uniqueName ?? 'LintCode.$name');
@override
bool get isIgnorable => false;
}