A kódelemzés konfigurációs beállításai

A kódelemzési szabályok különböző konfigurációs lehetőségeket tartalmaznak. Ezen beállítások némelyike kulcs-érték párként van megadva egy elemző konfigurációs fájlban a szintaxis <option key> = <option value>használatával. A kódelemzést egészében konfiguráló egyéb beállítások MSBuild tulajdonságként érhetők el a projektfájlban.

A leggyakrabban konfigurálható beállítás a szabály súlyossága. Bármilyen szabályhoz konfigurálhatja a súlyossági szintet, beleértve a kódminőségi szabályokat és a kódstílus-szabályokat. Ha például figyelmeztetésként szeretne engedélyezni egy szabályt, adja hozzá a következő kulcs-érték párot egy elemző konfigurációs fájlhoz:

dotnet_diagnostic.<rule ID>.severity = warning

További beállításokat is konfigurálhat a szabály viselkedésének testreszabásához:

  • A kódminőségi szabályok viselkedési lehetőségekkel rendelkeznek, például hogy a szabály mely metódusnevekre vonatkozzanak.
  • A kódstílus-szabályok stílusbeállítási lehetőségekkel rendelkeznek, például ahol új sorokra van szükség.
  • A külső elemzőszabályok saját konfigurációs beállításokat határozhatnak meg egyéni kulcsnevekkel és értékformátumokkal.

Általános beállítások

Ezek a lehetőségek a kódelemzés egészére vonatkoznak. Ezek nem alkalmazhatók csak egy adott szabályra.

További lehetőségeket a Kódelemzés tulajdonságai című témakörben talál.

Elemzési mód

Bár a .NET SDK tartalmazza az összes kódelemzési szabályt, alapértelmezés szerint csak néhány engedélyezve van. Az elemzési mód határozza meg, hogy mely szabályok legyenek engedélyezve, ha vannak ilyenek. Választhat agresszívebb elemzési módot, ahol a legtöbb vagy az összes szabály engedélyezve van. Vagy választhat egy konzervatívabb elemzési módot is, ahol a legtöbb vagy az összes szabály le van tiltva, és igény szerint engedélyezheti az adott szabályok használatát. Az elemzési módot úgy állíthatja be, hogy hozzáadja az <AnalysisMode> MSBuild tulajdonságot a projektfájlhoz.

<PropertyGroup>
  <AnalysisMode>Recommended</AnalysisMode>
</PropertyGroup>

A .NET 6-tól kezdve tömegesen is engedélyezheti a szabályok kategóriáját az <AnalysisMode<Category>> MSBuild tulajdonság használatával.

Feljegyzés

Ha a kódelemzést az MSBuild-tulajdonságokkal( például) AnalysisModekonfigurálja, akkor a rendszer figyelmen kívül hagyja a konfigurációs fájlban megadott tömeges konfigurációs beállításokat. Ha például egy .editorconfig fájlban az összes szabályt vagy szabálykategóriát tömegesen engedélyezte, a rendszer figyelmen kívül hagyja ezt a konfigurációt.

Kódelemzés engedélyezése

A kódelemzés alapértelmezés szerint engedélyezve van a .NET 5-ös és újabb verzióit megcélozó projektek esetében. Ha a .NET 5+ SDK-val rendelkezik, de a projekt egy másik .NET-implementációt céloz meg, manuálisan engedélyezheti a kódelemzést úgy, hogy a projektfájl EnableNETAnalyzers tulajdonságát a következőre trueállítja.

<PropertyGroup>
  <EnableNETAnalyzers>true</EnableNETAnalyzers>
</PropertyGroup>

Generált kód kizárása

A .NET-kódelemző figyelmeztetések nem hasznosak a létrehozott kódfájloknál, például a tervező által létrehozott fájloknál, amelyeket a felhasználók nem szerkeszthetik a szabálysértések kijavítása érdekében. A legtöbb esetben a kódelemzők kihagyják a létrehozott kódfájlokat, és nem jelentenek szabálysértéseket ezeken a fájlokon.

Alapértelmezés szerint az egyes fájlkiterjesztésekkel vagy automatikusan létrehozott fájlfejlécekkel rendelkező fájlok generált kódfájlokként lesznek kezelve. Egy fájlnév például generált kóddal .designer.cs végződik vagy .generated.cs generáltnak minősül. Ezzel a konfigurációs beállítással további elnevezési mintákat adhat meg, amelyek generált kódként kezelendők. További fájlokat és mappákat úgy konfigurálhat, hogy hozzáad egy bejegyzést generated_code = true | false a konfigurációs fájlhoz. Ha például az összes olyan fájlt szeretné kezelni, amelynek a neve generált kódként végződik .MyGenerated.cs , adja hozzá a következő bejegyzést:

[*.MyGenerated.cs]
generated_code = true

Szabályspecifikus beállítások

A szabályspecifikus beállítások egyetlen szabályra, szabálykészletre vagy minden szabályra alkalmazhatók. A szabályspecifikus beállítások a következők:

