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 false kié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 figyelmeztető azonosítók listáján kívül megadhatja azt a sztringet nullable
is, amely hibaként kezeli a null értékűséggel kapcsolatos összes figyelmeztetést.
Engedélyezze a 0219- és 0168-as figyelmeztetéseket, valamint az összes null értékű figyelmeztetést hibaként:
<WarningsAsErrors>0219,CS0168,nullable</WarningsAsErrors>
Tiltsa le ugyanazokat a figyelmeztetéseket, mint a hibák:
<WarningsNotAsErrors>0219,CS0168,nullable</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 warningnumber1
warningnumber2
a fordító el szeretné tiltani a figyelmeztetési számokat. Több figyelmeztető szám vesszővel való elválasztása. Megadhatja nullable
, hogy letiltsa a null értékűséggel kapcsolatos összes figyelmeztetést.
<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 version
ErrorLog
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.