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

Entregando código Swift com qualidade

Entregando código Swift com qualidade

Avatar for Salmo Junior

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