CA1302: No codificar las cadenas específicas de configuración regional
Elemento | Valor |
---|---|
RuleId | CA1302 |
Category | Microsoft.Globalization |
Cambio importante | Poco problemático |
Causa
Un método usa un literal de cadena que representa parte de la ruta de acceso de determinadas carpetas del sistema.
Nota
Esta regla está en desuso. Para más información, consulte Reglas en desuso.
Descripción de la regla
La enumeración System.Environment.SpecialFolder contiene miembros que hacen referencia a carpetas especiales del sistema. La ubicación de estas carpetas puede tener diferentes valores en sistemas operativos distintos, el usuario puede cambiar alguna de estas ubicaciones y las ubicaciones están localizadas. Un ejemplo de una carpeta especial es la carpeta System, que es "C:\WINDOWS\system32". El método System.Environment.GetFolderPath devuelve las ubicaciones asociadas a la enumeración Environment.SpecialFolder. Las ubicaciones devueltas por GetFolderPath están localizadas y son adecuadas para el equipo actualmente en ejecución.
Esta regla tokeniza las rutas de acceso de carpeta que se recuperan mediante el método GetFolderPath en niveles de directorio independientes. Cada literal de cadena se compara con los tokens. Si se encuentra una coincidencia, se supone que el método está creando una cadena que hace referencia a la ubicación del sistema asociada al token. Por razones de portabilidad y localización, use el método GetFolderPath para recuperar las ubicaciones de las carpetas especiales del sistema en lugar de usar literales de cadena.
Cómo corregir infracciones
Para corregir una infracción de esta regla, recupere la ubicación mediante el método GetFolderPath.
Cuándo suprimir las advertencias
Es seguro suprimir una advertencia de esta regla si el literal de cadena no se usa para hacer referencia a una de las ubicaciones del sistema asociadas a la enumeración Environment.SpecialFolder.
Ejemplo
En el ejemplo siguiente se compila la ruta de acceso de la carpeta de datos común de la aplicación, que genera tres advertencias de esta regla. A continuación, el ejemplo recupera la ruta de acceso mediante el método GetFolderPath.
using System;
namespace GlobalizationLibrary
{
class WriteSpecialFolders
{
static void Main()
{
string string0 = "C:";
// Each of the following three strings violates the rule.
string string1 = @"\Documents and Settings";
string string2 = @"\All Users";
string string3 = @"\Application Data";
Console.WriteLine(string0 + string1 + string2 + string3);
// The following statement satisfies the rule.
Console.WriteLine(Environment.GetFolderPath(
Environment.SpecialFolder.CommonApplicationData));
}
}
}
Reglas relacionadas
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de