How Zynex Monitoring Solutions uses Qodana to Manage Code Quality for their .NET Applications – Case Study

Read this post in other languages:

Qodana is a platform that brings all of the inspections from JetBrains IDEs to the CI/CD pipeline, to help manage code quality.

Zynex Monitoring SolutionsToday, we’d like to share the story of the cloud team at Zynex Monitoring Solutions, who have recently adopted Qodana to monitor the quality and security of their patient monitoring platform.

We spoke with Daniel Larson, the software architect for the cloud platform at Zynex Monitoring Solutions.

Hi Daniel! Can you tell us a bit more about yourself and Zynex Monitoring Solutions?

I’ve been a software developer for about 25 years, primarily using Microsoft servers and .NET. I’ve been developing software with teams on Azure for about 10 years now and have shifted from on-premise deployments to the cloud, with a major focus on scalability and global deployments. 

At Zynex Monitoring Solutions, we are developing medical devices that non-invasively monitor patients. Our cloud team is building an interoperability platform that will integrate our devices with care providers and health systems.

Zynex Monitoring Solution - Monitoring session

The cloud-first interoperability platform opens up a whole new realm of possibilities for our software and healthcare organizations. We can integrate with more customers compared to the old models of enterprise software in private data centers, scale systems quickly, and provide custom services quickly depending on our customers needs. 

For building applications at Zynex, which technologies are you using? Are all applications using the same architecture/technology?

For the Zynex Monitoring Solutions cloud services, we’re using .NET running on Linux containers, written mostly in C#. We use the latest production version of .NET, with most of our services using .NET 7. We’re starting to use .NET 8 as well.

Development is done using Visual Studio with ReSharper with some developers using the Rider IDE. We run continuous integration (CI) and deployment primarily using GitHub Actions deploying to our cloud infrastructure. 

Our production workload uses a modern cloud stack running on Kubernetes that hosts our applications and services, combined with NoSQL for data storage, with a mix of cloud-native messaging. We continually look for new cloud technologies to solve our needs, including data science and artificial intelligence (AI). 

How did you learn about Qodana? What got you into trying it out?

The developer team are all fans of JetBrains ReSharper, which helps with suggestions and refactorings while coding. Its code analysis helps with detecting potential code quality issues. So when we looked at code analysis tools and saw that JetBrains was creating a code analysis tool we knew it would be something that could simplify code analysis and improve our code quality while using tools our developers enjoy using. 

We know that using JetBrains tools makes our work better without adding any hassle, and that has proved to be the case with Qodana. We’re using Qodana for all our .NET applications now.

How easy (or hard) was it for you to get started with running Qodana on your applications?

It was super easy, the Qodana Cloud web app made it simple to add to our GitHub workflows. We were able to adopt Qodana as we created our repositories, and we quickly switched to resolving all issues and setting a zero tolerance policy, keeping our code super clean. 

Qodana report for Zynex solution

We typically have Qodana verify our code base in the GitHub Actions workflow, and then address any issues discovered by Qodana in ReSharper or JetBrains Rider. We’re currently not using the Qodana IDE integration, which lets you study Qodana reports directly in the IDE. The reason for that is the Qodana inspections match the inspections that are available in ReSharper and JetBrains Rider, and we can quickly find and fix code issues there.

Are you using any other code quality tools?

We use a mixture of Sonarqube and Qodana. Sonarqube is really great for scanning for known vulnerabilities and keeps track of code complexity. For our overall code scanning we rely primarily on Qodana. It’s really easy to add to our build workflow, and ensures we have high code quality throughout our team. As Qodana adds more features we hope to simplify our code analysis toolset.

We have a mix of junior, mid-level and senior developers, and we hold all our developers to the same professional coding standards. We feel that Qodana helps all our developers write the best possible code regardless of their experience. Qodana helps our junior developers write senior level code, and it helps our senior developers maintain their expected code quality as well. Given the various types of inspections it offers, we’re hoping that Qodana can act as a developer coach in addition to helping maintain the code quality standards in our products.

Is there any advice you can give to teams and developers starting out with adopting Qodana?

Qodana is best used from the start with fresh projects. We recommend using the strictest code analysis rules, integrating into GitHub, and using a fail threshold of `0` so any violations will block the build and give the developer a chance to clean up their code.
We also want to stress the importance of code annotations using JetBrains.Annotations as this will let you annotate the intentions of your code to other developers when writing public libraries, and to tools like ReSharper, JetBrains Rider and Qodana to provide even more relevant code analysis.

Want to try Qodana on your project, with your favorite CI tool? Try Qodana for free!

image description