Arquivo

Posts Tagged ‘Code Analisys’

Utilizando o Code Analisys – Maintainability Rules

Salve, Salve galerinha.

Conforme prometido no artigo anterior, estou postando uma explicação para um grupo de regras.

O grupo escolhido é “Maintainability Rules” ou “Regras de Manutenibilidade”.

Na minha opinião, as “Regras de Manutenibilidade” são as mais importantes e interessante que encontramos no Code Analysis. Com elas você poderá verificar a complexidade do código, verificar quais códigos são difíceis de dar manutenção ou qual deles dificultam leitura.

Segue abaixo uma tabela com as informações mais importantes.

CheckId Descrição Explicação Índice no Code Metrics
CA1500 Variable names should not match field names Nomes de variáveis da classe não devem coincidir com nomes de parâmetros.  
CA1501 Avoid excessive inheritance Evite o excesso de heranças. No máximo, utilize 4 níveis na hierarquia.  
CA1502 Avoid excessive complexity Evite o excesso de complexidade Cyclomatic Complexity
<= 25 : Aceitável
CA1504 Review misleading field names Nomenclatura de campos dificultam a leitura. Como:  Instancias de classe e variáveis não static (Shared VB) não devem começar com “s_”. Instancias de classe e variáveis static(Shared VB) não devem começar com “m_”.  
CA1505 Avoid unmaintainable code Evite código com baixo índice de manutenibilidade. Tente dividi-lo em um número maior de métodos específicos. Maintainability Index (MI)
0~10 : Ruim 
10~20: Moderada 
  >=20: Boa manutenibilidade
CA1506 Avoid excessive class coupling Evite o excesso associação de classes com tipos e namespaces diferentes. Procure utilizar tipos e métodos com um baixo grau de acoplamento. Class Coupling
>= 40: Ruim; 
40~30: Moderada; 
<= 30: Boa manutenibilidade

 

Informações adicionais

Cyclomatic Complexity*¹ : A complexidade ciclomatica mede o número de fluxos independentes através do método determinadas através do número número de ramificações condicionais.

A fórmula de cálculo encontrada no MSDN é a seguinte: Cyclomatic Complexity = nº arestas – nº nós +1

aresta: linha entre nós.

nós: ponto de ramificação lógica.

Complicado né? Para simplificar podemos pensar da seguinte forma. Cyclomatic Complexity = nº (if, while, do, case no switch(select VB))

Exemplos : http://msdn.microsoft.com/en-us/library/ms182212.aspx

Quando a complexidade Ciclomática não se aplica: Quando seu método tem apenas um switch(select no VB) com vários case. Ou quando não se pode dividir o método.

Maintainability Index (MI)*²: O “índice de Manutenibilidade” é calculado utilizado as seguintes métricas.

– Linhas de código.

– Volume do programa. É a medida da dificuldade de compreensão baseado no número de operadores e operandos no código

– Complexidade Ciclomatica.

Quando o índice de Manutenibilidade não se aplica. Quando seu método tem apenas um switch(select no VB) com vários case. Ou quando não se pode dividir o método.

Class Coupling*³: O índice de “Classes acopladas” é calculado a partir da somatória de classes altamente acopladas e de diferentes referencias utilizadas em seu código.

Quando a complexidade Ciclomática não se aplica: Ainda não encontrei um caso em que não se aplica.

Fonte: http://msdn.microsoft.com/en-us/library/ms182211.aspx

E mais uma vez… Espero que o artigo tenha sido claro, objetivo e prático para você já poder começar a usar.

Francisco Gonçalves

%d bloggers like this: