sexta-feira, 12 de janeiro de 2024

Configurando o Projeto Delphi para o SonarQube

 


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.

Exemplo: sonar-scanner.bat -D"sonar.projectKey=calculator" -D"sonar.sources=." -D"sonar.host.url=http://localhost:9000" -D"sonar.token=sqp_561ba0a6cde158b5215462abd0433e4f8011cb59"

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.









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

Postagem em Destaque

Configurando o Projeto Delphi para o SonarQube

  No post anterior expliquei como instalar e configurar o SonarQube com o plugin do Delphi . Neste post vamos configurar nosso projeto Del...

As mais visitadas