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.