<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Jonas Zacari</title>
    <description>The latest articles on DEV Community by Jonas Zacari (@jonaszaca).</description>
    <link>https://dev.to/jonaszaca</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F458934%2F54ae5754-2614-4d6b-9e99-41f63cc508e7.jpeg</url>
      <title>DEV Community: Jonas Zacari</title>
      <link>https://dev.to/jonaszaca</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/jonaszaca"/>
    <language>en</language>
    <item>
      <title>Implementação do SonarQube 7.7 No Android Studio - MacOs</title>
      <dc:creator>Jonas Zacari</dc:creator>
      <pubDate>Thu, 27 Aug 2020 02:10:36 +0000</pubDate>
      <link>https://dev.to/jonaszaca/implementacao-do-sonarqube-7-7-no-android-studio-macos-17c6</link>
      <guid>https://dev.to/jonaszaca/implementacao-do-sonarqube-7-7-no-android-studio-macos-17c6</guid>
      <description>&lt;p&gt;Fala galera, este será meu primeiro post no fórum, e irei abordar o tema sobre como implementar o SonarQube 7.7 no Android Studio e fazer o Scan de toda sua aplicação localmente.&lt;/p&gt;

&lt;p&gt;Pelo baixo conteúdo disponível em português eu decidi abordar este tema, pois acredito que não serei o único a ficar com os cabelos brancos, quando alguém te pede desde a implementação até a extração de report para controle de bugs e qualidade de software, sendo a primeira vez que ouvimos falar nessa ferramenta.&lt;/p&gt;

&lt;p&gt;Iremos utilizar para este cenário a versão 7.7 Communit Edition do SonarQube.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://www.sonarqube.org/downloads/" rel="noopener noreferrer"&gt;Download SonarQube&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fygz0uq4ox7vxlgkldmjz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fygz0uq4ox7vxlgkldmjz.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Instalação
&lt;/h1&gt;

&lt;p&gt;Após realizar o download, descompacte o arquivo onde preferir, feito isso você notará que ele contém essa estrutura:&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F3rsow2kuh4c0tcmrj5zs.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F3rsow2kuh4c0tcmrj5zs.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Feito isso, será necessário iniciar o serviço através do terminal.&lt;/p&gt;

&lt;p&gt;Para isso, abra o Terminal do MacOs, navegue até o local onde você descompactou o SonarQube, como pode ver na imagem:&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fp65db9un7ubh7klx1dr4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fp65db9un7ubh7klx1dr4.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h4&gt;
  
  
  Iniciando o servidor SonarQube
&lt;/h4&gt;

&lt;p&gt;Após localizar e acessar a pasta onde contém o executável sonar.sh, execute o comando : &lt;code&gt;./sonar.sh start&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Logo aparecerá a mensagem de que o servidor foi iniciado.&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fz7uk72lnpjs5tfulrcfl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fz7uk72lnpjs5tfulrcfl.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Após ter inicializado o servidor, você deverá validar acessando o servidor pelo localhost.&lt;br&gt;
&lt;code&gt;http://localhost:9000/about&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fe8makxznzqwd73wbkczg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fe8makxznzqwd73wbkczg.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Como estamos localmente a senha e o password são: &lt;code&gt;admin&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Crie um novo Projeto, por definição escolhemos o nome relacionado a aplicação que iremos realizar o Scan.&lt;/p&gt;

&lt;p&gt;Existe a opção de logar passando como parâmetro de login, o Key de acesso gerado ao criar seu novo projeto, mas nesse caso iremos prosseguir de outra maneira por ser local.&lt;/p&gt;
&lt;h4&gt;
  
  
  Preparando o Ambiente no Android Studio
&lt;/h4&gt;

&lt;p&gt;Nessa etapa, acredito que todos tenham instalado o Android Studio em suas máquinas, caso não tenha pode realizar o download através do link :&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://developer.android.com/studio/?gclid=CjwKCAjwkJj6BRA-EiwA0ZVPVuOma1rdvJ0tNrNW4QJoIWr76oQRnhyZIUoe5TJFjHOQ2w_ydSvzHxoCgA8QAvD_BwE&amp;amp;gclsrc=aw.ds" rel="noopener noreferrer"&gt;Download Android Studio&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Não irei abortar com mais profundidade sobre como instalar o Android Studio, caso necessite existe muito conteúdo disponível na internet.&lt;/p&gt;
&lt;h4&gt;
  
  
  Implementando o plugin do SonarQube no Gradle.
&lt;/h4&gt;

&lt;p&gt;Dentro do seu projeto, existem dois build.gradle, um para o módulo e outro para o projeto.&lt;/p&gt;

