CA1302: Fazer não codificar seqüências específicas de localidade
TypeName |
DoNotHardcodeLocaleSpecificStrings |
CheckId |
CA1302 |
<strong>Categoria</strong> |
Microsoft.Globalization |
Alteração significativa |
Não-separável |
Causa
Um método usa uma seqüência de caracteres literal que representa a parte do caminho de determinadas pastas do sistema.
Descrição da regra
O System.Environment.SpecialFolder enumeração contém membros que se referem a pastas de sistema especial. Os locais dessas pastas podem ter valores diferentes em diferentes sistemas operacionais, o usuário pode alterar alguns dos locais e os locais são localizados. Um exemplo de uma pasta especial é a pasta do sistema, o que é "C:\WINDOWS\system32" em Windows XP , mas "C:\WINNT\system32" on Windows 2000. O Environment.GetFolderPath método retorna os locais que estão associados a Environment.SpecialFolder enumeração. Os locais que são retornados por GetFolderPath são localizadas e apropriado para o computador em execução no momento.
Esta regra divide os caminhos de pasta são recuperados usando o GetFolderPath método em níveis de diretório separado. Cada seqüência de caracteres literal é comparado com os tokens. Se uma correspondência for encontrada, presume-se que o método está criando uma cadeia de caracteres que se refere ao local do sistema que está associado com o token. Para portabilidade e possibilidade de localização, use o GetFolderPath método para recuperar os locais das pastas especiais do sistema em vez de usar literais de seqüência de caracteres.
Como corrigir violações
Para corrigir uma violação desta regra, recuperar o local usando o GetFolderPath método.
Quando suprimir avisos
É seguro eliminar um aviso esta regra se a seqüência literal não é usada para se referir a um dos locais de sistema que está associado a Environment.SpecialFolder enumeração.
Exemplo
O exemplo a seguir cria o caminho da pasta de dados de aplicativos comuns, que gera três avisos dessa regra. Em seguida, o exemplo recupera o caminho usando o GetFolderPath método.
Imports System
Namespace GlobalizationLibrary
Class WriteSpecialFolders
Shared Sub Main()
Dim string0 As String = "C:"
' Each of the following three strings violates the rule.
Dim string1 As String = "\Documents and Settings"
Dim string2 As String = "\All Users"
Dim string3 As String = "\Application Data"
Console.WriteLine(string0 & string1 & string2 & string3)
' The following statement satisfies the rule.
Console.WriteLine(Environment.GetFolderPath( _
Environment.SpecialFolder.CommonApplicationData))
End Sub
End Class
End Namespace
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));
}
}
}