Skip to content
This repository has been archived by the owner on May 16, 2021. It is now read-only.
dani-marioti edited this page Apr 27, 2021 · 8 revisions

SonarClound

SonarClound

O SonarClound é um serviço em nuvem, disponibilizado pela SonarSource e baseado no SonarQube, que se trata de uma plataforma open source, utilizada para inspecionar, de modo contínuo, a qualidade do código, a fim de detectar erros e vulnerabilidades.

Como funciona?

O Sonar lê as métricas do código da aplicação, enviadas para o serviço, organiza um painel que expõe as métricas deste código , através de um mínimo aceitável (Quality Gates) e a partir disso informa possíveis inconsistências, “code smells” e outras variáveis.

Como utilizar?

  1. O primeiro passo é habilitar o plugin do SonarClound no serviço do Bitbucket;
  2. Após habilitar, um tela de configurações, do SonarClound, será apresentada, solicitando que continue a configuração de integração dos serviços;
  3. Com o plugin habilitado e configurado já será possível importar u projeto do BitBucket para o Sonar. Para importar: Botão + (mais) > Analyze new project > Setup manually > Preencha as informações > Botão Set Up;
  4. Com o BitBucket e o Sonar configurados é só acessar a página de seu repositório e configurar o projeto no Sonar.

Métricas

As métricas são utilizadas para medir o nível de adequação do código fonte e determinadas de características de qualidade. Para interpretarmos o estado de saúde de um projeto precisamos saber inicialmente certas classificações de métricas e assim, dentro de cada uma o que pode ser considerado aceitável em determinado projeto de acordo com o cenário envolvido. São elas:

  1. Métricas de tamanho: Inicialmente, elas não nos dizem nada sobre a qualidade do projeto, mas referem-se à magnitude do mesmo e isso tem uma variação muito grande dependendo dos tipos de projetos.
  2. Porcentagem de código duplicado: Se partirmos do básico já conhecido e espalhado por muitos, já temos a intuição de que quanto menos código duplicado tivermos em nosso projeto, melhor será em termos de qualidade, contudo teremos um design claro e uma ótima redução no tempo de manutenção contra alterações e o risco de deixar algo desatualizado devida duplicidade.
  3. Complexidade: Podemos utilizar nossa intuição para também definir que quanto menor a complexidade de uma solução, melhor será para correções, atualizações etc...

Apesar de termos uma separação de métricas, não podemos ter um valor universal para cada uma, o qual seja simplesmente perfeito para todos, e isso se dá pois um nível de perfeição é avaliado de diferentes formas de acordo com quem o olha, assim devemos encontrar um equilíbrio no projeto para que não perca qualidade e segurança no código mas também não devemos exagerar nesta medida, pois poderá também afetar no desenvolvimento em modo geral. O que podemos ter como base inicial de análise é de 1% ou 2% se tratando de duplicidade de códigos, complexidade do método abaixo de 5 e de classe abaixo de 10, mas claro que acaba dependendo da cultura e do contexto do projeto.

Débito técnico: O conceito de débito técnico baseia-se numa metáfora de Ward Cunningham, na qual é transmitido em termos financeiros a necessidade de refatorar para manter níveis aceitáveis de qualidade técnica, vale ressaltar que um código ruim não é necessariamente um débito técnico, visto que ele é somente um código ruim. Bom, o sonarcloud não pode distinguir um débito de um código ruim, portanto nos traz uma estimativa em unidade de tempo de débitos técnicos que possuímos no nosso projeto, assim ajuda-nos a perceber que quanto menos dívida um projeto tiver, podemos considerar melhor em estado de saúde, também é utilizado para validar se é necessário alocar recursos para saldar a dívida, refatorar ou menos declarar a falência do projeto.

Integração e Análise

Com a integração do Sonar e Bitbucket funcional, será necessário que a cada alteração sejam enviadas as métricas ao Sonar. O Bitbucket disponibiliza de um plugin chamado Pipeline, onde através dele podemos configurar uma integração contínua, para enviar essas métricas de modo automático, ao Sonar, toda vez que um novo código é inserido no repositório. Outra funcionalidade importante, dentro dessa integração, é a análise automática de Pull Request. Toda vez que seu Quality Gate não é atendido o Sonar gera um build com falha no seu repositório, sendo possível bloquear merge que esteja incluindo inconsistências (bugs) ou que esteja fora do padrão de qualidade.

Demonstração do Projeto

  1. Informações iniciais do projeto escolhido:

a. Autor: @leerob - Professor de frontend

b. Aplicação: Plataforma de feedbacks do site. Possibilita que você visualiza os comentários a partir do seu dashboard

  1. Tela de integração do projeto com o Sonar. A partir desta tela é possível acessar todos os projetos integrados e a relação de algumas métricas relacionadas por ele:

  2. Acessando o repositório criado para implementar a integração desse projeto:

  3. Quality Gate: as métricas são apresentadas a partir de cada atualização:

  4. No canto superior direito é possível selecionar tags específicas:

  5. Métricas

a. Reliability: Confiança;

b. Security: Segurança;

c. Maintainability: Capacidade de Manutenção;

d. Duplications: Duplicações.

  1. Reliability - Acessando os bugs:

a. Retorna algumas análises do código, considerando pontos de possíveis bugs;

b. É possível acessar as informações específicas de cada (Onde? O que? Por que?)

Alunos: Daniela Marioti, Gabriel de Oliveira e Willian Zanol

Clone this wiki locally