Análise de Código
com Visual Studio Team System 2008
A análise de código no Visual Studio Team System 2008 pode
ser gerenciada da própria IDE do aplicativo. Classicamente esta tarefa era
realizada por um aplicativo a parte, chamado FxCop e que ainda pode ser
utilizado. Na verdade, creio que o que o VS faz é utilizar o mesmo FxCop nos
bastidores, já que, o aplicativo de linha de comando para análise de código
distribuído com o VS, se chama FxCopCmd.exe.
Você acessa a análise de através das propriedades do
projeto, opção Code Analysis:

Para habilitar a análise de código, basta marcar a opção
Enable Code Analysis on Build. A outra opção, Supress results from generated
Code, não mostra mensagens em blocos de código gerados automaticamente.
Veja que existem 11 grupos de regras. As regras de cada
grupo estão em um assembly, localizado na pasta Team Tools\Static Analysis
Tools\FxCop\Rules do Team System. Você pode expandir cada grupo para analisar
as regras de fato. Uma regra violada causa uma mensagem de Warning (advertência)
no processo de compilação. Um Warning não impede a compilação e execução da aplicação.
A opção Treat Warning as error, se marcada, faz com que, se a regra for
violada, seja exibida uma mensagem de erro ao invés da mensagem de Warning, o
que, via impedir a compilação e execução do programa.
As mensagens são exibidas na janela Error List, como na
imagem abaixo:

Se você der um duplo clique sobre a mensagem, o VS vai abrir
o arquivo e posicionar o cursor próximo ao código onde a regra foi violada.
Você ainda pode clicar com o botão direito sobre a mensagem e selecionar Show
Error Help, para que seja exibida uma janela com ajuda sobre a regra. A ajuda
trás explicações sobre a regra e sugestões de como resolver a violação.
Linha de Comando
Podemos rodar o FxCop por linha de comando, o que pode ser
útil em processos automatizados como com o MSBuild. O programa de linha de
comando se chama Fxcopcmd e pode ser encontrado no caminho Static Analysis
Tools\FxCop do VS. O comando básico para rodar o utilitário deve receber um
parâmetro File, que é o arquivo a ser analisado, e um comando Out, que deve
conter o arquivo onde será armazenado o resultado:
|
fxcopcmd
/file:customers.exe /out:resultado.xml
|
O resultado da análise é gerado em um arquivo XML, como no
exemplo abaixo:

Desativando Mensagens
A quantidade de regras de análise de código que vem por
padrão no VS é muito grande. O ideal é que com o tempo, você estabeleça quais
regras você vai querer utilizar. Você pode querer criar suas próprias regras, o
que será assunto de um próximo artigo, porém, você também pode querer desativar
uma determinada mensagem apenas para uma determinada situação, para um
determinado código, ou temporariamente para toda a aplicação.
Para desabilitar uma regra no projeto, você tem duas opções:
In source, que desabilita a regra apenas para a situação onde a violação
ocorreu, e In Project Supression File, que faz com que a regra seja
desabilitada para toda a solução.

A opção In Source vai inserir uma atributo no seu código,
logo acima onde a violação da regra ocorreu:
|
<System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly",
MessageId:="Exclui")> Public Sub
ExcluiProdutos()
End Sub
|
Note que, em outros pontos do código, se ocorrer a mesma
violação, a mensagem de violação será exibida normalmente. Para desabilitar a
regra em todo o projeto, ou você desabilita na janela de propriedades, ou ativa
a opção In Project Suppression File. Esta última opção indica quer você quer
desabilitar a regra temporariamente o que cria um arquivo GlobalSuppressions.vb
no projeto. Veja o exemplo abaixo:
|
<Assembly:
System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design",
"CA2210:AssembliesShouldHaveValidStrongNames")>
'
' This file is
used by Code Analysis to maintain SuppressMessage
' attributes
that are applied to this project.
'
Project-level suppressions either have no target or are given
' a specific
target and scoped to a namespace, type, member, etc.
'
' To add a
suppression to this file, right-click the message in the
' Error List,
point to "Suppress Message(s)", and click
' "In
Project Suppression File".
' You do not need to add suppressions to this file manually.
|
Para cada regra desabilitada, será gerada uma entrada no
arquivo GlobalSuppressions.vb. Vale lembrar que algumas regras só podem ser
desativadas a nível de aplicação, pois não dizem respeito a um código em
especial.