StyleChecker is yet another code style checker and refactoring tool like FxCopAnalyzers, StyleCop Analyzers, SonarLint, Roslynator, and so on. It uses the .NET Compiler Platform ("Roslyn") to analyze the C# source code of .NET Core projects and outputs diagnostics of a rule violation, and when running with Visual Studio it provides code fixes as much as possible. Note that StyleChecker contains only supplemental or niche analyzers, so it is intended to be used together with other Roslyn analyzers.

Get started

StyleChecker is available as the NuGet-logo NuGet package.

Install StyleChecker to your project with Visual Studio

  1. Open Package Manager Console. (Open your project with Visual Studio, and select Tools ➜ NuGet Package Manager ➜ Package Manager Console.)
  2. Enter the command Install-Package StyleChecker in the Package Manager Console.
  3. Set all to the PrivateAssets property. (Open Solution Explorer and select your project ➜ Dependencies ➜ NuGet ➜ Click StyleChecker with a right button to open StyleChecker Package Properties, and then enter all to the PrivateAssets field.)

Install StyleChecker to your project with .NET Core CLI

  1. Enter the command dotnet add package StyleChecker with the console.
  2. Open your project file (.csproj) using a text editor like Visual Studio Code.
  3. Fix the PackageReference element in the project file adding the PrivateAssets attribute with the all value as follows:
<PackageReference Include="StyleChecker" Version="..." PrivateAssets="all" />

List of diagnostics

There are the following categories of the diagnostics analyzers: Cleaning, Document, Naming, Ordering, Refactoring, Settings, Size, and Spacing.

Category: Cleaning


Remove a UTF-8 BOM.


Use an implicitly-typed array creation.


Remove unnecessary using directives.


Remove unused local variables.

Category: Document


A replacement for CS1591 (Missing XML comment for publicly visible type or member), SA1600 (Elements should be documented), and so on. It can be configured so that the entity with the specified attribute can be ignored.


Fix the misplaced text in the Documentation Comments.

Category: Naming


Use T as a type parameter name if the type parameter is single.


Avoid thoughtless names for the identifier of local variables.


Avoid including an underscore character (_) in the identifier of local variables.

Category: Ordering


Avoid post-increment/decrement operators (e.g. i++) if they can be replaced with pre-increment/decrement ones.

Category: Refactoring


Avoid assignment to the parameters passed by value.


Don't discard the return value of some delicate methods like System.IO.Stream.Read(byte[], int, int).


Don't create empty arrays, use System.Array.Empty<T> instead.


Use is null pattern matching instead of == operator.


Avoid invoking ReadByte() method of System.IO.BinaryReader class in incremental for loops.


Use == operator with null instead of is null pattern matching.


Must design a class for inheritance, or else prohibit it.


Declare local variables with one-shot initialization.


Move type parameters from the static class to its methods if possible.


Don't use the conditional operator (?:) where either the second or third operand is a bool literal (true or false), resulting in bool values. It is similar to IDE0057 Conditional expression can be simplified.


Replace the parameter of methods or local functions with a type parameter, if its type is System.Type and every argument for it is a typeof() operator.


Initialize local variables when they are declared.


Avoid using statements for some types that have no resources to dispose of.

Category: Settings


Validate the configuration file StyleChecker.xml.

Category: Size


Avoid a long line. In default, it allows less than 80 columns, but the length can be configured.

Category: Spacing


Regulate spacing after triple slash (Single Line Documentation Comment). It is a replacement for SA1004.


Regulate spacing around a semicolon, especially in for statements. The style for (;;) of an infinite for loop is allowed. Note that this rule is realized with SpaceBeforeSemicolon and NoSpaceAfterSemicolon analyzers, and they are a replacement for SA1002.


See NoSpaceAfterSemicolon.

Customize configuration

Some analyzers can be customized to change their behaviors, placing the configuration file StyleChecker.xml at the project root. The XML Schema Definition file config.v1.xsd of the configuration file and a sample of the configuration file are provided in the directory StyleChecker/StyleChecker/nuget/samples/ of the source tree (or in ~/.nuget/packages/stylechecker/VERSION/samples/ if you installed StyleChecker with the NuGet package). Note that StyleChecker does not use the XML Schema Definition file, but it helps you edit StyleChecker.xml with the text editor that is able to validate XML documents (for example, Visual Studio IDE, Visual Studio Code, and so on).

Create your own StyleChecker.xml file and place it at your project root, and add the AdditionalFiles element to .csproj file in your project as follows:

  <AdditionalFiles Include="StyleChecker.xml" />

Alternatively, with Visual Studio you can set "C# analyzer additional file" to Build Action property (This property can be changed from Solution Explorer ➜ Right Click on the StyleChecker.xml ➜ Properties ➜ Advanced ➜ Build Action).


How to contribute

Please send us Pull Requests or Issues from the GitHub icon GitHub repository.