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:
- como é difícil manutenção vai ser, o que podemos esperar
- o fato de que as coisas não estão ficando piores
- 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:
- uma visão consolidada que mostra todos os projectos
- 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.