Súlyossági szint

Az alábbi táblázat az összes elemző szabályhoz konfigurálható különböző szabály súlyosságokat mutatja be, beleértve a kódminőséget és a kódstílus-szabályokat .

Súlyosság konfigurációs értéke Buildelési idő viselkedése
error A szabálysértések buildelési hibákként jelennek meg, és a buildek meghiúsulását okozzák.
warning A szabálysértések összeállítási figyelmeztetésekként jelennek meg, de nem okozzák a buildek meghiúsulását (kivéve, ha van lehetőség a figyelmeztetések hibaként való kezelésére).
suggestion A szabálysértések buildüzenetekként és javaslatokként jelennek meg a Visual Studio IDE-ben. (A Visual Studióban a javaslatok három szürke pontként jelennek meg az első két karakter alatt.)
silent A szabálysértések nem láthatók a felhasználó számára.

A kódstílus-szabályok esetében azonban a Visual Studio kódgenerálási funkciói továbbra is ebben a stílusban hoznak létre kódot. Ezek a szabályok szintén részt vesznek a törlésben, és megjelennek a Visual Studio Gyorsműveletek és újrabontások menüjében.
none A szabály teljesen el van tiltva.

A kódstílus-szabályok esetében azonban a Visual Studio kódgenerálási funkciói továbbra is ebben a stílusban hoznak létre kódot.
default A rendszer a szabály alapértelmezett súlyosságát használja. Az egyes .NET-kiadások alapértelmezett súlyosságai a roslyn-analyzers adattárban jelennek meg. Ebben a táblában a "Letiltva" kifejezés a none"Rejtett" értéknek felel meg silent, az "Információ" pedig a következőnek suggestionfelel meg.

Hatókör

  • Egyetlen szabály

    Ha egyetlen szabályhoz szeretné beállítani a szabály súlyosságát, használja az alábbi szintaxist.

    dotnet_diagnostic.<rule ID>.severity = <severity value>
    
  • Szabályok kategóriája

    A szabálykategóriák alapértelmezett súlyossági fokának beállításához használja az alábbi szintaxist. Ez a súlyossági beállítás azonban csak az adott kategóriában alapértelmezés szerint engedélyezett szabályokat érinti.

    dotnet_analyzer_diagnostic.category-<rule category>.severity = <severity value>
    

    A különböző kategóriákat szabálykategóriákban soroljuk fel és ismertetjük. Emellett egy adott szabály kategóriáját is megtalálhatja a hivatkozási oldalon, például a CA1000-et.

  • Minden szabály

    Az összes elemzőszabály alapértelmezett szabály súlyosságának beállításához használja az alábbi szintaxist. Ez a súlyossági beállítás azonban csak az alapértelmezés szerint engedélyezett szabályokat érinti.

    dotnet_analyzer_diagnostic.severity = <severity value>
    

Fontos

Ha több szabály súlyossági szintjét egyetlen bejegyzéssel konfigurálja, akár egy szabálykategóriára, akár az összes szabályra vonatkozóan, a súlyosság csak az alapértelmezés szerint engedélyezett szabályokra vonatkozik. Ha pedig az MSBuild properties <AnalysisMode> vagy< AnalysisLevel> használatával engedélyezi az összes szabályt, a rendszer figyelmen kívül hagyja a tömeges dotnet_analyzer_diagnostic beállításokat. Ezért érdemes engedélyezni egy szabálykategóriát az AnalysisMode<Category>>All beállításával.<

Feljegyzés

Az egyetlen szabály dotnet_diagnosticsúlyossági beállításának előtagja kissé eltér a kategória vagy az összes szabály dotnet_analyzer_diagnosticsúlyosságának konfigurálásához használt előtagtól.

Prioritás

Ha több súlyossági konfigurációs bejegyzése van, amelyek ugyanarra a szabályazonosítóra alkalmazhatók, a rendszer a következő sorrendben választja ki a prioritást:

  • A kategóriák bejegyzései elsőbbséget élveznek az összes elemzőszabály bejegyzéseinél.
  • Az egyes szabályok azonosító szerinti bejegyzései elsőbbséget élveznek egy kategória bejegyzésével szemben.

Tekintse meg a következő példát, ahol a CA1822 a "Teljesítmény" kategóriát tartalmazza:

[*.cs]
dotnet_diagnostic.CA1822.severity = error
dotnet_analyzer_diagnostic.category-performance.severity = warning
dotnet_analyzer_diagnostic.severity = suggestion

Az előző példában mindhárom súlyossági bejegyzés a CA1822-ra vonatkozik. A megadott elsőbbségi szabályok használatával azonban az első szabályazonosító-alapú bejegyzés nyer a következő bejegyzéseknél. Ebben a példában a CA1822 tényleges súlyossága errora következő lesz: . A "Teljesítmény" kategórián belüli összes többi szabály súlyosságú warninglesz.

A fájlközi elsőbbséget a Konfigurációs fájlok című cikk Precedence szakaszában találja.