Overview Weighted score across 7 buckets
Score breakdown 7 buckets · weighted
History
Recent commits
dae209abuild(deps): bump github/codeql-action from 4.35.1 to 4.35.2 (#7212) dependabot[bot] · 2026-05-17
Ownership
No CODEOWNERS file detected.
Stack
CI
Platform: GitHub Actions
Tests
Hygiene
Dependencies
Documents
23 handoff document(s) generated from the codebase. Expand each to read inline.
HANDOFF
express — Developer Handoff
Entry point. Read this first. Everything else is referenced from here.
Generated: 2026-05-26 00:29:05 UTC · Repo root: /tmp/express · Remote: https://github.com/expressjs/express.git
1. What is this?
express — project manifest detected from package.json.
Detected stack: (none)
Repository signals:
- Prisma models: 0 (0 enums, 0 relations)
- NestJS controllers: 0 (0 endpoints)
- Next.js routes: 0 app/ + 0 pages/
- Frontend components: 0
Full stack + topology: see ARCHITECTURE · INFRASTRUCTURE
2. Current state
- Branch:
master - HEAD:
dae209ae6559 - Remote: https://github.com/expressjs/express.git
Recent commits:
dae209abuild(deps): bump github/codeql-action from 4.35.1 to 4.35.2 (#7212) — dependabot[bot] (2026-05-17)
3. Top 10 risks (bus-factor warning)
Generated by Luxscope static analysis (static + churn + ownership).
Band totals: 0 HIGH · 3 MED · 53 LOW (56 files scanned)
| # | File | Score | Owner | Churn 90d | Band |
|---|---|---|---|---|---|
| 1 | test/res.redirect.js |
51 | dependabot[bot] | 1 | MED |
| 2 | test/res.location.js |
46.2 | dependabot[bot] | 1 | MED |
| 3 | lib/response.js |
46 | dependabot[bot] | 1 | MED |
| 4 | examples/view-locals/index.js |
19 | dependabot[bot] | 1 | LOW |
| 5 | examples/route-middleware/index.js |
15 | dependabot[bot] | 1 | LOW |
| 6 | lib/application.js |
14 | dependabot[bot] | 1 | LOW |
| 7 | lib/view.js |
13.4 | dependabot[bot] | 1 | LOW |
| 8 | test/Router.js |
12.6 | dependabot[bot] | 1 | LOW |
| 9 | examples/auth/index.js |
11 | dependabot[bot] | 1 | LOW |
| 10 | lib/utils.js |
11 | dependabot[bot] | 1 | LOW |
Full risk dashboard: risks/RISKS.md · risks/SUMMARY.txt. Interactive site: web/index.html. Per-file explain files: explain/.
4. How to get started
- Read README — install, dev scripts, ports.
- Read ARCHITECTURE — topology, request flows.
- Read BEST_PRACTICES — git workflow + commit conventions.
- Read DEPLOYMENT before touching staging/prod.
- Read RUNBOOK on first incident.
5. Aux artefacts
diagrams/module-graph.htmldiagrams/call-graph.htmldiagrams/classes.htmldiagrams/er-diagram.html(Prisma-based)risks/risks.json,risks/risks.sarif
Code ownership
No CODEOWNERS file detected. Add .github/CODEOWNERS so reviewers are auto-requested and new contributors know who maintains what.
README
express — Local Developer Setup
Generated by Luxscope handoff. Re-run luxscope handoff to refresh.
Prerequisites
- Node.js >= 18
- Package manager:
npm
Setup
git clone https://github.com/expressjs/express.gitcd expressnpm install
Run dev
(none detected)
Detected service ports (from docker-compose.yml):
(none detected via docker-compose; check framework defaults: Next.js 3000, NestJS 3000, Express varies)
Test
Unit:
npm run test— mocha --require test/support/env --reporter spec --check-leaks test/ test/acceptance/
Quality gates
npm run lint— eslint .npm run lint:fix— eslint . --fix
Environment
- See
.env.example(if present at repo root) for required variables. - See
DEPLOYMENT.mdfor staging/production env handling.
What next
- New to the codebase? Read
HANDOFF.mdandHOWTO.md. - Architecture overview:
ARCHITECTURE.md. - Contribution rules:
BEST_PRACTICES.md.
HOWTO
express — How To
Stack-specific playbook. Read README.md first for setup; this file is the day-1 / week-1 task playbook.
Day 1
Read
HANDOFF.md(entry point) andARCHITECTURE.md(topology).Run dev locally per
README.md.Hit a health endpoint (look in
API_REFERENCE_DETAIL.mdfor/health,/healthz,/ping).Run the full test suite once to confirm a clean baseline:
npm testSkim
risks/RISKS.md— top 10 files are the bus-factor + complexity hot spots.
Week 1 — Common operations
Ship a change
- Branch from
main(ordevelopif the repo uses GitFlow). - Make the change. Keep the PR ≤ 400 LOC where possible.
- Run quality gates locally — see
README.md. - Open a PR; follow conventions in
BEST_PRACTICES.md. - Wait for CI green + 1 reviewer approval before merge.
Where to look when something breaks
RUNBOOK.md— incident playbooksrisks/HIGH.md— files most likely to be the source of bugsSECURITY.md— auth and data protection conventions
Work in progress / known unknowns
Source markers (2)
2 TODO
Open pull requests (30)
Fetched from GitHub via the gh CLI. Mid-flight changes — coordinate before stomping on these branches.
| # | Title | Branch | Author | Labels |
|---|---|---|---|---|
| #7035 | fix: prevent Content-Type header from being set to 'false' | fix/content-type-false-value |
@veeceey | — |
| #7038 | test: add unit tests for compileQueryParser, compileTrust, and normalizeTypes | test/add-utils-coverage |
@tommyhgunz14 | — |
| #7041 | feat: add diagnostics_channel support for app initialization | diagnostics-channel |
@DemianParkhomenko | — |
| #7045 | fix: non standard status code will result in undefined | statusMessage |
@cuiweixie | — |
| #7047 | Refactor X-Forwarded-Host value extraction | patch-1 |
@ProxyLoader | — |
| #7050 | Improve test coverage for res.set() edge cases |
master |
@RlxChap2 | — |
| #7051 | fix: make view engine extension matching case-insensitive | fix/case-insensitive-view-engine-ext |
@erdinccurebal | — |
| #7059 | refactor(deps): migrate connect-redis from v8 to v9 | deps/upgrade-connect-redis-9.0.0 |
@digital-wizard48 | — |
| #7061 | refactor(deps): migrate express-session from v1.18.1 to v1.19.0 | deps/upgrade-express-session-1.19.0 |
@digital-wizard48 | — |
| #7092 | fix: replace deprecated module.parent with require.main === module in… | fix/replace-module-parent-in-examples |
@sehrishanam1 | examples |
| #7105 | Unit test cases for uncovered lines for response.js file | master |
@ashish3011 | tests |
| #7107 | fix: use safe stringification for status code error messages | fix/status-code-bigint-error-message |
@AkaHarshit | — |
| #7112 | achieve 100% test coverage in expressjs | master |
@bhavya3024 | — |
| #7113 | Fix issue #5995, added cookie encryption | fix-issue-#5995 |
@emilANS | — |
| #7117 | Fix query parameter truncation with configurable limit (fixes #5878) | fix-query-param-limit-5878-new |
@nmurrell07 | — |
| #7119 | clarify express-generator is still 4.x | docs/clarify-generator-version |
@AzmeerX | docs |
| #7130 | fix: handle BigInt status codes in res.status() and res.sendStatus() | fix/bigint-status-handling |
@JivinSardine | — |
| #7132 | Fix fallback for unknown Content-Type values (#7034) | fix/issue-7034-content-type-fallback |
@raashish1601 | — |
| #7135 | Update path-to-regexp to 0.1.13 to fix CVE-2026-4867 | makkuznetsov/update-path-regexp |
@baryman | 4.x · deps · dependencies |
| #7142 | fix: add path containment check in View.prototype.lookup() | fix/view-lookup-path-containment |
@som14062005 | — |
| #7146 | fix(res.set): remove implicit mime lookup and charset injection for Content-Type | fix/res-set-no-mime-lookup |
@Pandey-Krishnaa | — |
| #7151 | fix: keep repeated extended query params as arrays beyond 20 values | fix-7147-query-array-limit |
@wwenrr | 5.x · awaiting reviewer |
| #7152 | build(deps-dev): bump hbs from 4.2.0 to 4.2.1 | dependabot/npm_and_yarn/hbs-4.2.1 |
@app/dependabot | dependencies · javascript |
| #7161 | fix: fall back to JSON when JSONP callback sanitizes to empty | fix/jsonp-empty-callback |
@andrewstellman | — |
| #7171 | feat: add diagnostic channels for request lifecycle | feat/diagnostics-channel-request-lifecycle |
@OussemaNehdi | — |
| #7229 | Skip default logging for client errors | codex/skip-client-error-logging |
@raashish1601 | — |
| #7233 | Upgrade content-disposition |
be/upgrade-content-disposition |
@blakeembrey | — |
| #7234 | Upgrade content-type |
be/upgrade-content-type |
@blakeembrey | — |
| #7265 | fix: replace deprecated trimRight() with trimEnd() | fix/trimright-to-trimend |
@tejgokani | — |
| #7275 | feat: handle circular structure serialization | feat-circular-structure |
@leandro-costa-oliveira | — |
ARCHITECTURE
express — Architecture
Detected no containers, 1 persona, 0 external systems. The diagrams below are deterministic — they reflect manifests, framework scanners, and infrastructure files. Run luxscope docs build --level hub --with-ai to add narrative prose without overwriting the C4 blocks.
Context (C4 Level 1)
C4Context
title System Context for express
Person(user, "End user", "Application user")
System(system, "express", "Application under documentation")
Rel(user, system, "Uses", "HTTPS")
UpdateLayoutConfig($c4ShapeInRow="3", $c4BoundaryInRow="2")
Containers (C4 Level 2)
C4Container
title Container View for express
Person(user, "End user")
System_Boundary(boundary_express, "express") {
}
API REFERENCE
express — API Reference
No NestJS controllers detected via AST scan. If this project uses a different HTTP framework or an OpenAPI spec, add openapi.json at the repo root and re-run luxscope handoff.
DB SCHEMA
express — Database Schema
No prisma/schema.prisma detected. If this project uses a different ORM (TypeORM, Drizzle, Sequelize), the ER diagram is not yet supported.
FRONTEND
express — Frontend
No Next.js app/ or pages/ routes detected.
BEST PRACTICES
express — Best Practices
No CLAUDE.md / AGENTS.md / .cursorrules detected. This document is a deterministic skeleton; run luxscope handoff --ai (premium) to fill guidance from CONTRIBUTING + CI config.
Testing
- (not detected in scan)
Linting
- Tools: eslint
- Scripts:
lint,lint:fix
CI
.github/workflows/ci.yml.github/workflows/codeql.yml.github/workflows/legacy.yml.github/workflows/scorecard.yml
Release
- (not detected in scan)
Conventions to confirm
- Branch + commit conventions
- PR flow and review gates
- Testing expectations
- Release / deploy process
DEPLOYMENT
express — Deployment
Branch: master · HEAD: dae209ae6559
CI workflows detected
.github/workflows/ci.yml.github/workflows/codeql.yml.github/workflows/legacy.yml.github/workflows/scorecard.yml
Infrastructure detected
- Dockerfiles: 0
- docker-compose files: 0
- Terraform dirs: 0
- Kubernetes manifests: 0
Narrative deployment procedure deferred to luxscope handoff --ai (premium).
RUNBOOK
express — Runbook
No runbooks detected at docs/runbooks/ or runbooks/. The skeleton below is a deterministic placeholder; run luxscope handoff --ai (premium) to synthesize an incident playbook from git history.
Observability
Recent fix commits (auto-detected)
No fix/hotfix/revert commits detected in recent history.
Common incidents
Each entry: Symptom → Diagnosis → Fix.
- Deployment failure: check CI workflow logs in
.github/workflows/. Last deployable commit: see fix commits above. - Database migration failure: check for pending migrations. Roll back to previous release tag.
- Service unavailability: verify health endpoints and container/process status.
- Add repo-specific incidents as they occur.
Rollback procedures
- Identify the last stable git tag:
git tag --sort=-creatordate | head -5 - Create a revert PR or cherry-pick the breaking commit.
- If DB migration ran: restore from pre-migration backup before reverting code.
- Document repo-specific rollback procedures here.
INFRASTRUCTURE
express — Infrastructure
CI Workflows
.github/workflows/ci.yml.github/workflows/codeql.yml.github/workflows/legacy.yml.github/workflows/scorecard.yml
Stack version pins
Authoritative versions for the moving pieces. When upgrading, treat this table as the contract: bump it with the change, not after.
| Component | Version | Category | Source |
|---|---|---|---|
| Node.js | >= 18 |
runtime | package.json engines.node |
SECURITY
express — Security
No docs/SECURITY.md detected. This document is a deterministic skeleton; run luxscope handoff --ai (premium) to synthesize policy prose.
Detected auth libraries
- (no auth libraries auto-detected)
Session / token model
- express-session
- cookie-session
Roles / authorization
- (not detected in scan)
Encryption at rest
- (not detected in scan)
Audit logging
- (not detected in scan)
Open gaps (verify manually)
- Rate limiting (express-rate-limit / @nestjs/throttler)
- Content Security Policy headers
- CSRF protection
- Audit log retention policy
- Secrets rotation procedure
Sections still requiring manual or AI authoring
- Authentication flow (sequence diagram per identity source)
- Authorization model (roles, tenant scoping, RLS)
- Data protection (at rest, in transit, encrypted columns, DLQ encryption)
- CSP / WAF / rate limiting policies
- Audit logging retention
- Known open security issues
- SOC 2 / compliance posture
ENV VARS
express — Environment Variables
Detected 2 distinct environment variables.
No .env.example / .env.sample / .env.template found at repo root — the table below is grep-only and Required is best-effort.
| Name | Required | Default | Consumers | Description |
|---|---|---|---|---|
NO_DEPRECATION |
yes | — | test/support/env.js |
|
NODE_ENV |
yes | — | examples/cookies/index.js, examples/error-pages/index.js +4 |
MIGRATIONS
express — Migration History
No migrations directory detected. Luxscope looked in: prisma/migrations, apps/api/prisma/migrations, packages/db/prisma/migrations, db/migrations, migrations, supabase/migrations.
TEST STRATEGY
express — Test Strategy & Coverage Map
Deterministic snapshot of test infrastructure: which runners are configured, where specs live, what coverage CI enforces, and what's currently shipping.
Latest coverage report
No coverage/coverage-summary.json found. Run the coverage script (often test:cov, test --coverage, or vitest run --coverage) to generate one before relying on these numbers.
Test scripts
Detected test entry points across workspaces.
| Workspace | Script | Command |
|---|---|---|
express |
test |
mocha --require test/support/env --reporter spec --check-leaks test/ test/acceptance/ |
Layer guidance
- Unit — pure functions, mock external dependencies, no network. Fast.
- Integration — boots the framework, hits a real database or in-memory equivalent. Catches wiring bugs unit tests miss.
- E2E — spawns the full stack, drives the public surface (HTTP, browser). Slowest; reserve for journey coverage.
Default to the highest-speed layer that can still fail when the bug returns.
DEBUGGING
express — Local Debugging Recipes
No log directories, health endpoints, dev scripts, or stack-detected recipes found.
Document the local debugging entry points by hand in HOWTO.md if they live outside the standard paths.
FIRST COMMIT
express — First Commit Guide
Everything a new contributor needs to land their first PR without burning a half-day on convention discovery.
1. Preflight checklist
- No
CONTRIBUTING.mddetected — ask in the team channel before sending a PR. - Pull
main(or the project's default branch) and create your branch from it.
2. Branch naming
No branch policy detected. Conventional choice: feat/short-slug for features, fix/short-slug for fixes.
3. Commit format
No commitlint config detected. Default to Conventional Commits (feat: / fix: / chore: / docs:).
4. Hooks that run automatically
No .husky/ hooks detected. CI is the only line of defense — pull recent main before pushing.
5. Low-risk first-PR ideas
Detected directly from the repo. Each one is small enough to ship in a single PR:
- TODO at
test/express.static.js:71— @txt') - TODO at
test/express.static.js:721— @txt')
6. Final checklist before pushing
- Tests pass for the area you touched.
- TypeScript / build is clean for the affected workspace.
- Commit message matches the format above.
- Branch name matches the policy above.
- Push, then open a PR against the default branch.
ONBOARDING
express — Onboarding Checklist
Concrete deliverables for a new engineer joining this repo. Every item points at a real file, command, or signal already detected in this bundle — no aspirational filler.
Day 1 — Boot the system
Goal: clone the repo, get the local stack up, hit one endpoint successfully, and read enough docs to know where things live.
- Clone the repo and read
README.md+HOWTO.mdend-to-end. - Install Node
>= 18(engine pinned inpackage.json). - Run
npm install(or the equivalent for your package manager). - Confirm services are listening on their expected ports.
- Pair with someone for 30 minutes — let them walk you through their last PR.
Week 1 — Build a mental model
Goal: read enough code to know what's load-bearing, what's risky, and how the team works.
- Read the top-risk files end-to-end (these are where the team gets paged):
test/res.redirect.js— band MED (4 findings)test/res.location.js— band MED (11 findings)lib/response.js— band MED (32 findings)examples/view-locals/index.js— band LOW (20 findings)examples/route-middleware/index.js— band LOW (16 findings)
- Run the full test suite at least once:
npm test(so you know what "green" looks like locally). - Ship a low-risk first PR — see
FIRST_COMMIT.mdfor surfaced TODOs and skipped tests.
Month 1 — Own a slice
Goal: be the go-to person for at least one area of the system.
- Be primary reviewer on at least 5 PRs in your domain area.
- Lead a 30-minute walkthrough of one area for the next new hire.
Sign-off
Work down the boxes in order. When the Month-1 list is fully checked, you're no longer onboarding — you're a maintainer.
GLOSSARY
express — Glossary
No domain terms extracted. Add Prisma models, NestJS controllers, or hand-written runbooks to populate this section.
API RECIPES
express — API Recipes
No NestJS endpoints or Next.js routes detected.
If the API uses a different framework (FastAPI, Express, Rails, ...), document the recipes by hand in HOWTO.md.
ADR INDEX
express — ADR Index
No ADRs detected. Luxscope looked under docs/adr/, docs/decisions/, and any *.adr.md files.
Even one ADR is better than none — start with a 5-line decision record the next time the team makes a non-obvious call.
PERF + I18N
express — Performance & Internationalization
No performance instrumentation or i18n machinery detected.
If perf metrics or translations live elsewhere (separate ops repo, vendor UI), document the location here by hand.
ER Diagram
express — ER Diagram
No Prisma schema detected. Diagram unavailable.
Gates
Quick Wins
| Rule | Effort | Potential Gain | Evidence |
|---|---|---|---|
eval-usage | 10 min | +5.0 pts | test/res.redirect.js:115 — eval()/exec() executes arbitrary code |
eval-usage | 10 min | +5.0 pts | test/res.redirect.js:116 — eval()/exec() executes arbitrary code |
dangerous-innerhtml | 10 min | +5.0 pts | test/res.redirect.js:115 — innerHTML / dangerouslySetInnerHTML bypasses escaping |
dangerous-innerhtml | 10 min | +5.0 pts | test/res.redirect.js:116 — innerHTML / dangerouslySetInnerHTML bypasses escaping |
raw-sql-string-concat | 10 min | +5.0 pts | examples/route-map/index.js:51 — SQL text joined with + or f-string — likely injection surface |
Risk Files
Files ranked by aggregated risk score, banded HIGH / MED / LOW. Expand a card to see the drivers that pushed it into its band, the top contributing findings, and concrete mitigation steps.
test/res.redirect.js
test/res.location.js
lib/response.js
examples/view-locals/index.js
examples/route-middleware/index.js
lib/application.js
lib/view.js
test/Router.js
examples/auth/index.js
lib/utils.js
examples/resource/index.js
examples/route-map/index.js
test/app.listen.js
examples/error/index.js
examples/search/index.js
examples/view-constructor/github-view.js
lib/request.js
test/app.js
test/Route.js
examples/content-negotiation/db.js
examples/content-negotiation/users.js
examples/multi-router/controllers/api_v1.js
examples/multi-router/controllers/api_v2.js
examples/mvc/controllers/main/index.js
examples/route-separation/site.js
examples/search/public/client.js
examples/content-negotiation/index.js
examples/cookie-sessions/index.js
examples/cookies/index.js
examples/downloads/index.js
examples/ejs/index.js
examples/error-pages/index.js
examples/hello-world/index.js
examples/markdown/index.js
examples/multi-router/index.js
examples/mvc/controllers/pet/index.js
examples/mvc/controllers/user-pet/index.js
examples/mvc/controllers/user/index.js
examples/mvc/db.js
examples/mvc/index.js
examples/mvc/lib/boot.js
examples/online/index.js
examples/params/index.js
examples/route-separation/index.js
examples/route-separation/post.js
examples/route-separation/user.js
examples/session/index.js
examples/session/redis.js
examples/static-files/index.js
examples/static-files/public/js/app.js
examples/vhost/index.js
examples/view-constructor/index.js
examples/view-locals/user.js
examples/web-service/index.js
index.js
lib/express.js
Findings
| Severity | Rule | Location | Message | Effort |
|---|---|---|---|---|
| HIGH | eval-usage | test/res.redirect.js:115 | eval()/exec() executes arbitrary code | — |
| HIGH | eval-usage | test/res.redirect.js:116 | eval()/exec() executes arbitrary code | — |
| HIGH | dangerous-innerhtml | test/res.redirect.js:115 | innerHTML / dangerouslySetInnerHTML bypasses escaping | — |
| HIGH | dangerous-innerhtml | test/res.redirect.js:116 | innerHTML / dangerouslySetInnerHTML bypasses escaping | — |
| HIGH | raw-sql-string-concat | examples/route-map/index.js:51 | SQL text joined with + or f-string — likely injection surface | — |
| HIGH | raw-sql-string-concat | examples/resource/index.js:22 | SQL text joined with + or f-string — likely injection surface | — |
| MEDIUM | test-asserts-nothing | test/Route.js:10 | Test "should work without handlers" has no assertion — body has 3 statement line(s) but nothing checked | — |
| MEDIUM | test-asserts-nothing | test/Router.js:19 | Test "should support .use of other routers" has no assertion — body has 7 statement line(s) but nothing checked | — |
| MEDIUM | test-asserts-nothing | test/Router.js:91 | Test "should not stack overflow with many registered routes" has no assertion — body has 10 statement line(s) but nothing checked | — |
| MEDIUM | test-asserts-nothing | test/Router.js:202 | Test "should not throw if all callbacks are functions" has no assertion — body has 2 statement line(s) but nothing checked | — |
| MEDIUM | test-asserts-nothing | test/app.js:8 | Test "should inherit from event emitter" has no assertion — body has 3 statement line(s) but nothing checked | — |
| MEDIUM | test-asserts-nothing | test/app.listen.js:7 | Test "should wrap with an HTTP server" has no assertion — body has 4 statement line(s) but nothing checked | — |
| MEDIUM | test-asserts-nothing | test/app.listen.js:38 | Test "accepts just a callback (no args)" has no assertion — body has 3 statement line(s) but nothing checked | — |
| MEDIUM | test-asserts-nothing | test/res.location.js:183 | Test "should consistently handle relative urls" has no assertion — body has 8 statement line(s) but nothing checked | — |
| MEDIUM | test-asserts-nothing | test/res.location.js:194 | Test "should not encode urls in such a way that they can bypass redirect allow lists" has no assertion — body has 8 statement line(s) but nothing checked | — |
| MEDIUM | test-asserts-nothing | test/res.location.js:205 | Test "should not be case sensitive" has no assertion — body has 8 statement line(s) but nothing checked | — |
| MEDIUM | test-asserts-nothing | test/res.location.js:216 | Test "should work with https" has no assertion — body has 8 statement line(s) but nothing checked | — |
| MEDIUM | test-asserts-nothing | test/res.location.js:227 | Test "should correctly encode schemaless paths" has no assertion — body has 8 statement line(s) but nothing checked | — |
| MEDIUM | test-asserts-nothing | test/res.location.js:238 | Test "should keep backslashes in the path" has no assertion — body has 8 statement line(s) but nothing checked | — |
| MEDIUM | test-asserts-nothing | test/res.location.js:249 | Test "should escape header splitting for old node versions" has no assertion — body has 8 statement line(s) but nothing checked | — |
| MEDIUM | test-asserts-nothing | test/res.location.js:260 | Test "should encode unicode correctly" has no assertion — body has 8 statement line(s) but nothing checked | — |
| MEDIUM | test-asserts-nothing | test/res.location.js:271 | Test "should encode unicode correctly even with a bad host" has no assertion — body has 8 statement line(s) but nothing checked | — |
| MEDIUM | test-asserts-nothing | test/res.location.js:282 | Test "should work correctly despite using deprecated url.parse" has no assertion — body has 8 statement line(s) but nothing checked | — |
| MEDIUM | test-asserts-nothing | test/res.location.js:293 | Test "should encode file uri path" has no assertion — body has 8 statement line(s) but nothing checked | — |
| MEDIUM | fs-sync-in-request-path | lib/view.js:197 | tryStat calls sync fs API statSync | — |
Generated Documentation
Markdown docs and interactive diagrams emitted alongside the report. Use these as a self-contained handoff package: architecture overview, module map, dep graph, and a contributor-onboarding README — all derived from the same scan.
Metadata
| Field | Value |
|---|---|
| Repo | express |
| Generated | 2026-05-26 00:29:05 UTC |
| Luxscope version | 0.1.0 |
| Scoring version | default |
| Profile | default |
| Level | standard |
| Files scanned | 56 |
| Total findings | 25 |
Generated by Luxscope 0.1.0 · scoring default