Qualidade contínua de aplicações com o SonarQube no Azure

Como você monitora a qualidade e desempenho das suas aplicações? Neste artigo entenderemos como o SonarQube no Azure pode trazer visibilidade aos problemas das suas aplicações e te ajudar a identificar pontos de melhorias, correções de vulnerabilidades e a investir em testes automatizados.

SonarQube

SonarQube é uma plataforma opensource desenvolvida pela SonarSource para inspeção contínua da qualidade de código, executando revisões automáticas com análise de detecção de códigos duplicados, bugs, code smells e vulnerabilidades de segurança em mais de 20 linguagens de programação. É praticamente uma ferramenta obrigatória em times de desenvolvimento.

Com aproximadamente R$ 150,00 mensais é possível instalar e utilizar essa ferramenta espetacular no Azure.

Instalando o SonarQube no Azure

Neste exemplo, utilizaremos a versão v7.7 pois as versões superiores não funcionam no Service Plan do Azure para contêineres, isso ocorre porque o ElasticSearch foi incluído na versão v7.8 em diante, o que requer a configuração da variável de ambiente vm.max_map_count = 262144, que só funciona em VM ou em uma infraestrutura Kubernetes.

O template do SonarQube instala um Service Plan Linux, um banco SQL Server e um app service linux. Para configurar, clique no link abaixo:

https://azure.microsoft.com/pt-br/resources/templates/webapp-linux-sonarqube-azuresql

Ao abrir o link, clique em Implantar no Azure, onde será redirecionado para o portal e a tela abaixo será exibida:

  • Region: Região onde o SonarQube será instalado, neste template é fixado a região (US) East US.
  • Site Name: Nome do recurso no Azure. Neste exemplo utilizaremos o nome sonarqube-teste.
  • Sonarqube Image Version: Versão do Sonar. Utilizaremos a versão 7.7 Community.
  • Service Plan Pricing Tier: Camada do Service Plan Linux. Neste exemplo utilizaremos a camada Basic 2.
  • Sql Server Administrator Username: Usuário de acesso ao SQL Server do SonarQube.
  • Sql Server Administrator Password: Senha de acesso ao SQL Server do SonarQube.
  • Sql Database Sku Name: Camada de preço do SQL Azure. Por padrã, seguiremos com GP_Gen4_1, depois reduziremos nas configurações do SQL Azure.
  • Location: Local de instalação do resource group.

Logo após as configurações, clique em Create para provisionar a infraestrutura.

Com o SonarQube instalado, é necessário reduzir a camada do Azure SQL. Clique no banco SQL criado, em seguida em Compute + storage e selecione a camada Standard limitando em 10 DTUs.

Configurando a aplicação SonarQube

Abra a aplicação criada no Azure (sonarqube-teste) e aguarde o carregamento dos parâmetros iniciais. Em seguida clique no menu Log In e entre com o usuário (admin) e senha (admin) padrão:

Logo após o login, troque sua senha por uma mais forte por questão de segurança.

Em seguida, clique em My Acount, depois em Generate Tokens e escolha um nome para o seu token. Clique em Generate e guarde o token gerado, ele será utilizado para realizar a comunicação e autorização entre o Azure DevOps e o SonarQube:

Clique em Administration, depois em Projects, depois em Management e por fim em Create Project para criar um projeto privado que receberá o relatório do Sonar. Guarde a key do projeto:

Configurando o Azure DevOps

Para configurar a comunicação com o SonarQube é necessário instalar a extensão do Marketplace no Azure DevOps, clicando em Extensions na configuração da sua organização:

Abra o link https://marketplace.visualstudio.com/items?itemName=SonarSource.sonarqube e cliquem em Get it free:

Logo após a instalação, é necessário configurar a conexão com o SonarQube. Clique nas configurações do seu projeto no Azure DevOps e selecione Service connections:

Clique em New service connection, selecione SonarQube e configure as informações abaixo:

  • Server Url: Url da aplicação criada no Azure.
  • Token: Token criado no SonarQube.
  • Service connection name: Nome da conexão.

Com a conexão realizada, é necessário a criação de um novo pipeline (supondo que existe um repositório de uma aplicação em .NET no seu Azure DevOps). No repositório da aplicação, clique em Set up build:

E configure o YAML conforme o código abaixo:

  • branches_include: Configura a branch que será analisada pelo Sonar.
  • steps_task_SonarQubePrepare@4: Configura a comunicação com o SonarQube antes da compilação da aplicação.
    • inputs_SonarQube: Código do Service Connection criado.
    • inputs_projectKey: Key do projeto criado no SonarQube.
    • inputs_projectName: Nome do projeto criado no SonarQube.
  • task_DotNetCoreCLI@2: Realiza do build da solução.
  • task_SonarQubeAnalyze@4: Realiza o análise de todo código pelo SonarQube.
  • task_SonarQubePublish@4: Realiza a publicação da análise coletada.

E finalmente, execute o pipeline do repositório:

Após o build, é possível analisar a coleta realizada na aplicação do SonarQube e tomar as decisões com o time. Neste exemplo, é visível que é preciso corrigir várias vulnerabilidades, bugs, code smells e criar testes de unidade e de integração para entrar na cobertura de testes.

Finalizando

Neste artigo aprendemos a forma mais simples de utilizar o SonarQube no Azure, uma excelente ferramenta com um custo muito baixo e que está em constante evolução. Vale muito a pena utilizá-la em seus projetos, para que não tenha simplesmente um código que funcione, mas um código que funcione bem, de fácil manutenção, seguro, com qualidade e seguindo todo um conjunto de boas práticas.

Deixe uma resposta