ruling

SkillDev tools

Run ruling integration tests and update expected results for SonarJS rules. Use when running ruling tests or syncing expected ruling output.

Available today. Use it from your connected AI after setup.

Connect ahel once, and every AI you use reads what you have installed.

Then ask your AI: use the ruling skill

What this skill tells your AI

The instructions your AI receives, as published by sonarsource/sonarjs in .claude/skills/ruling/SKILL.md and read by ahel’s review.

Overview

Ruling tests analyze large third-party codebases (JS/TS and CSS) and compare issues against expected output. Run them when adding or modifying rules to verify real-world behavior.

Warning: Running ruling tests removes node_modules from the project root. Run npm ci afterward.

Running Ruling

# Prerequisites: init submodules, install dependencies, build JS/TS, then rebuild the jar
git submodule update --init --recursive
npm install
npm run bbf
mvn install -DskipTests

# Run ruling (JS/TS and CSS)
npm run ruling

# Sync actual → expected (after reviewing output)
npm run ruling-sync

# Debug differences
sh tools/ruling-debug-script.sh

Results:

  • Actual: packages/ruling/actual/
  • Expected: its/ruling/src/test/expected/

Java Ruling (Old Way)

cd its/ruling
mvn verify -Dtest=RulingTest -Dmaven.test.redirectTestOutputToFile=false

Copy actual to expected:

cp -R target/actual/ src/test/expected/

Review diff:

diff -rq src/test/expected target/actual

Custom Source Files for New Rules

If a new rule raises no issues on existing sources, add test code:

  • its/sources/custom/jsts/S1234.js — regular code
  • its/sources/custom/jsts/tests/S1234.js — test code

Copy from RSPEC HTML description (compliant/non-compliant examples).

Debugging with Node Process

To debug the Node.js bridge during ruling:

  1. Start your Node.js process manually
  2. Set SONARJS_EXISTING_NODE_PROCESS_PORT=<port>
  3. Remove @Execution(ExecutionMode.CONCURRENT) from the ruling test class (for serial execution)

Submodule Setup

If submodules aren't checked out:

git submodule init
git submodule update

Signals

GitHub stars
1k
Forks
192
Last commit
Sep 2026

ahel review

  • K1binfo
    installs-packages

Automated review, not a security audit. Ruleset v1+k2.

Advanced
Catalog kind
skill
Gateway key
ruling
Source
github.com/sonarsource/sonarjs