Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
| 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.