Sonar (now SonarQube) – Monitor Project and Code Quality

Sonar-Open Source Project and Code Quality Monitoring

Olivier Gaudin, Freddy Mallet, SonarSource, http://www.sonarsource.com

o que é o Sonar ?

Sonar (agora chamado de SonarQube) é uma plataforma de código aberto usada por equipes de desenvolvimento para gerenciar a qualidade do código fonte. O Sonar foi desenvolvido com um objetivo principal em mente: tornar a gestão da qualidade do Código Acessível a todos com o mínimo de esforço.

como tal, o Sonar fornece analisadores de código, ferramentas de comunicação, defeitos de módulos de Caça e TimeMachine como funcionalidade principal. Mas também embarca um mecanismo de plugin que permite que a comunidade para estender a funcionalidade (mais de 35 plugins disponíveis), tornando Sonar o One-stop-shop para a qualidade do código fonte, dirigindo-se não só desenvolvedores, mas também gerentes precisa.

In terms of languages, Sonar support analysis of Java in the core, but also of JavaScript, PHP, PL / SQL and Cobol through plugins (Open Source or commercial) as the reporting engine is language agnostic.

Desde a versão 2.0, Sonar permite a cobertura de qualidade em 7 eixos e, assim, relatório sobre:

  • código Duplicado
  • padrões de Codificação
  • testes de Unidade
  • Complexo código
  • bugs Potenciais
  • Design e arquitetura

Sonar pode ser usado para auditorias, mas foi concebida para apoiar a estratégia de melhoramento contínuo em qualidade de código em uma empresa e, portanto, pode ser utilizado um repositório central para a gestão da qualidade.

Web site: https://www.sonarqube.org/
Product Version: Sonar 2.0
Licence: LGPL V3
suporte: https://www.sonarsource.com/support/
Plugins: https://docs.sonarqube.org/display/PLUG/Plugin+Library

por que você deve gerenciar a qualidade do código fonte?

um programa bem escrito é um programa onde o custo de implementação de um recurso é constante durante toda a vida do programa — Itay Maman

como uma introdução rápida, esta é a melhor definição de qualidade de código fonte que eu poderia encontrar. Ele fica ainda mais forte quando colocado o contrário: programa abadly escrito é um programa onde o custo de implementação de um recurso cresce ao longo do tempo.Isso soa mal, não soa?

todos vimos situações em que começa um novo projecto cujo objectivo é desenvolver a partir do zero uma aplicação numa tecnologia de ponta. Tudo vai muito rápido; primeiro, segundo, terceiro lançamento e, em seguida, de repente, a velocidade da equipe começa a diminuir. O quarto lançamento é adiado pela terceira vez, consertando algo quebra outra coisa…O que se passa aqui? Tendo em conta os sintomas, podemos partir do princípio de que a equipa sofre de dívidas técnicas, entre outras coisas, e que as partes interessadas não estão cientes disso e, por conseguinte, não podem lidar com ele.

mas isso provavelmente será resolvido como o projeto é novo, tem visibilidade e, portanto, alguém vai cuidar dele (pelo menos podemos esperar que sim).

mas este exemplo foi apenas um iniciador, pois nós, pessoal de TI, não trabalhamos A maior parte do nosso tempo em aplicações cujo desenvolvimento começou há menos de 6 meses! Nosso trabalho é feito principalmente de upgrades para aplicações existentes. É aí que a maior parte do dinheiro é gasto, onde há menos visibilidade, onde muitas vezes há um grande envelope anual para fazer o máximo que podemos, onde há pessoas que são fundamentais porque são as únicas capazes de entender o código,onde não temos idéia de quanto tempo uma mudança vai demorar, onde as regressões são frequentes e as pessoas estão com medo de fazer mudanças. E basicamente não há nenhuma atenção do negócio sobre isso, basta fazê-lo!

