Instrumentação: termo utilizado quando preparamos o nosso aplicativo para que ele nos dê o máximo de informação possível.

O namespace System.Diagnostics possui uma serie de classes que nos ajudam  a instrumentar nossa aplicação, e uma das principais classes é a  EventLog(acesso ao log de Eventos do Windows). Podemos acessar ao Event Viewer ou Visualizador de eventos do Windows nas ferramentas administrativas.

Vamos ao exemplo:


try
{...}
Catch (Exception ex)
{
//passamos o local onde o log será gerado(na pasta Application), a maquina que      
//esta gerando o log(“.” Representa a maquina) e o nome da aplicacao
            EventLog log = new EventLog(“Application”, “.”, “MinhaAplicacao”);
            //criar nova entrada de log
Log.WriteEntry(ex.ToString(), EventLogEntryType.Error);
throw ex;
}

Exemplo de log quando o usuário entrar na aplicação:


String msg = “Usuário se logou na aplicacao”;
EventLog log = new EventLog(“Application”, “.”, “MinhaAplicacao”);
Log.WriteEntry(msg, EventLogEntryType.Information);

Code Analysis

Verifica o código validando a conformidade com o Microsoft .Net Framework Design GuideLines usando Reflection, MSIL Parsing e Callgraph Analysis.

É uma ferramenta que permite verificar regras de design, uso correto dos padrões, detecta ainda problemas como desempenho, segurança e outros. O CA não analisa no código-fonte, e sim o assembly.

  • Design (60 Regras): Regras para interface e estrutura das classes. Envolve melhores práticas para melhor uso de namespaces, eventos, coleções e parâmetros de métodos;
  • Globalização (7 Regras): Práticas para a aplicação aceitar vários idiomas facilmente;
  • Interoperabilidade (16 Regras): Regras para o uso correto de objetos COM e COM+;
  • Manutenibilidade (3 Regras): Regras para ajudar na manutenção do código, geralmente com heranças confusas e códigos muito extensos;
  • Mobilidade (2 Regras): Poucas, mas eficientes regras para compatibilidade em dispositivos móveis;
  • Nomes das Variáveis (20 Regras): Provavelmente as regras mais conhecidas, que envolvem desde nome das variáveis até nome das Assemblies;
  • Performance (19 Regras): Considero, as mais importantes, mas nem sempre são levadas a sério. Detecta melhorias de performance que podem ser corrigidas, apenas com melhorias no código;
  • Portabilidade (2 Regras): Regras para o código interagir com uma possível mudança de plataforma (Windows para Web, Móbile ou Mono);
  • Confiabilidade (5 Regras): Regras para garantir que o código não atrasará os recursos da CLR e do Garbage Collector e também boas práticas para uso de multi-threding;
  • Security (24 Regras): Regras também muito importantes que tratam de brechas de seguranças causadas por código sem boas práticas;
  • Usuais (40): Regras gerais para boas práticas Microsoft.

Para rodar o CA basta clicar com o botão direito em cima do projeto e clicar em Run Code Analysis. Existe a possibilidade de desenvolver as próprias regras, além de podermos também habilitar/desabilitar as regras de acordo com nossas preferências.

Apos habilitar o CA e executá-lo, teremos uma lista de erros/warning. Podemos clicar com o botão direito/ Show Error Help para visualizar uma explicação detalhada da regra e como podemos resolver o warning.

Cada vez que rodamos o CA ele altera um arquivo XML dentro da pasta /Bin/debug ou /Bin/realease com o nome CodeAnalysis.XXX.dll.CodeAnalysisLog.XML(onde xxx é o nome do projeto). Ao usar o Supress Message(bloquear uma determinada regra), o CA cria um arquivo chamado  GlobalSuppressions.cs que contém os atributos usados em todo o assembly.