Hoje veremos como medir a complexidade e a manutenabilidade do nosso código C# usando o recurso Code Metrics do Visual Studio 2019. |
Podemos usar o Visual Studio para gerar dados de métricas de código que medem a complexidade e facilidade de manutenção de seu código gerenciado. Os dados de métricas de código podem ser gerados para uma solução inteira ou um único projeto.
Dessa forma , as métricas de código ou Code Metrics permite o desenvolvedor ter uma visão da manutenibilidade e complexidade do código.
O Visual Studio usa cinco métricas de código para ajudar você a entender melhor seu código :
Que são definidas da seguinte forma segundo a documentação:
Linhas de código-fonte : Indica o número exato de linhas de código-fonte que estão presentes no arquivo de origem, incluindo linhas em branco. Essa métrica está disponível a partir do Visual Studio 2019 versão 16,4 e Microsoft. CodeAnalysis. métricas (2.9.5).
Acoplamento de Classe : Mede o acoplamento de classes por meio de parâmetros, variáveis locais, tipos de retorno, chamadas de método, instanciações genéricas ou modelo, classes base, implementações de interface, campos definidos nos tipos externos, e decoração de atributos. Um bom projeto de software determina que tipos e métodos devem ter alta coesão e baixo acoplamento. Um alto acoplamento indica um projeto que é difícil de ser reutilizado e de manter devido à suas muitas interdependências em outros tipos.
Profundidade de herança : Indica o número de classes diferentes que herdam uma da outra, de volta para a classe base. A profundidade da herança é semelhante ao acoplamento de classes, pois uma alteração em uma classe base pode afetar qualquer uma de suas classes herdadas. Quanto maior esse número, mais profunda a herança e maior o potencial para modificações na classe base resultam em uma alteração significativa. Para a Profundidade da herança, um valor baixo é bom e um valor alto é ruim.
A complexidade ciclomática : Mede a complexidade do código estrutural. Ela é criada pelo cálculo do número de diferentes caminhos de código no fluxo do programa. Um programa que tem um fluxo de controle complexo requer mais testes para obter uma boa cobertura de código e é menos passível de manutenção.
Índice de facilidade de manutenção : Calcula um valor de índice entre 0 e 100 que representa a relativa facilidade de manutenção do código. Um valor alto significa melhor facilidade de manutenção. Podemos usar classificações codificadas por cor para identificar rapidamente pontos problemáticos no código:
Agora veremos na prática como usar este recurso no Visual Studio 2019.
recursos usados:
Criando o projeto C# no VS 2019
Vamos criar um projeto Console do tipo .NET Core com o seguinte nome para a Solution: CShp_CodeMetrics:
No projeto criado vamos abrir o arquivo Program e definir neste arquivo o código com duas classes:
O código foi definido no mesmo arquivo para facilitar a visualização e é muito simples. Neste código temos que a classe ClasseDerivada herda da classe ClasseBase.
Vamos calcula as métricas deste código usando o Visual Studio 2019. Para isso basta clicar com o botão direito do mouse sobre o nome do projeto e selecionar a opção Analyze and Code Cleanup -> Calculate Code Metrics:
O Visual Studio calculará as métricas de código desse aplicativo e você deverá encontrará a tela a seguir.
Os valores obtidos para o nosso código foram:
Como o nosso código é bem simples e para não complicar muito o nosso exemplo vamos analisar apenas a Profundidade da herança e o Acoplamento de Classe.
Pelos valores obtidos estamos vendo que a profundidade da herança é igual a 2 e o valor do Acoplamento de classe é igual a 2.
A profundidade da herança é 2 porque existem 2 hierarquias de classe de nível na classe ClasseDerivada, e, o valor do Acoplamento de classe é 2 porque a classe ClasseBase esta associada à classe ClasseDerivada, assim uma classe depende de ClasseDerivada, e, a classe Programa usa o método Main() que esta invocando a classe Console.
Vamos agora alterar o código do projeto e recalcular as métricas de código. Vamos fazer o seguinte:
Veja como ficou o código:
Realizando novamente a medida das métricas usando o Visual Studio iremos obter os seguintes valares :
Os resultados são:
O valor da profundidade da herança é igual a 3 pois :
O valor do Acoplamento de classe é igual a 4 pois temos que:
Embora o projeto usado tenha um nível de complexidade muito baixo oque impede entrar em muitos detalhes, creio que você entendeu o objetivo de realizar as métricas de código no seu projeto.
Em outro artigo iremos analisar as demais métricas usando um código mais complexo.
"O temor do Senhor
é fonte de vida, para desviar dos laços da morte."
Provérbios 14:26,27
Referências:
VB .NET - Lendo Arquivos Binários - BinaryReader - Macoratti ...
Tratamento de arquivos - Questões práticas - Macoratti.net
Estudo de Caso de Aplicação da Métrica de Pontos de Casos de Uso
Medição de Pontos por Função a Partir da Especificação de Requisitos
VB.NET - Estimativa de tamanho e preço com Análise de Pontos de Função - APF
Pontos de Função ou Pontos por Caso de Uso? Como Estimar Projetos ...