Analyzing Code at BNB

How Brand New Box analyzes our repositories.

As previously discussed on the Brand New Blog, we maintain about half a million lines of code spread across dozens of repositories. That number is only growing over time as we build new things for the teams we work with. As our projects have grown, BNB has standardized on a number of technologies and ideas. We'll implement those standards on all projects going forward, but we have a long tail of projects to go back and update with the new standards.

Having these standards for every project means that we can onboard developers to a new project quickly because they're already familiar with the whole technology and development stack that is used by all projects at BNB.

So we started building a new internal tool called VIA, Very Integrated Analysis.

VIA overview
We get an at-a-glance view of which projects need standardized.

VIA works on a the idea of checks. Each standard that we have we now implement as a check so we can see how up to date our fleet of repositories is.

The idea of static analysis has been a great fit for us as we strive to incorporate more and more information about our projects into our repositories, an idea called infrastructure as code. When we implement those infrastructure as code pieces we can then use VIA to scan for them in all of our repositories!

VIA overview
One case where we really want the green bubbles!

The types of things we're already scanning for in our repositories are:

  • Utility gems like StandardRB.
  • Are our SSL certificates expiring in the next 30 days?
  • Checking to see if our testing infrastructure is set up.

These checks are allowing us to see the status on each of our codebases that we weren't able to see before without opening up every repository. For example, we can now say exactly which ones of our projects haven't been updated to Rails 6, saving us an immeasurable amount of time of going repository to repository to check the status.

We'll be continuing to develop the usability and the types of things we can scan for in VIA. If you think it's a tool that could help you out, let us know.