1use serde::{Deserialize, Serialize};
2
3#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
4#[serde(rename_all = "lowercase")]
5pub enum Severity {
6 Error,
7 Warning,
8 Information,
9 Hint,
10}
11
12#[derive(Debug, Clone, Serialize, Deserialize)]
13pub struct Position {
14 pub line: u32,
15 pub character: u32,
16}
17
18#[derive(Debug, Clone, Serialize, Deserialize)]
19pub struct Range {
20 pub start: Position,
21 pub end: Position,
22}
23
24#[derive(Debug, Clone, Serialize, Deserialize)]
25pub struct Diagnostic {
26 pub severity: Severity,
27 pub rule: String,
28 pub message: String,
29 pub range: Range,
30 #[serde(skip_serializing_if = "Option::is_none")]
31 pub code: Option<String>,
32}
33
34#[derive(Debug, Clone, Serialize, Deserialize)]
35pub struct FileResult {
36 pub path: String,
37 pub diagnostics: Vec<Diagnostic>,
38}
39
40#[derive(Debug, Clone, Serialize, Deserialize)]
41pub struct LintResult {
42 pub schema_version: u32,
43 pub tool: String,
44 pub files: Vec<FileResult>,
45}