pub struct UnusedSymbolChecker<'a> { /* private fields */ }Expand description
Unused Symbol Checker using CodeGraphV2 and TypeFlowGraphV2.
Analyzes symbol usage patterns to detect dead code candidates.
§Example
ⓘ
let checker = UnusedSymbolChecker::new(&code_graph, &typeflow, ®istry);
// Check if a symbol is unused
if checker.is_unused(symbol_id) {
println!("Symbol has no references");
}
// Find all unused symbols in a scope
let result = checker.find_unused_in_scope(module_id);
for unused in result.unused_symbols {
println!("Unused: {:?}", unused.symbol_id);
}Implementations§
Source§impl<'a> UnusedSymbolChecker<'a>
impl<'a> UnusedSymbolChecker<'a>
Sourcepub fn new(
code_graph: &'a CodeGraphV2,
typeflow: &'a TypeFlowGraphV2,
registry: &'a SymbolRegistry,
) -> Self
pub fn new( code_graph: &'a CodeGraphV2, typeflow: &'a TypeFlowGraphV2, registry: &'a SymbolRegistry, ) -> Self
Create a new UnusedSymbolChecker.
Sourcepub fn get_usage_count(&self, symbol_id: SymbolId) -> usize
pub fn get_usage_count(&self, symbol_id: SymbolId) -> usize
Get the total reference count for a symbol.
Combines call references (CodeGraphV2) and type references (TypeFlowGraphV2).
Sourcepub fn check_symbol(&self, symbol_id: SymbolId) -> Option<UnusedSymbol>
pub fn check_symbol(&self, symbol_id: SymbolId) -> Option<UnusedSymbol>
Check a single symbol for unused status.
Sourcepub fn find_unused(&self, candidates: &[SymbolId]) -> UnusedSymbolResult
pub fn find_unused(&self, candidates: &[SymbolId]) -> UnusedSymbolResult
Find all unused symbols among the given candidates.
Sourcepub fn would_become_unused_if_deleted(
&self,
to_delete: SymbolId,
) -> UnusedSymbolResult
pub fn would_become_unused_if_deleted( &self, to_delete: SymbolId, ) -> UnusedSymbolResult
Check which symbols would become unused if a symbol is deleted.
This is useful for cascade analysis during deletions.
Sourcepub fn analyze_after_mutation(
&self,
affected_symbols: &[SymbolId],
deleted_symbols: &[SymbolId],
) -> UnusedSymbolResult
pub fn analyze_after_mutation( &self, affected_symbols: &[SymbolId], deleted_symbols: &[SymbolId], ) -> UnusedSymbolResult
Analyze symbols affected by a mutation for unused status.
Use this after mutations to detect newly unused symbols.
Sourcepub fn code_graph(&self) -> &CodeGraphV2
pub fn code_graph(&self) -> &CodeGraphV2
Get a reference to the underlying CodeGraphV2.
Sourcepub fn typeflow(&self) -> &TypeFlowGraphV2
pub fn typeflow(&self) -> &TypeFlowGraphV2
Get a reference to the underlying TypeFlowGraphV2.
Auto Trait Implementations§
impl<'a> Freeze for UnusedSymbolChecker<'a>
impl<'a> RefUnwindSafe for UnusedSymbolChecker<'a>
impl<'a> Send for UnusedSymbolChecker<'a>
impl<'a> Sync for UnusedSymbolChecker<'a>
impl<'a> Unpin for UnusedSymbolChecker<'a>
impl<'a> UnsafeUnpin for UnusedSymbolChecker<'a>
impl<'a> UnwindSafe for UnusedSymbolChecker<'a>
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
Mutably borrows from an owned value. Read more
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>
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 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>
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