Exago - measure the quality of your Go project

We’re very happy to launch exago.io, a free service to measure your Go project quality.

Feedback welcome!



Just one thing I don’t understand: There are two absolute numbers - the number of third-party libraries, and the number of tests - included in the rating. Shouldn’t these be related to the project’s size?

(And even if they were, I doubt that such numbers are a reliable indicator of quality. For example, a project that imports many small, stable libraries may do just fine, while another project that imports one large and buggy library may face a host of issues. Same with tests - a large number of tests that test the wrong cases, test no edge cases, have bugs, etc. does not contribute to quality.)

1 Like

All metrics are factored with the amount of lines of code, so that bigger projects can also get into high ranks. Actually the bigger the project the more we try to be permissive.
The amount of tests is not factored in the calculation of the rank, the dot only shows two colors: green or red, depending if the tests ran successfully or not.

We spent months tuning the algorithms to make sure that Exago is fair with every project size. Evaluating a project’s quality is tricky and metrics are not everything, but there are a few indicators that can give us hints.

  1. If the README is missing or the code is not gofmt’d it’s usually a bad sign
  2. Having many third parties is a liability but it’s important to have good ones: preferably higher rank & maintained (we show all third parties, not only the direct ones - also if you click on the detailed view you will see their rank)
  3. No test is a bad sign but high code coverage is not necessarily a must, what’s important is testing what really matters, not reaching 99%.
  4. Each linter is not equal and has a different weight

Exago tries its best to show you relevant KPIs but ultimately it’s up to you to make your own opinion.

1 Like

In Safari, attempting to expand the third party list causes a Javascript error and stops any other Javascript from working on the page thereafter.

1 Like

Thanks for reporting @calmh!

1 Like

Thanks for pointing this out, I was not able to deduce this from the information available in the UI.

1 Like

@calmh We fixed the issue yesterday, thanks again for reporting!

To remedy about that we plan to write a blog post to describe a bit more how it works, what motivated some of our decisions, and a sneak peek under the hood.

A quick note: we’re working on implementing branches and Go versions (including 1.8beta1).

This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.