-
Notifications
You must be signed in to change notification settings - Fork 0
Home
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.
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.
- O primeiro passo é habilitar o plugin do SonarClound no serviço do Bitbucket;
- Após habilitar, um tela de configurações, do SonarClound, será apresentada, solicitando que continue a configuração de integração dos serviços;
- 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;
- Com o BitBucket e o Sonar configurados é só acessar a página de seu repositório e configurar o projeto no Sonar.
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:
- 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.
- 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.
- 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.
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.
- 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
-
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:
-
Acessando o repositório criado para implementar a integração desse projeto:
-
Quality Gate: as métricas são apresentadas a partir de cada atualização:
-
No canto superior direito é possível selecionar tags específicas:
-
Métricas
a. Reliability: Confiança;
b. Security: Segurança;
c. Maintainability: Capacidade de Manutenção;
d. Duplications: Duplicações.
- 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