vs. other tools

OpenSIP CLI is not a replacement for ESLint, Semgrep, or Sonarqube — it complements them. This page lays out what's overlapping, what's distinct, and when each tool is the right call. No marketing — just the honest shape.

At a glance

| | opensip-cli | ESLint / Ruff / golangci-lint | Semgrep | Sonarqube | Snyk |

|---|---|---|---|---|---|

| Polyglot in one run | ✓ TS, Python, Rust, Go, Java, C/C++ | ✗ (one per language) | ✓ | ✓ | ✓ (security focus) |

| User-authored architectural rules | ✓ (defineCheck in 15 lines) | partial (custom rules per linter) | ✓ (Semgrep YAML) | partial (XPath-ish) | ✗ |

| Static call-graph rules (orphan code, dead paths, structural) | ✓ (11 built-in, defineRule) | ✗ | partial | ✓ | ✗ |

| Load / chaos simulation | ✓ (sim) | ✗ | ✗ | ✗ | ✗ |

| CI gate with baselines | ✓ (--gate-save / --gate-compare) | partial (snapshot files) | ✓ | ✓ | ✓ |

| SARIF output for PR annotations | ✓ | partial | ✓ | ✓ | ✓ |

| Runs offline (no SaaS required) | ✓ | ✓ | ✓ | partial | ✗ |

| Free / open source | ✓ Apache-2.0 | ✓ | ✓ (OSS engine + paid cloud) | partial (Community Edition) | ✗ (commercial) |

| Per-project plugins via .mjs files | ✓ | partial | ✗ | ✗ | ✗ |

| Marketplace of rules | partial (npm packages) | ✓ (huge) | ✓ (large registry) | partial | partial |


Should I use opensip-cli or X?

vs. ESLint, Ruff, golangci-lint, clang-tidy

Use linters for what they're good at: language-specific syntactic patterns and stylistic preferences inside one file. no-unused-vars, prefer-const, formatting, AST-level idiom enforcement. These are exactly what linters were designed for.

Use opensip-cli above them, for things linters can't express:

Linters and opensip-cli coexist. They answer different questions; you run both in CI.

vs. Semgrep

This is the closest comparison — both are polyglot rule runners aimed above traditional linters. The differences:

Many teams use both: Semgrep for the security-rule library, opensip-cli for project-shape and architecture rules.

vs. Sonarqube

Sonarqube is the closest in scope — multi-language code quality with rule customization and baseline tracking — but the operating model is different:

If you want a managed server with a UI for triage, Sonarqube fits. If you want a CLI that exits with an exit code and lives entirely in your repo, OpenSIP CLI fits.

vs. Snyk

Snyk is a security platform — vulnerability scanning, dependency CVE checks, secret detection, IaC misconfiguration. OpenSIP CLI is not in that category. The categories overlap only in the "fail CI on bad code" gate model; the content is completely different.

They coexist comfortably in the same CI pipeline.


What opensip-cli deliberately isn't trying to be

A short anti-claims list, since "what we don't do" is often more useful than "what we do":


What's next

| If you want to … | Go to … |

|---|---|

| See concrete code samples for each loop | Show me each loop |

| Common questions about adoption + edge cases | FAQ |

| Run the first smoke test right now | Quick start |

| Browse the built-in checks | Checks reference |