solidhunter_lib/rules/
types.rs

1use 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>>;