/awesome-analyzers

A curated list of .NET Compiler Platform ("Roslyn") diagnostic analyzers and code fixes. Everyone can contribute here!

awesome-analyzers

A curated list of .NET Compiler Platform ("Roslyn") diagnostic analyzers, code fixes, and other related resources. Everyone can contribute here!

Getting Started

Resources for creating your first analyzer:

Popular Analyzers

Analyzer collections

  • roslyn-analyzers - Official Roslyn diagnostic analyzers developed and maintained by the Roslyn team. Contains:
    • AsyncPackage
    • Desktop.Analyzers
    • MetaCompilation
    • Microsoft.AnalyzerPowerPack
    • Microsoft.CodeAnalysis.Analyzers
    • Microsoft.Net.RoslynDiagnostics
    • System.Runtime.Analyzers
    • System.Runtime.InteropServices.Analyzers
  • StyleCopAnalyzers - An implementation of StyleCop rules using the .NET Compiler Platform
  • Wintellect.Analyzers - .NET Compiler Platform ("Roslyn") diagnostic analyzers and code fixes written by Wintellect
  • sonarlint-vs - SonarLint is a Visual Studio 2015 extension that provides on-the-fly feedback to developers on new bugs and quality issues injected into C# code.
  • Roslynator - A collection of 500+ analyzers, refactorings and fixes for C#, powered by Roslyn.
  • ErrorProne.NET - ErrorProne.NET is a set of Roslyn-based analyzers that will help you to write correct code. The idea is similar to Google's error-prone but focusing on correctness (and, maybe, performance) of C# programs.
  • Gu.Analyzers - Roslyn analyzers and fixes.
  • Meziantou.Analyzer - A Roslyn analyzer to enforce some good practices in C#.
  • SharpSource - A collection of analyzers that aim to surface defects at compile that would otherwise go unnoticed until it's too late.
  • Blowin.Required - Implementation of proposal 'Required Properties' dotnet/csharplang#3630.
  • BlowinCleanCode - BlowinCleanCode is a Roslyn-based C# code analyzer that aims to provide a set of rules that helps to simplify code and make it cleaner.
  • Selectorlyzer.Analyzers - Selectorlyzer.Analyzers is a highly customizable Roslyn Analyzer designed to empower developers with the ability to create project-specific analyzers using a CSS selector-like syntax.
  • Menees.Analyzers - Roslyn-based C# code analyzers. Various analyzers ported from StyleCop+.

Security

  • SecurityCodeScan - Vulnerability Patterns Detector for C# and VB.NET.
  • Puma Scan - Security analyzer that provides real time, continuous source code analysis for C# applications.

ASP.NET Core and web

  • AngleSharp - AngleSharp is the ultimate angle brackets parser library. It parses HTML5, CSS3, and XML to construct a DOM based on the official W3C specification.
  • AspNetCoreAnalyzers - Analyzers for Microsoft.AspNetCore.

Async/multithreading

  • AsyncFixer - Advanced Async/Await Diagnostics and CodeFixes for C#.
  • SmartAnalyzers.MultithreadingAnalyzer - A set of Roslyn analyzers related to multithreading
  • Asyncify - Asyncify-CSharp is an analyzer and codefix that allows you to quickly update your code to use the Task Asynchronous Programming model. This model, introduced in C# 5, adds an intuitive way of handling asynchronous calls within C#. The analyzer allows large codebases to be easily modified to use the TAP model by finding violations and applying fixes up the call tree.
  • Microsoft.VisualStudio.Threading.Analyzers - Static code analyzer to detect common mistakes or potential issues regarding threading and async coding.

3rd party libraries

  • Moq.Analyzers - Roslyn analyzer that helps to write unit tests using Moq mocking library by highlighting typical errors and suggesting quick fixes. Port of Resharper extension to Roslyn. Find the full list of detected issues at project GitHub page.
  • Roslynator.Testing.CSharp.Xunit - Testing framework for Roslyn analyzers, refactorings and code fixes.
  • xunit.analyzers - Code Analyzers for projects using xUnit.net that help find and fix frequent issues when writing tests.
  • ZeroFormatter.Analyzer - Analyzer of ZeroFormatter, verify rule for [ZeroFormattable] classes.
  • ClosedTypeHierarchyDiagnosticSuppressor - Roslyn-based C# diagnostic suppressor that enhances the switch exhaustiveness checks for the closed type hierarchy pattern aka discriminated unions
  • OneOfDiagnosticSuppressor - Roslyn-based C# diagnostic suppressor that enhances the switch exhaustiveness checks of OneOf<...>.Value from the OneOf library and thus enables effective use of native switch as an alternative to the library's own Switch and Match methods
  • NSubstitute.Analyzers - Provides diagnostic analyzers to warn about incorrect usage of NSubstitute in C# or VB
  • System.IO.Abstractions.Analyzers - Analyzer for helping using package System.IO.Abstractions

Miscellaneous

Deprecated Analyzers

  • Code Cracker - An analyzer library for C# and VB that uses Roslyn to produce refactorings, code analysis, and other niceties
  • CSharpEssentials - C# Essentials is a collection of Roslyn diagnostic analyzers, code fixes and refactorings that make it easy to work with C# 6 language features.
  • RefactoringEssentials - Free Visual Studio 2015 extension for C# and VB.NET refactorings, including code best practice analyzers to improve your projects.
  • Public API analyzer (Superseded by Microsoft.CodeAnalysis.PublicApiAnalyzers) - Helps tracking reusable code public API exposure, aids in proper encapsulation.
  • VSDiagnostics - A collection of code-quality analyzers based on the new Roslyn platform. This project aims to ensure code-quality as you type it in your editor rather than having to do this as a separate build-step.
  • RoslynClrHeapAllocationAnalyzer - Roslyn based C# heap allocation diagnostic analyzer that can detect explicit and many implicit allocations like boxing, display classes a.k.a closures, implicit delegate creations, etc
  • Mews.Analyzers - Roslyn based code analyzers used by Mews.

Free and online tools

  • Roslyn Quoter Roslyn tool that for a given C# program shows syntax tree API calls to construct its syntax tree

Blogs