gerir a qualidade do código fonte tem tudo a ver com a optimização do ROI, uma vez que lhe vai dar visibilidade e, por conseguinte, mais controlo sobre:

  1. como é difícil manutenção vai ser, o que podemos esperar
  2. o fato de que as coisas não estão ficando piores
  3. o fato de que algumas atenção deve ser dada à parte crítica do sistema, para, por exemplo, aumentar a cobertura de testes de unidade, suprimir ciclos, remover duplicações

além disso, mais dá uma cópia de segurança para desenvolvedores de levantar a mão quando eles acreditam que algumas refatorações é necessário que gostaria de acrescentar um pouco para amudança mas seria bom ROI.

como gerir a qualidade do código-fonte?

existem sete eixos técnicos que devem ser olhados ao fazer a análise do código fonte de um projeto e o Sonar é capaz de apoiar a gestão de todos os sete. Na equipe de Sonar, nós gostamos de chamá-los os 7 pecados mortais do desenvolvedor:

  • inobservância dos padrões de codificação e melhores práticas
  • falta de comentários no código-fonte, especialmente nas APIs públicas
  • tendo duplicado linhas de código
  • ter complexo de componentes e/ou má distribuição de complexidade entre os componentes
  • ter baixa ou nenhuma cobertura de código por testes de unidade, especialmente na parte complexa do programa
  • deixando possíveis erros
  • ter um espaguete design (pacote de ciclos…)

o primeiro passo na gestão da qualidade do código fonte é realmente definir quais desses eixos são importantes para você e para que Extensão.Em seguida, com base na situação actual, deve ser estabelecido um plano para atingir o nível alvo (que pode ser simplesmente para manter um elevado nível de qualidade). Muito importante é começar pequeno e ir maior quando ele é totalmente adotado por toda a equipe de desenvolvimento.

agora, vamos dar uma olhada em como usar o Sonar nesta abordagem.

perfis de qualidade

Sonar permite gerir vários perfis de qualidade, a fim de adaptar o nível necessário ao tipo de projecto (Apenas Apoio,novo projecto, aplicação crítica, lib técnica…). A gestão de um perfil consiste em:

ativar / desativar / peso regras de codificação

definir limites nas métricas do sistema automático de alerta

definir projecto / associação de perfil

Painéis

Sonar contém 2 painéis que dão o big picture para obter dicas de onde pode haver problemas e comparar projetos:

  1. uma visão consolidada que mostra todos os projectos
  2. um painel de controle de projeto também está disponível em módulos e pacotes de nível

Caça Ferramentas

Para confirmar que o que parece ser um problema é realmente um problema, Sonar oferece um caça conjunto de ferramentas que permite ir de visão geral para smallestdetails:

  • detalhar cada medida apresentada para ver o que está por trás
  • classes de nuvens, a encontrar menos classes de coberto por testes de unidade
  • hotspots para ter em uma página a mais e a menos arquivos
  • e um multi-entrada (duplicação, a cobertura, as violações, os testes de sucesso…) visualizador de fonte para confirmar as descobertas feitas com as ferramentas de caça

TimeMachine

sem dúvida que saber onde uma aplicação está é muito importante. Mas ainda mais importante é conhecer e compreender a sua evolução.De facto, o que é que vale a pena saber que há 20% de cobertura de códigos por parte de unitests? É bom ou mau? A resposta é diferente se há dois meses era 15% ou 25%? A TimeMachine permite observar a evolução e repetir o passado, especialmente porque grava versões do projeto

como funciona o Sonar?O Sonar é feito de uma arquitetura bastante simples e flexível que consiste em três componentes.:

  • um conjunto de analisadores de código fonte que são agrupados em um plugin Maven e são acionados sob demanda. Os analisadores usam configuração armazenada na base de dados. Embora o Sonar se baseie na Maven para executar a análise, ele é capaz de analisar projetos Maven e não-Maven.
  • uma base de dados para não só persistir os resultados da análise, os projetos e configuração global, mas também para manter a análise histórica para TimeMachine. 5 motores de banco de dados são atualmente suportados: Oracle, MySQL, Derby (demo only), PostgreSQL e MS SQLServer
  • uma ferramenta de relatórios web para exibir painéis de qualidade de código em projetos, caça de defeitos, verificar TimeMachine e configurar a análise.

