IdeaCredIdeaCred

SonarSource/SonarJS

91

SonarSource Static Analyzer for JavaScript and TypeScript

What's novel

SonarSource Static Analyzer for JavaScript and TypeScript

Code Analysis

27 files read · 7 rounds

A production-grade static analysis engine for JavaScript, TypeScript, and CSS that implements 1000+ rules using ESLint as the execution framework, with deep TypeScript type-system integration, dataflow analysis, and gRPC-based communication with SonarQube Server and IDE.

Strengths

Exceptional depth of implementation with 535+ rules backed by 99+ helper modules providing AST manipulation, TypeScript type checking, scope analysis, and dataflow algorithms (reaching definitions). The architecture is well-layered with clean separation between gRPC transport, analysis orchestration, rule execution, and issue transformation, supported by a comprehensive multi-layer testing strategy (unit, check-based, integration, ruling).

Weaknesses

The Linter class is a large static singleton (20kb) that accumulates state, making it harder to test in isolation and reason about. Some helper files (ast.ts at 25kb, type.ts at 21kb) are large and could benefit from further decomposition. The dependency on ESLint's internal APIs (e.g., getSuppressedMessages cast) creates fragility across ESLint versions.

Score Breakdown

Innovation
4 (25%)
Craft
89 (35%)
Traction
65 (15%)
Scope
94 (25%)

Signal breakdown

Innovation

Not Fork+1
Code Novelty+1
Concept Novelty+0

Craft

Ci+5
Tests+8
Polish+3
Releases+4
Has License+5
Code Quality+27
Readme Quality+15
Recent Activity+7
Structure Quality+5
Commit Consistency+5
Has Dependency Mgmt+5

Traction

Forks+20
Stars+30
Hn Points+0
Watchers+10
Early Traction+0
Devto Reactions+0
Community Contribs+5

Scope

Commits+8
Languages+8
Subsystems+13
Bloat Penalty+0
Completeness+7
Contributors+8
Authored Files+15
Readme Code Match+3
Architecture Depth+7
Implementation Depth+8

Evidence

Commits

1182

Contributors

90

Files

10061

Active weeks

51

TestsCI/CDREADMELicenseContributing

Repository

Language

TypeScript

Stars

1207

Forks

192

License

NOASSERTION