This is a series on my findings around building open source software online for free. There are many SAAS (Software As A Service) platforms out there and a lot of these are free to use with your open source projects. But not all of these work with C# and .Net. So this series highlights the tools and products out there that work with .Net in different phases of the software development life cycle.
- Build
- Test
- Publish & Deploy
- Documentation
- Metrics <=(We are here)
- Lifecycle Management
Metrics
Cyclomatic Complexity, Coverage and Static Analysis are all processes you should regularly expose your code base to, even as far as every build, if not at least nightly. Here are a few services that offer to give you this insight into your code base.
- Coveralls
- Coverity Scan
- Resharper CLI
- Nemo (SonarQube)
- Nitriq
Coveralls
Coveralls gives you a place to publish your Continuous Coverage results. On each build, for each branch, you can push your coverage results up to Coveralls, and see coverage for each source file, as well as changes in coverage over time in each branch of development. They integrate with various source control to pull in the original source files, including GitHub, which is free to use for public GitHub repositories. They have even released an enterprise version. Coveralls has an open API, so there are many languages that are supported. I took that as a challange, so now they have .Net support as well. Check out my Coveralls.Net (available on NuGet) to get your .Net coverage pushed up to their service.
Coverity Scan
Coverity Scan gives your free (for open source) Static Analysis of your .Net code base. You can run this up to several times a day to analyse your code for memory leaks, releasing resources, and other potential defects, and track these results over time. As of a few days ago their tools are now available on AppVeyor VMs and I have a CoverityPublisher tool you can use to get your results zipped up and submitted to Coverity.
Resharper CLI
Not a service per se, but ReSharper Command Line Tools give you the power of resharper for your build scripts. Since this is available via Chocolatey it is easy to integrate with your build scripts, which I have done for Coveralls.Net. The two main utilities are dupfinder, and inspectcode. Inspect code is able to use your solution’s .DotSettings file, and run your configuration over your code base, the same as ReSharper does, and provide the results as xml. If you look at my usage you will see this is easy to integrate into your build server, and get it to trigger build failures if thresholds are reached, to help maintain the quality and consistency of your code.
Nemo (SonarQube)
SonarQube is a hosted . Nemo is a cloud hosted instance of SonarQube for open source projects (like teamcity.codebetter.com is for TeamCity). This is something I need to investigate further, but the gist of this is an Open Source set of tools to give you a large amount of insight into your code base via static analysis. Using the Nemo tools, you can get this over your Open Source project on GitHub and identify issues and concerns you want to get fixed up. I have had trouble finding guides to get added by if you want to get on it I suggest getting in touch with CloudBees, who seem to be hosting it.
Nitriq
Nitriq is another console app and GUI tool to perform Static Analysis on your .Net applications. This is a free tool. This is a free alternative to a tool like NDepend. Another tool on my list of things to have a play with, integrating this into my build scripts would add value that paying for something like NDepend would add. If you were wanting to start a new SAAS, this is type of dashboarding would be a great one to look into starting. Just make sure it is free for open source projects. (They already exist but don’t support .Net)
Honourable Mention
Code Climate (Ruby, Javascript, PHP) and Codacy (Scala, Javascript, Python, PHP, CSS) are two more analysis tools, But unfortunately do not support .Net.
With Code Analysis out of the way, we only have Lifecycle Management left, but it’s a biggie.