Repository navigation
grounds 0.0.7
Call resolution and precision release. Still experimental. The binary is for Apple Silicon, macOS 11+; on other platforms, build from source or use the Nix flake.
curl -fsSL https://github.com/mihaidaniel34/grounds/releases/download/v0.0.7/grounds-0.0.7-aarch64-apple-darwin.tar.gz | tar -xz
sudo mv grounds-0.0.7-aarch64-apple-darwin/grounds /usr/local/bin/Not notarized: after a browser download, xattr -d com.apple.quarantine grounds.
More calls resolved
AssertJ 3.27's generic assertThat overloads made even assertThat(String) look ambiguous, so nothing chained after it (.isEqualTo(..), ...) was resolved, and rules that need the target stayed silent. An exact overload now beats generic ones, but only when that is provable: anything that would need javac's full type inference stays unknown, as before.
- Calls resolved: spring-ai 76% → 83%, langchain4j 85% → 91%, camunda 83% → 88%, spring-modulith 82% → 87%, rewrite 94% → 98%, spring-petclinic 96% → 99.8%.
- Checked against javac on 8,000 generated overload sets: fewer wrong answers than 0.0.6 (107 → 95, all pre-existing), none new. Five review rounds by gpt-6-astra.
grounds type-stats --causesexplains unresolved calls: a missing jar (fixed bygrounds classpath), an unknown receiver, or a gap in grounds.
Error findings checked
All 133 error-level findings on the 21-project corpus were checked against the code: 69 real bugs, 58 deliberate (nearly all in test code), 5 false positives. Fixed:
rounding-of-integer-division:Math.round((double) count)is no longer reported unless an integer division is inside.weak-tls-protocol:SSLContext.getInstance("SSL")is not reported; it negotiates TLS 1.2/1.3.ignored-return-value: a discarded call that validates its argument (now.atZone(ZoneId.of(id))) is not reported, and neither is AssertJ navigation that asserts (singleElement()).null-passed-to-nonnull-parameter: not reported insideassertThrows/assertThatThrownByexecutables ortry { ...; fail(); } catch.assertj-assertion-without-check:assertThat(condition);now says to add.isTrue().
Test code
Security rules and optional-get-without-check no longer run on test sources: test servers use self-signed certificates and weak ciphers on purpose, and an empty Optional in a test just fails it. About 320 fewer findings on the corpus. Bug and testing rules still run on tests.