Skip to content
No description, website, or topics provided.
C# Rich Text Format Visual Basic Other
Branch: master
Clone or download
mavasani Merge pull request #3046 from drewnoakes/public-api-analyzer-docs
Document use of multiple public API files
Latest commit 67a7534 Nov 18, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github Bump latest version in issue template Nov 8, 2019
assets updating TPN and adding TPN/EULA to Nuget/VSIX (#2836) Sep 10, 2019
docs Update docs/Writing dataflow analysis based analyzers.md Nov 14, 2019
eng Remove unnecessary codecov args Nov 15, 2019
nuget Changes to packaging for Analyer Utilities package Oct 22, 2019
src Document use of multiple public API files Nov 16, 2019
tools Unit test for .editorconfig options Jul 28, 2019
.editorconfig Apply code fixes for IDE suggestions Jul 29, 2019
.gitattributes Update to RT 1.0.0-beta2-62922-02 May 22, 2018
.gitignore Update to RT 1.0.0-beta2-62922-02 May 22, 2018
Build.cmd Migrate to Arcade Sep 24, 2018
CopyrightHeader.md Modify copyright header template Feb 12, 2016
Directory.Build.props Revert "Move LangVersion setting to the source dir" Oct 17, 2019
Directory.Build.targets Set IncludeTestAssembly to true Nov 15, 2019
GuidelinesForNewRules.md Update GuidelinesForNewRules.md Sep 9, 2019
License.txt Modify copyright header template Feb 12, 2016
PostReleaseActivities.md Changes to packaging for Analyer Utilities package Oct 22, 2019
README.md Update build status badges Nov 15, 2019
Restore.cmd Migrate to Arcade Sep 24, 2018
RoslynAnalyzers.sln Changes to packaging for Analyer Utilities package Oct 22, 2019
THIRD-PARTY-NOTICES.txt updating TPN and adding TPN/EULA to Nuget/VSIX (#2836) Sep 10, 2019
Test.cmd Migrate to Arcade Sep 24, 2018
VERSIONING.md Addressing review feedback Nov 1, 2019
azure-pipelines-microbuild.yml Ensure that we also publish the output VSIXes to DevOps May 7, 2019
azure-pipelines.yml Increase the build timeout to 25 minutes Nov 15, 2019
codecov.yml Simplify the codecov comment Nov 15, 2019
global.json Move to a later dotnet SDK required for the license element in nuspec Aug 27, 2019
nuget.config Enable code coverage Nov 15, 2019

README.md

Roslyn Analyzers

Windows Debug Windows Release
master Build Status codecov Build Status

What is Roslyn?

Roslyn is the compiler platform for .NET. It consists of the compiler itself and a powerful set of APIs to interact with the compiler. The Roslyn platform is hosted at github.com/dotnet/roslyn.

What are Roslyn Analyzers?

Roslyn analyzers analyze your code for style, quality and maintainability, design and other issues. The documentation for Roslyn Analyzers can be found at docs.microsoft.com/visualstudio/code-quality/roslyn-analyzers-overview.

Microsoft created a set of analyzers called Microsoft.CodeAnalysis.FxCopAnalyzers that contains the most important "FxCop" rules from static code analysis, converted to Roslyn analyzers. These analyzers check your code for security, performance, and design issues, among others. The documentation for FxCop analyzers in Visual Studio can be found at docs.microsoft.com/visualstudio/code-quality/install-fxcop-analyzers.

Microsoft.CodeAnalysis.FxCopAnalyzers

Latest stable version: NuGet

This is the primary analyzer package for this repo that contains all the ported FxCop code analysis rules (CAxxxx). The documentation for FxCop Analyzers and FAQs about migrating from legacy post-build static analysis also known as "FxCop" to FxCop Analyzers can be found at docs.microsoft.com/visualstudio/code-quality/install-fxcop-analyzers.

The documentation for all the ported and unported FxCop rules can be found at docs.microsoft.com/en-us/visualstudio/code-quality/fxcop-rule-port-status.

This analyzer package contains all the ported FxCop rules that are applicable for both .NetCore/.NetStandard and Desktop .NetFramework projects. You do not need to install any separate analyzer package from this repo to get target-framework specific FxCop rules. More info about rules in this package

The following are subpackages or NuGet dependencies that are automatically installed when you install the Microsoft.CodeAnalysis.FxCopAnalyzers package:

Microsoft.CodeQuality.Analyzers

Latest stable version: NuGet

This package contains common code quality improvement rules that are not specific to usage of any particular API. For example, CA1801 (ReviewUnusedParameters) flags parameters that are unused and is part of this package. More info about rules in this package

Microsoft.NetCore.Analyzers

Latest stable version: NuGet

This package contains rules for correct usage of APIs that are present in .NetCore/.NetStandard framework libraries. For example, CA1309 (UseOrdinalStringComparison) flags usages of string compare APIs that don't specify a StringComparison argument.

NOTE: This analyzer package is applicable for both .NetCore/.NetStandard and Desktop .NetFramework projects. If the API whose usage is being checked exists only in .NetCore/.NetStandard libraries, then the analyzer will bail out silently for Desktop .NetFramework projects. Otherwise, if the API exists in both .NetCore/.NetStandard and Desktop .NetFramework libraries, the analyzer will run correctly for both .NetCore/.NetStandard and Desktop .NetFramework projects. More info about rules in this package

Microsoft.NetFramework.Analyzers

Latest stable version: NuGet

This package contains rules for correct usage of APIs that are present only in Desktop .NetFramework libraries.

NOTE: The analyzers in this package will silently bail out if installed on a .NetCore/.NetStandard project that do not have the underlying API whose usage is being checked. If future versions of .NetCore/.NetStandard libraries include these APIs, the analyzers will automatically light up on .NetCore/.NetStandard projects that target these libraries. More info about rules in this package

Other Analyzer Packages

Microsoft.CodeAnalysis.Analyzers

Latest stable version: NuGet

This package contains rules for correct usage of APIs from the Microsoft.CodeAnalysis NuGet package, i.e. .NET Compiler Platform ("Roslyn") APIs. These are primarily aimed towards helping authors of diagnostic analyzers and code fix providers to invoke the Microsoft.CodeAnalysis APIs in a recommended manner. More info about rules in this package

Roslyn.Diagnostics.Analyzers

Latest stable version: NuGet

This package contains rules that are very specific to the .NET Compiler Platform ("Roslyn") project, i.e. https://github.com/dotnet/roslyn repo. This analyzer package is not intended for general consumption outside the Roslyn repo. More info about rules in this package

Microsoft.CodeAnalysis.BannedApiAnalyzers

Latest stable version: NuGet

This package contains customizable rules for identifying references to banned APIs. More info about rules in this package

Microsoft.CodeAnalysis.PublicApiAnalyzers

Latest stable version: NuGet

This package contains rules to help library authors monitoring change to their public APIs. More info about rules in this package

MetaCompilation (prototype)

Created by summer 2015 interns Zoë Petard, Jessica Petty, and Daniel King

The MetaCompilation Analyzer is an analyzer that functions as a tutorial to teach users how to write an analyzer. It uses diagnostics and code fixes to guide the user through the various steps required to create a simple analyzer. It is designed for novice analyzer developers who have some previous programming experience.

For instructions on using this tutorial, see Instructions.

Getting Started

  1. Clone this repository
  2. Open the command prompt or PowerShell
  3. Go to the directory of the Roslyn Analyzer Repo
  4. Run the restore and build command: build.cmd(in the command prompt) or .\build.cmd(in PowerShell).
  5. Execute tests: test.cmd(in the command prompt) or .\test.cmd(in PowerShell).

Submitting Pull Requests

Prior to submitting a pull request, ensure the build and all tests pass using using steps 4 and 5 above.

Guidelines for contributing a new Code Analysis (CA) rule to the repo

See GuidelinesForNewRules.md for contributing a new Code Analysis rule to the repo.

Versioning Scheme for Analyzer Packages

See VERSIONING.md for the versioning scheme for all analyzer packages built out of this repo.

Recommended version of Analyzer Packages

Recommended Visual Studio Version: Visual Studio 2017 15.9 RTW or later

Recommended Analyzer Package Version: Version 2.9.6, for example https://www.nuget.org/packages/Microsoft.CodeAnalysis.FxCopAnalyzers/2.9.6

The documentation for FxCopAnalyzers package versions can be found at docs.microsoft.com/visualstudio/code-quality/install-fxcop-analyzers

You can also install a custom Microsoft Code Analysis VSIX containing these analyzers as a Visual Studio extension for all your managed projects.

  1. For Visual Studio 2017 15.5 or later: https://marketplace.visualstudio.com/items?itemName=VisualStudioPlatformTeam.MicrosoftCodeAnalysis2017
  2. For Visual Studio 2019 16.0 or later: https://marketplace.visualstudio.com/items?itemName=VisualStudioPlatformTeam.MicrosoftCodeAnalysis2019
You can’t perform that action at this time.