pub struct Engine { /* private fields */ }Expand description
Executes a set of rules against a pre-built FileIndex.
The engine owns a RuleRegistry so cross-file rules (e.g.
for_each_dir) can build nested rules on demand during evaluation.
Optional facts and vars (set via the builder chain) are evaluated
at run time and threaded into each rule’s Context and into the
when expression evaluator that gates rules.
Implementations§
Source§impl Engine
impl Engine
Sourcepub fn new(rules: Vec<Box<dyn Rule>>, registry: RuleRegistry) -> Self
pub fn new(rules: Vec<Box<dyn Rule>>, registry: RuleRegistry) -> Self
Backward-compatible: wrap each rule in a RuleEntry with no when.
Sourcepub fn from_entries(entries: Vec<RuleEntry>, registry: RuleRegistry) -> Self
pub fn from_entries(entries: Vec<RuleEntry>, registry: RuleRegistry) -> Self
Construct from rule entries (each carrying an optional when).
pub fn with_fix_size_limit(self, limit: Option<u64>) -> Self
pub fn with_facts(self, facts: Vec<FactSpec>) -> Self
pub fn with_vars(self, vars: HashMap<String, String>) -> Self
Sourcepub fn with_changed_paths(self, set: HashSet<PathBuf>) -> Self
pub fn with_changed_paths(self, set: HashSet<PathBuf>) -> Self
Restrict evaluation to the given set of paths (relative to
the alint root). Per-file rules see a FileIndex
filtered to only these paths; rules that override
Rule::requires_full_index (cross-file + existence
rules) still see the full index but are skipped when
their Rule::path_scope doesn’t intersect the set.
An empty set short-circuits to a no-op report — there’s
nothing to lint. Pass None (or omit) to disable
--changed semantics entirely.
pub fn rule_count(&self) -> usize
pub fn run(&self, root: &Path, index: &FileIndex) -> Result<Report>
Sourcepub fn fix(
&self,
root: &Path,
index: &FileIndex,
dry_run: bool,
) -> Result<FixReport>
pub fn fix( &self, root: &Path, index: &FileIndex, dry_run: bool, ) -> Result<FixReport>
Evaluate every rule and apply fixers for their violations.
Fixes run sequentially — rules whose fixers touch the filesystem
must not race. Rules with no fixer contribute
FixStatus::Unfixable entries so the caller sees them in the
report. Rules that pass (no violations) are omitted from the
result, same as Engine::run’s usual behaviour.
Trait Implementations§
Auto Trait Implementations§
impl Freeze for Engine
impl !RefUnwindSafe for Engine
impl Send for Engine
impl Sync for Engine
impl Unpin for Engine
impl UnsafeUnpin for Engine
impl !UnwindSafe for Engine
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more