ecoCode is a collective project aiming to reduce environmental footprint of software at the code level. The goal of the project is to provide a list of static code analyzers to highlight code structures that may have a negative ecological impact: energy and resources over-consumption, "fatware", shortening terminals' lifespan, etc.
ecoCode is based on evolving catalogs of good practices, for various technologies.
This set of Roslyn analyzers implements these catalogs as rules for scanning your C# projects.
⚠️ This is still a very early stage project. Any feedback or contribution will be highly appreciated. Please refer to the contribution section.
There are several ways you can use the ecoCode analyzers in your .Net projects:
- As a NuGet package : https://www.nuget.org/packages/EcoCode/.
- As a Visual Studio extension : https://marketplace.visualstudio.com/items?itemName=greencodeinitiative.ecoCode
- Coming soon : as a VS Code extension.
- Coming soon : as a .Net CLI Tool to scan existing code bases.
- Coming soon : a documentation on how to set up SonarScanner for .Net and display the EcoCode warnings in SonarQube.
Both the EcoCode NuGet package and Visual Studio extension target .Net Standard 2.0 and can be used in a wide range of projects. See Microsoft documentation for details about the supported .Net Frameworks in .Net Standard 2.0.
Id | Description | Severity | Enabled | Code fix |
---|---|---|---|---|
EC69 | Don’t call loop invariant functions in loop conditions | ✔️ | ❌ | |
EC72 | Don’t execute SQL queries in loops | ✔️ | ❌ | |
EC75 | Don’t concatenate strings in loops |
✔️ | ❌ | |
EC81 | Specify struct layouts | ✔️ | ✔️ | |
EC82 | Variable can be made constant | ℹ️ | ✔️ | ✔️ |
EC83 | Replace Enum ToString() with nameof | ✔️ | ✔️ | |
EC84 | Avoid async void methods | ✔️ | ✔️ | |
EC85 | Make type sealed | ℹ️ | ✔️ | ✔️ |
EC86 | GC.Collect should not be called |
✔️ | ❌ | |
EC87 | Use collection indexer | ✔️ | ✔️ | |
EC88 | Dispose resource asynchronously | ✔️ | ✔️ |
See contribution on the central ecoCode repository.
See main contributors on the central ecoCode repository.