&lt;p&gt;Você deve importar a dependência a seguir, dentro do build.gradle do Projeto ( build.gradle (Project)).&lt;br&gt;
&lt;code&gt;classpath "org.sonarsource.scanner.gradle:sonarqube-gradle-plugin:3.0"&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Lembrando que o import deve ser realizado dentro do dependencies { } &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F32az28i60sxozexbyi4u.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F32az28i60sxozexbyi4u.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Feito isso, o próximo passo é abrir o build.gradle (Module),&lt;br&gt;
e adicionar o plugin junto com os outros plugins que seu projeto estiver utilizando.&lt;br&gt;
&lt;code&gt;apply plugin: 'org.sonarqube'&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fzds4k0fzt08b2c1lf0ww.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fzds4k0fzt08b2c1lf0ww.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Lembrando que os plugins não necessariamente estarão dentro de um bloco&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Próximo passo é colocar o implementar o bloco de código, para comunicação do Android para o Gradle, passando os parâmetros do seu projeto, irei utilizar como exemplo um projeto pessoal.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sonarqube {
        properties {
            property "sonar.projectName", "ProjectName"
            property "sonar.projectKey", ":mobileSalesForce"
            property "sonar.host.url", "http://localhost:9000"
            property "sonar.language", "java"
            property "sonar.sources", "src/main/"
            property "sonar.login", "admin"
            property "sonar.password", "admin"
        }
    }
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Descrição : &lt;br&gt;
property "sonar.projectName", "ProjectName" = Nome do seu Projeto Android.&lt;br&gt;
property "sonar.projectKey", ":mobileSalesForce" = Nome dado na hora da criação da sua pasta dentro do SonarQube, Exemplo: criei a pasta no Sonar com noome MSF_VENDEDOR, irei por no Key, o mesmo nome da pasta criada.&lt;br&gt;
property "sonar.language" = Linguagem utilizada no desenvolvimento do software.&lt;br&gt;
property "sonar.sources" = Local onde está a localizado seu projeto, geralmente o Android Studio mantém este padrão caso não mude pode utilizá-lo.&lt;/p&gt;

&lt;p&gt;Feito Isso você deverá pelo terminal do Android, ir até a pasta do seu projeto onde está localizado os componentes do projeto tais como, gradlew.bat, build.gradle...&lt;/p&gt;

&lt;p&gt;Na pasta do projeto, você deverá executar o seguinte comando:&lt;br&gt;
&lt;code&gt;sudo ./gradlew sonarqube&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Feito isso irá buildar seu projeto, e após alguns minutos ele terá feito o Scan total do seu projeto, e lhe apresentando os dados na pasta onde vc criou dentro do SOnarQube no Localhost:9000.&lt;/p&gt;

&lt;p&gt;No exemplo abaixo, eu utilizei um projeto pessoal contendo uma variedade de classes obsoletas, e erros para execução do SonarQube.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fwih0q2vy0d90r34g3jml.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fwih0q2vy0d90r34g3jml.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Após o Scan completo do Projeto irá ter esse resultado:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fj58ukoqnclysnmcy3cfl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fj58ukoqnclysnmcy3cfl.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Para verificar o resultado, volte para a página localhost:9000, caso não tenha atualizado sozinho, atualize a página.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fcq2i2ucdph533tlrq44i.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fcq2i2ucdph533tlrq44i.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;SonarQube é uma ferramenta muito útil, pois ela consegue identificar as classes que contém os Bugs, as vulnerabilidades, e a quantidade de códigos duplicados, basta você procurar nos resultados do Scan.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F8m9e2t6by7qt05gwaaxm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F8m9e2t6by7qt05gwaaxm.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Como podemos ver abaixo:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fi0507j6ia44vf8cpbrs5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fi0507j6ia44vf8cpbrs5.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Temos também a opção de gerar o Report em .csv para análise, mas esse processo consiste em inserir um plugin na raiz do SonarQube, caso alguém necessite pode me contactar.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F674eacoe01oo1359ra0j.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F674eacoe01oo1359ra0j.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Existem outras formas para se realizar o scanner do projeto, tais como, com chave de acesso, caso tenha necessidade de implementar o SonarQube no servidor.&lt;br&gt;
E também tem outras formas de executar esse processo local, mas resolvi apresentar a consideravelmente mais fácil.&lt;/p&gt;

&lt;p&gt;Espero Ter ajudado :) &lt;/p&gt;

</description>
      <category>android</category>
      <category>java</category>
      <category>kotlin</category>
    </item>
  </channel>
</rss>
