Instalação SonarQube
Índice
Baixar arquivos
Localização dos arquivos
Extraia os arquivos do SonarQube para C:/SonarQube. Extraia os arquivos do SonarScanner para C:/SonarScanner.
Configuração do projeto
Para configurarmos o nosso projeto para ser analisado pelo SonarQube precisamos adicionar um arquivo de configuração na raiz da solução (Mesmo nível do .sln).
O arquivo deverá se chamar: sonar-project.properties. Atenção, este arquivo deverá ser .properties e não .txt. Este arquivo deverá ter o seguinte conteúdo:
# Required metadata sonar.projectKey=IdentificadorUnicoDoProjeto sonar.projectName=Nome do Meu Projeto sonar.projectVersion=1.0.0 # Comma-separated paths to directories with sources(required) sonar.sources=. # Languages sonar.languages=cs # Ignore sonar.exclusions=**/packages/**/*
sonar.projectKey deverá receber um identificador único para o sonar identificar o projeto. Permitido letras, números, hífen, underline, ponto e dois pontos.
sonar.projectName é o próprio nome do projeto que irá aparecer na lista de projetos do SonarQube.
sonar.projectVersion é a versão atual do projeto. Ele deve ser atualizado a cada scanner para que um histórico do projeto seja gerado.
sonar.sources deverá receber o nome da pasta que o SonarQube irá ler. Quando usado ponto após o igual (=.) será feita a leitura em todas subpastas do projeto.
sonar.languages recebe o tipo da linguagem de programação que ele analisará. Caso não coloque está configuração, será analisado todas as linguagens instaladas no sonarqube.
sonar.exclusions recebe a lista de arquivos ou pastas que não serão analisados durante a execução.
Exemplos:
Excluir todas as pastas “vendor”, suas subpastas e arquivos: **/vendor/**/* Excluir todas as extensões javascript e css: **/*.js, **/*.css Excluir uma determinada pasta, subpasta e todos seus arquivos: src/packages/**/*
Mais informações:
http://docs.sonarqube.org/display/SONAR/Analysis+Parameters
Instalações SonarQube
Manualmente
Execute o CMD como administrador. Navegue até a pasta onde se encontra o executor do SonarQube Ex: C:\SonarQube\bin\windows-x86-64(32) Execute o arquivo StartSonar.bat Neste momento, o site do SonarQube ficará na porta http://localhost:9000/
Serviço do Windows
Execute o CMD como administrador. Navegue até a pasta onde se encontra o executor do SonarQube Ex: C:\SonarQube\bin\windows-x86-64(32) Para instalar a instalação execute o arquivo
InstallNTService.bat
Para iniciar o serviço, execute o arquivo
StartNTService.bat
Neste momento, o site do SonarQube ficará na porta http://localhost:9000/
Caso precise alterar alguma configuração ou desinstalar execute
StopNTService.bat UninstallNTService.bat
Executar Análise
Execute o CMD como administrador.
Navegue até a pasta do projeto onde está o seu .sln junto com seu arquivo de configuração. EX: cd C:\Projetos\MeuProjeto\src
No mesmo CMD que navegou até a pasta do projeto, execute o Scanner
Para isso dê o caminho até o arquivo sonar-scanner.bat EX.: C:\SonarScanner\bin\sonar-scanner.bat
Também é possível configurar o sonar scanner como variável ambiente para facilitar a execução. Para isso acesse Painel de Controle → Sistema e Segurança → Sistema → Configurações avançadas do sistema → Variáveis em Ambiente… → Variáveis do sistema → adicione o caminho até pah asta bin do sonar scanner (ou windows + pause break).
Exemplo: C:\sonarqube\sonar-scanner-2.6.1\bin. Depois de configurado, abra o CMD e execute o comando sonar-scanner.
Após executar o scanner, seu projeto começará a ser analisado. O resultado de saída irá aparecer no site do sonar http://localhost:9000/
Possíveis Problemas
Erro ao executar SonarQube como serviço d windows
Quando instalado o SonarQube como um serviço do Windows, ao executar ele buscará por uma pasta temporária em:
C:\Windows\system32\config\systemprofile\AppData\Local\Temp\
Você poderá ver isto no log de erros que ele mostra no CMD ou então no arquivo: C:/SonarQube/logs/sonar.log Esta pasta não existe e o Sonar muitas vezes mesmo executando como administrador não consegue/pode criar. Como solução, você deverá alterar a configuração adicionando uma nova pasta temp: Pare e desinstale o serviço do SonarQube. Vá até a pasta de configuração C:/SonarQube/Conf/wrapper.conf Comente a linha (#wrapper.java.additional.1=-Djava.awt.headless=true) Adicione a linha: wrapper.java.additional.1=-Djava.awt.headless=true -Djava.io.tmpdir=C:\SonarQube\temp Salve e em seguida reinstale e inicie o serviço do SonarQube.
Erro de memória ao executar o Sonar Scanner
Dependendo das configurações da máquina ou programas em execução, pode acontecer de uma das JVMs darem problema de falta de memória. Pode acontecer durante a execução do sonar scanner ou no momento que o sonarqube está processando os dados para visualizar no site.
Antes de configurar precisamos conhecer rapidamente as JVMs do sonarqube e sonar scanner. O sonarqube possui:
1 JVM para rodar o servidor web 1 JVM chamada compute engine que é um serviço para processar os dados enviados pelo sonar scanner e enviar para o servidor web.
Enquanto que o sonar scanner possui:
1 JVM que analisa o código baseado nas configurações e plugins existentes, enviando para o sonarqube webserver.
Configurando o SonarQube
Dentro da pasta do sonarqube acesse a pasta conf e edite o arquivo sonar.properties Para aumentar a capacidade do servidor web:
remova o comentário "#sonar.web.javaOpts=-Xmx2048m -Xms1024m -XX:+HeapDumpOnOutOfMemoryError -Djava.net.preferIPv4Stack=true"
Para aumentar a capacidade do compute engine:
remova o comentário "#sonar.ce.javaOpts=-Xmx2048m -Xms1024m -XX:+HeapDumpOnOutOfMemoryError -Djava.net.preferIPv4Stack=true"
Salve o arquivo e tente executar novamente.
Configurando o Sonar Scanner
Dentro da pasta do sonar scanner, acesse a pasta bin e edite o arquivo sonar-scanner.bat
Na linha 76 antes do %JAVA_EXEC% copie e cole o seguinte comando "set SONAR_SCANNER_OPTS=-Xmx512m -XX:MaxPermSize=128m"
Dica: Dependendo da complexidade do projeto, talvez seja necessário aumentar mais do que 512mb da JVM.
Referências
http://docs.sonarqube.org/display/SONAR/Get+Started+in+Two+Minutes http://docs.sonarqube.org/display/SCAN/Analyzing+with+SonarQube+Scanner