Pergunta

Em um projeto em que estou trabalhando, o FxCop me mostra muitos (e quero dizer mais de 400) erros nos métodos InitializeComponent() gerados pelo designer do Windows Forms.A maioria desses erros é apenas a atribuição da propriedade Text dos rótulos.

Gostaria de suprimir esses métodos na origem, então copiei o código de supressão gerado pelo FxCop para AssemblyInfo.cs, mas não funciona.

Este é o atributo que o FxCop copiou para a área de transferência.

[module: SuppressMessage("Microsoft.Globalization",
    "CA1303:DoNotPassLiteralsAsLocalizedParameters",
    Scope = "member",
    Target = "WindowsClient.MainForm.InitializeComponent():System.Void",
    MessageId = "System.Windows.Forms.Control.set_Text(System.String)")]

Alguém sabe o atributo correto para suprimir essas mensagens?

PS:Estou usando o Visual Studio 2005, C#, FxCop 1.36 beta.

Foi útil?

Solução

Você provavelmente tem o código correto, mas também precisa adicionar CODE_ANALYSIS como um símbolo definido pelo pré-compilador nas propriedades do projeto.Acho que esses atributos SuppressMessage só são deixados nos binários compilados se CODE_ANALYSIS estiver definido.

Outras dicas

No FxCop 1.36 existe na verdade uma opção de projeto na aba “Ortografia e Análise” que irá suprimir a análise de qualquer código gerado.

Se você não quiser desativar a análise de todo o código gerado, certifique-se de adicionar um símbolo CODE_ANALYSIS à lista de símbolos de compilação condicional (propriedades do projeto, guia Construir).Sem este símbolo definido, os atributos SupressMessage serão removidos do código compilado para que o FxCop não os veja.

O outro problema com seu atributo SuppressMessage é que você está listando um "Destino" de um nome de método específico (neste caso WindowsClient.MainForm.InitializeComponent():System.Void) e listando um "Escopo" específico.Você pode tentar removê-los;caso contrário, você deverá adicionar este SuppressMessage a cada instância do método.

Você também deve atualizar para o Versão RTM do FxCop 1.36, o beta não detectará automaticamente a versão mais recente.

As mensagens de supressão no nível do módulo precisam ser coladas no mesmo arquivo que o código que está gerando o erro FxCop antes da declaração do namespace ou em assemblyinfo.cs.Além disso, você precisará ter CODE_ANALYSIS definido como símbolos do compilador condicional (Projeto > Propriedades > Construir).Uma vez implementado, faça uma reconstrução completa do projeto e na próxima vez que você executar o FxCop, o erro deverá ser movido para a guia "Excluído na fonte".

Além disso, uma pequena dica, mas se você estiver lidando com muitas exclusões do FxCop, pode ser útil envolver uma região em torno delas para que você possa tirá-las do caminho.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top