Imagengcompass

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

8 domains · 43 rules

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 rule
Terminal output

Output 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.

ngcompass
ngcompassanalyze
HTML report

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 report
CI integration

Add 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.

.github/workflows/ngcompass.yml
01name: ngcompass
02
03on: [push, pull_request]
04
05permissions:
06 contents: read
07 security-events: write
08
09jobs:
10 analyze:
11 runs-on: ubuntu-latest
12 steps:
13 - uses: actions/checkout@v4
14 - uses: actions/setup-node@v4
15 with:
16 node-version: '20'
17 - run: npm ci
18
19 # Exits non-zero once findings pass your severity gate.
20 - name: Run ngcompass
21 run: npx ngcompass analyze --format sarif > results.sarif
22
23 # Runs even when the step above failed the job, so the findings
24 # still reach the pull request.
25 - name: Upload to Code Scanning
26 if: always()
27 uses: github/codeql-action/upload-sarif@v4
28 with:
29 sarif_file: results.sarif

· exit 1 above your severity gate · sarif 2.1.0 · any runner on node 20+

Read the CI guide
Privacy by design

Local 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.

Frequently asked

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.