C# Fordító beállításai hibák és figyelmeztetések jelentéséhez

Az alábbi beállítások szabályozzák, hogy a fordító hogyan jelent hibákat és figyelmeztetéseket. Az új MSBuild szintaxis félkövér formátumban jelenik meg. A régebbi csc.exe szintaxis a .code style

  • Figyelmeztetési szint / -warn: Figyelmeztetési szint beállítása.
  • AnalysisLevel: Az opcionális figyelmeztetési szint beállítása.
  • TreatWarningsAsErrors / -warnaserror: Az összes figyelmeztetés kezelése hibaként
  • WarningsAsErrors / -warnaserror: Egy vagy több figyelmeztetés kezelése hibaként
  • WarningsNotAsErrors / -warnnotaserror: Egy vagy több figyelmeztetés kezelése nem hibaként
  • NoWarn / -nowarn: Állítsa be a letiltott figyelmeztetések listáját.
  • CodeAnalysisRuleSet / -ruleset: Adjon meg egy szabálykészletfájlt, amely letiltja az adott diagnosztikát.
  • ErrorLog / -errorlog: Adjon meg egy fájlt, amely naplózza az összes fordító és elemző diagnosztikát.
  • ReportAnalyzer / -reportanalyzer: További elemzési adatok jelentése, például végrehajtási idő.

WarningLevel

A WarningLevel beállítás megadja a fordító megjelenítendő figyelmeztetési szintjét.

<WarningLevel>3</WarningLevel>

Az elemérték az összeállításhoz megjelenítendő figyelmeztetési szint: Az alacsonyabb számok csak a nagy súlyosságú figyelmeztetéseket jelenítik meg. A nagyobb számok további figyelmeztetéseket mutatnak. Az értéknek nullának vagy pozitív egész számnak kell lennie:

Figyelmeztetési szint Értelmezés
0 Az összes figyelmeztető üzenet kibocsátásának kikapcsolása.
0 Súlyos figyelmeztető üzeneteket jelenít meg.
2 1. szintű figyelmeztetéseket és bizonyos, kevésbé súlyos figyelmeztetéseket jelenít meg, például az osztálytagok elrejtésével kapcsolatos figyelmeztetéseket.
3 Megjeleníti a 2. szintű figyelmeztetéseket, valamint bizonyos, kevésbé súlyos figyelmeztetéseket, például a mindig kiértékelt true vagy falsekiértékelt kifejezésekre vonatkozó figyelmeztetéseket.
4 (alapértelmezett) Megjeleníti az összes 3. szintű figyelmeztetést, valamint az információs figyelmeztetéseket.

Figyelmeztetés

A fordító parancssora 4-nél nagyobb értékeket fogad el a figyelmeztetőhullám-figyelmeztetések engedélyezéséhez. A .NET SDK azonban úgy állítja be a WarningLevelet , hogy megfeleljen a projektfájl AnalysisLevel elemének.

Ha információt szeretne kapni egy hibáról vagy figyelmeztetésről, keresse meg a hibakódot a súgóindexben. A hibákról vagy figyelmeztetésekről további információt a C# fordítóhibái című témakörben talál. A TreatWarningsAsErrors használatával minden figyelmeztetést hibaként kezelhet. Bizonyos figyelmeztetések letiltásához használja a DisabledWarnings parancsot.

Elemzési szint

Az AnalysisLevel beállítás további figyelmeztető hullámokat és elemzőket határoz meg az engedélyezéshez. A figyelmeztetési hullámra vonatkozó figyelmeztetések további ellenőrzések, amelyek javítják a kódot, vagy biztosítják, hogy kompatibilisek legyenek a közelgő kiadásokkal. Az elemzők lint-szerű képességet biztosítanak a kód fejlesztéséhez.

<AnalysisLevel>preview</AnalysisLevel>
Elemzési szint Értelmezés
5 Megjeleníti az 5. figyelmeztető hullám összes választható figyelmeztetését.
6 Megjeleníti az összes választható figyelmeztetési hullám 6 figyelmeztetését.
7 Megjeleníti az összes választható figyelmeztetési hullám 7 figyelmeztetését.
legújabb (alapértelmezett) Megjeleníti az összes tájékoztató figyelmeztetést, beleértve az aktuális kiadást is.
preview Megjeleníti az összes tájékoztató figyelmeztetést, beleértve a legújabb előzetes kiadást is.
Nincs Az összes tájékoztató figyelmeztetés kikapcsolása.

További információ az opcionális figyelmeztetésekről: Figyelmeztetési hullámok.

Ha információt szeretne kapni egy hibáról vagy figyelmeztetésről, keresse meg a hibakódot a súgóindexben. A hibákról vagy figyelmeztetésekről további információt a C# fordítóhibái című témakörben talál. A TreatWarningsAsErrors használatával minden figyelmeztetést hibaként kezelhet. Bizonyos figyelmeztetések letiltásához használja a NoWarn parancsot.

TreatWarningsAsErrors

A TreatWarningsAsErrors beállítás az összes figyelmeztetést hibaként kezeli. A WarningsAsErrors használatával is csak néhány figyelmeztetést állíthat be hibaként. Ha bekapcsolja a TreatWarningsAsErrors szolgáltatást, a WarningsNotAsErrors használatával felsorolhatja azokat a figyelmeztetéseket, amelyeket nem szabad hibaként kezelni.

<TreatWarningsAsErrors>true</TreatWarningsAsErrors>

A rendszer ehelyett az összes figyelmeztető üzenetet hibaüzenetként jelenti. A buildelési folyamat leáll (nincsenek kimeneti fájlok). Alapértelmezés szerint a TreatWarningsAsErrors nincs érvényben, ami azt jelenti, hogy a figyelmeztetések nem akadályozzák a kimeneti fájlok létrehozását. Ha azt szeretné, hogy csak néhány konkrét figyelmeztetés legyen hibaként kezelve, megadhat egy vesszővel tagolt listát a hibaként kezelendő figyelmeztetési számokról. A null értékű figyelmeztetések halmaza a Nullable rövidítéssel adható meg. A WarningLevel használatával megadhatja, hogy a fordító milyen szintű figyelmeztetéseket jelenítsen meg. Bizonyos figyelmeztetések letiltásához használja a NoWarn parancsot.

Fontos

Két apró különbség van a <TreatWarningsAsErrors> csproj-fájl elemének és az warnaserror MSBuild parancssori kapcsolójának használata között. A TreatWarningsAsErrors csak a C# fordítóra van hatással, a csproj-fájlban lévő többi MSBuild-feladatra nem. A warnaserror parancssori kapcsoló minden tevékenységre hatással van. Másodszor, a fordító nem hoz létre kimenetet semmilyen figyelmeztetésen a TreatWarningsAsErrors használata esetén. A fordító kimenetet hoz létre a parancssori warnaserror kapcsoló használatakor.

WarningsAsErrors és WarningsNotAsErrors

A WarningsAsErrors és a WarningsNotAsErrors beállítások felülbírálják a TreatWarningsAsErrors beállítást a figyelmeztetések listájához. Ez a beállítás az összes CS-figyelmeztetés esetén használható. A "CS" előtag nem kötelező. Használhatja a számot vagy a "CS"-t, amelyet a hiba vagy a figyelmeztetési szám követ. A figyelmeztetéseket befolyásoló egyéb elemekért tekintse meg az MSBuild közös tulajdonságait.

A 0219-as és a 0168-as figyelmeztetések engedélyezése hibákként:

<WarningsAsErrors>0219,CS0168</WarningsAsErrors>

Tiltsa le ugyanazokat a figyelmeztetéseket, mint a hibák:

<WarningsNotAsErrors>0219,CS0168</WarningsNotAsErrors>

A WarningsAsErrors használatával hibaként konfigurálhat figyelmeztetéseket. A WarningsNotAsErrors használatával olyan figyelmeztetéseket konfigurálhat, amelyek nem lehetnek hibák, ha minden figyelmeztetést hibaként állított be.

NoWarn

A NoWarn beállítással letilthatja, hogy a fordító egy vagy több figyelmeztetést jelenítsen meg, ahol warningnumber1warningnumber2 a fordító el szeretné tiltani a figyelmeztetési számokat. Több figyelmeztető szám vesszővel való elválasztása.

