web-dev-qa-db-fra.com

Comment désactiver tous les analyseurs de code Roslyn?

J'essaie de travailler avec un grand projet open source qui a une poignée d'analyseurs de code Roslyn. Lorsque j'ouvre la solution, Visual Studio utilise environ 35% de CPU pendant environ 15 minutes. En utilisant PerfView, j'ai compris que les analyseurs de code exécutés sur la solution embourbent Visual Studio.

Je sais qu'il est possible de désactiver les analyseurs par projet, mais cette solution contient plus de 100 projets, donc je préfère ne pas le faire un par un.

Mes questions):

  • Puis-je désactiver tous les analyseurs Roslyn pour une solution donnée pour éviter cela?
  • Puis-je désactiver tous les analyseurs Roslyn pour toutes les solutions dans Visual Studio?
22
JoshVarty

Essayez Tools/Options/Text Editor/C#/Advanced et désactivez l'analyse complète de la solution. Il n'est disponible que depuis VS2015 Update 2.

5
Tamas

Vous pouvez désactiver les analyseurs par projet.

Pour ce faire, cliquez avec le bouton droit sur Projet> Références> Analyseurs dans l'explorateur de solutions et appuyez sur Ouvrir le jeu de règles actif

screenshot with the location of Open Active Rule Set

Vous pouvez désactiver des analyseurs individuels ou des ensembles entiers d'analyseurs.

checkboxes to disable analyzers

Cela crée un <ProjectName>.ruleset fichier et modifie le <ProjectName>.csproj, ce qui signifie que vous partagerez cette configuration avec votre équipe, sauf si vous excluez ces modifications du contrôle de code source.

Remarque: les modifications sont appliquées après la fermeture et la réouverture de la solution.


Modifications du .csproj:

<Project ...>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
    <CodeAnalysisRuleSet>Example.ruleset</CodeAnalysisRuleSet>

Example.ruleset fichier:

<?xml version="1.0" encoding="utf-8"?>
<RuleSet Name="Rules for WpfApplication1" Description="Code analysis rules for WpfApplication1.csproj." ToolsVersion="14.0">
  <Rules AnalyzerId="Microsoft.CodeAnalysis.CSharp" RuleNamespace="Microsoft.CodeAnalysis.CSharp">
    <Rule Id="AD0001" Action="None" />
    <Rule Id="CS0028" Action="None" />
...
18

Il est possible de référencer un fichier d'ensemble de règles situé dans le dossier parent

<Project ...>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
    <CodeAnalysisRuleSet>..\Example.ruleset</CodeAnalysisRuleSet>

De cette façon, vous pouvez définir un ensemble de règles pour l'ensemble de la solution.

3
Emiel Koning