As a developer I want to have clear coding conventions to have consistent and high quality code. I also want tools (linter, static analyzers, ...) to help me follow those guidelines.
Minimal conventions already exist for Java, put in place by the Discovery team a long time ago and not significantly updated since 2015. They mostly provide a checkstyle configuration, stored on wiki (and thus not easily used as-is).
The Search Platform team has done significant work to improve tooling and conventions on their Java projects. This was done in the form of a Maven parent pom, which is used for all Search Platform Java projects. See the README in that project for an introduction on the various tools and concepts.
AC:
- Java guidelines are good enough
- We have a single set of rules, they are helping and not causing undue pain
- Overview of the different guidelines and tooling implemented at the project level
- Decide on a single set of guidelines for Scala (by merging existing project level guidelines)
- Implement tooling to enforce Scala rules at the parent pom level
- Migrating to those new rules should NOT break the build, but should give feedback on violations
- Document the migration plan
- Out of scope: mitigating all projects to the new guidelines