Skip to content

Latest commit

 

History

History
90 lines (60 loc) · 6.14 KB

README.md

File metadata and controls

90 lines (60 loc) · 6.14 KB

Arnolyzer Analyzers

Introduction

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.

Installation

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

Contributing

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:

Analyzers

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.