Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
| Propiedad | Importancia |
|---|---|
| Identificador de la regla | CA1877 |
| Título | Uso Path.Combine o Path.Join sobrecargas |
| Categoría | Rendimiento |
| La corrección es disruptiva o no disruptiva | Non-breaking |
| Habilitado de forma predeterminada en .NET 10 | Como sugerencia |
Causa
Se usan varias operaciones consecutivas Path.Combine o Path.Join para crear una ruta de acceso.
Descripción de la regla
Cuando se usan varias operaciones consecutivas Path.Combine o Path.Join , es más eficaz usar una sobrecarga que acepta varios segmentos de ruta de acceso. Este enfoque reduce el número de asignaciones y llamadas de función, lo que mejora el rendimiento. Ambos métodos proporcionan sobrecargas que aceptan varios parámetros, lo que permite contraer operaciones consecutivas en una sola llamada.
Cómo corregir infracciones
Reemplace las operaciones consecutivas Path.Combine o Path.Join por una sola llamada mediante una sobrecarga que acepte todos los segmentos de ruta de acceso.
Hay disponible una corrección de código que realiza automáticamente esta transformación.
Example
El fragmento de código siguiente muestra una infracción de 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
El siguiente fragmento de código corrige la infracción:
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
Cuándo suprimir las advertencias
Es seguro suprimir una advertencia de esta regla si el rendimiento no es un problema.
Supresión de una advertencia
Si solo quiere suprimir una única infracción, agregue directivas de preprocesador al archivo de origen para deshabilitar y volver a habilitar la regla.
#pragma warning disable CA1877
// The code that's violating the rule is on this line.
#pragma warning restore CA1877
Para deshabilitar la regla de un archivo, una carpeta o un proyecto, establezca su gravedad a none en el archivo de configuración.
[*.{cs,vb}]
dotnet_diagnostic.CA1877.severity = none
Para obtener más información, consulte Cómo suprimir advertencias de análisis de código.