No post anterior expliquei como instalar e configurar o SonarQube com o plugin do Delphi. Neste post vamos configurar nosso projeto Delphi e realizarmos nosso primeiro scanner.
Criando Projeto no SonarQube
Acesse o SonarQube a partir do endereço http://localhost:9000 e em seguida clique na opção Criar um projeto localmente.
Em seguida deverá ser informado os dados do projeto, tais como: Display Name, Project Key e Branch Name. Dando um destaque no Project Key, é esse o camarada que devemos lembrar, pois vamos precisar para configurar o arquivo de scanner.
O próximo passo é referente a configuração. Como que o SonarQube tratará um novo código. Nesse caso, podemos marcar a primeira opção Use the Global Setting e clicar em Create Project.
Use the Global setting
Versão anterior
Qualquer código que tenha sido alterado desde a versão anterior é considerado código novo.
Recomendado para projetos que seguem versões ou lançamentos regulares.
Em Método de Análise escolheremos a opção localmente. Em outros vídeos demonstrarei como fazer a integração via GitLab (não percam).
A última etapa de configuração no SonarQube e não menos importante é Analise o seu Projeto. Nela vamos gerar um novo token (que será utilizado pelo sonar-scanner).
Após gerar o token (recomendo salvar em um local seguro), devemos escolher o tipo de projeto e o sistema operacional. Nesse caso podemos escolher Outras Opções e o S.O. Windows.
Ao chegar no final desse processo, copie o comando que o Sonar irá sugerir para nós. É ele que vamos configurar um .bat para rodarmos nossa primeira análise estática.
Criando o Arquivo sonar-project.properties
Na raiz do seu projeto crie um arquivo com o nome sonar-project.properties. Esse arquivo conterá as configurações necessárias para que o SonarScanner possa realizar a análise estática.
Exemplo:
sonar.projectKey=calculator
sonar.delphi.codecoverage.tool=dcc
sonar.delphi.codecoverage.report=CodeCoverage/CodeCoverage/CodeCoverage_Summary.xml
sonar.testExecutionReportPaths=bin/TEST-dunitx-sqresults.xml
sonar.projectKey - Nome da chave que cadastramos nas primeiras etapas do SonarQube.
sonar.delphi.codecoverage.tool - Ferramenta a ser usada pelo CodeCoverage.
sonar.delphi.codecoverage.report - Arquivo de resumo da cobertura de testes do CodeCoverage.
sonar.testExecutionReportPaths - Arquivo de resultado dos testes gerado pelo DUnitX.
sonar.projectKey - Nome da chave que cadastramos nas primeiras etapas do SonarQube.
sonar.delphi.codecoverage.tool - Ferramenta a ser usada pelo CodeCoverage.
sonar.delphi.codecoverage.report - Arquivo de resumo da cobertura de testes do CodeCoverage.
sonar.testExecutionReportPaths - Arquivo de resultado dos testes gerado pelo DUnitX.
Ajustando Projeto de Testes do DUnitX
Antes de criar o arquivo .bat que irá scannear o nosso projeto, devemos realizar alguns ajustes no projeto de testes do DUnitX, são eles:
- Adicionar o arquivo DUnitX.Loggers.XML.SonarQube.pas no projeto.
- Importar a pasta do DUnitX da Embarcadero.
- Importar as bibliotecas do Jedi
- Adicionar diretiva de compilação CI
- Adicionar pasta de fontes a ser analisada pelo SonarDelphi
O arquivo DUnitX.Loggers.XML.SonarQube.pas encontra-se no site oficial do GitHub da Embarcadero. O mesmo pode ser baixado e salvo na pasta da sua aplicação.
Em seguida deverá adicionar no library path o caminho da pasta do DUnitX da Embarcadero, a mesma pode ser encontrada em: C:\Program Files (x86)\Embarcadero\Studio\[versão]\source\DunitX
O arquivo do DUnitX que acabamos de importar da Embarcadero necessita de algumas bibliotecas do Jedi para funcionar corretamente. Essas bibliotecas podem ser baixadas diretamente do site do DephiCodeCoverage.
Devemos importá-las no library path:DelphiCodeCoverage-master\3rdParty\JCL\Source\common
DelphiCodeCoverage-master\3rdParty\JCL\Source\include
DelphiCodeCoverage-master\3rdParty\JCL\Source\include\jedi
DelphiCodeCoverage-master\3rdParty\JCL\Source\Windows
Para que o console da aplicação não fique questionando a iteração do usuário no momento de rodar os testes pelo CodeCoverage, devemos criar a diretiva de compilação CI em Options -> Delphi Compiler -> Condicional Defines.
E por fim no View Source do projeto de testes devemos informar quais são as pastas dos fontes da aplicação. Para isso crie um arquivo na raiz do projeto e informe as pastas onde encontram-se os fontes e em seguida implemente o código abaixo.
Criando Arquivo RunScannerSonar.bat
Agora chegou o momento de criarmos o arquivo para scannear o nosso projeto e enviar as informações ao SonarQube. Sabe aquele comando que você salvou na última etapa do SonarQube? É agora que iremos utilizá-lo.
Juntamente com o comando copiado, devemos executar a cobertura de teste pelo CodeCoverage para obtermos os relatórios de cobertura. Segue exemplo do arquivo RunScannerSonar.bat completo:
cd CodeCoverage
CodeCoverage.exe ^
-e ..\bin\CalculadoraTests.exe ^
-m ..\bin\CalculadoraTests.map ^
-dproj ..\Calculadora.dproj ^
-od CodeCoverage ^
-emma ^
-html ^
-xml ^
-xmllines ^
-v
cd..
sonar-scanner.bat -D"sonar.projectKey=calculator" -D"sonar.sources=." -D"sonar.host.url=http://localhost:9000" -D"sonar.token=sqp_561ba0a6cde158b5215462abd0433e4f8011cb59"
Ao salvar o arquivo e rodar o RunScannerSonar.bat, o mesmo deverá ser capaz de rodar o CodeCoverage e iniciar o SonarScanner. E no final do processo deverá ter algo semelhante as imagens abaixo:
E aí gostou? Comente o que achou. Nos próximos posts falarei mais sobre CI usando o SonarQube e como podemos automatizar esse processo.
Abaixo segue um vídeo de toda a configuração descrita.
Links
DelphiCodeCoverage
SonarDelphi
SonarScanner
Nenhum comentário:
Postar um comentário