Catch Angular anti-patterns before they ship.
ngcompass checks templates, RxJS, signals, SSR, security, and TypeScript patterns before they reach production. It runs locally, understands Angular semantics, and produces output you can act on.
43Angular rules
v15+supported
SARIFnative
Freeto use
Checks that understand Angular.
Eight domains, written specifically for Angular projects. Each rule is type-aware where it matters, template-aware where it matters, and explains the failure in Angular terms.
Templates
Old *ngIf / *ngFor syntax, unsafe innerHTML bindings, duplicated async pipes.
RxJS
Missing teardown, subscribe() inside components, nested subscribe chains.
Signals
Side effects inside computed(), legacy @Input() instead of input.required().
SSR
Browser-only globals in universal code, patterns that break hydration.
Security
DomSanitizer bypass calls, unsafe innerHTML and style template bindings.
Performance
Missing OnPush, function calls in templates, lists without trackBy.
Modern APIs
Constructor DI instead of inject(), legacy output patterns.
Testing
fdescribe / fit helpers, fakeAsync/tick in zoneless specs, and stale fixture.detectChanges() calls.
· 43 rules across 8 domains
Explore every ruleOutput you can act on.
Findings include severity, file location, rule id, a code frame, and a suggested fix. The terminal output is the same content as the SARIF and JSON reporters.
Reports without a service.
The HTML reporter writes the whole run into one document you can open, read and pass around like any other file — the same findings as the terminal, laid out for review instead of for a log.
One document
Markup, styles and findings are inlined into a single .html file. Nothing is linked and nothing is fetched at runtime.
Opens from disk
Double-click it, or mail it, or attach it to a ticket. No server to stand up, no account, no upload.
Grouped by file
Every violation sits under its file with the line, the rule id, the explanation and the surrounding code frame.
Filter without re-running
Search and filter by severity, category, rule id or filename inside the report itself — the analysis is already done.
· also available as json, sarif and console
View a sample reportAdd it to the pipeline.
One step in the workflow, with no service in the middle. The run fails the build on findings and still delivers them to the pull request, on the lines that need changing.
01name: ngcompass02
03on: [push, pull_request]04
05permissions:06 contents: read07 security-events: write08
09jobs:10 analyze:11 runs-on: ubuntu-latest12 steps:13 - uses: actions/checkout@v414 - uses: actions/setup-node@v415 with:16 node-version: '20'17 - run: npm ci18
19 # Exits non-zero once findings pass your severity gate.20 - name: Run ngcompass21 run: npx ngcompass analyze --format sarif > results.sarif22
23 # Runs even when the step above failed the job, so the findings24 # still reach the pull request.25 - name: Upload to Code Scanning26 if: always()27 uses: github/codeql-action/upload-sarif@v428 with:29 sarif_file: results.sarif· exit 1 above your severity gate · sarif 2.1.0 · any runner on node 20+
Read the CI guideLocal by default.
ngcompass runs entirely on your machine. Source code is never uploaded, no telemetry is sent, no account is required.
Source stays local
Files are read from disk and analysed in-process. Nothing is uploaded or synced.
Zero telemetry
No analytics, no usage pings, no error reporting. ngcompass never phones home.
No account
Install, run, ship. There is no sign-up, no login, no cloud workspace.
Self-contained reports
HTML reports are a single file. Open offline, share over email, no server required.
Questions, answered.
Licensing, supported versions, CI integration, and how ngcompass differs from other linters.
01Is ngcompass free?
Yes. Free to use during beta and after 1.0.
02Does it replace angular-eslint?
No. They are complementary. angular-eslint handles syntax and style. ngcompass handles architecture, Angular semantics, and patterns that require type awareness. Run both.
03Which Angular versions are supported?
Angular v15 and later. Node.js 20.19.0+ or 22.12.0+ is required on the host machine. ngcompass detects your Angular version and skips rules that target newer APIs, so an Angular 15 project is never told to migrate to something it cannot use.
04Does it work in CI?
Yes. ngcompass exits with a non-zero code when violations above the configured severity are found. Use --format sarif to upload results to GitHub Code Scanning for inline PR annotations.
05Does source code leave my machine?
No. ngcompass runs locally. Source files are read from disk and never uploaded. There is no telemetry.
06Can I tune rules?
Yes. The rules key disables or re-severities individual rules. The overrides key applies different rule severities to file globs — useful for legacy directories or generated code.