Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Entregando código Swift com qualidade

Entregando código Swift com qualidade

Salmo Junior

April 25, 2017
Tweet

More Decks by Salmo Junior

Other Decks in Technology

Transcript

  1. Salmo Junior » Chapter Leader do CocoaHeadsBH » Dev iOS

    desde 2011 » Corinthiano » Viajante [email protected] @salmojr
  2. Perguntas » O que fazem para garantir a qualidade de

    seus projetos iOS? » Como fazem a coleta e companhamento de métricas?
  3. O que veremos hoje Nessa talk vamos configurar um ambiente

    com o SonarQube para automatizar a análise de qualidade de projetos Swift.
  4. Motivações » Código mais estável e organizado » Devs. usando

    o tempo com o que gostam » Métricas centralizadas » Menor custo » Satisfação do cliente/usuário
  5. Pré-requisitos » Xcode 7 ou superior » Homebrew » PIP

    » SonarQube » Docker - (Opcional)
  6. Ferramentas que vamos utilizar » SonarQube Scanner » Backelite Sonar-swift

    » SwiftLint » Tailor » slather » lizard » xcpretty
  7. 1/12 - Instalar o SonarQube Para esta demonstração vamos usar

    uma imagem do Docker, mas quem quiser fazer manualmente, pode ir direto para o site do SonarQube. Versão 6.3.1. docker run -d --name sonarqube -p 9000:9000 -p 9092:9092 sonarqube
  8. 2/12 - Instalar o puglin sonar- swift Baixar o plugin

    Backelite Sonar-swift e adicionar a nossa instancia do SonarQube. » Baixar o plugin na pasta '$SONARQUBE_HOME/extensions/ plugins' » Reiniciar o SonarQube
  9. 4/12 - Instalar o SwiftLint O SwiftLint vai nos ajudar

    a fazer a análise estática e controle de code style. Instalar versão 0.3.0 ou acima. brew install swiftlint
  10. 5/12 - Instalar o Tailor O Tailor é utilizado para

    análise estática e lint. Instalar versão 0.11.1 ou acima. brew install tailor
  11. 6/12 - Instalar o Slather O Slather é responsável por

    gerar relatório de cobertura de testes. Instalar versão 2.1.0 ou acima. gem install slather
  12. 7/12 - Instalar o Lizard O Lizard faz a análise

    de complexidade ciclomática de código para várias linguagens. sudo pip install lizard
  13. 8/12 - Instalar o xcpretty O xcpretty é um wrapper

    sobre o xcodebuild que permite rodar comanddos de forma simples e rápida. git clone https://github.com/Backelite/xcpretty.git cd xcpretty git checkout fix/duration_of_failed_tests_workaround gem build xcpretty.gemspec sudo gem install --both xcpretty-0.2.2.gem
  14. 9/12 - Configurar o projeto Na raiz do projeto é

    preciso criar uma cópia do arquivo sonar- project.properties, fazendo as alterações de acordo com o seu projeto. ########################## # Required configuration # ########################## # Project key will also be used for binary file sonar.projectKey=prjKey sonar.projectName=prjName sonar.projectVersion=1.0 # Comment if you have a project with mixed ObjC / Swift sonar.language=swift . .
  15. 10/12 - Instalar o SonarQube Scanner Instale o SonarQube Scanner

    direto do site oficial, ele será o responsável por análisar e enviar os dados para o SonarQube. Para alterar o endereço do host, adicione as linhas abaixo no arquivo sonar-project.properties. #----- Default SonarQube server #sonar.host.url=http://localhost:9000
  16. 11/12 - Criar o script de Run Faça uma cópia

    local do script run-sonar-swift.sh para rodar juntamente, todas as ferramentas instaladas anteriormente. ./run-sonar-swift.sh
  17. 12/12 - Volte para o SonarQube Se todos os passos

    foram seguidos corretamente, basta atualizar a página e você terá uma visão sobre a qualidade do seu projeto. :)
  18. Benefícios » Custo baixo (Todas as ferramentas são gratuitas e

    open- source) » Code Review mais rápido e focado no que realmente interessa » Sem necessidade de alterações e adição de dependências no projeto » Fácil configuração e acompanhamento
  19. Dicas » Configure preferencialmente no início do projeto » Vincule

    como mais um step do seu job de CI, exemplo: Jenkins » Adicione à sua lane, caso já utilize o Fastlane » Issues críticas e bloqueantes não devem existir » Converta ociosidade em refatoração de código » O Dashboard deve ser acessível a todos do time