• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

haisi / error-prone-support / 31970534687
100%

Build:
DEFAULT BRANCH: main
Ran 16 Aug 2026 08:34PM UTC
Jobs 1
Files 13
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

16 Aug 2026 08:26PM UTC coverage: 100.0%. First build
31970534687

push

github

haisi
fix: cache config on VisitorState.context; make consumer-example truly standalone

Second independent code-review + QA round, targeting the constructor-
injection removal specifically since it was the highest-risk recent
change:

- Switched ForbiddenApiMatcher memoization from a plain instance field
  to VisitorState.context-scoped caching (context.get/put keyed by
  class). Context is javac/Error Prone's own per-compilation DI
  container, so this is correct regardless of whether a build tool
  ever reuses a discovered checker instance across compilations with
  different flags - an assumption the instance field couldn't actually
  guarantee on its own, even though it held for the standard
  ServiceLoader-based loading path the reviewer traced.
- examples/consumer-example had only ever been built from inside this
  repo, silently inheriting the parent's ancestor .mvn/jvm.config
  (Maven walks up from cwd for this file regardless of reactor
  membership) - so the earlier "validated end-to-end" claim was real
  but incomplete. Proved by building a copy from a directory with no
  ancestor .mvn: fails with IllegalAccessError before Error Prone even
  runs. Fixed by giving the example its own .mvn/jvm.config, then
  re-validated the pass and fail paths from a genuinely isolated
  directory.
- Documented (not a bug, confirmed via javap against the real jar):
  repeated -XepOpt:ForbiddenApi:Signatures= flag occurrences don't
  merge - ErrorProneFlags is a plain HashMap keyed by flag name, so a
  second occurrence silently replaces the first. Multiple files need
  one comma-joined Signatures= value. Clarified in the README.
- Confirmed solid, no code changes needed: the void.class fix's "no
  reachable null-owner via the other 3 matchers" theory, and the
  reverse-iteration duplicate-precedence fix for 3+ overlapping
  signatures - both survived adversarial probing from both agents.

Adds 36 new regression tests under bugpatterns/qa2/ from this round.
130 te... (continued)

95 of 95 branches covered (100.0%)

Branch coverage included in aggregate %.

253 of 253 relevant lines covered (100.0%)

4.97 hits per line

Jobs
ID Job ID Ran Files Coverage
1 31970534687.1 16 Aug 2026 08:34PM UTC 13
100.0
GitHub Action Run
Source Files on build 31970534687
  • Tree
  • List 13
  • Changed 0
  • Source Changed 0
  • Coverage Changed 0
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Repo
  • Github Actions Build #31970534687
  • ab143e85 on github
  • Next Build on main (#31971320105)
  • Delete
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc