Skip to content
Clean-code Roslyn-based analyzer for C# 6
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.

Arnolyzer Analyzers


Arnolyzer is a Roslyn-based C# code analyzer that aims to provide a set of rules that encourage modern, functional-orientated, coding standards in C#. Pure functions; no inheritance; no global state; adherence to SOLID principles; immutable variables; and short, concise sections of code.

Current Release - 1.1.0

The current release of Arnolyzer is 1.1.0, which is available as a nuget package.

That release included the following: Modification of the analyzer names to include a code for each. This then linked in with the documentation pages.

The aim is to improve the discoverability of the analyzers for search engines, with the hope that clicking on an error in Visual Studio will take the developer to the documentation for that analyzer.

For more details of that release, previous releases, how to install Arnolyzer and documentation for the analyzers in the current release, please refer to the Arnolyzer website.

Current state of development

Currently, version 1.2.0 is in development. This is subject to change without warning though, should eg an urgent bug fix release be needed in the meantime.

Last code commit: 03 Oct 2016.

The following documentation is a summary of the Arnolyzer project (analyzers so far implemented, and what's planned), as of the last code commit. Note, this may be different to what's in the 1.1.0 release, as the code base will likely contain unreleased changes. Please refer to the Arnolyzer website for details of what's in the current release.


For detailed instructions on how to install and configure the Arnolyzer analyzers, please refer to the installation guide.


For details on how to contribute to the Analyzer Analyzers project, please refer to Contributing to this project.

Analyzer Categories

The Arnolyzer analyzers are grouped by category. For details on each category, the thinking behind why following the rules of each category is a good idea, and the analyzers that enforce these rules, see:


What's implemented

Thus far, the analyzers implemented are:

Pure-Function Analyzers

Immutability Analyzers

Global State Analyzers

Encapsulation Analyzers

Liskov Substitution Principle Analyzers

Single Responsibilty Analyzers

For details of each of these, please follow the respective links.

What's planned

The following analyzers are planned for future releases of Arnolyzer, but haven't yet been implemented:

Pure-Function Analyzers

Single Responsibilty Analyzers

In addition to this list of planned analyzers, there are two key areas of further work planned:

  1. There are situations where the code needs to violate some of these rules and so a means to suppress the rule is needed. This will be achieved via attributes. So far, very few rules take advantage of this.
  2. The are situations where simple code fixes can be offered to fix violations. This area of work hasn't been started at all, yet.
You can’t perform that action at this time.