SonarQube Cloud

sonarsource.comcontributed by Samuele Ongaro

YES

Replaceable in one session with an AI coding agent.

Static analysis for code quality and security: issues, duplication, coverage and a quality gate that blocks a merge when new code falls below a standard.

Promptfree, for everyone, and the only version there is
Build me the code quality gate I actually need instead of SonarQube Cloud: analysis on the change, not on the whole repository, blocking a merge when the new code is worse.

Read this first: the free tools here are strong — Semgrep for patterns, the language's own linters and type checker, jscpd for duplication, whatever coverage tool you already run. What the fee buys is rule sets for many languages maintained by people who know them, and the new-code quality gate. The rules you should borrow; the gate you can build in a weekend, and it is the part that changes behaviour.

STACK
- Node 20+ with Fastify for the orchestration and the dashboard
- SQLite through better-sqlite3, WAL mode
- Existing analysers as the engines, each in a container. Do not write a static analyser
- Caddy in front

THE DATA MODEL
- repos: id, name, remote_url, default_branch, config_json, is_active
- analyses: id, repo_id, commit_sha, ref, pull_number, base_sha, started_at, finished_at, status, engine_versions_json
- issues: id, analysis_id, engine, rule_id, severity, kind, file, line, end_line, message, fingerprint, is_new, effort_minutes — kind is bug, vulnerability, smell or duplication
- measures: id, analysis_id, metric, value, scope, scope_path — coverage, duplication, complexity, lines, per file and overall
- gates: id, repo_id, name, conditions_json — the thresholds
- gate_results: id, analysis_id, gate_id, passed, failures_json
- suppressions: id, fingerprint, reason, expires_at, approved_by — always with a reason and an expiry
- Fingerprints stable across analyses, computed from the rule plus a hash of the surrounding code rather than the line number, so a finding survives the file being reformatted

THE NEW-CODE GATE, WHICH IS THE WHOLE IDEA
- Judging a repository as a whole produces a number nobody can move, and a number nobody can move is ignored
- Judging the change is different: this pull request adds twelve lines of uncovered code and two new issues. That is actionable, it is fair to the author, and it is achievable today
- So: compute the diff against the merge base, attribute every issue and every uncovered line to whether it is in the changed lines, and apply the thresholds only to those
- Conditions on new code: no new issues above a severity, coverage on new lines above a percentage, duplication on new lines below a percentage, no new secrets, no security hotspots left unreviewed
- Existing debt is reported separately and never blocks. It goes down over time because every change leaves its own lines clean, which is the whole strategy

RUNNING THE ANALYSIS
- One command in CI: analyse, compare against the base, report, and exit non-zero if the gate fails
- Engines run in containers with a pinned version recorded on the analysis, so a change in results is explicable rather than mysterious
- Coverage read from the file the test run already produces — lcov, Cobertura, whatever the language emits
- Duplication across the whole repository but attributed to the new lines
- Complexity per function, reported when a new or modified function crosses a threshold

THE FEEDBACK
- One comment per pull request, edited in place on every push. A new comment per push is why these tools get muted
- It says: gate passed or failed, and if it failed, exactly which condition and where. Not a link to a dashboard — the specific lines, in the comment
- Inline annotations on the diff through the forge's own check API, which is where a reviewer is already looking
- SARIF output so the forge renders findings natively

HISTORY
- Every measure kept per commit on the default branch, charted as inline SVG
- Coverage, issue count and duplication over time, per directory as well as overall, so a decaying corner is visible
- The debt list ranked by effort, which is the actual to-do list when somebody has a quiet week

CONFIGURATION
- A file in the repository: which engines, which rules, the gate conditions, and the paths to exclude
- Exclusions that actually work: generated code, vendored code, migrations, and test files where the rules do not apply
- Validated by the same code that reads it, with a command to check it locally

RULES
- Start with the recommended set of each engine and remove what does not fit, rather than starting from nothing
- Every rule that fires and is suppressed twice should be reconsidered. A rule nobody agrees with trains people to ignore the tool
- Custom rules for your own patterns, written as engine rules and kept in the repository

OPERATIONS
- .env: DATABASE_PATH, BASE_URL, FORGE_TOKEN, WEBHOOK_SECRET, SESSION_SECRET
- Migrations on boot, each once
- Nightly backup, restore script
- Health endpoint

WHAT MATTERS MOST
Diff attribution and one edited comment. Get the mapping between changed lines and findings right — including for a moved block and a renamed file — and make failing the gate mean something specific and fixable. Whole-repository scores are easy to compute and change nothing.

Give me the repository, the engine wrappers, migrations, .env.example, the CI workflow, and a README naming the free tools it stands on.

What you lose

  • Rule sets for many languages, each maintained by people who know that language well
  • The new-code quality gate, which judges the change rather than the whole repository
  • A history of quality over time across branches

If you would rather not build

  • SonarQube Community Edition, self-hosted and free
  • ESLint or the equivalent, which you already run

What it costs

read from their page 17 Aug 2026

PlanBilled monthlyBilled yearlyLast read
—$34/mo—17 Aug 2026

Their pricing page is where these came from. Seeing a different price? Tell us.

The escape hatch

open source · no votes, no paid placement

Semgrep

$0

Static analysis across many languages with a free rule set.

semgrep/semgrepfree · open source

jscpd

$0

Copy-paste detection across a repository, runnable in CI.

kucherenko/jscpdfree · open source

Why this verdict

our own opinion · changed only by a person

78/100

Verdict yes at 78. The community edition is free to self-host, and the diff-scoped gate is the idea worth copying whichever route you take.

History

tracked since 10 Aug 2026 · nothing is ever overwritten

Interest · last 30 dayspeak 4/day
views02430 Aug4 Sept9 Sept14 Sept19 Sept24 Sept28 Sept
— views— prompt copies none yet— votes none yet

Questions about SonarQube Cloud

answered from the record above

Is SonarQube Cloud free?

No — the plan we track is $34 a month. Team starts at $34/month for a small team, priced by lines of code.

Can you replace SonarQube Cloud by building your own?

YES. Replaceable in one session with an AI coding agent. Replacement score 78 out of 100, build time one session. Read what you lose before you decide.

How much does SonarQube Cloud cost?

$34 a month on Team — $408 a year. Recorded 17 Aug 2026.

What do you lose by replacing SonarQube Cloud?

Rule sets for many languages, each maintained by people who know that language well; The new-code quality gate, which judges the change rather than the whole repository; A history of quality over time across branches. If any of those carry weight for you, keep paying.

Is there an open-source alternative to SonarQube Cloud?

Yes: Semgrep, jscpd. The prompt on this page is for when you want it your way instead.

Related entries

same category first, most replaced first

All 56 in Dev tools

Not sending yet

Every week, something stops being worth paying for.

New verdicts, prices that moved, entries added. One email a week. Unsubscribe in one click. Nothing is being sent yet — your address is kept here, and the first issue is the first thing it is used for.

free forever · no tracking pixel · stored here, never passed to anyone

Esc