Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Minden Roslyn-elemző szabálynak vagy diagnosztikai szabálynak van egy alapértelmezett súlyossága és elnyomási állapota, amelyet testre szabhat a projekthez. Ez a cikk az elemző súlyosságának beállítását és az elemzői szabálysértések elnyomását ismerteti.
Súlyossági szintek
Az elemzőszabályok súlyosságát egy EditorConfig-fájlban és a villanykörte menüben konfigurálhatja.
Az alábbi táblázat a diagnosztikához konfigurálható különböző súlyossági beállításokat mutatja be:
| Súlyosság (Megoldások tárháza) | Súlyosság (EditorConfig-fájl) | Fordítási idejű viselkedés | Szerkesztői viselkedés |
|---|---|---|---|
| Hiba | error |
A hibák megjelennek a Hiba fülön, a Hibalista ablakban és a parancssori build kimenetében, és a build folyamatok sikertelenek lesznek. | A szabálysértő kódot piros hullámos vonallal aláhúzzák, és a görgetősávon egy kis piros mező jelöli. |
| Figyelmeztetés | warning |
A hibák a Figyelmeztetés lapon jelennek meg a Hibalista ablakban és a parancssori build kimenetében, de nem okoznak build hibát. | A jogsértő kódot a rendszer egy zöld hullámos vonallal aláhúzza, és a görgetősávon egy kis zöld mező jelöli. |
| Javaslat | suggestion |
A szabálysértések az Üzenet lapon jelennek meg a Hibalista ablakban, a parancssori build kimenetében azonban nem. | Az érintett kódot egy szürke hullámos vonal aláhúzza, és a görgetősávon egy kis szürke mező jelöli. |
| Néma | silent |
A felhasználó számára láthatatlan. | A felhasználó számára láthatatlan, de a diagnosztika az IDE diagnosztikai motorhoz van jelentve. |
| Egyik sem | none |
Teljesen elfojtva. | Teljesen elfojtva. |
| Alapértelmezett | default |
A szabály alapértelmezett súlyosságának felel meg. Egy szabály alapértelmezett értékének meghatározásához tekintse meg annak Tulajdonságok ablakát. | A szabály alapértelmezett súlyosságának felel meg. |
Szabálysértések megtekintése
Ha egy elemző bármilyen elemzőszabály-szabálysértést talál, a Hibalista ablakban és a kódszerkesztőben jelenti őket.
Az alábbi képernyőkép a Hibalista ablakban jelentett szabályszegéseket mutatja be. A hibalistában jelentett elemzői szabálysértések megegyeznek a szabály súlyossági szintjének beállításával :
Az elemzőszabály-szabály megsértései a kódszerkesztőben is megjelennek a szabálysértő kód alatti hullámos vonalakként. Az alábbi képernyőképen például három szabálysértés látható: egy hiba (piros hullámos vonal), egy figyelmeztetés (zöld hullámos vonal) és egy javaslat (három szürke pont):
Számos diagnosztika rendelkezik egy vagy több társított kódjavítással , amelyeket alkalmazhat a szabálysértés kijavításához. A kódjavítások a villanykörte ikon menüjében, valamint más típusú gyorsműveletek is megjelennek. A kódjavításokról további információt a Gyakori gyorsműveletek című témakörben talál.
Súlyossági szintek konfigurálása
A szabály súlyosságát az alábbi módszerek bármelyikével állíthatja be:
Csendes és nincs súlyosság
Silent az alapértelmezés szerint engedélyezett súlyossági szabályok eltérnek a letiltott vagy None súlyossági szabályoktól:
- Ha egy súlyossági szabályhoz
Silentkódjavítás van regisztrálva, a Visual Studio a kódjavítást figyelmeztető jelzéssel, mint kódátdolgozási lehetőséget kínálja, még akkor is, ha a rejtett diagnosztikai üzenet nem látható a felhasználó számára. Ha a súlyossági szabály le van tiltvaNone, a kódjavítás nem érhető el. - A Szerkesztőkonfigurációs fájlban egyszerre több elemző szabály súlyosságát megadó bejegyzések tömegesen konfigurálhatják
Silenta súlyossági szabályokat.Nonesúlyossági szabályok nem konfigurálhatók így. Ehelyett olyan bejegyzéseken keresztül kell konfigurálni őket, amelyek az egyes szabályazonosítókhoz beállított súlyosságot egy Szerkesztőkonfigurációs fájlban állítják be.
Szabály súlyosságának beállítása Szerkesztőkonfigurációs fájlban
A EditorConfig-fájlok a Visual Studio 2019 16.3-s és újabb verziójában érhetők el.
A szabály súlyosságának beállítása egy EditorConfig-fájlban elsőbbséget élvez a szabálykészletben vagy a Megoldáskezelőben beállított súlyossági beállítással szemben. A súlyosságot manuálisan is konfigurálhatja egy EditorConfig-fájlban, vagy automatikusan a szabálysértés mellett megjelenő villanykörte használatával.
Szabály súlyosságának manuális konfigurálása Szerkesztőkonfigurációs fájlban
A szabály súlyosságának konfigurálásához kövesse az alábbi lépéseket:
Adjon hozzá egy EditorConfig-fájlt a projekthez, ha még nem rendelkezik ilyen fájllal.
Adjon hozzá egy bejegyzést minden konfigurálni kívánt szabályhoz a megfelelő fájlkiterjesztés alatt.
A CA1822
errorsúlyosságát például c#-fájlok esetén a következőképpen állíthatja be:[*.cs] dotnet_diagnostic.CA1822.severity = errorEgy Szerkesztőkonfigurációs fájlban az egyes diagnosztikai szabályazonosítókhoz a következő szintaxissal állíthatja be a szabály súlyosságát:
dotnet_diagnostic.<rule ID>.severity = <severity>IDE kódstílus-elemzők esetén másik szintaxissal is konfigurálhatja őket Egy EditorConfig-fájlban.
Például:
dotnet_style_qualification_for_field = false:suggestion. Ha azonban adotnet_diagnosticszintaxist használva súlyosságot ad meg, az elsőbbséget élvez. További információ: Nyelvi konvenciók a EditorConfighoz.
Több elemző szabály súlyosságának beállítása egyszerre egy EditorConfig-fájlban
A Visual Studio 2019 16.5-ös és újabb verziójában egyszerre több elemzőszabályt is beállíthat egy EditorConfig-fájlban.
Az elemzőszabályok egy adott kategóriájának vagy az összes elemzőszabálynak a súlyosságát egyetlen bejegyzéssel állíthatja be egy Szerkesztőkonfigurációs fájlban:
Adja meg az elemzőszabályok kategóriájának szabály súlyosságát:
dotnet_analyzer_diagnostic.category-<rule category>.severity = <severity>A szabály súlyosságának beállítása az összes elemzőszabályhoz:
dotnet_analyzer_diagnostic.severity = <severity>
Azok a bejegyzések, amelyek egyszerre több elemző szabályt konfigurálnak, csak az alapértelmezés szerint engedélyezett szabályokra vonatkoznak. Az elemzőcsomagban alapértelmezés szerint letiltottként megjelölt elemzőszabályokat explicit dotnet_diagnostic.<rule ID>.severity = <severity> bejegyzésekkel kell engedélyezni.
Ha több olyan bejegyzéssel rendelkezik, amelyek egy adott szabályazonosítóra vonatkoznak, az alkalmazandó bejegyzés sorrendje a következő:
- Az egyes szabályok azonosító szerinti súlyossági bejegyzései elsőbbséget élveznek egy kategória súlyossági bejegyzésével szemben.
- Egy kategória súlyossági bejegyzése elsőbbséget élvez az összes elemzőszabály súlyossági bejegyzése felett.
Tekintse meg a következő EditorConfig-példát, ahol a CA1822 teljesítményszabály:
[*.cs]
dotnet_diagnostic.CA1822.severity = error
dotnet_analyzer_diagnostic.category-performance.severity = warning
dotnet_analyzer_diagnostic.severity = suggestion
Ebben a példában mindhárom bejegyzés a CA1822 teljesítményszabályra vonatkozik. A megadott elsőbbségi szabályok használatával azonban az első szabályazonosító-alapú súlyossági bejegyzés elsőbbséget élvez a következő bejegyzésekkel szemben. Ebben a példában a CA1822 tényleges súlyossága error. A fennmaradó teljesítményszabályok súlyossága warning. A nem teljesítményszabályokat tartalmazó elemzőszabályok súlyossága suggestion.
Szabály súlyosságának beállítása a villanykörte menüből
A Visual Studio segítségével kényelmesen konfigurálhatja a szabály súlyosságát a Gyorsműveletek villanykörte menüből. Kövesse az alábbi lépéseket:
A szabálysértés bekövetkezése után mutasson a szerkesztőben a szabálysértési hullámvonalra, és válassza a Lehetséges javítások megjelenítése lehetőséget a villanykörte menü megnyitásához. Vagy helyezze a kurzort a sorra, majd nyomja meg a Ctrl+ billentyűt (pont).
A villanykörte menüben vigye az egérmutatót egy súlyossági szint fölé a változás előnézetéhez, majd konfigurálja a súlyosságot az alábbi beállítások szerint:
Konfigurálja a <szabály ID> súlyosságát. Adja meg az adott szabály súlyosságát .
Konfigurálja az összes <stíluselemző> súlyosságát. Adja meg az adott szabálykategória összes szabályának súlyosságát.
Állítsa be a súlyosságot az összes elemzőnél. Adja meg az elemzőszabályok összes kategóriájának súlyosságát.
Az alábbi példában válassza a Problémák mellőzése vagy konfigurálása>, <.
Az alábbi példában válassza a Problémák mellőzése vagy konfigurálása>, <.
Válassza ki a súlyossági beállítások egyikét.
A Visual Studio hozzáad egy bejegyzést a Szerkesztőkonfiguráció fájlhoz, hogy a szabályt a kért súlyossági szintre konfigurálja, ahogyan az az előnézeti mezőben látható.
Ha még nem rendelkezik Szerkesztőkonfigurációs fájllal a projektben, a Visual Studio létrehoz egyet.
Szabály súlyosságának beállítása a Megoldáskezelőből
A szabály súlyosságának a Megoldáskezelőből való beállításához kövesse az alábbi lépéseket:
A Megoldáskezelőben bontsa ki aHivatkozáselemzőket> (vagy a .NET Core-projektekfüggőségelemzőit>).
Bontsa ki azt a szerelvényt, amely tartalmazza azt a szabályt, amelyhez meg szeretné adni a súlyosságot.
Kattintson a jobb gombbal a szabályra, és válassza a Súlyosság beállítása lehetőséget. A helyi menüben válassza ki a súlyossági beállítások egyikét.
A Visual Studio hozzáad egy bejegyzést a Szerkesztőkonfiguráció fájlhoz, hogy a szabályt a kért szintre konfigurálja. Ha a projekt egy Szerkesztőkonfigurációs fájl helyett egy szabálykészletfájlt használ, a rendszer hozzáadja a súlyossági bejegyzést a szabálykészletfájlhoz.
Ha még nem rendelkezik Szerkesztőkonfigurációs fájllal vagy szabálykészletfájllal a projektben, a Visual Studio létrehoz egy új EditorConfig-fájlt.
Elemzők és diagnosztikák megtekintése a Megoldáskezelőből
Az elemződiagnosztikák testreszabásának nagy részét a Megoldáskezelőből végezheti el. Ha Egy elemzőt NuGet-csomagként telepít, egy Elemző csomópont jelenik meg a Megoldáskezelő Hivatkozás csomópontja (vagy a .NET Core-projektek függőségi csomópontja) alatt. Kövesse az alábbi lépéseket az elemzők és a diagnosztikák megtekintéséhez:
A Megoldáskezelőben bontsa ki a projektet, bontsa ki a Hivatkozásokat vagy függőségeket, majd bontsa ki az Elemzőket. Bontsa ki az egyik elemzőszerelvényt a szerelvény diagnosztikáinak megtekintéséhez.
Az egyes diagnosztikák melletti ikon jelzi annak súlyossági szintjét:
-
xegy kör a hiba súlyosságát jelzi -
!egy háromszögben a figyelmeztetés súlyosságát jelzi. -
iegy szilárd kör a javaslat súlyosságát jelzi -
ipontozott kör jelzi a Silent súlyossági szintet. - Egy folytonos körben lefelé mutató nyíl a Nincs súlyosságot jelzi
-
Ha meg szeretné tekinteni egy diagnosztika tulajdonságait, beleértve annak leírását és alapértelmezett súlyosságát, kattintson a jobb gombbal a diagnosztikára, majd válassza a Tulajdonságok lehetőséget. Vagy válassza ki a diagnosztikát, majd nyomja le az Alt+Enter billentyűt.
Megjelenik a Tulajdonságok ablak.
Ha meg szeretné tekinteni a Kódstílus-szabályok (IDE-előtag) tulajdonságait a Tulajdonságok ablakban, például az alapértelmezett súlyosságot, állítsa a EnforceCodeStyleInBuild tulajdonságot a következőre
true: .A diagnosztikához tartozó online dokumentációhoz kattintson a jobb gombbal a diagnosztikára, majd válassza a Súgó megtekintése parancsot.
Meglévő szabálykészletfájl konvertálása Szerkesztőkonfigurációs fájllá
A Visual Studio 2019 16.5-ös és újabb verzióiban a szabálykészletfájlok elavultak a felügyelt kód elemző konfigurációjára szolgáló EditorConfig-fájlok javára. A Szerkesztőkonfigurációs fájlok rugalmasabbak, és lehetővé teszik az elemzőszabály súlyossági és elemzői beállításainak konfigurálását, beleértve a Visual Studio IDE kódstílus-beállításait is. Mivel az elemzőszabályok súlyossági konfigurációjára szolgáló Visual Studio-eszközök mostantól úgy vannak optimalizálva, hogy szabálykészletfájlok helyett Szerkesztőkonfigurációs fájlokkal működjenek, javasoljuk, hogy konvertáljon minden olyan meglévő projektet, amely továbbra is szabálykészletfájlokat használ.
Ha a meglévő szabálykészletfájlt Szerkesztőkonfigurációs fájllá konvertálja, mentse az adattár gyökerénél vagy a megoldásmappában. Ezzel biztosítja, hogy a fájl súlyossági beállításai automatikusan vonatkozzanak a teljes adattárra vagy megoldásra.
A meglévő szabálykészletfájlokat Szerkesztőkonfigurációs fájllá alakíthatja a szabálykészlet-szerkesztő vagy a parancssor használatával.
Megjegyzés:
A .NET Core és a .NET 5+ projektek nem támogatják a Megoldáskezelőben a szabálykészletek menüparancsát, például az Aktív szabálykészlet megnyitása parancsot. Ha nem alapértelmezett szabálykészletet szeretne megadni egy .NET Core- vagy .NET 5+-projekthez, adja hozzá manuálisan a CodeAnalysisRuleSet tulajdonságot a projektfájlhoz. Továbbra is konfigurálhatja a szabályokat a szabálykészlet-szerkesztőben beállított szabályon belül.
A szabálykészlet-szerkesztő használatához kövesse az alábbi lépéseket. Ha a projekt már használ egy adott szabálykészletfájlt a tulajdonságértékéhez CodeAnalysisRuleSet , a szabálykészlet-szerkesztőből konvertálhatja azt egyenértékű EditorConfig-fájllá:
Kattintson duplán a szabálykészletfájlra a Megoldáskezelőben.
A szabálykészletfájl megnyílik a szabálykészlet-szerkesztőben, felül pedig egy kattintható információs sáv látható.
Válassza ki az információs sáv hivatkozását a szabálykészlet-szerkesztőfájl áttelepítéséhez.
A Mentés másként párbeszédpanelen válassza ki azt a könyvtárat, amelyben létre szeretné hozni a Szerkesztőkonfigurációs fájlt, majd válassza a Mentés lehetőséget.
A létrehozott Szerkesztőkonfiguráció megnyílik a szerkesztőben. Emellett az MSBuild tulajdonság
CodeAnalysisRuleSetfrissül a projektfájlban, így már nem hivatkozik az eredeti szabálykészletfájlra.Az eredeti szabálykészletfájl eltávolítható a projektből.
Megjegyzés:
.NET-keretrendszerprojektekben az alapértelmezett szabálykészletfájl nem migrálható vagy távolítható el a projektből.
A parancssor használatához kövesse az alábbi lépéseket:
Telepítse a NuGet-csomagot: Microsoft.CodeAnalysis.RulesetToEditorconfigConverter.
Hajtsa végre RulesetToEditorconfigConverter.exe a telepített csomagból, a szabálykészletfájl és az EditorConfig fájl elérési útját parancssori argumentumként megadva.
Például:
Usage: RulesetToEditorconfigConverter.exe <%ruleset_file%> [<%path_to_editorconfig%>]
Az alábbi példa egy Szerkesztőkonfigurációs fájllá konvertálandó szabálykészletfájlt mutat be:
<?xml version="1.0" encoding="utf-8"?>
<RuleSet Name="Rules for ConsoleApp" Description="Code analysis rules for ConsoleApp.csproj." ToolsVersion="16.0">
<Rules AnalyzerId="Microsoft.Analyzers.ManagedCodeAnalysis" RuleNamespace="Microsoft.Rules.Managed">
<Rule Id="CA1001" Action="Warning" />
<Rule Id="CA1821" Action="Warning" />
<Rule Id="CA2213" Action="Warning" />
<Rule Id="CA2231" Action="Warning" />
</Rules>
</RuleSet>
Az alábbi példa az eredményként kapott EditorConfig-fájlt mutatja be a konvertálás után:
# NOTE: Requires **VS2019 16.3** or later
# Rules for ConsoleApp
# Description: Code analysis rules for ConsoleApp.csproj.
# Code files
[*.{cs,vb}]
dotnet_diagnostic.CA1001.severity = warning
dotnet_diagnostic.CA1821.severity = warning
dotnet_diagnostic.CA2213.severity = warning
dotnet_diagnostic.CA2231.severity = warning
Generált kód konfigurálása
Az elemzők forrásfájlokon futnak egy projektben, és jelentik a talált szabálysértéseket. Ezek a szabálysértések azonban nem hasznosak a rendszer által létrehozott fájlok esetében. Ilyenek például a létrehozott kódfájlok, például a tervező által létrehozott kódfájlok, a buildelési rendszer által létrehozott ideiglenes forrásfájlok stb. Az ilyen típusú fájlok esetében a felhasználók nem szerkeszthetik manuálisan a fájlokat, és nem aggódnak a szabálysértések kijavítása miatt.
Ezért az elemzőillesztő alapértelmezés szerint csak bizonyos nevű fájlokat, fájlkiterjesztéseket vagy automatikusan létrehozott fájlfejléceket vizsgál generált kódfájlokként. Egy .designer.cs vagy .generated.cs végződésű fájlnév például generált kódnak minősül. Előfordulhat azonban, hogy ezek a heurisztikusok nem képesek azonosítani a felhasználó forráskódjában található összes egyéni generált kódfájlt.
A Visual Studio 2019 16.5-ös és újabb verzióiban a végfelhasználók konfigurálhatnak bizonyos fájlokat és mappákat úgy, hogy egy Szerkesztőkonfigurációs fájlban generált kódként legyenek kezelve.
Ilyen konfiguráció hozzáadásához kövesse az alábbi lépéseket:
Ha még nem rendelkezik Szerkesztőkonfigurációs fájllal a projekthez, vegyen fel egyet.
Adja hozzá az
generated_code = true | falsebejegyzést adott fájlokhoz és mappákhoz. Ha például az összes olyan fájlt szeretné kezelni, amelynek a neve generált kódként végződik.MyGenerated.cs, használja ezt a bejegyzést:[*.MyGenerated.cs] generated_code = true
Szabálysértések letiltása
A szabálysértéseket különböző módszerekkel letilthatja. További információ: Kódelemzési szabálysértések letiltása.
A parancssor használata
Amikor a projektet a parancssorban készíti el, szabálysértések jelennek meg a build kimenetében, ha teljesülnek a következő feltételek:
Az elemzők a .NET SDK-val vagy NuGet-csomagként vannak telepítve, és nem .vsix-bővítményként .
A .NET SDK-val telepített elemzők esetében előfordulhat, hogy engedélyeznie kell az elemzőket. A kódstílusok esetében az MSBuild tulajdonság beállításával a buildeken is kényszerítheti a kódstílusokat .
A projekt kódjában egy vagy több szabály sérül.
A megsértett szabály súlyossági szintjefigyelmeztetésre van állítva, amely esetben a szabálysértések nem okozzák a build meghiúsulását, vagy hiba, amely esetben a szabálysértések a build meghiúsulását okozzák.
A buildkimenet részletessége nem befolyásolja, hogy a szabálysértések megjelennek-e. A szabálysértések még a csendes részletesség mellett is megjelennek a build kimenetében.
Ha megszokta, hogy régi elemzéseket futtat a parancssorból, akár FxCopCmd.exe, vagy a RunCodeAnalysis zászlóval msbuild-ben, akkor ezt kódelemzőkkel is elvégezheti.
Ha látni szeretné, hogy az elemző megsérti a parancssort a projekt msbuild használatával történő létrehozásakor, futtassa a következőhöz hasonló parancsot:
msbuild myproject.csproj /target:rebuild /verbosity:minimal
Az alábbi képernyőképen egy olyan projekt parancssori buildkimenete látható, amely egy elemzési szabály megsértését tartalmazza:
Függő projektek
Ha egy .NET Core-projektben egy NuGet-elemzőket tartalmazó projektre mutató hivatkozást ad hozzá, a Visual Studio automatikusan hozzáadja ezeket az elemzőket a függő projekthez. Ennek a viselkedésnek a letiltásához (például ha a függő projekt egy egységtesztprojekt), jelölje meg a NuGet-csomagot privátként a PrivateAssets hivatkozott projekt .csproj vagy .vbproj fájljában lévő attribútum beállításával:
<PackageReference Include="Microsoft.CodeAnalysis.NetAnalyzers" Version="5.0.0" PrivateAssets="all" />