pub struct ProjectAnalyzer {
pub cache: Option<AnalysisCache>,
pub on_file_done: Option<Arc<dyn Fn() + Send + Sync>>,
pub psr4: Option<Arc<Psr4Map>>,
pub find_dead_code: bool,
pub php_version: Option<PhpVersion>,
pub stub_files: Vec<PathBuf>,
pub stub_dirs: Vec<PathBuf>,
/* private fields */
}Fields§
§cache: Option<AnalysisCache>Optional cache — when Some, Pass 2 results are read/written per file.
on_file_done: Option<Arc<dyn Fn() + Send + Sync>>Called once after each file completes Pass 2 (used for progress reporting).
psr4: Option<Arc<Psr4Map>>PSR-4 autoloader mapping from composer.json, if available.
find_dead_code: boolWhen true, run dead code detection at the end of analysis.
php_version: Option<PhpVersion>Target PHP language version. None means “not configured”; resolved to
PhpVersion::LATEST when passed down to StatementsAnalyzer.
stub_files: Vec<PathBuf>Additional stub files to parse before analysis (absolute paths).
stub_dirs: Vec<PathBuf>Additional stub directories to walk and parse before analysis (absolute paths).
Implementations§
Source§impl ProjectAnalyzer
impl ProjectAnalyzer
pub fn new() -> Self
Sourcepub fn with_cache(cache_dir: &Path) -> Self
pub fn with_cache(cache_dir: &Path) -> Self
Create a ProjectAnalyzer with a disk-backed cache stored under cache_dir.
Sourcepub fn from_composer(root: &Path) -> Result<(Self, Psr4Map), ComposerError>
pub fn from_composer(root: &Path) -> Result<(Self, Psr4Map), ComposerError>
Create a ProjectAnalyzer from a project root containing composer.json.
Returns the analyzer (with psr4 set) and the Psr4Map so callers can
call map.project_files() / map.vendor_files().
Sourcepub fn with_php_version(self, version: PhpVersion) -> Self
pub fn with_php_version(self, version: PhpVersion) -> Self
Set the target PHP version.
Sourcepub fn member_location(&self, fqcn: &str, member_name: &str) -> Option<Location>
pub fn member_location(&self, fqcn: &str, member_name: &str) -> Option<Location>
Look up the source location of a class member (method, property, or
class constant / enum case) by walking the inheritance chain through
the salsa db. Returns None if no member with that name exists, or
if the member has no recorded location.
pub fn symbol_location(&self, symbol: &str) -> Option<Location>
pub fn reference_locations( &self, symbol: &str, ) -> Vec<(Arc<str>, u32, u16, u16)>
Sourcepub fn load_stubs(&self)
pub fn load_stubs(&self)
Load PHP built-in stubs. Called automatically by analyze if not done yet.
Stubs are filtered against the configured target PHP version (or
PhpVersion::LATEST if none was set).
Sourcepub fn analyze(&self, paths: &[PathBuf]) -> AnalysisResult
pub fn analyze(&self, paths: &[PathBuf]) -> AnalysisResult
Run the full analysis pipeline on a set of file paths.
Sourcepub fn re_analyze_file(
&self,
file_path: &str,
new_content: &str,
) -> AnalysisResult
pub fn re_analyze_file( &self, file_path: &str, new_content: &str, ) -> AnalysisResult
Re-analyze a single file within the existing codebase.
This is the incremental analysis API for LSP:
- Removes old definitions from this file
- Re-runs Pass 1 (definition collection) on the new content
- Resolves any newly-collected
@psalm-import-typedeclarations - Re-runs Pass 2 (body analysis) on this file
- Returns the analysis result for this file only
Sourcepub fn analyze_source(source: &str) -> AnalysisResult
pub fn analyze_source(source: &str) -> AnalysisResult
Analyze a PHP source string without a real file path. Useful for tests and LSP single-file mode.
Sourcepub fn discover_files(root: &Path) -> Vec<PathBuf>
pub fn discover_files(root: &Path) -> Vec<PathBuf>
Discover all .php files under a directory, recursively.
Sourcepub fn collect_types_only(&self, paths: &[PathBuf])
pub fn collect_types_only(&self, paths: &[PathBuf])
Pass 1 only: collect type definitions from paths into the codebase without
analyzing method bodies or emitting issues. Used to load vendor types.
Trait Implementations§
Auto Trait Implementations§
impl !Freeze for ProjectAnalyzer
impl !RefUnwindSafe for ProjectAnalyzer
impl Send for ProjectAnalyzer
impl Sync for ProjectAnalyzer
impl Unpin for ProjectAnalyzer
impl UnsafeUnpin for ProjectAnalyzer
impl !UnwindSafe for ProjectAnalyzer
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 moreSource§impl<D> OwoColorize for D
impl<D> OwoColorize for D
Source§fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
Source§fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
Source§fn black(&self) -> FgColorDisplay<'_, Black, Self>
fn black(&self) -> FgColorDisplay<'_, Black, Self>
Source§fn on_black(&self) -> BgColorDisplay<'_, Black, Self>
fn on_black(&self) -> BgColorDisplay<'_, Black, Self>
Source§fn red(&self) -> FgColorDisplay<'_, Red, Self>
fn red(&self) -> FgColorDisplay<'_, Red, Self>
Source§fn on_red(&self) -> BgColorDisplay<'_, Red, Self>
fn on_red(&self) -> BgColorDisplay<'_, Red, Self>
Source§fn green(&self) -> FgColorDisplay<'_, Green, Self>
fn green(&self) -> FgColorDisplay<'_, Green, Self>
Source§fn on_green(&self) -> BgColorDisplay<'_, Green, Self>
fn on_green(&self) -> BgColorDisplay<'_, Green, Self>
Source§fn yellow(&self) -> FgColorDisplay<'_, Yellow, Self>
fn yellow(&self) -> FgColorDisplay<'_, Yellow, Self>
Source§fn on_yellow(&self) -> BgColorDisplay<'_, Yellow, Self>
fn on_yellow(&self) -> BgColorDisplay<'_, Yellow, Self>
Source§fn blue(&self) -> FgColorDisplay<'_, Blue, Self>
fn blue(&self) -> FgColorDisplay<'_, Blue, Self>
Source§fn on_blue(&self) -> BgColorDisplay<'_, Blue, Self>
fn on_blue(&self) -> BgColorDisplay<'_, Blue, Self>
Source§fn magenta(&self) -> FgColorDisplay<'_, Magenta, Self>
fn magenta(&self) -> FgColorDisplay<'_, Magenta, Self>
Source§fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>
fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>
Source§fn purple(&self) -> FgColorDisplay<'_, Magenta, Self>
fn purple(&self) -> FgColorDisplay<'_, Magenta, Self>
Source§fn on_purple(&self) -> BgColorDisplay<'_, Magenta, Self>
fn on_purple(&self) -> BgColorDisplay<'_, Magenta, Self>
Source§fn cyan(&self) -> FgColorDisplay<'_, Cyan, Self>
fn cyan(&self) -> FgColorDisplay<'_, Cyan, Self>
Source§fn on_cyan(&self) -> BgColorDisplay<'_, Cyan, Self>
fn on_cyan(&self) -> BgColorDisplay<'_, Cyan, Self>
Source§fn white(&self) -> FgColorDisplay<'_, White, Self>
fn white(&self) -> FgColorDisplay<'_, White, Self>
Source§fn on_white(&self) -> BgColorDisplay<'_, White, Self>
fn on_white(&self) -> BgColorDisplay<'_, White, Self>
Source§fn default_color(&self) -> FgColorDisplay<'_, Default, Self>
fn default_color(&self) -> FgColorDisplay<'_, Default, Self>
Source§fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>
fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>
Source§fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>
fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>
Source§fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>
fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>
Source§fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>
fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>
Source§fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>
fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>
Source§fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>
fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>
Source§fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>
fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>
Source§fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>
fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>
Source§fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>
fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>
Source§fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>
fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>
Source§fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>
fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>
Source§fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
Source§fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
Source§fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
Source§fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
Source§fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>
fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>
Source§fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>
fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>
Source§fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>
fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>
Source§fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>
fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>
Source§fn bold(&self) -> BoldDisplay<'_, Self>
fn bold(&self) -> BoldDisplay<'_, Self>
Source§fn dimmed(&self) -> DimDisplay<'_, Self>
fn dimmed(&self) -> DimDisplay<'_, Self>
Source§fn italic(&self) -> ItalicDisplay<'_, Self>
fn italic(&self) -> ItalicDisplay<'_, Self>
Source§fn underline(&self) -> UnderlineDisplay<'_, Self>
fn underline(&self) -> UnderlineDisplay<'_, Self>
Source§fn blink(&self) -> BlinkDisplay<'_, Self>
fn blink(&self) -> BlinkDisplay<'_, Self>
Source§fn blink_fast(&self) -> BlinkFastDisplay<'_, Self>
fn blink_fast(&self) -> BlinkFastDisplay<'_, Self>
Source§fn reversed(&self) -> ReversedDisplay<'_, Self>
fn reversed(&self) -> ReversedDisplay<'_, Self>
Source§fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>
fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>
Source§fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
OwoColorize::fg or
a color-specific method, such as OwoColorize::green, Read moreSource§fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
OwoColorize::bg or
a color-specific method, such as OwoColorize::on_yellow, Read more