3 Best Code Quality Tools For Your Open Source Project
Tags: opensource, devops, codenewbie, beginners
Published: 2023-11-25 13:19:10

Open source projects demand the highest code quality standards.

The better your project’s code quality, the easier it is for new developers to get on board, and make valuable contributions.

In this article, I’ll share 3 tools we use at [Flipt](https://github.com/flipt-io/flipt) to maintain high code quality and ship features reliably.

Let’s go! 🚀

---

## TL;DR

- [Tool #1: CodeCov](#tool--1--codecov)
- [Tool #2: Dagger](#tool--2--dagger)
- [Tool #3: Uffizzi](#tool--3--uffizzi)

---

## Tool #1: [CodeCov](https://about.codecov.io/)


![CodeCov](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/mv5vexsyfqe45o4446st.png)


Codecov is a code coverage tool that integrates nicely with GitHub.  

It aggregates test coverage from our CI process showing us where we may be missing tests in our codebase.

At Flipt, we use CodeCov to monitor coverage at 2 levels:

1. Pull request level coverage
2. Project-level coverage

Currently, we only track unit test coverage for us — and we aim to keep it > 70%. 
In the future, with Go’s [integration test coverage support](https://go.dev/blog/integration-test-coverage), we will use CodeCov to collect and report that data as well.

Lastly,  CodeCov is easy to set up and enables you to maintain a consistent level of coverage as the project grows.

## Tool #2: [Dagger](https://dagger.io/)

There are two ways to ship code:
1. Push and Pray
2. Test, Test, Test, Test

For long-term sustainability of your project, I recommend option 2. 

However,  setting up checks at each stage of your deployments — that too across environments can quickly become a hassle.  

And that’s where Dagger comes in.


![Dagger](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/17juawh5v77f7gqrxlqc.png)


It lets you streamline your deployment workflow (both locally and on CI). And only taking a fraction of the time you normally would have spent.

For Flipt, we use Dagger to set up integration testing scenarios. These scenarios could be quite complex — and would be a nightmare to configure using YAML or other traditional CI configuration languages.

Dagger tests run the same on our local machines as well as CI. 
How? It’s because Dagger is also built atop Docker.

Contributors can quickly iterate when adding new tests. 
Instead of having to push each change to GitHub and hoping our job is configured correctly.

You can read more about our ❤️ story with Dagger in this [blog post](https://www.flipt.io/blog/dagger-a-love-story).

## Tool #3: [Uffizzi](https://www.uffizzi.com/)

![Uffizzi](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vbqwsr5jh5t8dxss4pij.png)

Uffizzi is a platform for platform engineers.

It has brought down time to build internal development platforms from months to minutes.

At Flipt, we use Uffizzi to stand up ephemeral [preview environments](https://www.uffizzi.com/preview-environments-guide) on every pull request. 

This has been a game-changer.

Even before the pull request is merged, we can:

- Share progress work with a quick-to-create URL 
- Share screenshots of UI changes with our users
- Share documentation updates

It’s one of the finest on-demand ephemeral environment providers out there.

---

## Wrapping Up

That’s it!

Hope you found this list useful.

Leave a ⭐ to support our work at [Flipt](https://github.com/flipt-io/flipt).

If you liked this post, follow us for more of these 🙂