use harn_lexer::{FixEdit, Span};
use harn_parser::{DiagnosticCode as Code, Repair};
#[derive(Debug, Clone)]
pub struct LintDiagnostic {
pub code: Code,
pub rule: &'static str,
pub message: String,
pub span: Span,
pub severity: LintSeverity,
pub suggestion: Option<String>,
pub fix: Option<Vec<FixEdit>>,
}
impl LintDiagnostic {
pub fn repair(&self) -> Option<Repair> {
self.code.repair_template().map(Repair::from_template)
}
}
#[derive(Debug, Clone, Copy, PartialEq)]
pub enum LintSeverity {
Info,
Warning,
Error,
}
pub const DEFAULT_COMPLEXITY_THRESHOLD: usize = 25;
#[derive(Debug, Default, Clone)]
pub struct LintOptions<'a> {
pub file_path: Option<&'a std::path::Path>,
pub require_file_header: bool,
pub complexity_threshold: Option<usize>,
pub persona_step_allowlist: &'a [String],
pub require_stdlib_metadata: bool,
}