Page MenuHomePhabricator

Update Code Conventions for Java and Scala
Open, MediumPublic

Description

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

Event Timeline