Megosztás a következőn keresztül:


CA1877: "Path.Combine" vagy "Path.Join" túlterhelések használata

Ingatlan Érték
Szabályazonosító CA1877
Title Használat Path.Combine vagy Path.Join túlterhelés
Kategória teljesítmény
A javítás törést okoz vagy nem okoz törést Nem törhető
Alapértelmezés szerint engedélyezve a .NET 10-ben Javaslatként

Oka

Egy útvonal létrehozásához több egymást követő Path.Combine vagy Path.Join művelet is használható.

Szabály leírása

Ha több egymást követő Path.Combine vagy Path.Join műveletet használ, hatékonyabb olyan túlterhelést használni, amely több elérésiút-szegmenst fogad el. Ez a megközelítés csökkenti a foglalások és a függvényhívások számát, és javítja a teljesítményt. Mindkét módszer olyan túlterheléseket biztosít, amelyek több paramétert is elfogadnak, így egyetlen hívásba csukhatja össze az egymást követő műveleteket.

Szabálysértések kijavítása

Cserélje le az egymást követő Path.Combine vagy Path.Join műveleteket egyetlen hívásra egy túlterheléssel, amely minden elérési útszakaszt elfogad.

Elérhető egy kódjavítás , amely automatikusan végrehajtja ezt az átalakítást.

Example

A következő kódrészlet a CA1877 megsértése esetén jelenik meg:

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

A következő kódrészlet kijavítja a szabálysértést:

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

Mikor kell letiltani a figyelmeztetéseket?

Ha a teljesítmény nem okoz problémát, nyugodtan el lehet tiltani a szabály figyelmeztetését.

Figyelmeztetés mellőzése

Ha csak egyetlen szabálysértést szeretne letiltani, adjon hozzá előfeldolgozási irányelveket a forrásfájlhoz a szabály letiltásához és újbóli engedélyezéséhez.

#pragma warning disable CA1877
// The code that's violating the rule is on this line.
#pragma warning restore CA1877

Ha le szeretné tiltani egy fájl, mappa vagy projekt szabályát, állítsa annak súlyosságát none a konfigurációs fájlban.

[*.{cs,vb}]
dotnet_diagnostic.CA1877.severity = none

További információ: Kódelemzési figyelmeztetések letiltása.

Lásd még