como parte de seus analisadores, o núcleo de Sonar embarca as melhores ferramentas para encontrar violações das regras de codificação (PMD, Checkstyle), detectar bugs potenciais(Findbugs) e medir a cobertura por testes unitários (Cobertura, Clover). Mas o que faz Sonar verdadeiramente único é Squid, seu próprio analisador de código que não só analisa código fonte, mas também Código byte e mistura os resultados.Uma vez que a análise é executada através de um plugin Maven, o Sonar pode ser lançado facilmente em ambientes de “Integração Contínua”.

Use case on Apache commons-collection project

A pre-required to run Sonar is to have Java and Maven installed on the box. Uma vez que este é o caso, você pode executar Sonar em 5 passos simples:

1. Baixar a distribuição de https://www.sonarqube.org/ downloads / e unzip it

2. Abrir uma consola e iniciar o servidor:

> $SONAR_ nome\bin\windows-x86-32\StartSonar.bat nas janelas

> $SONAR_HOME/bin//sonar.sh em outras plataformas

3. Abra uma consola onde deseja obter a fonte e executar:

svn co http://svn.apache.org/viewvc/commons/proper/collections/trunk/.

4. Executar o sonar de instalação do mvn: sonar no mesmo directório

5. Navegar http://localhost:9000

a página inicial da aplicação mostra a lista de projectos sob controlo de qualidade com algumas métricas configuráveis.

Para ampliar, basta clicar sobre o projeto e obter o seu dashboard

De lá você tem acesso a uma série de ferramentas de caça entre os quais:

O ponto de acesso para saber sobre os arquivos que têm “mais” ou “menos” …

Mas também, qualquer métrica na dashboard é clicável para saltar tobehind a cena e ver o resultado componente subjacente

Cada ferramenta de caça, eventualmente, traz o caçador para o código-fonte onde as presas são destacadas

O Sonar Ecossistema

Existe uma forma muito dinâmica do ecossistema em torno de Sonar

  • ativo de Uma comunidade de mais de 300 pessoas no usuário uma lista de discussão e mais de 150 pessoas no desenvolvimento de lista de discussão
  • 35+ plugins na forja (http://docs.codehaus.org/display/SONAR/Sonar+Plugin+Library/) que são divididos em quatro categorias
  • Integração com ferramentas externas, como o Jira, Hudson, Bambu, GateIn, AnthillPro, Multidão
  • Direto de extensão do núcleo de funcionalidade adicionando novo comportamento, calcular métricas avançadas ou consolidar projetos, adicionar novas métricas
  • Adicionar a cobertura de idiomas, tais como PL/SQL, ActionScript3
  • Integração com IDEs para ter defeitos informações sobre o código quando ele for editado
  • 3,000+ downloads por mês
  • Um núcleo de desenvolvimento de equipe liderada por SonarSource (http://www.sonarsource.com)

Conclusão

Após a adoção maciça de motores de integração contínua e testes impulsionados práticas de desenvolvimento, gerindo a qualidade da fonte parece o próximo passo natural para as equipes de desenvolvimento em seu esforço de industrialização. Sonar permite alcançar este objetivo com poucos esforços e com diversão.

em 2010, a plataforma Sonar vai continuar a evoluir, sendo os principais eixos de desenvolvimento a cobertura de novas línguas e a melhoria da integração com o IDE.

Deixe uma resposta

O seu endereço de email não será publicado.

Previous post 10 coisas que você não sabia que poderia fazer com Sudocrem
Next post TS 16949 Requisitos de Certificação