blob: be5d41480481c52e5e1dd0bd627974c9067c26f1 [file] [view]
# FFX Doctor Plugin
`ffx doctor` is a tool to diagnose issues with the `ffx` development environment.
It performs a series of checks on the host environment, the ffx daemon, and target devices to identify common configuration and operational problems.
## Code Structure
The plugin is organized into several modular files:
- **[lib.rs](src/lib.rs)**: Contains the main tool entry point (`DoctorTool`), the plugin orchestration logic (`doctor`), and the integration tests.
- **[types.rs](src/types.rs)**: Shared types, enums (e.g., `StepType`), and traits (e.g., `DoctorStepHandler`).
- **[daemon.rs](src/daemon.rs)**: Checks related to the `ffx` daemon (status, restart, PID verification).
- **[environment.rs](src/environment.rs)**: Environment-related checks (SSH keys, inotify watches, lock files, emulator instances).
- **[target.rs](src/target.rs)**: Target discovery, collection, and individual target diagnostics.
- **[usb.rs](src/usb.rs)**: Checks for the `ffx-usb-driver`.
- **[network.rs](src/network.rs)**: Internal Google network checks (if applicable).
- **[record.rs](src/record.rs)**: Logic for generating doctor records (zip files containing logs and config).
## Build
To build the doctor plugin, build `ffx`:
```bash
fx build src/developer/ffx
```
## Test
Run the unit tests:
```bash
fx test ffx_doctor_tests
```