<NoWarn>warningnumber1,warningnumber2</NoWarn>

Csak a figyelmeztető azonosító numerikus részét kell megadnia. Ha például el szeretné tiltani a CS0028-at, megadhatja <NoWarn>28</NoWarn>. A fordító csendesen figyelmen kívül hagyja a NoWarnnak átadott, a korábbi kiadásokban érvényes, de eltávolított figyelmeztető számokat. A CS0679 például érvényes volt a Visual Studio .NET 2002 fordítójában, de később el lett távolítva.

A NoWarn beállítás nem tudja letiltani az alábbi figyelmeztetéseket:

  • Fordító figyelmeztetés (1. szint) CS2002
  • Fordító figyelmeztetése (1. szint) CS2023
  • Fordító figyelmeztetés (1. szint) CS2029

Vegye figyelembe, hogy a figyelmeztetések a kód esetleges problémájának jelzésére szolgálnak, ezért tisztában kell lennie az adott figyelmeztetések letiltásának kockázatával. A NoWarn csak akkor használható, ha biztos benne, hogy a figyelmeztetés hamis pozitív, és nem lehet futásidejű hiba.

Érdemes lehet célzottabb megközelítést használni a figyelmeztetések letiltásához:

  • A legtöbb fordító csak bizonyos kódsorokra vonatkozóan biztosít módot a figyelmeztetések letiltására, így továbbra is áttekintheti a figyelmeztetéseket, ha azok ugyanabban a projektben máshol fordulnak elő. Ha csak a C# kód egy adott részében szeretné letiltani a figyelmeztetést, használja #pragma figyelmeztetést.

  • Ha a cél az, hogy tömörebb és koncentráltabb kimenet jelenjen meg a buildnaplóban, érdemes lehet módosítani a buildnapló részletességét. További információ : A build naplófájljainak megtekintése, mentése és konfigurálása.

Ha a NoWarn bármely korábban beállított értékéhez szeretne figyelmeztetési számokat hozzáadni felülírás nélkül, hivatkozzon az alábbi példában látható módon$(NoWarn):

   <NoWarn>$(NoWarn);newwarningnumber3;newwarningnumber4</NoWarn>

CodeAnalysisRuleSet

Adjon meg egy adott diagnosztikát konfiguráló szabálykészletfájlt.

<CodeAnalysisRuleSet>MyConfiguration.ruleset</CodeAnalysisRuleSet>

Hol MyConfiguration.ruleset található a szabálykészletfájl elérési útja. A szabálykészletek használatáról további információt a Visual Studio szabálykészletekkel kapcsolatos dokumentációjában talál.

Hibanapló

Adjon meg egy fájlt, amely naplózza az összes fordító és elemző diagnosztikát.

<ErrorLog>compiler-diagnostics.sarif</ErrorLog>

A Hibanapló beállítás hatására a fordító statikus elemzési eredmények csomópontformátumú (SARIF) naplót ad ki. A SARIF-naplókat általában olyan eszközök olvassák, amelyek elemzik a fordító- és elemződiagnosztika eredményeit.

A SARIF formátumot az elem argumentumával versionErrorLog adhatja meg:

<ErrorLog>logVersion21.json,version=2.1</ErrorLog>

Az elválasztó lehet vessző (,) vagy pontosvessző (;). A verzió érvényes értékei a következők: "1", "2" és "2.1". Az alapértelmezett érték az "1". A "2" és a "2.1" egyaránt a SARIF 2.1.0-s verzióját jelenti.

ReportAnalyzer

Jelentéskészítés további elemzőadatokról, például végrehajtási időről.

<ReportAnalyzer>true</ReportAnalyzer>

A ReportAnalyzer beállítás hatására a fordító további MSBuild naplóadatokat bocsát ki, amelyek részletezik a buildben lévő elemzők teljesítményjellemzőit. Ezt általában az elemző szerzői használják az elemző ellenőrzésének részeként.

Fontos

A jelző által generált további naplóadatok csak a -verbosity:detailed parancssori beállítás használatakor jönnek létre. További információt az MSBuild dokumentációjában található kapcsolókról szóló cikkben talál.