solidhunter_lib/rules/
types.rs1use crate::linter::SolidFile;
2use crate::types::*;
3use serde::{Deserialize, Serialize};
4use serde_json::Value;
5use std::collections::HashMap;
6
7#[derive(Serialize, Deserialize, Debug, Clone)]
8pub struct RuleEntry {
9 pub id: String,
10 pub severity: Severity,
11 #[serde(skip_serializing_if = "Option::is_none")]
12 pub data: Option<Value>,
13}
14
15#[derive(Serialize, Deserialize, Debug)]
16pub struct Rules {
17 pub name: String,
18 pub rules: Vec<RuleEntry>,
19}
20
21pub trait RuleType: Send + Sync + 'static {
22 fn diagnose(&self, file: &SolidFile, files: &[SolidFile]) -> Vec<LintDiag>;
23}
24
25pub type RulesMap = HashMap<String, fn(RuleEntry) -> Box<dyn RuleType>>;