The unified toolchain and entry point for web development.
This report summarizes scanner evidence for voidzero-dev/vite-plus, a Rust project with 6,540 GitHub stars. SynthScan examined 265,793 lines of code across 839 source files, recording 644 pattern matches distributed across 10 syntactic categories. The legacy adjusted pattern signal is 2.9 (Low pattern signal); it is not an authorship estimate.
Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.
Use each vector to guide manual verification of the underlying findings.
Payload schema: 1.0.0 · Engine: 2.0.0 · Scoring: heuristic-density-v1 · Scan date: 2026-10-31.
Can maintainers explain intent, assumptions, and trade-offs? 620 finding(s).
Are imports declared and package/API names verified? 0 finding(s).
Are wrappers, guards, and repeated structures necessary? 298 finding(s).
Which changes need focused human review? 644 finding(s).
This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.
Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.
This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.
The scanner identified 644 distinct pattern matches across 10 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | scripts/generate-license.ts | 213 | function collectBundledPackageNames(bundledPaths: string[]): Set<string> { | CODE |
| LOW | scripts/generate-license.ts | 323 | function resolvePackageDirInPnpmStore( | CODE |
| LOW | packages/tools/src/install-global-cli.ts | 252 | function isWindowsLockedExecutableError(err: unknown): boolean { | CODE |
| LOW | packages/tools/src/install-global-cli.ts | 311 | function getWindowsPowerShellCommand(): string { | CODE |
| LOW | packages/tools/src/local-npm-registry.ts | 319 | function readPackageJsonFromTarball(tgzBytes: Buffer, sourcePath: string): PackageManifest { | CODE |
| LOW | packages/tools/src/pack-local-vite-plus.ts | 16 | export async function packLocalVitePlusPackages( | CODE |
| LOW | packages/tools/src/vendored-vitest.ts | 32 | export function alignVendoredVitestDependencies(rootDir: string, version: string): void { | CODE |
| LOW | packages/tools/src/sync-remote-deps.ts | 61 | export function collectWorkspaceCatalogReferences( | CODE |
| LOW | packages/tools/src/sync-remote-deps.ts | 397 | export function syncViteDevtoolsDependencies(corePkg: PackageJson, vitePkg: PackageJson): void { | CODE |
| LOW | packages/tools/src/sync-remote-deps.ts | 554 | function mergeMinimumReleaseAgeExclude(entries: string[]): string[] { | CODE |
| LOW | packages/tools/src/patch-oxc-node.ts | 44 | export function exposeLoaderInitialization(source: string): string { | CODE |
| LOW | packages/core/build.ts | 352 | async function bundleRolldownPluginutils() { | CODE |
| LOW | packages/core/build.ts | 663 | async function wireBundledTsdownExtensions() { | CODE |
| LOW | …kages/core/__tests__/binding-resolution-layout.spec.ts | 72 | function buildGlobalVirtualStoreLayout(options: { | CODE |
| LOW | packages/core/build-support/build-cjs-deps.ts | 6 | export function createModuleEntryFileName(module: string) { | CODE |
| LOW | …ckages/core/build-support/rewrite-module-specifiers.ts | 197 | export function createRolldownRewriteRules(targetPackage: string): ReplacementRule[] { | CODE |
| LOW | packages/core/build-support/find-create-require.ts | 44 | export async function replaceThirdPartyCjsRequires( | CODE |
| LOW | packages/core/build-support/find-create-require.ts | 117 | function getLiteralRequireArgument(node: CallExpression): RequireCall | undefined { | CODE |
| LOW | packages/core/build-support/find-create-require.ts | 136 | function findDirectCreateRequireCalls( | CODE |
| LOW | packages/core/build-support/find-create-require.ts | 163 | function findCreateRequireInStaticImports(ast: ParseResult): RequireCall[] { | CODE |
| LOW | packages/core/build-support/find-create-require.ts | 268 | function findCreateRequireInGlobalModule(ast: ParseResult): RequireCall[] { | CODE |
| LOW | packages/core/build-support/rewrite-rolldown-binding.ts | 57 | export function rewriteRolldownBindingRequires( | CODE |
| LOW | packages/cli/publish-native-addons.ts | 181 | async function prepareAndPublishCliPackage(napiTarget: string): Promise<void> { | CODE |
| LOW | packages/cli/generate-install-lockfile.ts | 193 | export async function addInstallLockfileToArchives(directory: string): Promise<void> { | CODE |
| LOW | packages/cli/build.ts | 596 | async function createBrowserCompatExport(testDistDir: string): Promise<ExportValue> { | CODE |
| LOW | packages/cli/build.ts | 1026 | async function writePrivateAtVitestBrowserShims(testDistDir: string): Promise<void> { | CODE |
| LOW | packages/cli/build.ts | 1078 | async function createBrowserContextExport(testDistDir: string): Promise<ExportValue> { | CODE |
| LOW | packages/cli/src/resolve-vite-config.ts | 78 | export async function resolveUniversalViteConfig(err: null | Error, viteConfigCwd: string) { | CODE |
| LOW | packages/cli/src/define-config.ts | 282 | function vitePlusVitestResolverPlugin(): PluginOption { | CODE |
| LOW | packages/cli/src/define-config.ts | 483 | function vitePlusAutoInlineMatcherPlugin(): PluginOption { | CODE |
| LOW | packages/cli/src/define-config.ts | 556 | export function resolveCoverageProviderToCheck( | CODE |
| LOW | packages/cli/src/define-config.ts | 576 | export function assertCoverageProviderVersionMatch( | CODE |
| LOW | packages/cli/src/define-config.ts | 627 | function readInstalledCoverageProviderVersion( | CODE |
| LOW | packages/cli/src/define-config.ts | 660 | export function checkCoverageProviderVersion( | CODE |
| LOW | packages/cli/src/define-config.ts | 721 | function vitePlusCoverageVersionGuardPlugin(): PluginOption { | CODE |
| LOW | packages/cli/src/define-config.ts | 788 | function vitePlusVitestCachePathsPlugin(): PluginOption { | CODE |
| LOW | packages/cli/src/define-config.ts | 857 | function withoutVitePlusTestPlugins(plugin: PluginOption): PluginOption { | CODE |
| LOW | packages/cli/src/define-config.ts | 987 | function injectPluginIntoProjectExport(config: UserProjectConfigExport): UserProjectConfigExport { | CODE |
| LOW | packages/cli/src/pack-bin.ts | 60 | function externalDtsTypeOnlyPlugin() { | CODE |
| LOW | packages/cli/src/script-hooks.ts | 148 | export function withRequireAsyncModuleCode(error: unknown): unknown { | CODE |
| LOW | packages/cli/src/oxlint-plugin.ts | 21 | function isVitestFamilyDeclareModuleSpecifier(specifier: string): boolean { | CODE |
| LOW | packages/cli/src/oxlint-plugin.ts | 42 | function isOxlintFamilyDeclareModuleSpecifier(specifier: string): boolean { | CODE |
| LOW | packages/cli/src/oxlint-plugin.ts | 80 | function rewriteVitePlusImportSpecifier(specifier: string): string | null { | CODE |
| LOW | packages/cli/src/oxlint-plugin.ts | 206 | function isUpstreamVitestSpecifier(specifier: string): boolean { | CODE |
| LOW | packages/cli/src/oxlint-plugin.ts | 252 | function nearestPackageUsesNuxtTestUtils(filename: string): boolean { | CODE |
| LOW | packages/cli/src/oxlint-plugin.ts | 262 | function nearestPackageOwnsOxlintApi(filename: string): boolean { | CODE |
| LOW | packages/cli/src/oxlint-plugin.ts | 332 | function reportLegacyOxlintPluginApiExport( | CODE |
| LOW | packages/cli/src/oxlint-plugin.ts | 353 | function reportLegacyOxlintPluginApiImport( | CODE |
| LOW | packages/cli/src/init-config.ts | 81 | function resolveGeneratedConfigPath( | CODE |
| LOW | packages/cli/src/init-config.ts | 194 | export async function applyToolInitConfigToViteConfig( | CODE |
| LOW | packages/cli/src/version.ts | 43 | function isVitePlusDeclaredInAncestors(cwd: string): boolean { | CODE |
| LOW | packages/cli/src/oxlint-plugin-config.ts | 49 | export function createDefaultVitePlusLintConfig(options?: { | CODE |
| LOW | packages/cli/src/config/hooks.ts | 147 | export function findUnsafeHookInstallPath(root: string, dir: string): UnsafeHookInstallPath | null { | CODE |
| LOW | packages/cli/src/config/hooks.ts | 186 | function describeUnsafeHookInstallPath(unsafePath: UnsafeHookInstallPath): string { | CODE |
| LOW | packages/cli/src/config/hooks.ts | 408 | function tryAdoptEffectiveDispatcher(git: { | CODE |
| LOW | packages/cli/src/utils/vitest-ecosystem.ts | 23 | export function isAlignableVitestEcosystemPackage(name: string): boolean { | CODE |
| LOW | packages/cli/src/utils/editor.ts | 108 | function jetbrainsNodeInterpreterPath(): string { | CODE |
| LOW | packages/cli/src/utils/editor.ts | 519 | function mergeAndWriteEditorConfig( | CODE |
| LOW | packages/cli/src/utils/workspace.ts | 29 | export function findPackageJsonFilesFromPatterns(patterns: string[], cwd: string): string[] { | CODE |
| LOW | packages/cli/src/utils/workspace.ts | 120 | export function discoverWorkspacePackages( | CODE |
| 214 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | Cargo.toml | 421 | # vite-task and vite-plus development. When making changes to vite-task that | COMMENT |
| LOW | crates/vp_shared/src/env_vars.rs | 1 | //! Centralized environment variable name constants. | COMMENT |
| LOW | crates/vp_shared/src/env_vars.rs | 21 | /// `<root>`. Old environment scripts and custom-location installs export this | COMMENT |
| LOW | crates/vp_shared/src/env_vars.rs | 181 | COMMENT | |
| LOW | crates/vp_shared/src/env_vars.rs | 201 | /// Path to the vp binary, passed to JS scripts so they can invoke CLI commands. | COMMENT |
| LOW | crates/vp_shared/src/env_vars.rs | 221 | /// Note on semantics: vp treats this as **additive** to the system trust | COMMENT |
| LOW | crates/vp_shared/src/env_vars.rs | 241 | // ── Testing / Development ─────────────────────────────────────────────── | COMMENT |
| LOW | crates/vp_shared/src/env_config.rs | 1 | //! Centralized environment variable configuration. | COMMENT |
| LOW | crates/vp_shared/src/env_config.rs | 21 | //! use vp_shared::{EnvConfig, env_vars}; | COMMENT |
| LOW | crates/vp_shared/src/env_config.rs | 41 | use std::{ffi::OsStr, ffi::OsString, future::Future, path::Path, path::PathBuf}; | COMMENT |
| LOW | crates/vp_shared/src/env_config.rs | 121 | _ => None, | COMMENT |
| LOW | crates/vp_shared/src/env_config.rs | 141 | /// | COMMENT |
| LOW | crates/vp_shared/src/env_config.rs | 161 | /// Skip PGP signature verification of the Node.js `SHASUMS256.txt` (escape | COMMENT |
| LOW | crates/vp_shared/src/env_config.rs | 201 | /// Node.js management preference. | COMMENT |
| LOW | crates/vp_shared/src/env_config.rs | 221 | /// | COMMENT |
| LOW | crates/vp_shared/src/env_config.rs | 321 | /// unsets it. Unsetting is the only inactive state for presence-checked | COMMENT |
| LOW | crates/vp_shared/src/env_config.rs | 361 | /// This function can set any process variable. It inherits undeclared | COMMENT |
| LOW | crates/vp_shared/src/env_config.rs | 381 | /// EnvConfig::with_vars([("CI", Some("true")), (env_vars::VP_SHELL, None)], |config| { | COMMENT |
| LOW | crates/vp_shared/src/env_config.rs | 401 | /// ```no_run | COMMENT |
| LOW | crates/vp_shared/src/env_config.rs | 421 | COMMENT | |
| LOW | crates/vp_shared/src/env_config.rs | 441 | /// Async form of [`scoped`](Self::scoped). The pin remains active across | COMMENT |
| LOW | crates/vp_shared/src/error.rs | 1 | //! Error-formatting helpers. | COMMENT |
| LOW | crates/vp_shared/src/header.rs | 1 | //! Shared Vite+ header rendering. | COMMENT |
| LOW | crates/vp_shared/src/header.rs | 401 | const BEL_BYTE: u8 = 0x07; | COMMENT |
| LOW | crates/vp_shared/src/package_json.rs | 1 | //! Package.json parsing utilities for development environment resolution. | COMMENT |
| LOW | crates/vp_shared/src/dirs.rs | 1 | //! On-disk path helpers for vite-plus. | COMMENT |
| LOW | crates/vp_shared/src/dirs.rs | 61 | pub const fn as_str(self) -> &'static str { | COMMENT |
| LOW | crates/vp_shared/src/dirs.rs | 81 | pub bin: AbsolutePathBuf, | COMMENT |
| LOW | crates/vp_shared/src/dirs.rs | 121 | /// Low-priority managed shims live under the owned data root, even when bin is shared. | COMMENT |
| LOW | crates/vp_shared/src/http.rs | 1 | //! Process-wide shared `reqwest::Client` instances. | COMMENT |
| LOW | crates/vp_shared/src/http.rs | 21 | //! escape hatch only; emits a loud stderr warning. Any other value | COMMENT |
| LOW | crates/vp_shared/src/http.rs | 41 | COMMENT | |
| LOW | crates/vp_shared/src/http.rs | 61 | /// silently hang a build. | COMMENT |
| LOW | crates/vp_shared/src/http.rs | 81 | COMMENT | |
| LOW | crates/vp_shared/src/http.rs | 361 | } | COMMENT |
| LOW | crates/vp_shared/src/dirs/resolution.rs | 1 | //! Directory resolution. | COMMENT |
| LOW | crates/vp_command/src/ps1_shim.rs | 1 | //! On Windows, route a managed package-manager `.cmd` shim through | COMMENT |
| LOW | crates/vp_command/src/ps1_shim.rs | 21 | //! Yarn `.ps1` wrappers inspect standard input. For example, they use | COMMENT |
| LOW | crates/vp_command/src/ps1_shim.rs | 41 | /// Returns `None` when: | COMMENT |
| LOW | crates/vp_command/src/lib.rs | 121 | } | COMMENT |
| LOW | crates/vp_static_config/src/lib.rs | 21 | const TRUSTED_DEFINE_CONFIG_PACKAGES: &[&str] = &["vite-plus", "vite"]; | COMMENT |
| LOW | crates/vp_static_config/src/lib.rs | 61 | /// Returns a closed empty map — used when no config file exists. | COMMENT |
| LOW | crates/vp_static_config/src/lib.rs | 81 | /// unanalyzable config) does NOT report undeclared keys as `NonStatic`: | COMMENT |
| LOW | crates/vp_static_config/src/lib.rs | 421 | /// When a spread or computed key is encountered the map transitions to open | COMMENT |
| LOW | crates/vp_setup/src/install.rs | 21 | use crate::{DEFAULT_INSTALL_NODE_VERSION, error::Error, lockfile}; | COMMENT |
| LOW | crates/vp_setup/src/install.rs | 521 | vp_shared::exit_code_from_status(output.status), | COMMENT |
| LOW | crates/vp_global_cli/src/js_executor.rs | 21 | COMMENT | |
| LOW | crates/vp_global_cli/src/js_executor.rs | 141 | COMMENT | |
| LOW | crates/vp_global_cli/src/js_executor.rs | 241 | } | COMMENT |
| LOW | crates/vp_global_cli/src/js_executor.rs | 461 | fn is_preview_version(version: &str) -> bool { | COMMENT |
| LOW | crates/vp_global_cli/src/js_executor.rs | 541 | } | COMMENT |
| LOW | crates/vp_global_cli/src/cli.rs | 61 | pub command: Option<Commands>, | COMMENT |
| LOW | crates/vp_global_cli/src/cli.rs | 121 | // ========================================================================= | COMMENT |
| LOW | crates/vp_global_cli/src/cli.rs | 141 | #[command(disable_help_flag = true)] | COMMENT |
| LOW | crates/vp_global_cli/src/cli.rs | 181 | #[command(disable_help_flag = true)] | COMMENT |
| LOW | crates/vp_global_cli/src/cli.rs | 221 | COMMENT | |
| LOW | crates/vp_global_cli/src/commands/vpx_script.rs | 1 | //! `vpx <script>`: run a script file on the project's Node.js with the oxc-node | COMMENT |
| LOW | crates/vp_global_cli/src/commands/vpx.rs | 1 | //! `vpx` command implementation. | COMMENT |
| LOW | crates/vp_global_cli/src/commands/mod.rs | 1 | //! Command implementations for the global CLI. | COMMENT |
| LOW | crates/vp_global_cli/src/commands/global/install.rs | 61 | .join("current") | COMMENT |
| 188 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | crates/vp_global_cli/src/commands/upgrade/mod.rs | 66 | // Step 1: Detect platform | COMMENT |
| LOW⚡ | crates/vp_global_cli/src/commands/upgrade/mod.rs | 70 | // Step 2: Determine version to resolve | COMMENT |
| LOW⚡ | crates/vp_global_cli/src/commands/upgrade/mod.rs | 77 | // Step 3: Resolve version from npm registry | COMMENT |
| LOW | crates/vp_global_cli/src/commands/upgrade/mod.rs | 91 | // Step 4: Handle --check (report and exit) | COMMENT |
| LOW | crates/vp_global_cli/src/commands/upgrade/mod.rs | 109 | // Step 5: Handle already up-to-date | COMMENT |
| LOW | crates/vp_global_cli/src/commands/upgrade/mod.rs | 121 | // Step 6: Reject a target that cannot use the current layout. | COMMENT |
| LOW | crates/vp_global_cli/src/commands/upgrade/mod.rs | 147 | // Step 6: Download platform tarball (main package is installed via npm) | COMMENT |
| LOW⚡ | crates/vp_global_cli/src/commands/upgrade/mod.rs | 162 | // Step 7: Verify integrity | COMMENT |
| LOW⚡ | crates/vp_global_cli/src/commands/upgrade/mod.rs | 169 | // Step 8: Create version directory. | COMMENT |
| LOW | crates/vp_global_cli/src/commands/upgrade/mod.rs | 184 | // Step 9: Extract platform binary and install via npm | COMMENT |
| LOW⚡ | crates/vp_migration/src/package.rs | 23 | // Step 1: Replace "cross-env " with marker so ast-grep can see the actual commands | COMMENT |
| LOW⚡ | crates/vp_migration/src/package.rs | 30 | // Step 2: Rewrite commands behind bunx only when their inner command | COMMENT |
| LOW⚡ | crates/vp_migration/src/package.rs | 36 | // Step 3: Replace cross-env marker back with "cross-env " (only if we replaced it) | COMMENT |
| LOW | crates/vp_migration/src/vite_config.rs | 957 | // Step 1: Add import statement at the beginning | COMMENT |
| LOW | crates/vp_migration/src/vite_config.rs | 972 | // Step 2: Add pack: tsdownConfig to defineConfig | COMMENT |
| LOW | rfcs/upgrade-command.md | 172 | #### Step 1: Version Resolution | COMMENT |
| LOW | rfcs/upgrade-command.md | 186 | #### Step 2: Version Comparison | COMMENT |
| LOW | rfcs/upgrade-command.md | 193 | #### Step 3: Download and Verify | COMMENT |
| LOW | rfcs/upgrade-command.md | 266 | #### Step 4: Extract and Install | COMMENT |
| LOW | rfcs/upgrade-command.md | 291 | #### Step 5: Version Swap | COMMENT |
| LOW | rfcs/upgrade-command.md | 327 | #### Step 6: Post-Update (Non-Fatal) | COMMENT |
| LOW | rfcs/upgrade-command.md | 334 | #### Step 7: Running Binary Consideration | COMMENT |
| LOW | rfcs/implode-command.md | 139 | #### Step 1: Resolve Home Directory | COMMENT |
| LOW | rfcs/implode-command.md | 143 | #### Step 2: Scan Shell Profiles | COMMENT |
| LOW⚡ | rfcs/implode-command.md | 157 | #### Step 3: Confirmation | COMMENT |
| LOW⚡ | rfcs/implode-command.md | 165 | #### Step 4: Shell Profile Cleanup | COMMENT |
| LOW⚡ | rfcs/implode-command.md | 175 | #### Step 5: Windows PATH Cleanup | COMMENT |
| LOW⚡ | rfcs/implode-command.md | 185 | #### Step 6: Remove Directory | COMMENT |
| LOW⚡ | rfcs/code-generator.md | 730 | # Step 1: Create the generator scaffold | COMMENT |
| LOW⚡ | rfcs/code-generator.md | 733 | # Step 2: Customize the template | COMMENT |
| LOW⚡ | rfcs/code-generator.md | 737 | # Step 3: Test your generator | COMMENT |
| LOW⚡ | rfcs/code-generator.md | 740 | # Step 4: Run tests | COMMENT |
| LOW⚡ | .claude/agents/cargo-workspace-merger.md | 20 | ### Step 1: Analyze the Child Workspace | COMMENT |
| LOW⚡ | .claude/agents/cargo-workspace-merger.md | 26 | ### Step 2: Identify Crates to Add | COMMENT |
| LOW⚡ | .claude/agents/cargo-workspace-merger.md | 32 | ### Step 3: Analyze Dependency Usage | COMMENT |
| LOW⚡ | .claude/agents/cargo-workspace-merger.md | 39 | ### Step 4: Filter and Merge Dependencies | COMMENT |
| LOW⚡ | .claude/agents/cargo-workspace-merger.md | 49 | ### Step 5: Update Root Cargo.toml | COMMENT |
| LOW | .claude/skills/add-ecosystem-ci/SKILL.md | 11 | ## Step 1: Get Repository Information | COMMENT |
| LOW | .claude/skills/add-ecosystem-ci/SKILL.md | 22 | ## Step 2: Auto-detect Project Configuration | COMMENT |
| LOW | .claude/skills/add-ecosystem-ci/SKILL.md | 59 | ## Step 3: Update Files | COMMENT |
| LOW | .claude/skills/add-ecosystem-ci/SKILL.md | 84 | ## Step 4: Verify | COMMENT |
| LOW | packages/core/BUNDLING.md | 38 | ### Step 1: Bundle Rolldown Pluginutils (`bundleRolldownPluginutils`) | COMMENT |
| LOW | packages/core/BUNDLING.md | 51 | ### Step 2: Bundle Rolldown (`bundleRolldown`) | COMMENT |
| LOW | packages/core/BUNDLING.md | 65 | ### Step 3: Build Vite (`buildVite`) | COMMENT |
| LOW | packages/core/BUNDLING.md | 80 | ### Step 4: Bundle Tsdown (`bundleTsdown`) | COMMENT |
| LOW | packages/core/BUNDLING.md | 94 | ### Step 5: Merge Package.json (`mergePackageJson`) | COMMENT |
| LOW | packages/cli/BUNDLING.md | 39 | ### Step 1: tsdown Build (`buildWithTsdown`) | COMMENT |
| LOW | packages/cli/BUNDLING.md | 60 | ### Step 2: NAPI Binding Build (`buildNapiBinding`) | COMMENT |
| LOW | packages/cli/BUNDLING.md | 80 | ### Step 3: Core Package Export Sync (`syncCorePackageExports`) | COMMENT |
| LOW | packages/cli/BUNDLING.md | 112 | ### Step 4: Test Package Export Sync (`syncTestPackageExports`) | COMMENT |
| LOW | packages/cli/src/migration/migrator/prettier.ts | 112 | // Step 1: Generate .oxfmtrc.json from Prettier config | COMMENT |
| LOW⚡ | packages/cli/src/migration/migrator/prettier.ts | 155 | // Step 2: Delete all prettier config files at root | COMMENT |
| LOW⚡ | packages/cli/src/migration/migrator/prettier.ts | 158 | // Step 3: Remove prettier dependency and rewrite prettier scripts (root) | COMMENT |
| LOW⚡ | packages/cli/src/migration/migrator/prettier.ts | 168 | // Step 4: Rewrite prettier references in lint-staged config files | COMMENT |
| LOW⚡ | packages/cli/src/migration/migrator/prettier.ts | 171 | // Step 5: Warn about .prettierignore if it exists | COMMENT |
| LOW | packages/cli/src/migration/migrator/eslint.ts | 237 | // Step 1: Generate .oxlintrc.json from ESLint config | COMMENT |
| LOW | packages/cli/src/migration/migrator/eslint.ts | 255 | // Step 2: Replace eslint-disable comments with oxlint-disable | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM⚡ | Cargo.toml | 417 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | Cargo.toml | 419 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | Cargo.toml | 426 | # ============================================================================= | COMMENT |
| MEDIUM | crates/vp_shared/src/env_vars.rs | 15 | // ── Config: read once at startup via EnvConfig ────────────────────────── | COMMENT |
| MEDIUM | crates/vp_shared/src/env_vars.rs | 41 | // ── XDG base directories: read by VpDirs resolution ──────────────────── | COMMENT |
| MEDIUM | crates/vp_shared/src/env_vars.rs | 152 | // ── Runtime: set/removed during shim dispatch for child processes ──────── | COMMENT |
| MEDIUM | crates/vp_shared/src/env_vars.rs | 207 | // ── HTTP client configuration ─────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/vp_shared/src/env_vars.rs | 241 | // ── Testing / Development ─────────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/vp_static_config/src/lib.rs | 598 | // ── Config file resolution ────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/vp_static_config/src/lib.rs | 630 | // ── resolve_static_config from a config file───────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/vp_static_config/src/lib.rs | 649 | // ── export default { ... } ────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/vp_static_config/src/lib.rs | 711 | // ── export default defineConfig({ ... }) ──────────────────────────── | COMMENT |
| MEDIUM | crates/vp_static_config/src/lib.rs | 768 | // ── module.exports = { ... } ─────────────────────────────────────── | COMMENT |
| MEDIUM | crates/vp_static_config/src/lib.rs | 842 | // ── Primitive values ──────────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/vp_static_config/src/lib.rs | 888 | // ── Arrays ────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/vp_static_config/src/lib.rs | 908 | // ── Nested objects ────────────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/vp_static_config/src/lib.rs | 940 | // ── NonStatic fields ──────────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/vp_static_config/src/lib.rs | 1098 | // ── Property key types ────────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/vp_static_config/src/lib.rs | 1106 | // ── Real-world patterns ───────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/vp_static_config/src/lib.rs | 1196 | // ── defineConfig with function argument ──────────────────────────── | COMMENT |
| MEDIUM | crates/vp_static_config/src/lib.rs | 1314 | // ── Not analyzable cases ───────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/vp_migration/src/vite_config.rs | 1038 | // ── has_config_key ──────────────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/vp_migration/src/vite_config.rs | 1055 | // ── remove_config_key ───────────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/vp_migration/src/vite_config.rs | 2549 | // ── upsert_json_config_content ──────────────────────────────────────── | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | crates/vp_global_cli/src/commands/upgrade/mod.rs | 66 | // Step 1: Detect platform | COMMENT |
| LOW⚡ | crates/vp_global_cli/src/commands/upgrade/mod.rs | 70 | // Step 2: Determine version to resolve | COMMENT |
| LOW⚡ | crates/vp_global_cli/src/commands/upgrade/mod.rs | 77 | // Step 3: Resolve version from npm registry | COMMENT |
| LOW | crates/vp_global_cli/src/commands/upgrade/mod.rs | 91 | // Step 4: Handle --check (report and exit) | COMMENT |
| LOW | crates/vp_global_cli/src/commands/upgrade/mod.rs | 109 | // Step 5: Handle already up-to-date | COMMENT |
| LOW | crates/vp_global_cli/src/commands/upgrade/mod.rs | 121 | // Step 6: Reject a target that cannot use the current layout. | COMMENT |
| LOW | crates/vp_global_cli/src/commands/upgrade/mod.rs | 147 | // Step 6: Download platform tarball (main package is installed via npm) | COMMENT |
| LOW⚡ | crates/vp_global_cli/src/commands/upgrade/mod.rs | 162 | // Step 7: Verify integrity | COMMENT |
| LOW⚡ | crates/vp_global_cli/src/commands/upgrade/mod.rs | 169 | // Step 8: Create version directory. | COMMENT |
| LOW | crates/vp_global_cli/src/commands/upgrade/mod.rs | 184 | // Step 9: Extract platform binary and install via npm | COMMENT |
| LOW | crates/vp_global_cli/src/shim/mod.rs | 89 | // For other tools, we need to check if they're package binaries | COMMENT |
| LOW⚡ | crates/vp_migration/src/package.rs | 23 | // Step 1: Replace "cross-env " with marker so ast-grep can see the actual commands | COMMENT |
| LOW⚡ | crates/vp_migration/src/package.rs | 30 | // Step 2: Rewrite commands behind bunx only when their inner command | COMMENT |
| LOW⚡ | crates/vp_migration/src/package.rs | 36 | // Step 3: Replace cross-env marker back with "cross-env " (only if we replaced it) | COMMENT |
| LOW | crates/vp_migration/src/vite_config.rs | 957 | // Step 1: Add import statement at the beginning | COMMENT |
| LOW | crates/vp_migration/src/vite_config.rs | 972 | // Step 2: Add pack: tsdownConfig to defineConfig | COMMENT |
| LOW | packages/cli/src/migration/migrator/prettier.ts | 112 | // Step 1: Generate .oxfmtrc.json from Prettier config | COMMENT |
| LOW⚡ | packages/cli/src/migration/migrator/prettier.ts | 155 | // Step 2: Delete all prettier config files at root | COMMENT |
| LOW⚡ | packages/cli/src/migration/migrator/prettier.ts | 158 | // Step 3: Remove prettier dependency and rewrite prettier scripts (root) | COMMENT |
| LOW⚡ | packages/cli/src/migration/migrator/prettier.ts | 168 | // Step 4: Rewrite prettier references in lint-staged config files | COMMENT |
| LOW⚡ | packages/cli/src/migration/migrator/prettier.ts | 171 | // Step 5: Warn about .prettierignore if it exists | COMMENT |
| LOW | packages/cli/src/migration/migrator/eslint.ts | 237 | // Step 1: Generate .oxlintrc.json from ESLint config | COMMENT |
| LOW | packages/cli/src/migration/migrator/eslint.ts | 255 | // Step 2: Replace eslint-disable comments with oxlint-disable | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | rfcs/js-runtime.md | 68 | └── runtime.rs # JsRuntime struct and download orchestration | CODE |
| MEDIUM | rfcs/global-cli-rust-binary.md | 123 | │ │ ├── new.rs # Project scaffolding | CODE |
| MEDIUM | rfcs/global-cli-rust-binary.md | 410 | - `crates/vp_global_cli/src/commands/new.rs` # Project scaffolding | CODE |
| MEDIUM | rfcs/code-generator.md | 608 | vp create vite:generator # Vite+ generator scaffold | CODE |
| MEDIUM⚡ | rfcs/code-generator.md | 730 | # Step 1: Create the generator scaffold | COMMENT |
| MEDIUM | packages/cli/src/create/org-picker.ts | 52 | // inside an existing monorepo (and would be rejected at scaffold time | COMMENT |
| MEDIUM | packages/cli/src/create/templates/generator.ts | 15 | // Execute generator scaffold template | COMMENT |
| MEDIUM | …ages/cli/src/migration/migrator/vite-plus-bootstrap.ts | 553 | // are skipped. Shared scaffold for the workspace-wide catalog pending checks: a | COMMENT |
| MEDIUM | .github/workflows/test-vp-create.yml | 167 | # `vp create`: after scaffold, ESLint → oxlint and Prettier → oxfmt | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | crates/vp_migration/src/import_rewriter.rs | 6471 | // robust against rule-reordering or ast-grep conflict-resolution changes. | COMMENT |
| MEDIUM | crates/vp_pm_cli/src/package_manager.rs | 1530 | // Use tempfile::TempDir for robust temporary directory creation | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | packages/cli/install-legacy.sh | 874 | # Check if an existing Node entry is a Vite+ shim. A foreign entry in a custom | COMMENT |
| LOW | packages/cli/install-legacy.sh | 898 | # Check if node is available on the system | COMMENT |
| LOW | packages/cli/install.sh | 247 | # Check if response is a plain error string (not a valid package object) | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | …ges/cli/binding/src/js_command_args/commands/create.rs | 217 | " vp create vite:monorepo # Create a Vite+ monorepo" | CODE |
| MEDIUM | packages/cli/src/create/bin.ts | 451 | ${muted('# Create a new application in non-interactive mode with a custom target directory')} | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …/verify-interactive-cli/interactive-cli-tmux-driver.sh | 5 | # Usage: | COMMENT |
| LOW | packages/cli/install.sh | 5 | # Usage: | COMMENT |