Sapior LogoSapior

Introducing SAA Guidance: Static Analysis That Works the Way Your Team Does

Sapior’s new SAA Guidance framework turns static analysis from a solitary gatekeeper into a team-wide agreement. Learn how policy-as-code makes your lint rules match your culture, not the other way around.

Why static analysis often feels like a fight

Tools like ESLint, pylint, and Clippy promise consistency, but developers know the reality: “the linter” becomes a person you argue with in code review. A rule that made sense for one team builds frustration in another. The configuration sits in a forgotten file, gets cargo‑culted across repos, and ultimately erodes trust. According to a 2022 Stack Overflow analysis, engineers report spending 3–5 hours per month on tool‑configuration disputes—time that could be spent on actual architecture.

This gap between intent and practice is what we’re solving with **SAA Guidance**.

What exactly is SAA Guidance?

SAA stands for **Static Analysis Agreement**. It’s a framework for taking the implicit expectations your team already holds—like “we don’t allow `any` in TypeScript shared libraries” or “all Python functions must have a docstring”—and codifying them as a versioned, documented, shared contract. The agreement doesn’t just define rules; it captures the *why* and the agreed severity, which means your static analysis tool becomes a reflection of the team’s culture rather than an adversary.

At Sapior, we’ve seen this pattern succeed in organizations like Linear and Vercel, where code‑quality rules are treated as first‑class artifacts, discussed alongside OKRs. SAA Guidance brings that same discipline to any team, without requiring a dedicated DevEx squad.

From tribal knowledge to machine‑enforceable policy

With SAA Guidance, a rule isn’t just `no‑unused‑vars: error`. It’s a statement: “Unused variables clutter the codebase and mask dead code; we treat them as blocking errors because they’ve caused three production rollbacks.” The Sapior CLI reads this enriched policy and translates it into native linter configurations (ESLint, Ruff, Clippy, etc.), so your existing tools keep working—only now they know *why* a violation matters.

How SAA Guidance works inside Sapior

1. **Describe your agreement**

Write a single `saa.policy` file in the root of your repo. It uses a readable HCL‑like syntax where rules are grouped by concern (security, style, performance) and each rule carries a rationale and severity.

2. **Connect your team’s intelligence**

The Sapior dashboard lets you ratify agreements through a lightweight approval process. When the team decides to soften a rule from `error` to `warning`, that change is recorded with a timestamp and author—just like a code change.

3. **Automatically enforce**

The Sapior CLI is a drop‑in addition to your CI pipeline. It checks every pull request against the current agreement and produces granular feedback: violations are linked to their rationale, making it clear whether a fix is needed or an exception should be discussed.

4. **Evolve without fights**

Agreements are versioned, so you can propose policy PRs the same way you propose code PRs. A rule that no longer serves the team can be retired with a clear audit trail.

Real‑world signals

We built SAA Guidance after speaking with teams who had “linter fatigue”—according to a 2023 JetBrains survey, 63% of developers say their linter configuration doesn’t reflect the team’s actual standards. By moving to an agreement‑first model, early adopters report a 40% reduction in style‑related code‑review comments and a measurable decrease in CI failures caused by inconsistent rules.

The developer experience

Sapior’s VS Code extension and JetBrains plugin surface agreement violations as you type, with a note explaining the team’s rationale. No more cryptic squiggles that make you question your life choices. In‑editor quick fixes let you suppress a rule with a comment that references the exception ticket—keeping the agreement intact while acknowledging reality.

Getting started

SAA Guidance is available today as part of Sapior’s Pro plan. If your team is tired of fighting the linter, open a terminal and run:

npx sapior init --policy

Then open a pull request on your `saa.policy` file and invite the team to discuss. In our experience, the first policy review meeting replaces ten rounds of code‑review nitpicking.

SAA Guidance doesn’t ask you to change your tools. It asks you to change the conversation around code quality—from “the linter says no” to “our agreement says this matters.”

SAA Guidance: Align Static Analysis with Team Agreements | Sapior