Analisando a qualidade do código com DR-Tools Suite

Guilherme Lacerda

Palestra: Analisando a qualidade do código com DR-Tools Suite

Como você mede a saúde do seu código? Você conhece as métricas apresentadas em ferramentas como o SonarQube? Como eu analiso as métricas de forma conjunta? Se eu baixar um projeto do GitHub, onde estão os principais problemas? Todas essas perguntas serviram de inspiração para a criação do DR-Tools Suite. 

Nesta palestra, vamos apresentar o DR-Tools Suite, atualmente composta por ferramentas abertas de métricas e de visualização, com o intuito de ajudar na saúde e bem estar do código, apoiando os desenvolvedores no seu trabalho diário, identificando códigos com possíveis sintomas que prejudicam a evolução do software. Vamos apresentar também todo o processo e insights usados na sua construção.

Tópicos abordados:

    • O projeto nasceu da junção de experiências no mercado (mais de 20 anos atuando com desenvolvimento de software) e acadêmico (atualmente, estão sendo desenvolvidas pesquisas de doutorado que resultaram no estágio atual das ferramentas e na prospecção de outras, ainda em desenvolvimento). 
    • Uma das pesquisas relacionadas ao DR-Tools foi publicada recentemente no Journal of Systems and Software (link do artigo no final).
    • Nossa intenção é desenvolver uma família de ferramentas open-source, desenhadas para ajudar o desenvolvedor no seu trabalho diário.
    • O DR-tools-metric é a primeira ferramenta que desenvolvemos. Atualmente, a ferramenta analisa códigos Java. 
    • O DR-tools-metric é uma ferramenta simples, mas poderosa. Simples porque ela vai num caminho diferente do que outras ferramentas de métricas, como o SonarQube, no qual é necessário toda uma infraestrutura para suportá-la. A forma de execução do DR-tools-metric é por linha de comando, que nos permite fazer várias combinações de saída da informação (console e formatos CSV e JSON), ganhando em versatilidade. A simplicidade também está presente ao selecionar as métricas que, correlacionadas, podem nos dar alguns indicativos de sintomas de que algo não vai bem no código. 
    • O DR-tools-metric nos dá informações contextualizadas, em vários níveis (projeto/pacotes/classes/métodos), a partir da análise do código-fonte. Atualmente, a ferramenta nos dá informações de tamanho e complexidade, bem como informações sobre vários tipos de dependências (dependências de APIs externas e frameworks, dependências internas de classes do projeto, presença de dependência cíclica) e acoplamento (aferente, eferente, instabilidade e grau de abstração). Além de 33 métricas, definimos 32 heurísticas contextualizadas que apoiam a análise do código. 
    • Também criamos o DR-tools-visualization, ferramenta que permite a visualização dos dados gerados pelo DR-tools-metric, apoiando os devs e o time nas análises e revisões do código.
    • Nesta apresentação, vamos mostrar todo o processo de construção das ferramentas, bem como executá-las em projetos reais ao vivo. Também discutiremos as perspectivas futuras da família DR-tools.
    • Link do artigo: https://www.sciencedirect.com/science/article/pii/S0164121220300881
    • Link do Projeto: http://drtools.site (materiais, documentação, exemplos de uso e links ao repositório do GitHub)

Importante: a palestra será ministrada em dupla, com Daniel Wildt (dwildt@gmail.com)


21 de agosto – 15h30 às 16h30 – Sala 2

Palestrantes /dev (Desenvolvimento)

#supsystic-table-41_wrapper table { border-collapse: collapse; }#supsystic-table-41_wrapper table.stripe tbody tr.even { }#supsystic-table-41_wrapper table.stripe.order-column tbody tr > .sorting_1 { }#supsystic-table-41_wrapper table.hover tbody tr:hover { }#supsystic-table-41_wrapper table.stripe.order-column tbody tr.even > .sorting_1 { }#supsystic-table-41_wrapper table.order-column tbody tr > .sorting_1 { }#supsystic-table-41_wrapper table.hover.order-column tbody tr:hover > .sorting_1 { }#supsystic-table-41_wrapper tbody td { background-color: inherit; }#supsystic-table-41 th, #supsystic-table-41 td { text-align: left; vertical-align: middle; }#supsystic-table-41 { border: 0px solid rgb(217, 228, 242) !important; }#supsystic-table-41_wrapper th { font-size: 3px; border: 0px solid rgb(217, 228, 242) !important; }#supsystic-table-41_wrapper td { border-top: 0px solid rgb(217, 228, 242); border-right: 1px solid rgb(255, 255, 255); border-left: 1px solid rgb(255, 255, 255); }#supsystic-table-41_wrapper tbody tr:first-child td { border-top: none; }#supsystic-table-41_wrapper tbody tr:last-child td { border-bottom: 0px solid rgb(217, 228, 242); }#supsystic-table-41_wrapper .child table { border-collapse: collapse; }
19/08 15h00 - 16h00 Sala 1 Guilherme Arthur de Carvalho Aprendendo Python em pleno período de transformação digital
19/08 15h00 - 16h00 Sala 2 Marcio Junior Vieira Low-Code Data Science with Pentaho Machine Intelligence
19/08 16h30 - 17h30 Sala 3 Antonio CC Marques Porque sou usuário do Debian GNU/Linux
19/08 18h00 - 19h00 Sala 1 Anderson Fernandes Burnes Realidade Aumentada na Web
19/08 18h00 - 19h00 Sala 4 Jackson Mafra HTTP Patterns: PSR 7 & 15
20/08 13h30 - 14h30 Sala 1 Jefferson Souza Música Digital com Web-MIDI
20/08 13h30 - 14h30 Sala 2 Carlos Eduardo Mattos da Cruz (cadunico) Criação de Livros Independentes com Software Livre
20/08 13h30 - 16h00 Sala 4 Júlio Cezar Neves Tutorial: Expressões Regulares - A ferramenta mais útil para programadores
20/08 15h00 - 16h00 Sala 1 Ricardo Ferreira Streaming de dados usando Elasticsearch: do Possível ao Incrível!
21/08 11h30 - 12h30 Sala 1 Maurício "Maujor" Samy Silva As novidades do Bootstrap 5
21/08 11h30 - 12h30 Sala 3 Vinícius Campitelli Melhores práticas de criptografia
21/08 11h30 - 12h30 Sala 4 Wolnei Tomazelli Junior Fedora SilverBlue
21/08 14h00 - 15h00 Sala 3 Elton Minetto Microsserviços usando Go Kit
21/08 14h00 - 15h00 Sala 4 Maruen Said Adequação tecnológica à LGPD com software livre
21/08 15h30 - 16h30 Sala 2 Guilherme Lacerda Analisando a qualidade do código com DR-Tools Suite
21/08 15h30 - 16h30 Sala 4 Guilherme Razgriz O Guia de Sobrevivência Maker na Pandemia
21/08 17h00 - 18h00 Sala 2 Vitor Mattos LibreSign: revolucione a maneira de assinar documentos
21/08 17h00 - 19h30 Sala 4 Sandro Melo Tutorial: Weaponize Python - para Segurança Ofensiva em Infraestrutura 101
21/08 18h30 - 19H30 Sala 2 Valmir Barbosa dos Santos GraphQL com NestJS indo além de Query e Mutation
22/08 11h30 - 12h30 Sala 1 Cartola Desenvolvendo um padrão de publicação de fotos 360°
22/08 15h30 - 16h30 Salas 1, 2, 3 e 4 Randal Schwartz Keynote: Why you should take a good look at Flutter for all platforms! Randal Schwartz [em inglês, SEM tradução simultânea ]