openauditB85out of 100: openaudit's audit of itself

Report and scoring

Every run produces one report, in whichever formats you ask for: -f terminal,json,sarif,markdown,html.

  • Score and grade. Each area scores 0–100 from the severity of its findings; info findings never lower a score. The overall score is the average of the areas that were actually examined. Skipped auditors are listed with the reason, so a clean result never hides a check that didn't run.
  • Interactive HTML. One self-contained file with no external requests, so it opens offline and can be attached to a CI run or an email. It has an overview, a tab per area with filters and search, an auditors tab, and OWASP Top 10 / CWE Top 25 groupings. It works with JavaScript off, prints cleanly, and lets readers download the same audit as JSON, SARIF, Markdown or CSV. Shared reports name the project folder, never your local path.
  • Stable fingerprints. Each finding has a fingerprint that baselines, suppressions and compare_reports rely on.
  • Diff mode. --diff origin/main keeps only findings in files changed since that ref, for pull requests.

See one: openaudit's audit of its own repository, rebuilt on every push.

Scoring

Each finding adds a penalty by severity, and an area's score decays as the penalty grows, so the first serious finding costs the most. Info findings never lower a score. The overall score is the average of the areas that were examined. These examples are computed by openaudit's own scoring code when the site is built:

Findings in one areaScoreGrade
1 Critical50D
1 High73C
1 Medium89B
1 Low98A
1 Info100A
10 Lows80B
3 Highs47F

Grades

  1. A90–100
  2. B80–89
  3. C70–79
  4. D50–69
  5. F0–49

Severity

Severity reflects real impact. Each level has its own colour and glyph in the report, so colour is never the only signal.

Critical
Directly exploitable or data-exposing issues.
High
Serious weaknesses.
Medium
Real problems that need a condition.
Low
Hardening and hygiene.
Info
Inventory that never lowers a score.

What it audits

Every finding belongs to one of ten areas, and each area gets its own score and grade.

AreaWhat openaudit looks for
SecurityLeaked secrets (also in git history), injection, XSS and other risky code, weak crypto, disabled TLS or JWT checks, security headers, TLS, DNS and email spoofing protection, exposed files and APIs, container, IaC and cloud misconfiguration, risky mobile manifests, and optional dynamic scanning
AccessibilityWCAG checks in JSX, Vue, Svelte, HTML and CSS; axe-core and pa11y on rendered pages; Android layouts; keyboard and screen-reader journeys walked by an agent
PerformancePage weight, caching, compression, Core Web Vitals, Lighthouse, image and bundle size, container image size, mobile app size and native libraries
SEOTitles and descriptions, crawlability, canonical URLs, sitemaps, structured data, broken links
PrivacyTrackers and cookies set before consent, analytics, ad and session-replay SDKs, personal data written to logs, mobile permissions
Best practicesRepository hygiene (README, licence, security policy, CI, lockfiles), Dockerfile and IaC lint, GitHub Actions hardening
ReliabilityType errors, broken pages and redirect chains, missing Kubernetes probes and limits
MaintainabilityLinting, strict typing settings, duplication, dead code, deep nesting and oversized files
Supply chainKnown-vulnerable dependencies, unpinned versions and actions, OpenSSF Scorecard, licences, SBOMs, container image CVEs
ComplianceLicence obligations, cookie consent, OWASP Top 10 and CWE Top 25 mapping, CIS cloud benchmarks