Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
| Eigentum | Wert |
|---|---|
| Regel-ID | CA1877 |
| Title | Verwenden Path.Combine oder Path.Join Überladungen |
| Kategorie | Leistung |
| Korrektur ist blockierend oder nicht-blockierend | Non-breaking |
| Standardmäßig in .NET 10 aktiviert | Als Vorschlag |
Ursache
Mehrere aufeinander folgende Path.Combine Oder Path.Join Vorgänge werden verwendet, um einen Pfad zu erstellen.
Regelbeschreibung
Wenn Sie mehrere aufeinander folgende Path.Combine Oder Path.Join Vorgänge verwenden, ist es effizienter, eine Überladung zu verwenden, die mehrere Pfadsegmente akzeptiert. Dieser Ansatz reduziert die Anzahl der Zuordnungen und Funktionsaufrufe, wodurch die Leistung verbessert wird. Beide Methoden bieten Überladungen, die mehrere Parameter akzeptieren, sodass Sie aufeinander folgende Vorgänge in einen einzelnen Aufruf reduzieren können.
Wie man Verstöße behebt
Ersetzen Sie aufeinander folgende Path.Combine Oder Path.Join Vorgänge durch einen einzelnen Aufruf mithilfe einer Überladung, die alle Pfadsegmente akzeptiert.
Eine Codekorrektur , die diese Transformation automatisch ausführt, ist verfügbar.
Example
Der folgende Codeausschnitt zeigt einen Verstoß gegen 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
Der folgende Codeausschnitt behebt die Verletzung:
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
Wann sollten Warnungen unterdrückt werden?
Es ist sicher, eine Warnung aus dieser Regel zu unterdrücken, wenn die Leistung kein Problem darstellt.
Unterdrücken einer Warnung
Um nur eine einzelne Verletzung zu unterdrücken, fügen Sie der Quelldatei Präprozessoranweisungen hinzu, um die Regel zu deaktivieren und dann wieder zu aktivieren.
#pragma warning disable CA1877
// The code that's violating the rule is on this line.
#pragma warning restore CA1877
Deaktivieren Sie die Regel für eine Datei, einen Ordner oder ein Projekt, indem Sie den Schweregrad in der none auf setzen.
[*.{cs,vb}]
dotnet_diagnostic.CA1877.severity = none
Weitere Informationen finden Sie unter Vorgehensweise: Unterdrücken von Codeanalyse-Warnungen.