ReliabilityIQ is a repository risk-scanning toolkit that identifies portability and maintainability issues before cross-cloud deployment.
It combines static analysis, repository analytics, and incident correlation to surface high-signal findings in a single scan pipeline.
ReliabilityIQ targets codebases that move across cloud platforms (initial focus: Microsoft EV2 and Azure DevOps ecosystems), across languages and artifacts, and highlights blockers that make cloud portability or reliable operations harder.
Primary focus areas:
- Cross-cloud portability blockers (hardcoded endpoints, IPs, paths, region/resource identifiers, etc.).
- Magic-string opportunity detection (high-signal ranking, not just raw pattern matching).
- Git churn vs. staleness hotspots with noise suppression for generated/readme/IDE artifacts.
- Incident-to-module/service association for operational risk concentration.
- Configurable/rule-driven scanning with optional plugin extension points.
- Web/table + heatmap visualization from persisted scan results.
- Auto-fixing code.
- Full behavioral/runtime analysis (profiling, tracing).
- Zero-false-positive detection.
- Universal build-system and platform coverage in the first release.
ReliabilityIQ is planned as a multi-component .NET solution:
ReliabilityIQ.Cli: orchestrates scans, runs analyzers, writes results, and emits report summaries.ReliabilityIQ.Core: rule engine, finding model, classification, scoring, persistence abstraction.ReliabilityIQ.Analyzers.*: language + artifact + history/anomaly analyzers.ReliabilityIQ.Web: ASP.NET web UI over the same SQLite result store.
The scan pipeline:
- Load config
- Discover repository and classify files (source, config, docs, generated, vendor, IDE, etc.)
- Run analyzers
- Normalize + score findings with suppressions and allowlists
- Persist findings/results into SQLite
- Emit CLI summary and support web/dashboard consumption
- CLI:
System.CommandLine - Source parsing: Roslyn (C#), Tree-sitter via P/Invoke (C++/Python/PowerShell/Rust), plus JSON/YAML parsers where needed
- Git mining:
LibGit2Sharp - Persistence:
Microsoft.Data.Sqlite+Dapper - Web UI stack: ASP.NET, D3.js, Chart.js, DataTables (CDN-first bootstrap approach)
- Rule/config format: YAML with schema validation
- Filterable findings list
- Repo/module/file heatmap for hotspot analysis
- Configurable severity/priority and ranking
- Incident and changelog context for each relevant finding
Planned rule/config structure:
.reliabilityiq/config.yaml.reliabilityiq/rules/{portability, magic-strings, churn, incidents, deploy-ev2, deploy-ado}.yaml.reliabilityiq/rules/custom/*.yaml.reliabilityiq/allowlists/*.yaml
Precedence model:
- Built-in defaults
- Repo rules
- Custom overrides
- CLI flags (highest priority)
Also planned:
- Rule validation command (
reliabilityiq rules validate) - Inline and file-level suppressions for noise reduction
- Strong defaults for generated/vendor/IDE ignores with opt-in overrides
This repository’s README is now aligned to the design intent in Docs/designdoc.md; implementation status may vary by branch and milestone.
The CLI is a System.CommandLine app under ReliabilityIQ.Cli.
dotnet run --project ReliabilityIQ.Cli -- <command> [options]- If you have a built binary, use the executable in place of
dotnet run.
--repo(required): repository path to scan--db: SQLite file path (default:<repo-root>/reliabilityiq-results.db)--suppressions: suppression file path (default:<repo-root>/reliabilityiq.suppressions.yaml)--fail-on: fail command with exit code 1 when findings at or above severity are present (error|warning|info)
--repo(required): repository path to scan--db: SQLite file path (default:<repo-root>/reliabilityiq-results.db)--min-occurrences: minimum candidate occurrence count--top: max number of ranked candidates to persist--config: optional magic strings config (default:<repo-root>/reliabilityiq.magicstrings.yaml)
--repo(required): repository path to scan--db: SQLite file path (default:<repo-root>/reliabilityiq-results.db)--since: Git lookback window (for example90d,180d,365d)--service-map: service boundary mapping file (format:ServiceName=glob)
--repo(required): repository path to scan--db: SQLite file path (default:<repo-root>/reliabilityiq-results.db)--ev2-path-markers: semicolon-delimited EV2 markers override--ado-path-markers: semicolon-delimited ADO markers override
--repo(required): repository path to scan--db: SQLite file path (default:<repo-root>/reliabilityiq-results.db)
--repo(required): repository path to scan--db: SQLite file path (default:<repo-root>/reliabilityiq-results.db)
--repo(required): repository path to scan--db: SQLite file path (default:<repo-root>/reliabilityiq-results.db)
--repo(required): repository path to scan--db: SQLite file path (default:<repo-root>/reliabilityiq-results.db)--fail-on: fail onerror|warning|infofor portability findings--suppressions: suppression file path (default:<repo-root>/reliabilityiq.suppressions.yaml)--min-occurrences: minimum magic-string candidate occurrences--top: max ranked magic-string candidates to persist--config: optional magic strings config (default:<repo-root>/reliabilityiq.magicstrings.yaml)--since: churn lookback window (for example90d,180d,365d)--service-map: service boundary mapping file (format:ServiceName=glob)--ev2-path-markers: semicolon-delimited EV2 markers override--ado-path-markers: semicolon-delimited ADO markers override
--config: optional path to repo root or.reliabilityiqdirectory
--config: optional path to repo root or.reliabilityiqdirectory--enabled-only: show only enabled rules--category: filter by category (portability,magic-strings,churn,deploy-ev2,deploy-ado,config-drift,dependencies,incidents,custom)
--repo: initialize rule/config templates in repo root (default: current directory)
--repo: initialize ReliabilityIQ configuration/templates (default: current directory)
--db(required): SQLite database file path--port: Kestrel HTTP port (default:5100)--no-browser: do not auto-open browser
# run portability scan on current repo
dotnet run --project ReliabilityIQ.Cli -- scan portability --repo . --db ./reliabilityiq-results.db
# run all scans with custom churn lookback and fail-on threshold
dotnet run --project ReliabilityIQ.Cli -- scan all \
--repo . \
--since 180d \
--fail-on warning \
--top 250 \
--db ./reliabilityiq-results.db
# run only magic strings scan and persist top 100 candidates
dotnet run --project ReliabilityIQ.Cli -- scan magic-strings --repo . --top 100 --min-occurrences 3
# validate config in a repo
dotnet run --project ReliabilityIQ.Cli -- rules validate --config .
# start web server against a scan database
dotnet run --project ReliabilityIQ.Cli -- server start --db ./reliabilityiq-results.db --port 5200
# initialize .reliabilityiq templates
dotnet run --project ReliabilityIQ.Cli -- init --repo .