Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
| Propriedade | Valor |
|---|---|
| ID da regra | CA1877 |
| Título | Utilização Path.Combine ou Path.Join sobrecargas |
| Categoria | Desempenho |
| A correção é invasiva ou não invasiva | Non-breaking |
| Habilitado por padrão no .NET 10 | Como sugestão |
Motivo
Várias operações consecutivas Path.Combine são Path.Join usadas para criar um caminho.
Descrição da regra
Quando você usa várias operações ou Path.Join consecutivasPath.Combine, é mais eficiente usar uma sobrecarga que aceita vários segmentos de caminho. Essa abordagem reduz o número de alocações e chamadas de função, melhorando o desempenho. Ambos os métodos fornecem sobrecargas que aceitam vários parâmetros, permitindo que você recolha operações consecutivas em uma única chamada.
Como corrigir violações
Substitua operações ou Path.Join consecutivas Path.Combine por uma única chamada usando uma sobrecarga que aceite todos os segmentos de caminho.
Uma correção de código que executa automaticamente essa transformação está disponível.
Example
O trecho de código a seguir mostra uma violação 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
O trecho de código a seguir corrige a violação:
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
Quando suprimir avisos
É seguro suprimir um aviso dessa regra se o desempenho não for uma preocupação.
Suprimir um aviso
Se você quiser apenas suprimir uma única violação, adicione diretivas de pré-processador ao seu arquivo de origem para desativar e, em seguida, reativar a regra.
#pragma warning disable CA1877
// The code that's violating the rule is on this line.
#pragma warning restore CA1877
Para desabilitar a regra de um arquivo, pasta ou projeto, defina sua gravidade como none no arquivo de configuração.
[*.{cs,vb}]
dotnet_diagnostic.CA1877.severity = none
Para obter mais informações, consulte Como suprimir avisos de análise de código.