Události
Vytváření inteligentních aplikací
17. 3. 23 - 21. 3. 23
Připojte se k řadě meetupů a vytvořte škálovatelná řešení AI založená na skutečných případech použití s kolegy vývojáři a odborníky.
ZaregistrovatTento prohlížeč se už nepodporuje.
Upgradujte na Microsoft Edge, abyste mohli využívat nejnovější funkce, aktualizace zabezpečení a technickou podporu.
Vlastnost | Hodnota |
---|---|
ID pravidla | CA2241 |
Název | Zadejte správné argumenty pro metody formátování |
Kategorie | Využití |
Oprava způsobující chybu nebo chybu způsobující chybu | Nenarušující |
Povoleno ve výchozím nastavení v .NET 9 | Jako návrh |
Řetězcový format
argument předaný metodě, například WriteLine, Writenebo System.String.Format neobsahuje položku formátu, která odpovídá každému argumentu objektu, nebo naopak.
Ve výchozím nastavení toto pravidlo analyzuje pouze volání tří dříve zmíněných metod, ale dá se nakonfigurovat.
Argumenty pro metody, jako WriteLineje , Writea Format skládají se z formátovací řetězec následovaný několika System.Object instancemi. Formátovací řetězec se skládá z textových a vložených formátových položek formuláře {index[,alignment][:formatString]}
. Index je celé číslo založené na nule, které označuje, které objekty se mají formátovat. Pokud objekt nemá odpovídající index ve formátovacím řetězci, bude objekt ignorován. Pokud objekt určený indexem neexistuje, System.FormatException vyvolá se za běhu.
Chcete-li opravit porušení tohoto pravidla, zadejte položku formátu pro každý argument objektu a zadejte argument objektu pro každou položku formátu.
Nepotlačujte upozornění na toto pravidlo.
Pomocí následujících možností můžete nakonfigurovat další metody pro spuštění tohoto pravidla.
Můžete nakonfigurovat názvy dalších metod formátování řetězců, které by měly být analyzovány tímto pravidlem. Pokud chcete například zadat všechny metody pojmenované MyFormat
jako metody formátování řetězců, můžete do souboru .editorconfig v projektu přidat následující pár klíč-hodnota:
dotnet_code_quality.CA2241.additional_string_formatting_methods = MyFormat
Povolené formáty názvů metod v hodnotě možnosti (oddělené ):|
M:
předponou.Příklady:
Hodnota možnosti | Shrnutí |
---|---|
dotnet_code_quality.CA2241.additional_string_formatting_methods = MyFormat |
Odpovídá všem metodám pojmenovanými MyFormat v kompilaci. |
dotnet_code_quality.CA2241.additional_string_formatting_methods = MyFormat1|MyFormat2 |
Porovná všechny metody pojmenované buď MyFormat1 nebo MyFormat2 v kompilaci. |
dotnet_code_quality.CA2241.additional_string_formatting_methods = NS.MyType.MyFormat(ParamType) |
Odpovídá konkrétní metodě MyFormat s daným plně kvalifikovaným podpisem. |
dotnet_code_quality.CA2241.additional_string_formatting_methods = NS1.MyType1.MyFormat1(ParamType)|NS2.MyType2.MyFormat2(ParamType) |
Odpovídá konkrétním metodám MyFormat1 a MyFormat2 s příslušným plně kvalifikovaným podpisem. |
Místo zadávání explicitního seznamu dalších metod formátování řetězců můžete nakonfigurovat analyzátor tak, aby se automaticky pokusil určit metodu formátování řetězce. Ve výchozím nastavení je tato možnost zakázaná. Pokud je tato možnost povolená, považuje se za metodu string format
formátování řetězce jakákoli metoda s parametrem, za kterou params object[]
následuje parametr:
dotnet_code_quality.CA2241.try_determine_additional_string_formatting_methods_automatically = true
Následující příklad ukazuje dvě porušení pravidla.
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));
}
}
Zpětná vazba k produktu .NET
.NET je open source projekt. Vyberte odkaz pro poskytnutí zpětné vazby:
Události
Vytváření inteligentních aplikací
17. 3. 23 - 21. 3. 23
Připojte se k řadě meetupů a vytvořte škálovatelná řešení AI založená na skutečných případech použití s kolegy vývojáři a odborníky.
Zaregistrovat