smelt_validator/rules/mod.rs
1//! Validation rules
2
3mod breaking;
4mod complexity;
5mod visibility;
6
7pub use breaking::BreakingChangeChecker;
8pub use complexity::ComplexityChecker;
9pub use visibility::VisibilityChecker;
10
11use crate::validator::Violation;
12use smelt_core::{IntentRecord, SemanticDelta};
13
14/// Trait for validation rules
15pub trait ValidationRule: Send + Sync {
16 /// Rule name
17 fn name(&self) -> &'static str;
18
19 /// Validate a semantic delta
20 fn validate(&self, delta: &SemanticDelta, intent: Option<&IntentRecord>) -> Vec<Violation>;
21}