Fazer não codificar seqüências específicas de localidade
TypeName |
DoNotHardcodeLocaleSpecificStrings |
CheckId |
CA1302 |
Category (Categoria) |
Microsoft.globalização |
Quebrando alterar |
Não separável |
Causa
Um método usa uma seqüência de caracteres literal que representa parte do caminho para determinadas pastas do sistema.
Descrição da regra
The System.Environment.SpecialFolder enumeração contém membros que se referem a pastas especiais do sistema. Os locais dessas pastas podem ter valores diferentes em sistemas operacionais diferentes, o usuário pode alterar alguns dos locais de e os locais são localizados.Um exemplo de uma pasta especial é a pasta de sistema, que é "C:\WINDOWS\system32" no Windows XP mas "C:\WINNT\system32" no Windows 2000.The Environment.GetFolderPath método retorna os locais associados a Environment.SpecialFolder enumeração. Os locais retornados por GetFolderPath são localizadas e apropriado para o computador que está em execução no momento.
Esta regra divide os caminhos de pasta recuperados usando o GetFolderPath método em níveis de diretório separada. Cada seqüência de caracteres literal é comparado com os símbolos e, se uma correspondência for encontrada, será considerado que o método está criando uma seqüência de caracteres que se refere ao local de sistema associado com o token.Para portabilidade e possibilidade de localização, use o GetFolderPath método para recuperar os locais das pastas de sistema especiais em vez de usar literais de seqüências de caracteres.
Como corrigir violações
Para corrigir uma violação dessa regra, recuperar o local usando o GetFolderPath método.
Quando suprimir avisos
É seguro eliminar um aviso essa regra se a seqüência literal não for usada para se referir a um dos locais de sistema associados com o Environment.SpecialFolder enumeração.
Exemplo
O exemplo a seguir cria um caminho para a pasta de dados de aplicativo comuns, que gera três avisos da 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));
}
}
}