green-code-initiative / ecoCode-csharp

Reduce the environmental footprint of your C# software programs

Home Page:https://ecocode.io

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

EcoCode on NuGet EcoCode on NuGet

EcoCode-C#

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.

License: GPL v3 Contributor Covenant

🚀 Getting Started

There are several ways you can use the ecoCode analyzers in your .Net projects:

  1. As a NuGet package : https://www.nuget.org/packages/EcoCode/.
  2. As a Visual Studio extension : https://marketplace.visualstudio.com/items?itemName=greencodeinitiative.ecoCode
  3. Coming soon : as a VS Code extension.
  4. Coming soon : as a .Net CLI Tool to scan existing code bases.
  5. Coming soon : a documentation on how to set up SonarScanner for .Net and display the EcoCode warnings in SonarQube.

🧩 Compatibility

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.

🌿 EcoCode Rules

Id Description Severity 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 ⚠️ ✔️
EC91 Use Where before OrderBy ⚠️ ✔️
EC92 Use Length to test empty strings ⚠️ ✔️
EC93 Return Task directly ℹ️ ✔️

🌿 Roslyn Rules

This plugin customizes the severity of certain Roslyn rules.

Id Description Old Severity New Severity Code fix
CA1825 Avoid zero-length array allocations ℹ️ ⚠️ ✔️
CA1827 Do not use Count()/LongCount() when Any() can be used ℹ️ ⚠️ ✔️

🤝 Contribution

See contribution on the central ecoCode repository.

🤓 Main contributors

See main contributors on the central ecoCode repository.

About

Reduce the environmental footprint of your C# software programs

https://ecocode.io

License:GNU General Public License v3.0


Languages

Language:C# 85.9%Language:PowerShell 14.1%