We want to automate as much as possible. Here are some tools we use:
- Formatting - we automatically format using a multi-language formatter, run the formatter using fix-formatting.sh, and verify it in CI (see here).
- We use 3 tools to handle BUILD files (see here):
- buildifier - For formatting BUILD files
- buildozer - For doing command-line operations on these files (e.g add dependency to target).
- unused_deps - For finding unneeded dependencies in java_library rules.
- Precommit checks: pre-commit.sh
- CI (using CircleCI) to enforce formatting, pre-commit checks, compile and test everything (see here)
- Dependency management: see deps.
- Reviewer - a multi-repo code review tool, that works with any combination of on-prem, GitHub, GitLab, Bitbucket, Google CSR etc.