Just a quick note on the JVM ecosystem since I've been wrestling with getting several different technologies to work together: It's a mess really.
The specific setup in this case is a mostly Java based project, sprinkled with some Kotlin code (which I only expect to grow in the future), using Maven as the build system. Added to that some Kotlin annotations (in lieu of using Kotlin in the first place).
Todays (and yesterdays) adventure was trying to get the Error Prone checker integrated with the existing system, which proved quite impossible, due to the fact that it's using a modified compiler(!) which conflicts with the use of Lombok annotation processing.
There are workarounds in the sense that Lombok can also be used to produce
processed Java files (instead of byte code generation), however it seems like
that process is less capable than the IDEA / internal processing and would have
me remove a lot of
val instances that didn't get their type inferred
properly, making it an arduous process.
Summing this up, the fact that these tools integrate on different levels of the "stack", while also making tinkering with it relatively hard due to byte code generation, complicates this endeavour greatly. In the end I resolved to drop the Error Prone integration in favour of the much easier to setup SonarQube platform. I also hope that annotation processing for Lombok will improve such that we don't need workarounds in case of "invisible" getters anymore, for example.