Skip to main content

Welcome to zuit

Your code has problems — security risks, tech debt, tests that don't actually test. zuit finds them across 9+ quality dimensions, in one command. Deterministically: two runs against unchanged source produce byte-identical output.

zuit analysis pipelineFive-stage horizontal pipeline: Source files, Parse (parallelized with rayon), Analyze (parallelized with rayon), Score (per dimension), Output (terminal, JSON, SARIF, Markdown). Data-packet dots animate along the arrows between stages.SSource fileswalk_filesPParserayon ‖AAnalyzerayon ‖∑Scoreper-dimensionOOutputterm · JSON · SARIF · MDStages highlighted in blue border are parallelized via rayon

Three concrete value moments​

Catch the hardcoded secret before commit. A pre-commit hook (zuit install-hook) blocks bad commits locally. The LSP server (zuit lsp) underlines findings in your editor as you save. Neither requires a CI round-trip — the feedback loop stays on your machine.

Gate CI on quality, dimension by dimension. Fail builds when the Security score drops below 95 while letting Documentation slip — each dimension scores independently, so you can enforce the standards that matter for your project without blocking on ones that don't.

Track quality across releases. Every scan is saved locally. zuit show opens a browser dashboard with Trends, Diff, and Heatmap views to see whether quality is improving sprint over sprint. No external service, no data leaving your machine.

Quality dimensions​

Instead of a flat list of warnings, zuit groups every finding into a named dimension and gives each an independent score. Nine dimensions are user-facing; three more (ecosystem, CI, soundness) fire on Rust crates.

DimensionWhat it measures
SecurityPatterns commonly exploited by attackers
MaintainabilityHow easy the code is to read and change
ComplexityProject-level structural complexity (fan-out, cycles)
DocumentationPublic-API doc coverage and TODO/FIXME inventory
Test smellQuality of the tests themselves
Supply chainDependency provenance, typosquatting, lockfiles, stale transitives
PackagingPackage metadata correctness and consumer usability
PerformanceBundle size, heavy imports, runtime overhead
HealthRepository health (bus factor, release cadence, changelog)
note

Each dimension produces an independent 0–100 score — there is no single composite. CI gates per dimension, so you can enforce a Security floor without blocking on Documentation. Some dimensions only fire when the relevant language frontend is enabled (e.g. ecosystem / CI / soundness are Rust-specific).

See Dimensions for the full rule list and Severity and scoring for how scores are calculated.

Languages supported​

LanguageStatusNotes
RustFullBuilt-in
PythonFullBuilt-in
JavaScript / TypeScriptFullBuilt-in; covers .js, .mjs, .cjs, .jsx, .ts, .mts, .cts, .tsx
GoStubNot yet supported

Where to next​