Lint
dotnet run --project developer-cli -- lint [--backend] [--frontend] [--cli] [--self-contained-system <name>] [--no-build] [--changed-only] --quiet
Use developer-cli exactly as written - do not expand to an absolute worktree path.
--backend- .NET (JetBrains inspectcode)--frontend- React/TypeScript (oxlint)--cli- the developer CLI itself--self-contained-system <name>- narrows backend linting to one SCS (e.g.account,main)--no-build- skip the rebuild step (faster after a recent build)--changed-only- lint only.csfiles changed againstorigin/main(much faster; see guidance below)
No arguments lints the whole solution. Every finding fails CI regardless of severity - fix all of them.
After build succeeds, run format, lint, test in parallel with --no-build. Backend lint is slow - run last. Frontend lint often needs code rewrites - run after each bigger change.
When to use --changed-only
Inspectcode has cross-file rules ("unused public method", "member can be private", flow analysis across method calls). --changed-only only inspects the listed files - it doesn't catch issues in untouched files that became invalid because of edits elsewhere.
- Routine work: use
--changed-only. Most lint findings are local (style, naming, hints) and the saving is large (~4m → ~30s). - Larger changes that affect other files (refactoring a public API, deleting a method's only caller, changing a widely-used type): omit
--changed-onlyand lint the full solution.
CI always lints the full solution, so anything missed by a local --changed-only run gets caught before merge.
Examples
dotnet run --project developer-cli -- lint --quiet # everything (full solution)
dotnet run --project developer-cli -- lint --backend --changed-only --quiet # backend, changed files only (recommended for routine work)
dotnet run --project developer-cli -- lint --frontend --quiet # frontend
dotnet run --project developer-cli -- lint --backend --self-contained-system main --quiet # one SCS, full
Always pass --quiet
Verbose output goes to a log file. On success the CLI prints a single line; on failure it prints where to find the findings and exits 1.