Desenvolvimento - C#

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.

por Fernando Amaral



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.

Fernando Amaral

Fernando Amaral - Certificado PMP pelo PMI, CDIA+ pela CompTia, MCP, MCAD, MCSD, MCDBA, MCT pela Microsoft. Pós Graduado em Gestão de Sistemas de Informação (UNIDERP) e Melhoria em Processos de Software (UFLA). Atualmente reside em Campo Grande, MS, onde presta consultoria, treinamentos e palestras na área de TI.
Blog:
http://www.fernandoamaral.com.br.