CA1872 : Préférer « Convert.ToHexString » et « Convert.ToHexStringLower » aux chaînes d’appel basées sur « BitConverter.ToString »
active | |
---|---|
Identificateur de la règle | CA1872 |
Titre | Préférer et Convert.ToHexStringLower remplacer les Convert.ToHexString chaînes d’appels basées surBitConverter.ToString |
Catégorie | Performances |
Le correctif est cassant ou non cassant | Sans rupture |
Activée par défaut dans .NET 9 | À titre de suggestion |
Cause
Un appel à BitConverter.ToString suivre par un appel pour String.Replace supprimer des tirets est utilisé pour encoder des octets dans une représentation sous forme de chaîne hexadécimale. Cette règle se déclenche également si String.ToLower elle est utilisée dans la chaîne d’appels.
Description de la règle
Utilisez Convert.ToHexString ou Convert.ToHexStringLower lors de l’encodage d’octets dans une représentation sous forme de chaîne hexadécimale. Ces méthodes sont plus efficaces et plus conviviales que d’utiliser BitConverter.ToString en combinaison avec pour String.Replace supprimer des tirets et String.ToLower.
Comment corriger les violations
Pour corriger une violation de cette règle, remplacez la chaîne d’appels par l’une ou l’autre Convert.ToHexString .Convert.ToHexStringLower
Exemple
L’extrait de code suivant montre une violation de CA1872 :
using System;
using System.Text;
class HelloWorldEncoder
{
private readonly byte[] _data = Encoding.ASCII.GetBytes("Hello World");
public string Encode()
{
return BitConverter.ToString(_data).Replace("-", "");
}
public string EncodeToLower()
{
return BitConverter.ToString(_data).Replace("-", "").ToLower();
}
}
Imports System
Imports System.Text
Class HelloWorldEncoder
Private ReadOnly _data As Byte() = Encoding.ASCII.GetBytes("Hello World")
Public Function Encode() As String
Return BitConverter.ToString(_data).Replace("-", "")
End Function
Public Function EncodeToLower() As String
Return BitConverter.ToString(_data).Replace("-", "").ToLower()
End Function
End Class
L’extrait de code suivant corrige la violation :
using System;
using System.Text;
class HelloWorldEncoder
{
private readonly byte[] _data = Encoding.ASCII.GetBytes("Hello World");
public string Encode()
{
return Convert.ToHexString(data);
}
public string EncodeToLower()
{
return Convert.ToHexStringLower(data);
}
}
Imports System
Imports System.Text
Class HelloWorldEncoder
Private ReadOnly _data As Byte() = Encoding.ASCII.GetBytes("Hello World")
Public Function Encode() As String
Return Convert.ToHexString(data)
End Function
Public Function EncodeToLower() As String
Return Convert.ToHexStringLower(data)
End Function
End Class
Quand supprimer les avertissements
Il est sûr de supprimer un avertissement de cette règle ; toutefois, nous vous recommandons d’utiliser l’une ou Convert.ToHexStringLowerl’autre Convert.ToHexString .
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 CA1872
// The code that's violating the rule is on this line.
#pragma warning restore CA1872
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.CA1872.severity = none
Pour plus d’informations, consultez Comment supprimer les avertissements de l’analyse de code.