secure-review-extension
v1.0.10
Published
Run deep static and Docker-based dynamic secure code reviews directly inside VS Code.
Maintainers
Readme
Secure Review
Secure Review is a VS Code extension and local CLI for static secure code review, dependency review, and Docker-based dynamic web security testing.
It is designed to help developers and security teams scan local repositories or Bitbucket-hosted repositories without needing to manually stitch together multiple tools.
What You Can Do With It
- Run static workspace scans inside VS Code
- Scan the currently open file
- Review findings in a dedicated activity bar view
- See inline diagnostics in the editor
- Open a report webview with summaries, evidence, and remediation guidance
- Export findings as DOCX from the extension
- Run the same engine from the terminal with the
secure-reviewCLI - Scan Bitbucket repositories directly by URL
- Enrich results with local tools such as
semgrep,eslint,bandit,pip-audit,gosec,cppcheck, and others when available - Run OWASP ZAP dynamic scans against developer-controlled local or test web applications
Key Capabilities
Static review
Secure Review combines built-in rule packs, repository heuristics, optional external tools, and stack-aware checks.
It covers areas such as:
- hard-coded secrets and credentials
- weak cryptography usage
- command execution risks
- injection-style patterns
- auth and authorization issues
- dependency and supply-chain risks
- configuration and infrastructure risks
- testing gaps
- reliability, maintainability, and performance smells
Dynamic review
Secure Review can launch OWASP ZAP through Docker and run:
- baseline scans for passive checks
- full scans for active testing
- API-focused scans using an API definition URL when available
Dynamic findings are grouped and normalized into the same reporting model used by static scans.
CLI agent
The secure-review CLI supports:
- local repository inspection
- bootstrap planning for scanner tools
- local path scans
- Bitbucket repository scans by HTTPS or SSH URL
- optional report export
- optional dynamic scan integration
Installation
Option 1: Install From Visual Studio Marketplace
- Open VS Code.
- Open the Extensions view.
- Search for
Secure Review. - Click
Install.
Option 2: Install From VSIX
If you have a packaged .vsix file:
- Open VS Code.
- Open the Extensions view.
- Choose
Extensions: Install from VSIX... - Select the
.vsixfile.
If you are packaging the extension from source:
npm install
npm run verify
npm run packageThis creates a .vsix package in the repository root.
Option 3: Install The CLI
From npm:
npm install -g secure-review-extensionThen run:
secure-review helpIf you are using the source repository locally:
npm install
npm link
secure-review helpQuick Start In VS Code
- Open a project folder in VS Code.
- Open the Command Palette.
- Run
Secure Review: Scan Workspace. - Open the
Secure Reviewactivity bar view to inspect findings. - Run
Secure Review: Open Review Reportto see the in-editor report. - Run
Secure Review: Export Findings Reportto create a DOCX report.
Available extension commands:
Secure Review: Check Workspace RequirementsSecure Review: Scan WorkspaceSecure Review: Scan Current FileSecure Review: Dynamic Scan Local AppSecure Review: Open Review ReportSecure Review: Export Findings ReportSecure Review: Clear FindingsSecure Review: Ignore Finding
Quick Start In The CLI
Inspect a local repository:
secure-review inspect /path/to/repoInspect a Bitbucket repository:
secure-review inspect https://bitbucket.org/workspace/repositorySee which optional scanner tools are recommended:
secure-review bootstrap /path/to/repoRun a scan:
secure-review scan /path/to/repo --severity mediumExport HTML output:
secure-review scan /path/to/repo --format html --out review.htmlExport DOCX output:
secure-review scan /path/to/repo --format docx --out review.docxRun a scan against a Bitbucket repository without cloning it manually:
secure-review scan [email protected]:workspace/repository.git --severity mediumCLI Commands
inspect
Displays detected languages, frameworks, and recommended scanner tools for:
- a local workspace path
- a Bitbucket repository URL
- a Bitbucket browser URL with
/src/<branch>/ - a Bitbucket SSH clone URL
Examples:
secure-review inspect /path/to/repo
secure-review inspect https://bitbucket.org/acme/payments-service
secure-review inspect https://bitbucket.org/acme/payments-service/src/main/
secure-review inspect [email protected]:acme/payments-service.gitbootstrap
Prints the install plan for matching scanner tools. With --run, Secure Review executes the supported install commands when possible.
Examples:
secure-review bootstrap /path/to/repo
secure-review bootstrap /path/to/repo --run
secure-review bootstrap [email protected]:acme/payments-service.gitscan
Runs static review, optional dynamic review, and optional report export.
Examples:
secure-review scan /path/to/repo --severity low
secure-review scan /path/to/repo --severity high --format json --out findings.json
secure-review scan /path/to/repo --format html --out review.html
secure-review scan /path/to/repo --format docx --out review.docx
secure-review scan https://bitbucket.org/acme/payments-service/src/release-1.2/ --severity medium
secure-review scan [email protected]:acme/payments-service.git --branch main --severity mediumBitbucket Repository Support
Secure Review can scan repositories that are not already present on the local machine.
Supported inputs:
https://bitbucket.org/workspace/repohttps://bitbucket.org/workspace/repo/src/main/[email protected]:workspace/repo.git
Behavior:
- the repository is cloned to a temporary directory
- the requested branch is resolved automatically when possible
- the scan runs against that temporary workspace
- the temporary clone is cleaned up after the scan
Tips:
- use SSH URLs for private repositories if SSH access is already configured
- use
--branch <name>to override the branch when the URL does not specify one
Dynamic Scan Usage
Dynamic scanning is intended only for applications and endpoints you control.
Requirements:
- Docker installed and running
- a reachable local or test web application
- a configured target URL
Example local app:
PORT=3001 node sample-workspace/dev-server.jsCLI example:
secure-review scan /path/to/repo \
--dynamic-url http://127.0.0.1:3001 \
--dynamic-mode baselineAPI scan mode example:
secure-review scan /path/to/repo \
--dynamic-url http://127.0.0.1:3001 \
--dynamic-mode api \
--dynamic-api-url http://127.0.0.1:3001/openapi.jsonDynamic scan modes:
baseline: passive checks and safer first passfull: active testing for controlled targets onlyapi: API-oriented scan using a provided definition URL
Typical dynamic findings include:
- missing security headers
- cookie security issues
- information disclosure
- reflected or stored attack candidates surfaced by ZAP
- transport and response hardening issues
What Secure Review Checks
Secure Review blends several scan styles into one findings model.
Built-in static rules
- secrets and credentials
- dangerous sinks such as shell execution, HTML injection, and weak crypto
- auth and authorization patterns
- framework-aware checks
- code quality and maintainability warnings
Repository heuristics
- dependency hygiene and supply-chain risks
- runtime and environment configuration concerns
- Docker, Kubernetes, Terraform, and compose issues
- package-manager and deployment misconfiguration
External tool integrations
When the relevant tools are installed locally, Secure Review can enrich results using:
semgrepeslintnpm auditbanditpip-auditspotbugsgosecgovulncheckcargo-auditclippycppcheckbrakemanphpstan.NETpackage vulnerability checks
Finding quality metadata
Findings include richer classification so the output is more honest and easier to review manually. Depending on the engine and evidence, findings may be classified as:
- likely vulnerabilities
- runtime vulnerabilities
- dependency risks
- contextual warnings
- recommendations
They may also include evidence strength, origin, and a manual-review recommendation flag.
Default Scan Exclusions
To reduce noise and improve performance, Secure Review skips common dependency and build folders by default, including:
.gitnode_modules.venvvenvenvvendordistbuildtargetcoverage__pycache__
This helps the scanner stay focused on project code rather than vendored packages and generated artifacts.
Report Output
In VS Code
The extension can export findings as a DOCX report.
The export flow prompts for:
- project name
- report date
- scan type
- optional notes
The report includes:
- executive summary
- severity summary
- findings by category
- findings by review domain
- severity-grouped overview
- detailed findings with evidence and remediation guidance
- recommendations summary
- methodology, limitations, and scan configuration
In The CLI
The CLI supports:
- plain terminal output
jsonhtmlmddocx
Examples:
secure-review scan /path/to/repo --format json --out findings.json
secure-review scan /path/to/repo --format html --out review.html
secure-review scan /path/to/repo --format md --out review.md
secure-review scan /path/to/repo --format docx --out review.docxPreparing Optional Scanner Tools
If you want deeper language-specific coverage, you can inspect or bootstrap recommended local tools before running a scan.
From the repository source:
npm run bootstrap:toolsTo execute supported install commands:
npm run bootstrap:tools:runThe bootstrap flow is best-effort:
- it detects the languages and frameworks present in the target workspace
- it recommends matching external tools
- it runs only supported install paths
- some tools may still require manual installation depending on the operating system and package manager
Security And Privacy Notes
- Static scans operate on the repository or workspace you explicitly choose.
- Dynamic scans use OWASP ZAP through Docker and should only target developer-controlled local or test applications.
- Secure Review is designed to work locally and does not require a remote analysis service.
- External tool integrations run only when the corresponding tools are available on the machine.
Troubleshooting
No findings appear
- Lower the minimum severity threshold.
- Confirm excluded globs are not hiding the relevant files.
- Check whether built-in rules or external tool integrations are disabled.
Dynamic scan fails
- Confirm Docker is installed and running.
- Confirm the target app is reachable from Docker.
- Start with
baselinemode before tryingfull.
A Bitbucket scan fails on a private repository
- Prefer an SSH URL such as
[email protected]:workspace/repo.git - or configure HTTPS access with the appropriate Bitbucket credentials
The editor shows too many problem decorations
- Run
Secure Review: Clear Findings - or disable VS Code problem decorations if you only want to hide the visual markers
A CLI scan seems stuck
- use the progress output to see which tool is running
- increase or lower
--tool-timeout-msdepending on the workspace size and installed tools - verify that optional tools such as
semgreporbanditare installed and working independently
Developing From Source
If you want to test the extension from source:
- Clone the repository.
- Run
npm install. - Press
Fn + F5in VS Code, or launchRun Secure Review ExtensionfromRun and Debug. - In the Extension Development Host, open a target project and run
Secure Review: Scan Workspace.
This repository includes a deliberately vulnerable sample in sample-workspace, which is useful for smoke testing.
For Maintainers
Common maintenance commands:
npm run verify
npm run package
npm run pack:cli:dry-run
npm run pack:cli
npm run publish:npm
npm run publish:marketplaceBefore releasing:
- verify package metadata in
package.json - confirm the publisher ID is correct
- validate the packaged VSIX locally
- validate the npm tarball locally if you are shipping the CLI
