Lopper for VS Code

Lopper brings dependency-surface analysis into VS Code with inline diagnostics and hover context across supported adapters, including Kotlin Android and PowerShell, plus safe JS/TS quick fixes powered by the lopper CLI.
What it does
- Flags unused dependency imports directly in editors covered by supported Lopper adapters.
- Shows dependency usage, license, provenance, risk cues, and recommendation context in hovers.
- Offers deterministic quick fixes for safe
--suggest-only JS/TS subpath rewrites.
- Supports
package, repo, and changed-packages analysis scope modes directly in VS Code.
- Keeps a status-bar summary and manual refresh commands, including a force-fresh option.
Adapter mode
The extension uses the same adapter IDs as the lopper CLI.
lopper.language = auto is the default. It prefers the active or saved editor's adapter when it can infer one, including Android Gradle Kotlin/Java modules, then falls back to lopper CLI auto detection.
lopper.language = all runs every matching adapter in the workspace and merges the results.
- You can pin any supported adapter directly:
cpp, dart, dotnet, elixir, go, js-ts, jvm, kotlin-android, php, powershell, python, ruby, rust, or swift.
Binary setup
The extension shells out to lopper.
- If
lopper is already on your PATH, the extension will use it automatically.
- If your repo contains
bin/lopper, the extension will use that first after you trust the workspace.
- If no local binary is available, the extension can download a matching GitHub release into extension-managed storage.
- You can always override detection with
lopper.binaryPath or LOPPER_BINARY_PATH.
- Workspace-local binaries, including
bin/lopper and lopper.binaryPath values inside the repo, are blocked until the workspace is trusted.
Install
From the VS Code Marketplace after publish:
code --install-extension BenRanford.vscode-lopper
From a GitHub release VSIX:
code --install-extension lopper-vscode-<version>.vsix
Settings
lopper.language: adapter mode, defaulting to auto
lopper.scopeMode: analysis scope mode (package, repo, changed-packages)
lopper.binaryPath: explicit path to the lopper binary
lopper.topN: max dependencies to analyse on each refresh
lopper.autoRefresh: refresh on saves that match the selected adapter mode
lopper.autoDownloadBinary: enable or disable managed binary downloads
lopper.managedBinaryTag: optional release tag override for managed installs
Commands
Lopper: Refresh Diagnostics: refresh using the configured scope and session cache.
Lopper: Refresh Diagnostics (Force Fresh): bypass cache and re-run analysis.
Lopper: Refresh Diagnostics (Scope: package|repo|changed-packages): run using an explicit scope mode.
The extension deduplicates in-flight refreshes per folder/language/scope, prevents stale runs from overwriting newer diagnostics, and logs refresh lifecycle states to the Lopper output channel.
Development
make build
make vscode-extension-install
make vscode-extension-test
make vscode-extension-package
Repository docs: https://github.com/ben-ranford/lopper#readme
| |