Padrão de projeto de software
Caros leitores, neste artigo falarei um pouco sobre “padrões de projetos”. Como se trata de um assunto bem extenso, não cabe a este artigo explorar tudo. Este artigo é destinado a quem esta iniciando no mundo da programação ou que já tem certa experiência e quer garantir a qualidade dos softwares que irá desenvolver.
Um Padrão de Projeto não se trata de um projeto finalizado que pode ser diretamente transformado em código fonte ou de máquina, ele é uma descrição ou modelo de como resolver um problema que pode ser usado em muitas situações diferentes.
Dessa maneira, podemos dizer que Padrões são as “melhores práticas” que o programador pode usar para resolver problemas comuns quando se projeta uma aplicação ou sistema.
Padrões de projeto orientados a objeto normalmente mostram relacionamentos e interações entre classes ou objetos, sem especificar as classes ou objetos da aplicação final que estão envolvidas.
Esses padrões tornam mais fácil reutilizar soluções e arquiteturas bem sucedidas para construir softwares orientados a objetos de forma flexível e fácil de manter. O uso desses padrões podem reduzir a complexidade do processo de projetar software. Além disso, o software orientado a objetos bem projetados possibilita ao projetista e engenheiros de software reutilizar e empregar componentes preexistentes em sistema futuros.
Baseando na premissa da orientação de objeto e de boas práticas de programação, foi desenvolvida uma plataforma que se baseia em qualidade de código tendo implícito alguns padrões de projeto que facilitam o desenvolvimento e o bom entendimento do código. Essa plataforma tem inúmeras configurações de métricas para que tenhamos liberdade em configurar de acordo com o nossa arquitetura escolhida. Esta ferramenta chama-se Sonarqube ou somente Sonar. No próximo tópico irei explicar mais sobre esta fantástica ferramenta.
SonarQube
O SonarQube, anteriormente conhecido apenas como sonar, é uma ferramenta ou plataforma de código aberto para a inspeção contínua da qualidade do código que permite realizar revisões automáticas com análise estática de código para detectar erros, vulnerabilidades de segurança e garantir padrões de projetos que a própria ferramenta nos indica.
Padrões que podem ser configurados na própria ferramenta de acordo com a necessidade do projeto.
Ele oferece relatórios sobre códigos duplicado, padrões de codificação, testes unitários, cobertura de código, entre outros.
O SonarQube pode gravar histórico de métricas e fornecer gráficos de evolução. O maior recurso desta ferramenta é que ele fornece análise e integração totalmente automatizada com Maven, Ant, Gradle, MSBuild e ferramenta de integração contínua, como: Jenkins, Hudson, entre outras.
SonarQube tem suporte à várias linguagens e se integra aos mais diversos ambientes de desenvolvimento.
Exemplo de linguagens:
É isso amigos leitores, agora que já falamos um pouco sobre Padrões de Projetos e da ferramenta SonarQube, vamos colocar a mão na massa e configura-la em nosso projeto.
Configurando Sonarqube e PHPStorm
Instalando o SonarQube
Faça o download do SonarQube:
Extraia o arquivo “sonarqube-5.3.zip” no diretório;
Faça o download do Sonar-scanner:
Extraia o arquivo “sonar-sanner-2.6.1.zip” no diretório desejado;
Faça o download do Plug-in para PHP:
Mova o Plug-in para o diretório “sonarqube-5.3\extensions\plugins”
Executando o Sonarube
1. Abra o ( CMD ) e digite o seguinte comando no diretório “sonarcube-5.3” extraído:
a. D:\htdocs\sonarqube-5.3\bin\windows-x86-64\StartSonar.bat
2. Nesse ponto o sonar já está rodando em sua máquina. Veja o exemplo na imagem a seguir:
3. Acesse a URL http://localhost:9000 para visualizar a interface web, conforme imagem de exemplo:
Configurando seu Projeto
1. Crie o arquivo “sonar-project.properties” na raiz do seu projeto com o seguinte conteúdo:
# Required metadata
sonar.projectKey=sga
sonar.projectName=Sga
sonar.projectVersion=1.0
# Comma-separated paths to directories with sources(required)
sonar.sources=./app
# Language
sonar.language=php
# To deactivate features related to unit tests execution and coverage
sonar.dynamicAnalysis=false
# Encoding of the source files
sonar.sourceEncoding=UTF-8
sonar.exclusions=vendor/*
Observação: Substitua a palavra “Projeto” pelo nome de seu projeto.
2. Execute o comando “<path>\sonar-scanner-2.6.1\bin\sonar-scanner” no diretório de seu projeto.
3. Exemplo de saída após análise do código:
4. Para visualizar o resultado, acesse http://locahost:9000.
Configurando o PHPStorm
1. Acesse as configurações do PhpStorm em File > Settings;
2. Digite plugin, clique em “Browse Repositories” e digite “sonar”, clique em instalar “SonarQube Community Plugin”;
3. Reinicie o phpstorm após a instalação;
4. Volte nas configurações do PHPStorm e digite sonarqube, clique em “Add”;
5. Digite as informações a seguir:
Name: local
Host url: http://localhost:9000
User: admin
Password: admin
6. Clique no botão “+” e depois em “Donwload resources”, selecione o projeto, meu caso “SGA”, clique em “OK” e em “OK” novamente.
Com essas configurações aplicadas, o PHPStorm já encontra-se configurado com o SonarQube.
Inspecionando código com Sonarqube no PHPStorm
1. Para testar, clique em algum arquivo com o botão direito do mouse, vá até “Inspect Code” e clique em “OK”.
2. Após a execução, o PHPStorm deve retornar o resultado da inspeção conforme a imagem abaixo: