CA2241: Helyes argumentumok megadása a formázási módszerekhez
Tulajdonság | Érték |
---|---|
Szabályazonosító | CA2241 |
Cím | A formázási módszerek megfelelő argumentumainak megadása |
Kategória | Használat |
A javítás kompatibilitástörő vagy nem törik | Nem törés |
Alapértelmezés szerint engedélyezve a .NET 8-ban | Javaslatként |
Ok
A format
metódusnak átadott sztringargumentum, például WriteLineaz , Writevagy System.String.Format nem tartalmaz olyan formátumelemet, amely megfelel az egyes objektumargumentumoknak, vagy fordítva.
Ez a szabály alapértelmezés szerint csak a korábban említett három metódus hívásait elemzi, de ez konfigurálható.
Szabály leírása
Az olyan metódusok argumentumai, mint a WriteLine, Writeés Format egy formátumsztringből állnak, amelyet több System.Object példány követ. A formátumsztring az űrlap {index[,alignment][:formatString]}
szöveges és beágyazott formázási elemeiből áll. Az "index" egy nulla alapú egész szám, amely azt jelzi, hogy melyik objektumot kell formázni. Ha egy objektumnak nincs megfelelő indexe a formátumsztringben, a rendszer figyelmen kívül hagyja az objektumot. Ha az "index" által megadott objektum nem létezik, a rendszer futtatáskor ad ki egy System.FormatException objektumot.
Szabálysértések kijavítása
A szabály megsértésének kijavításához adjon meg egy formázási elemet minden egyes objektumargumentumhoz, és adjon meg egy objektumargumentumot az egyes formázási elemekhez.
Mikor kell letiltani a figyelmeztetéseket?
Ne tiltsa el a szabály figyelmeztetését.
Kód konfigurálása elemzéshez
A következő beállítások segítségével további metódusokat konfigurálhat a szabály futtatásához.
További sztringformázási módszerek
Konfigurálhat további sztringformázási módszereket, amelyeket a szabálynak elemeznie kell. Ha például sztringformázási metódusként elnevezett MyFormat
összes metódust meg szeretne adni, az alábbi kulcs-érték párokat hozzáadhatja a projekt egyik .editorconfig fájljához:
dotnet_code_quality.CA2241.additional_string_formatting_methods = MyFormat
Engedélyezett metódusnévformátumok a beállításértékben (a következővel |
elválasztva):
- Csak a metódus neve (a névvel rendelkező összes metódust tartalmazza, függetlenül attól, hogy milyen típust vagy névteret tartalmaz)
- A szimbólum dokumentációazonosító-formátumában szereplő teljes nevek opcionális
M:
előtaggal.
Példák:
Beállítás értéke | Összegzés |
---|---|
dotnet_code_quality.CA2241.additional_string_formatting_methods = MyFormat |
Megfelel a fordításban elnevezett MyFormat összes metódusnak. |
dotnet_code_quality.CA2241.additional_string_formatting_methods = MyFormat1|MyFormat2 |
Megfelel a fordításban vagy MyFormat2 a MyFormat1 fordításban szereplő összes metódusnak. |
dotnet_code_quality.CA2241.additional_string_formatting_methods = NS.MyType.MyFormat(ParamType) |
Megfelel a megadott metódusnak MyFormat a megadott teljes aláírással. |
dotnet_code_quality.CA2241.additional_string_formatting_methods = NS1.MyType1.MyFormat1(ParamType)|NS2.MyType2.MyFormat2(ParamType) |
Egyezik a megadott metódusokkal MyFormat1 és MyFormat2 a megfelelő teljes aláírással. |
További sztringformázási módszerek automatikus meghatározása
Ahelyett, hogy további sztringformázási módszerek explicit listáját adja meg, konfigurálhatja az elemzőt, hogy automatikusan megkísérlje meghatározni a sztringformázási módszert. Alapértelmezés szerint ez a beállítás le van tiltva. Ha a beállítás engedélyezve van, a paraméterrel és paraméterrel params object[]
rendelkező string format
metódusok sztringformázási módszernek minősülnek:
dotnet_code_quality.CA2241.try_determine_additional_string_formatting_methods_automatically = true
Példa
Az alábbi példa a szabály két szabálysértést mutat be.
Imports System
Namespace ca2241
Class CallsStringFormat
Sub CallFormat()
Dim file As String = "file name"
Dim errors As Integer = 13
' Violates the rule.
Console.WriteLine(String.Format("{0}", file, errors))
Console.WriteLine(String.Format("{0}: {1}", file, errors))
' Violates the rule and generates a FormatException at runtime.
Console.WriteLine(String.Format("{0}: {1}, {2}", file, errors))
End Sub
End Class
End Namespace
class CallsStringFormat
{
void CallFormat()
{
string file = "file name";
int errors = 13;
// Violates the rule.
Console.WriteLine(string.Format("{0}", file, errors));
Console.WriteLine(string.Format("{0}: {1}", file, errors));
// Violates the rule and generates a FormatException at runtime.
Console.WriteLine(string.Format("{0}: {1}, {2}", file, errors));
}
}
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: