Blinter is a linter and debug companion for batch scripts (.bat, .cmd). It runs the bundled Blinter.exe and surfaces diagnostics in VS Code Problems, hover tooltips, decorations, and a dedicated output view
- Windows only (
win32) - Works with
.batand.cmd - Run and debug through
blinter-debug(F5) - Quick fixes for suppression comments and command casing
- For user-facing changes, see CHANGELOG.md.
- Installation
- Quick start
- Core features
- Commands
- Configuration
- Suppression workflow
- Output and troubleshooting
- Developer setup
- Testing
- Packaging
- License
- Build or download a
.vsixpackage. - In VS Code, open Extensions.
- Select the
...menu and chooseInstall from VSIX.... - Select the VSIX file.
- Clone this repository.
- Install dependencies:
npm ci- Ensure vendor assets are present:
.\setup-vendor.bat- Press
F5in VS Code to launch Extension Development Host.
- Open a workspace containing a
.bator.cmdfile. - Open Run and Debug (
Ctrl+Shift+D). - Use
Launch Batch (Blinter)and run withF5. - Review diagnostics in Problems and the
Blinter Outputview. - Use Quick Fix (
Ctrl+.) for suppression/comment assistance.
Example launch.json:
{
"version": "0.2.0",
"configurations": [
{
"name": "Launch Batch (Blinter)",
"type": "blinter-debug",
"request": "launch",
"program": "${file}"
}
]
}- Registers
blinter-debugfor Run and Debug workflows - Streams diagnostics while the script runs
- Highlights critical issues in-editor
- Shows grouped issue summaries in
Blinter Output - Adds quick fixes for:
- command casing normalization
- suppression comments (
LINT:IGNORE) - optional Copilot handoff
- Supports
blinter.inicreation and status-bar visibility
Blinter: RunBlinter: Run and DebugBlinter: Create Config FileBlinter: Ask Copilot About DiagnosticBlinter: Remove All Suppressions
blinter.enabled(boolean, defaulttrue)blinter.runOn(onSave | onType, defaultonSave)blinter.debounceDelay(number, default500)blinter.followCalls(boolean, defaultfalse)blinter.minSeverity(all | performance | style | warning | error, defaultall)blinter.enabledRules(string[], default[])blinter.disabledRules(string[], default[])blinter.useConfigFile(boolean, defaulttrue)blinter.maxLineLength(number, default100)blinter.noRecursive(boolean, defaultfalse)
blinter.quickFixCodes(string[])blinter.criticalHighlightColor(string, default#5a1124)blinter.encoding(string, defaultutf8)
blinter.suppressionCommentStyle(REM | ::, defaultREM)blinter.showAskCopilotQuickFix(boolean, defaultfalse)
When a Blinter diagnostic appears:
- Use Quick Fix (
Ctrl+.). - Choose
Blinter: Suppress ... on this line. - Blinter inserts a
LINT:IGNOREcomment above the target line. - Existing
LINT:IGNOREcodes on the previous line are merged.
You can remove all suppression comments via:
- Command Palette:
Blinter: Remove All Suppressions Blinter Outputview title button
- Open
View -> Output -> Blinterfor command, stdout, and stderr logs. - If diagnostics do not appear:
- confirm
blinter.enabledis true - confirm file language is
batorcmd - verify the bundled executable exists under
vendor/Blinter/Blinter.exe
- confirm
- If the debug session closes early, inspect output logs first.
The repository keeps vendor artifacts out of source control where possible. Use:
.\setup-vendor.batto populate the required core assets under vendor/Blinter.
Common commands:
npm run lint
npm run test:unit
npm run test:integration
npm run test:matrixtest:matrix runs unit, integration, system packaging, UAT checks, regression, performance, security, smoke, sanity, and exploratory suites with reports in test/reports/.
Build a VSIX package:
.\build.bator
npm run package:vsixSee PACKAGING.md for release flow details.
- Project: MIT (
LICENSE) - Blinter core linter: https://github.com/tboy1337/Blinter