Skip to main content

AnalyzerEngine

Struct AnalyzerEngine 

Source
pub struct AnalyzerEngine { /* private fields */ }
Expand description

The main analysis engine

Combines native RMA rules with optional external providers (PMD, Oxlint) for comprehensive code analysis across multiple languages.

Implementations§

Source§

impl AnalyzerEngine

Source

pub fn new(config: RmaConfig) -> Self

Create a new analyzer with default rules (no external providers)

Source

pub fn with_providers( config: RmaConfig, providers_config: ProvidersConfig, ) -> Self

Create a new analyzer with specified providers

Source

pub fn is_provider_enabled(&self, provider_type: ProviderType) -> bool

Check if a provider is enabled

Source

pub fn available_providers(&self) -> Vec<&str>

Get list of available providers

Source

pub fn analyze_file(&self, parsed: &ParsedFile) -> Result<FileAnalysis>

Analyze a single parsed file using native rules only

Source

pub fn analyze_files( &self, files: &[ParsedFile], ) -> Result<(Vec<FileAnalysis>, AnalysisSummary)>

Analyze multiple parsed files in parallel

This is the legacy method without caching support. For better performance on repeated scans, use analyze_files_cached instead.

Source

pub fn analyze_files_cached( &self, files: &[ParsedFile], cache: Option<&mut AnalysisCache>, ) -> Result<(Vec<FileAnalysis>, AnalysisSummary)>

Analyze multiple parsed files in parallel with optional caching

When a cache is provided:

  1. Files with unchanged content (based on hash) use cached results
  2. Only modified/new files are analyzed
  3. Fresh analysis results are stored in the cache
  4. Combined results (cached + fresh) are returned

This can reduce scan time by 80-90% for repeated scans of the same codebase.

Source

pub fn analyze_directory_with_providers( &self, path: &Path, ) -> Result<Vec<Finding>>

Run provider analysis on a directory

This is more efficient for providers that support batch analysis (like PMD which can analyze a whole directory at once).

Source

pub fn analyze_files_with_providers( &self, files: &[ParsedFile], base_path: &Path, ) -> Result<(Vec<FileAnalysis>, AnalysisSummary)>

Analyze files with both native rules and providers

This combines:

  1. Native rule analysis (per-file, parallel)
  2. Provider analysis (batch where possible)

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts 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
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more