| name | build |
| description | Build pipeline for SonarJS. Use when asked to build the project, regenerate metadata, understand the build pipeline, or run npm build scripts. |
Quick Reference
npm ci
npx tsc -b packages
npm run bbf
npm run generate-meta
npm run generate-java-rule-classes
mvn install -DskipTests
mvn clean install
When to Run What
| Goal | Command |
|---|
| After editing rule TS code | npm run bbf |
After modifying config.ts or meta.ts | npm run generate-meta && npm run bbf |
After modifying fields array | npm run generate-meta && npm run generate-java-rule-classes |
| Full plugin build | mvn install -DskipTests |
Build Pipeline Overview
npm run bbf (bridge:build:fast)
bbf
├── rimraf lib/*
├── npm run generate-meta # RSPEC JSON → generated-meta.ts per rule
└── npm run bridge:compile # tsgo TypeScript compilation
npm run generate-meta
Reads RSPEC metadata from:
sonar-plugin/javascript-checks/src/main/resources/org/sonar/l10n/javascript/rules/javascript/
Writes to (gitignored):
packages/analysis/src/jsts/rules/SXXXX/generated-meta.ts
Maven Build Phases (relevant for rule work)
- javascript-checks (generate-resources): Downloads RSPEC → deploys to
sonar-plugin/javascript-checks/src/main/resources/, runs generate-java-rule-classes
- bridge (generate-resources): Runs
npm run bbf (which includes generate-meta)
- Compile: Java compilation of all modules
RSPEC Metadata Chain
Remote RSPEC repo
↓ (rspec-maven-plugin, gitignored)
resources/rule-data/
↓ (npm run deploy-rule-data, committed)
sonar-plugin/javascript-checks/src/main/resources/…/javascript/*.json
↓ (npm run generate-meta, gitignored)
packages/analysis/src/jsts/rules/SXXXX/generated-meta.ts
Key: The sonar-plugin/javascript-checks/src/main/resources/…/javascript/ directory is committed (526 files). It is the source of truth for generate-meta.
Generated vs. Committed Files
| Path | Status |
|---|
resources/rule-data/ | Gitignored (fresh RSPEC download) |
sonar-plugin/javascript-checks/src/main/resources/…/javascript/*.json | Committed |
packages/analysis/src/jsts/rules/*/generated-meta.ts | Gitignored |
lib/ | Gitignored |
Build Profiles
mvn clean install -P coverage-report
SONARSOURCE_QA=true mvn clean install
Notes
- Do not run
npm run bridge:test or npm run ruling — they take too long; if needed, run specific unit tests with npx tsx --test $test_file
generated-meta.ts files are auto-generated; do not edit manually
- Java check classes in
sonar-plugin/javascript-checks/ are auto-generated; CSS check classes are also auto-generated
- Requires
GITHUB_TOKEN env var with read access to SonarSource/rspec for Maven builds