Olá pessoal,
Na parte 1 falei sobre o desenvolvimento de uma regra personalizada no FxCop. As possibilidades são muitas, até o momento eu desenvolvi duas regras, uma para validar a nomenclatura de variáveis locais nos métodos, pois a regra que vem com o FxCop valida apenas membros (métodos, propriedades, etc.) públicos, e outra regra que verifica se o programador chama o método Dispose dos objetos que implementam a interface IDisposable.
Outra coisa boa é que a mesma assembly pode ser utilizada tanto no FxCop quanto no Code Analysis do VS Team System. Nesse caso basta publicá-la na pasta C:\Arquivos de programas\Microsoft Visual Studio 9.0\Team Tools\Static Analysis Tools\FxCop\Rules.
Bom regra desenvolvida e testada, agora vem a pergunta: como distribuir a assembly na pasta Rules em todas as estações dos desenvolvedores? Vou ter que sair copiando a assembly máquina por máquina toda vez que houver uma atualização? Infelizmente nem o FxCop nem o Code Analysis do VSTS tem uma solução pronta e automatizada para isso. E o pior, em minhas buscas pela net não encontrei muita orientação sobre esse problema =/
Depois de quebrar um pouco a cabeça encontrei uma solução razoável: colocar a assembly da sua regra em uma pasta na rede. Depois é só apontar o FxCop ou o VSTS para buscarem a regra da rede, assim você precisará atualizar a assembly em apenas um local.
Para essa solução funcionar, indepedente de você utilizar o FxCop ou o VSTS, primeiro altere a configuração de segurança do Framework, senão ele irá bloquear a execução de qualquer assembly a partir da rede:
1 – Vá até Painel de controle > Ferramentas administrativas > Microsoft .NET Framework 2.0 Configuration;
2 – Entre nas propriedades do item My Computer > Runtime Security Policy > Machine > Code Groups > All_Code > LocalIntranet_Zone;
3 – Clique na aba Permission Set, provavelmente estará como LocalIntranet, troque para FullTrust.
Feito isso, no projeto do FxCop você irá até aba Rules, botão direito Add Rules, e adicione a assembly da sua regra a partir de uma pasta na rede.
Se você utiliza o VSTS, ele permite apontar apenas a pasta inteira das Rules para rede, então copie a pasta com as regras pré-existentes (C:\Arquivos de programas\Microsoft Visual Studio 9.0\Team Tools\Static Analysis Tools\FxCop\Rules) mais a sua para a rede e efetue o apontamento no registro:
1 – Abra o regedit e vá até a chave HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\9.0\Setup\EDev;
2 – No registro FxCopDir informe o diretório das regras na rede.
Pronto, agora você tem uma distribuição centralizada das suas regras =)
Abraços!
Escrito por Danilo Martinelli
Escrito por Danilo Martinelli
Escrito por Danilo Martinelli