Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
| Vlastnictví | Hodnota |
|---|---|
| Identifikátor pravidla | CA1877 |
| Titul | Použití Path.Combine nebo Path.Join přetížení |
| Kategorie | výkon |
| Oprava je destruktivní nebo nedestruktivní | Non-breaking |
| Povoleno ve výchozím nastavení v .NET 10 | Jako návrh |
Příčina
K sestavení cesty se používá několik po sobě jdoucích Path.Combine operací nebo Path.Join operací.
Popis pravidla
Pokud používáte více po sobě jdoucích Path.Combine operací nebo Path.Join operací, je efektivnější použít přetížení, které přijímá více segmentů cesty. Tento přístup snižuje počet přidělení a volání funkcí, což zlepšuje výkon. Obě metody poskytují přetížení, která přijímají více parametrů a umožňují sbalit po sobě jdoucí operace do jednoho volání.
Jak opravit porušení
Nahraďte po sobě jdoucí Path.Combine nebo Path.Join operace jedním voláním pomocí přetížení, které přijímá všechny segmenty cesty.
Je k dispozici oprava kódu , která tuto transformaci automaticky provede.
Example
Následující fragment kódu ukazuje porušení ca1877:
public string GetFilePath(string folder, string subfolder, string filename)
{
// Violation.
string temp = Path.Combine(folder, subfolder);
return Path.Combine(temp, filename);
}
public string GetLogPath(string baseDir, string date, string category)
{
// Violation.
return Path.Join(Path.Join(baseDir, date), category);
}
Public Function GetFilePath(folder As String, subfolder As String, filename As String) As String
' Violation.
Dim temp As String = Path.Combine(folder, subfolder)
Return Path.Combine(temp, filename)
End Function
Public Function GetLogPath(baseDir As String, [date] As String, category As String) As String
' Violation.
Return Path.Join(Path.Join(baseDir, [date]), category)
End Function
Následující fragment kódu opraví porušení zásad:
public string GetFilePath(string folder, string subfolder, string filename)
{
// No violation.
return Path.Combine(folder, subfolder, filename);
}
public string GetLogPath(string baseDir, string date, string category)
{
// No violation.
return Path.Join(baseDir, date, category);
}
Public Function GetFilePath(folder As String, subfolder As String, filename As String) As String
' No violation.
Return Path.Combine(folder, subfolder, filename)
End Function
Public Function GetLogPath(baseDir As String, [date] As String, category As String) As String
' No violation.
Return Path.Join(baseDir, [date], category)
End Function
Kdy potlačit upozornění
Pokud výkon není problém, je bezpečné potlačit upozornění z tohoto pravidla.
Potlačte upozornění
Pokud chcete pouze potlačit jedno porušení, přidejte do zdrojového souboru direktivy preprocesoru, abyste pravidlo zakázali a znovu povolili.
#pragma warning disable CA1877
// The code that's violating the rule is on this line.
#pragma warning restore CA1877
Chcete-li pravidlo pro soubor, složku nebo projekt zakázat, nastavte jeho závažnost na none v konfiguračním souboru .
[*.{cs,vb}]
dotnet_diagnostic.CA1877.severity = none
Další informace naleznete v tématu Jak potlačit upozornění analýzy kódu.