pub struct EditorAnalysisSession { /* private fields */ }Expand description
Reusable editor analysis session owned by the API boundary.
Implementations§
Source§impl EditorAnalysisSession
impl EditorAnalysisSession
Sourcepub fn load(root: &Path, config_path: Option<&Path>) -> EngineResult<Self>
pub fn load(root: &Path, config_path: Option<&Path>) -> EngineResult<Self>
Load config and discover files for an editor project root.
§Errors
Returns an engine error when project config loading fails.
Sourcepub fn load_with_config(
root: &Path,
config_path: Option<&Path>,
configure: impl FnOnce(&mut ResolvedConfig),
) -> EngineResult<Self>
pub fn load_with_config( root: &Path, config_path: Option<&Path>, configure: impl FnOnce(&mut ResolvedConfig), ) -> EngineResult<Self>
Load config, apply one editor-specific adjustment, then discover files.
§Errors
Returns an engine error when project config loading fails.
Sourcepub fn load_with_config_options(
root: &Path,
config_path: Option<&Path>,
load_options: ConfigLoadOptions,
configure: impl FnOnce(&mut ResolvedConfig),
) -> EngineResult<Self>
pub fn load_with_config_options( root: &Path, config_path: Option<&Path>, load_options: ConfigLoadOptions, configure: impl FnOnce(&mut ResolvedConfig), ) -> EngineResult<Self>
Load config with an explicit inheritance trust policy, apply one editor-specific adjustment, then discover files.
§Errors
Returns an engine error when project config loading fails.
Sourcepub fn load_default(root: &Path) -> Self
pub fn load_default(root: &Path) -> Self
Build a session from built-in defaults, ignoring project config files.
Sourcepub fn with_cancellation(self, cancellation: Arc<AtomicBool>) -> Self
pub fn with_cancellation(self, cancellation: Arc<AtomicBool>) -> Self
Attach a caller-owned cancellation token to this session.
The analyses of the session check the token at each pipeline stage
boundary and in the per-file parse loop. Once the token is set, they
return an engine error whose is_cancelled() is true, never a partial
result. See
fallow_engine::session::AnalysisSession::with_cancellation for the
limits of the cooperative stop.
Sourcepub fn set_cancellation(&mut self, cancellation: Arc<AtomicBool>)
pub fn set_cancellation(&mut self, cancellation: Arc<AtomicBool>)
Replace the cancellation token of a session that serves several runs.
Sourcepub fn refresh_discovery(&mut self) -> bool
pub fn refresh_discovery(&mut self) -> bool
Walk the project again before a run of a long-lived session. The
parsed modules stay when the file set did not change. Returns whether
the file set changed. See
fallow_engine::session::AnalysisSession::refresh_discovery.
Sourcepub fn config_inputs(&self) -> &ConfigInputs
pub fn config_inputs(&self) -> &ConfigInputs
The plugin files, rule packs and autoDiscover directories that
config resolution read for this session. A long-lived caller compares
two snapshots of them to see that the config is out of date.
Sourcepub fn config_inputs_before_resolve(&self) -> &ConfigInputsSnapshot
pub fn config_inputs_before_resolve(&self) -> &ConfigInputsSnapshot
The content of Self::config_inputs just before config resolution
read them.
Sourcepub fn retained_bytes_estimate(&self) -> u64
pub fn retained_bytes_estimate(&self) -> u64
The estimated heap memory of the parsed modules that the session keeps between runs. Zero before the first parse.
Sourcepub fn flush_parse_cache(&self)
pub fn flush_parse_cache(&self)
Write the modules of incremental parses to the persisted parse cache. Call it before the session is dropped.
Sourcepub fn prewarm(&self, retain_complexity_artifacts: bool) -> EngineResult<()>
pub fn prewarm(&self, retain_complexity_artifacts: bool) -> EngineResult<()>
Parse the project files into the session without analysis, so the first run starts from warm modules.
§Errors
Returns a cancelled engine error when the token of the session is set.
Sourcepub fn parse_counts(&self) -> EditorSessionParseCounts
pub fn parse_counts(&self) -> EditorSessionParseCounts
The parse work of this session since it was created.
Sourcepub fn config(&self) -> &ResolvedConfig
pub fn config(&self) -> &ResolvedConfig
Resolved project config.
Sourcepub fn config_path(&self) -> Option<&Path>
pub fn config_path(&self) -> Option<&Path>
Config file path when one was loaded.
Sourcepub fn refine_type_aware_dead_code(
&self,
options: &TypeAwareOptions,
filters: &DeadCodeFilters,
output: &mut EditorDeadCodeAnalysisOutput,
) -> Result<Option<TypeAwareMeta>, ProgrammaticError>
pub fn refine_type_aware_dead_code( &self, options: &TypeAwareOptions, filters: &DeadCodeFilters, output: &mut EditorDeadCodeAnalysisOutput, ) -> Result<Option<TypeAwareMeta>, ProgrammaticError>
Refine this editor session’s dead-code findings with exact TypeScript symbol evidence.
§Errors
Returns a programmatic error when the semantic companion cannot provide the requested analysis contract.
Sourcepub fn refine_type_aware_dead_code_in_session(
&self,
semantic_session: &mut TypeAwareSession,
changes: Option<&TypeAwareFileChanges>,
options: &TypeAwareOptions,
filters: &DeadCodeFilters,
output: &mut EditorDeadCodeAnalysisOutput,
) -> Result<Option<TypeAwareMeta>, ProgrammaticError>
pub fn refine_type_aware_dead_code_in_session( &self, semantic_session: &mut TypeAwareSession, changes: Option<&TypeAwareFileChanges>, options: &TypeAwareOptions, filters: &DeadCodeFilters, output: &mut EditorDeadCodeAnalysisOutput, ) -> Result<Option<TypeAwareMeta>, ProgrammaticError>
Refine editor findings through a root-bound persistent semantic session.
Sourcepub fn analyze_project_with(
&self,
duplicates_config: &DuplicatesConfig,
retain_complexity_artifacts: bool,
) -> EngineResult<EditorProjectAnalysisOutput>
pub fn analyze_project_with( &self, duplicates_config: &DuplicatesConfig, retain_complexity_artifacts: bool, ) -> EngineResult<EditorProjectAnalysisOutput>
Run dead-code and duplication analysis for this editor session.
§Errors
Returns an engine error when dead-code parsing or analysis fails.
Sourcepub fn analyze_project_with_changed_files(
&self,
duplicates_config: &DuplicatesConfig,
retain_complexity_artifacts: bool,
changed_files: Option<&FxHashSet<PathBuf>>,
) -> EngineResult<EditorProjectAnalysisOutput>
pub fn analyze_project_with_changed_files( &self, duplicates_config: &DuplicatesConfig, retain_complexity_artifacts: bool, changed_files: Option<&FxHashSet<PathBuf>>, ) -> EngineResult<EditorProjectAnalysisOutput>
Run dead-code and duplication analysis, optionally focusing duplication to files the editor already resolved as changed.
Dead-code still runs with full graph context, and the dead-code
findings keep full scope until the type-aware pass has run. That pass
reads unused_files as its set of unreachable files. After the pass,
call Self::apply_changed_files_scope to narrow the dead-code
findings of this project.
§Errors
Returns an engine error when dead-code parsing or analysis fails.
Sourcepub fn apply_changed_files_scope(
&self,
dead_code: &mut EditorDeadCodeAnalysisOutput,
changed_files: Option<&FxHashSet<PathBuf>>,
)
pub fn apply_changed_files_scope( &self, dead_code: &mut EditorDeadCodeAnalysisOutput, changed_files: Option<&FxHashSet<PathBuf>>, )
Narrow the dead-code findings of this project to the changed files,
with fallow_engine::dead_code::apply_scope and the config of this
project, as the CLI, MCP and Node API narrow them.
Call it after the type-aware pass. That pass reads unused_files as
its set of unreachable files, so a scope before it drops evidence from
unused files outside the changed set. A multi-root editor session
merges several projects, and each project has its own
ignoreFindings. So the scope runs per project, where the config is
known, and not after the merge. It does nothing when changed_files
is None.
Trait Implementations§
Auto Trait Implementations§
impl !Freeze for EditorAnalysisSession
impl RefUnwindSafe for EditorAnalysisSession
impl Send for EditorAnalysisSession
impl Sync for EditorAnalysisSession
impl Unpin for EditorAnalysisSession
impl UnsafeUnpin for EditorAnalysisSession
impl UnwindSafe for EditorAnalysisSession
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