Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
| Propriété | Valeur |
|---|---|
| Identificateur de la règle | CA1877 |
| Titre | Utilisation Path.Combine ou Path.Join surcharges |
| Catégorie | Niveau de performance |
| Le correctif est cassant ou non cassant | Non-breaking |
| Activé par défaut dans .NET 10 | À titre de suggestion |
La cause
Plusieurs opérations consécutives ou Path.Join consécutives Path.Combine sont utilisées pour générer un chemin d’accès.
Description de la règle
Lorsque vous utilisez plusieurs opérations consécutives ou Path.Join opérationnellesPath.Combine, il est plus efficace d’utiliser une surcharge qui accepte plusieurs segments de chemin d’accès. Cette approche réduit le nombre d’allocations et d’appels de fonction, ce qui améliore les performances. Les deux méthodes fournissent des surcharges qui acceptent plusieurs paramètres, ce qui vous permet de réduire les opérations consécutives en un seul appel.
Comment corriger les violations
Remplacez les opérations consécutives ou Path.Join par Path.Combine un seul appel à l’aide d’une surcharge qui accepte tous les segments de chemin d’accès.
Un correctif de code qui effectue automatiquement cette transformation est disponible.
Example
L’extrait de code suivant montre une violation 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
L’extrait de code suivant corrige la violation :
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
Quand supprimer les avertissements
Il est sûr de supprimer un avertissement de cette règle si les performances ne sont pas un problème.
Supprimer un avertissement
Si vous voulez supprimer une seule violation, ajoutez des directives de préprocesseur à votre fichier source pour désactiver et réactiver la règle.
#pragma warning disable CA1877
// The code that's violating the rule is on this line.
#pragma warning restore CA1877
Pour désactiver la règle sur un fichier, un dossier ou un projet, définissez sa gravité sur none dans le fichier de configuration.
[*.{cs,vb}]
dotnet_diagnostic.CA1877.severity = none
Pour plus d’informations, consultez Comment supprimer les avertissements d’analyse du code.