Dela via


Vanliga frågor och svar om kodanalys i Visual Studio

Den här sidan innehåller svar på några vanliga frågor om .NET Compiler Platform-baserad kodanalys i Visual Studio.

Kodanalys jämfört med EditorConfig

Ska jag använda kodanalys eller EditorConfig för att kontrollera kodformat?

Kodanalys och EditorConfig-filer fungerar hand i hand. När du definierar kodformat i en EditorConfig-fil eller på sidan Alternativ för textredigeraren konfigurerar du faktiskt de kodanalysverktyg som är inbyggda i Visual Studio. EditorConfig-filer kan användas för att aktivera eller inaktivera analysregler och även för att konfigurera NuGet-analyspaket.

EditorConfig jämfört med regeluppsättningar

Ska jag konfigurera mina analysverktyg med hjälp av en regeluppsättning eller en EditorConfig-fil?

Regeluppsättningar och EditorConfig-filer kan samexistera och kan båda användas för att konfigurera analysverktyg. Med både EditorConfig-filer och regeluppsättningar kan du aktivera och inaktivera regler och ange deras allvarlighetsgrad.

Men i Visual Studio 2019 version 16.5 och senare är regeluppsättningsfiler inaktuella till förmån för EditorConfig-filer, och .NET Core- och .NET 5+-projekt stöder inte alla menykommandon för regeluppsättningar. Mer information finns i Konvertera en befintlig regeluppsättningsfil till en EditorConfig-fil.

EditorConfig-filer erbjuder ytterligare sätt att konfigurera regler:

Förutom regeluppsättningar och EditorConfig-filer konfigureras vissa analysverktyg med hjälp av textfiler som markerats som ytterligare filer för C#- och VB-kompilatorerna.

Anmärkning

  • EditorConfig-filer kan bara användas för att aktivera regler och ange deras allvarlighetsgrad i Visual Studio 2019 version 16.3 och senare.
  • EditorConfig-filer kan inte användas för att konfigurera äldre analys, medan regeluppsättningar kan göra det.

Kodanalys i CI-versioner (Continuous Integration)

Fungerar .NET Compiler Platform-baserad kodanalys i ci-versioner (continuous integration) ?

Ja. För analysverktyg som installeras med .NET SDK 5.0 eller senare, eller från ett NuGet-paket, tillämpas dessa regler vid bygget, inklusive under en CI-version. Analysverktyg som används i CI-versioner respekterar regelkonfiguration från både regeluppsättningar och EditorConfig-filer. Från och med .NET 5.0 ingår även de kodformatanalysverktyg som är inbyggda i Visual Studio i .NET SDK, och de flesta av dem kan tillämpas i en CI-version. Mer information finns i Aktivera vid kompilering.

IDE-analysverktyg jämfört med StyleCop

Vad är skillnaden mellan Visual Studio IDE-kodanalysatorer och StyleCop-analysverktyg?

Visual Studio IDE innehåller inbyggda analysverktyg som letar efter både kodformat och kvalitetsproblem. De här reglerna hjälper dig att använda nya språkfunktioner när de introduceras och förbättra kodens underhållbarhet. IDE-analysverktyg uppdateras kontinuerligt med varje Visual Studio-version.

StyleCop-analysverktyg är analysverktyg från tredje part installerade som ett NuGet-paket som söker efter stilkonsekvens i koden. I allmänhet kan du med StyleCop-regler ange personliga inställningar för en kodbas utan att rekommendera ett format framför ett annat.

Kodanalyserare jämfört med äldre analys

Vad är skillnaden mellan äldre analys och .NET Compiler Platform-baserad kodanalys?

.NET Compiler Platform-baserad kodanalys analyserar källkod i realtid och under kompilering, medan äldre analys analyserar binära filer när bygget har slutförts. Mer information finns i .NET Compiler Platform-baserad analys jämfört med äldre analys.

FxCop-analysverktyg jämfört med .NET-analysverktyg

Vad är skillnaden mellan FxCop-analysverktyg och .NET-analysverktyg?

Både FxCop-analysverktyg och .NET-analysverktyg refererar till .NET Compiler Platform ("Roslyn") analysimplementeringar av FxCop CA-regler. Före Visual Studio 2019 16.8 och .NET 5.0 levererades dessa analysverktyg som Microsoft.CodeAnalysis.FxCopAnalyzersNuGet-paket. Från och med Visual Studio 2019 16.8 och .NET 5.0 ingår dessa analysverktyg i .NET SDK. De är också tillgängliga som Microsoft.CodeAnalysis.NetAnalyzersNuGet-paket. Överväg att migrera från FxCop-analysverktyg till .NET-analysverktyg.

Behandla varningar som fel

Mitt projekt använder byggalternativet för att behandla varningar som fel. När du har migrerat från äldre analys till källkodsanalys visas nu alla kodanalysvarningar som fel. Hur kan jag förhindra det?

Följ dessa steg för att förhindra att kodanalysvarningar behandlas som fel:

  1. Skapa en .props-fil med följande innehåll:

    <Project>
       <PropertyGroup>
          <CodeAnalysisTreatWarningsAsErrors>false</CodeAnalysisTreatWarningsAsErrors>
       </PropertyGroup>
    </Project>
    
  2. Lägg till en rad i projektfilen .csproj eller .vbproj för att importera .props-filen som du skapade i föregående steg. Den här raden måste placeras före alla rader som importerar analysatorns .props-filer. Om din .props-fil till exempel heter codeanalysis.props:

    ...
    <Import Project="..\..\codeanalysis.props" Condition="Exists('..\..\codeanalysis.props')" />
    <Import Project="..\packages\Microsoft.CodeAnalysis.NetAnalyzers.5.0.0\build\Microsoft.CodeAnalysis.NetAnalyzers.props" Condition="Exists('..\packages\Microsoft.CodeAnalysis.NetAnalyzers.5.0.0\build\Microsoft.CodeAnalysis.NetAnalyzers.props')" />
    ...
    

Egenskapssida för kodanalyslösning

Var finns egenskapssidan kodanalys för lösningen?

Egenskapssidan Kodanalys på lösningsnivå togs bort till förmån för den mer tillförlitliga delade egenskapsgruppen. För att hantera kodanalys på projektnivå är egenskapssidan kodanalys fortfarande tillgänglig. (För hanterade projekt rekommenderar vi också att du migrerar från regeluppsättningar till EditorConfig för regelkonfiguration.) För att dela regeluppsättningar mellan flera/alla projekt i en lösning eller en lagringsplats rekommenderar vi att du definierar en egenskapsgrupp med egenskapen CodeAnalysisRuleSet i en delad props/targets-fil eller Directory.props/Directory.targets-fil . Om du inte har några sådana vanliga rekvisita eller mål som alla dina projekt importerar bör du överväga att lägga till en sådan egenskapsgrupp i en Directory.props- eller Directory.targets-fil på en toppnivålösningskatalog, som automatiskt importeras i alla projektfiler som definieras i katalogen eller dess underkataloger.