Deze pagina bevat antwoorden op enkele veelgestelde vragen over codeanalyse op basis van .NET Compiler Platform in Visual Studio.
Codeanalyse versus EditorConfig
Moet ik codeanalyse of EditorConfig gebruiken om de codestijl te controleren?
Codeanalyse- en EditorConfig-bestanden werken hand-in-hand. Wanneer u codestijlen definieert in een EditorConfig-bestand of op de pagina Opties voor teksteditor , configureert u de codeanalyses die zijn ingebouwd in Visual Studio. EditorConfig-bestanden kunnen worden gebruikt om analyseregels in of uit te schakelen en om NuGet Analyzer-pakketten te configureren.
EditorConfig versus regelsets
Moet ik mijn analyzers configureren met behulp van een regelset of een EditorConfig-bestand?
Regelsets en EditorConfig-bestanden kunnen naast elkaar bestaan en kunnen beide worden gebruikt om analyses te configureren. Met zowel EditorConfig-bestanden als regelsets kunt u regels in- en uitschakelen en de ernst ervan instellen.
In Visual Studio 2019 versie 16.5 en hoger worden regelsetbestanden echter afgeschaft ten gunste van EditorConfig-bestanden, en .NET Core- en .NET 5+-projecten bieden geen ondersteuning voor alle menuopdrachten voor regelset. Zie Een bestaand setbestand met regels converteren naar een EditorConfig-bestand voor meer informatie.
EditorConfig-bestanden bieden aanvullende manieren om regels te configureren:
- Voor de .NET codekwaliteitsanalyses kunt u met EditorConfig-bestanden definiëren welke typen code u wilt analyseren.
- Voor de .NET code-style analyzers en .NET code-quality analyzers kunt u met EditorConfig-bestanden de voorkeurscodestijlen voor een codebasis definiëren.
Naast regelsets en EditorConfig-bestanden worden sommige analyses geconfigureerd via het gebruik van tekstbestanden die zijn gemarkeerd als extra bestanden voor de C#- en VB-compilers.
Opmerking
- EditorConfig-bestanden kunnen alleen worden gebruikt om regels in te schakelen en de ernst ervan in te stellen in Visual Studio 2019 versie 16.3 en hoger.
- EditorConfig-bestanden kunnen niet worden gebruikt om verouderde analyse te configureren, terwijl regelsets dat wel kunnen.
Codeanalyse in CI-builds (continue integratie)
Werkt codeanalyse op basis van .NET Compiler Platform in CI-builds (continue integratie)?
Ja. Voor analyses die zijn geïnstalleerd met .NET SDK 5.0 of hoger, of vanuit een NuGet-pakket, worden deze regels afgedwongen tijdens de build, inclusief tijdens een CI-build. Analyseanalyses die worden gebruikt in CI-builds respecteren de regelconfiguratie van zowel regelsets als EditorConfig-bestanden. Vanaf .NET 5.0 zijn de codestijlanalyses die zijn ingebouwd in Visual Studio, ook opgenomen in de .NET SDK en kunnen ze meestal worden afgedwongen in een CI-build. Zie Inschakelen voor build voor meer informatie.
IDE-analysen versus StyleCop
Wat is het verschil tussen de Visual Studio IDE-codeanalyses en StyleCop-analyse?
De Visual Studio IDE bevat ingebouwde analyses die zoeken naar problemen met codestijl en kwaliteit. Met deze regels kunt u nieuwe taalfuncties gebruiken terwijl ze worden geïntroduceerd en de onderhoudbaarheid van uw code verbeteren. IDE-analyses worden voortdurend bijgewerkt met elke Visual Studio-release.
StyleCop Analyzers zijn analyses van derden die zijn geïnstalleerd als een NuGet-pakket dat controleert op stijlconsistentie in uw code. In het algemeen kunt u met StyleCop-regels persoonlijke voorkeuren instellen voor een codebasis zonder de ene stijl voor een andere stijl aan te bevelen.
Codeanalyses versus verouderde analyse
Wat is het verschil tussen verouderde analyse en op .NET Compiler Platform gebaseerde codeanalyse?
Codeanalyse op basis van .NET Compiler Platform analyseert broncode in realtime en tijdens de compilatie, terwijl met verouderde analyse binaire bestanden worden geanalyseerd nadat de build is voltooid. Zie .NET Compiler Platform-analyse versus verouderde analyse voor meer informatie.
FxCop Analyzers versus .NET Analyzers
Wat is het verschil tussen FxCop analyzers en .NET Analyzers?
Zowel FxCop Analyzers als .NET Analyzers verwijst naar de .NET Compiler Platform ('Roslyn')-analyse-implementaties van FxCop CA-regels. Vóór Visual Studio 2019 16.8 en .NET 5.0 werden deze analyses geleverd als Microsoft.CodeAnalysis.FxCopAnalyzersNuGet-pakket. Vanaf Visual Studio 2019 16.8 en .NET 5.0 zijn deze analyses opgenomen in de .NET SDK. Ze zijn ook beschikbaar als Microsoft.CodeAnalysis.NetAnalyzersNuGet-pakket. Overweeg om te migreren van FxCop-analyses naar .NET Analyzers.
Waarschuwingen behandelen als fouten
Mijn project maakt gebruik van de build-optie om waarschuwingen als fouten te behandelen. Nadat u een verouderde analyse naar broncodeanalyse hebt gemigreerd, worden alle waarschuwingen voor codeanalyse nu weergegeven als fouten. Hoe kan ik dat voorkomen?
Volg deze stappen om te voorkomen dat waarschuwingen voor codeanalyse als fouten worden behandeld:
Maak een PROPS-bestand met de volgende inhoud:
<Project> <PropertyGroup> <CodeAnalysisTreatWarningsAsErrors>false</CodeAnalysisTreatWarningsAsErrors> </PropertyGroup> </Project>Voeg een regel toe aan uw .csproj- of VBPROJ-projectbestand om het .props-bestand te importeren dat u in de vorige stap hebt gemaakt. Deze regel moet worden geplaatst voor alle regels die de analyzer.props-bestanden importeren. Als uw .props-bestand bijvoorbeeld de naam codeanalysis.props heeft:
... <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')" /> ...
Eigenschappenpagina van oplossing voor codeanalyse
Waar is de eigenschappenpagina codeanalyse voor de oplossing?
De eigenschappenpagina codeanalyse op oplossingsniveau is verwijderd ten gunste van de betrouwbaardere gedeelde eigenschappengroep. Voor het beheren van codeanalyse op projectniveau is de eigenschappenpagina codeanalyse nog steeds beschikbaar. (Voor beheerde projecten raden we u ook aan om te migreren van regelsets naar EditorConfig voor regelconfiguratie.) Voor het delen van regelsets voor meerdere/alle projecten in een oplossing of een opslagplaats raden we u aan een eigenschapsgroep met de eigenschap CodeAnalysisRuleSet te definiëren in een bestand met gedeelde props/doelen of map.props/Directory.targets-bestand . Als u niet beschikt over dergelijke algemene props of doelen die al uw projecten importeren, kunt u overwegen om een dergelijke eigenschapsgroep toe te voegen aan een Map.props- of Directory.targets-bestand in een oplossingsmap op het hoogste niveau, die automatisch wordt geïmporteerd in alle projectbestanden die in de map of de submappen zijn gedefinieerd.