-
Notifications
You must be signed in to change notification settings - Fork 7.8k
Closed as not planned
Labels
kind/featureCategorizes a PR related to a new featureCategorizes a PR related to a new feature
Description
Add rewrite support for errorprone.refasterrules
I’d like to propose integrating Google’s Error Prone and its Picnic extension (demonstrated in Automating Away Bugs with Error Prone | PlatformCon 2023) to enable automated bug fixes via rewrite rules. This would complement Checkstyle’s static analysis capabilities by addressing semantic bugs rather than stylistic issues.
Motivation
Error Prone’s refaster/rewrite rules can automatically:
- Fix common bug patterns (e.g.,
String.equals()misuse) - Modernize code (e.g., JDK migration helpers)
- Enforce best practices (e.g., null-check improvements)
Real-world adoptions show tangible benefits:
- Issue #17487: Introduce
Rewritecovering S1144: Unused "private" methods should be removed checkstyle/checkstyle#17545 - Fix #5953: [java] PoC: Add
rewritesupport forerrorprone.refasterrulespmd/pmd#5956 - Introduce
Rewrite & PMDcovering S1144: Unused "private" methods should be removed opensearch-project/OpenSearch#18791 - PoC: Add
rewritesupport forerrorprone.refasterrulesdiffplug/spotless#2576 - PoC: Add
rewritesupport forerrorprone.refasterrulesapache/kafka#20219
Proposal
- Add support for
errorprone.refasterrules-based rewrites - Implement with opt-in adoption (no breaking changes)
- Include suppression mechanisms for API constraints
Discussion Points
- Need consensus on:
- Scope of auto-fixes
- Preferred suppression strategy
- Integration approach
Next Steps
I’m happy to:
- Prepare a PoC demonstrating the value
- Collaborate on implementation strategy
- Address any concerns about compatibility
Discussion
No response
Motivation
more time on development then fixing or discussing bugs or conventions
Details
- [GR-68578] Add
rewritesupport forerrorprone.refasterrulesoracle/graal#11898 - OPE-930: Add
rewritesupport forerrorprone.refasterrulesSonarSource/sonarqube#3389
Thanks for considering.
Metadata
Metadata
Assignees
Labels
kind/featureCategorizes a PR related to a new featureCategorizes a PR related to a new feature