Web Server API do Sonar
O Sonar possui uma camada de serviços bem vasta que permite desde consultar indicadores, projetos, usuários, eventos, alertas, código fonte, etc. Praticamente qualquer necessidade que você tiver pode ser consultada pela camada de serviços.Alguns serviços não precisam de autenticação e podem ser consultados de forma simples e direta.
Exemplo
Consultar todos os indicadores de um projeto no Sonarhttp://localhost:9000/api/metrics
Outros precisam de autenticação. O Sonar utiliza autenticação básica para HTTP e para isso é necessário informar o usuário e senha a cada requisição. Lembram do usuário "admin" que usamos na configuração do dashboard do Sonar ?
Exemplo
Recuperando as propriedades do servidor Sonaradmin:admin http://localhost:9000/api/server/system
Atenção
Os serviços podem retornar os dados em XML ou Json, por padrão os serviços retornam informações no formato XML. Para alterar o formato para Json, basta incluir o parâmetro "format=json" na chamada, o exemplo abaixo retorna todos os indicadores do servidor no formato json;http://localhost:9000/api/metrics?format=json
Para acessar a documentação completa e oficial da camada de serviços basta acessar o link abaixo:
http://docs.codehaus.org/display/SONAR/Web+Service+API
Consulta de Indicadores
Vamos conhecer a API Web de consulta de indicadores (resources), é o serviço mais utilizado no dia a dia, pois é através dele que vamos integrar o Sonar com qualquer outro serviço, planilha eletrônica, ou novo componente que venhamos a criar.Seu uso básico lista todos os projetos cadastrados no Sonar. http://localhost:9000/api/resources
Mas isso vai trazer somente os projetos do servidor, para trazer os indicadores é necessário completar a requisição com os indicadores que queremos buscar.
No exemplo abaixo, vamos buscar todos os projetos do Sonar e o indicador Número de Linhas de Código:
http://localhost:9000/api/resources?metrics=ncloc
<resources>
</resources>
Atenção: É necessário informar na API a lista de identificadores (key) separados por vírgula dos indicadores que você quer consultar. Caso seja informado um identificador inválido ou sem medida, o Sonar vai ignorar esses indicadores na sua requisição, por exemplo, na requisição abaixo o retorno será igual ao exemplo acima, pois o projeto não tem testes unitários registrados, e o indicador_falso não existe.
http://localhost:9000/api/resources?metrics=ncloc,coverage,indicador_falso
Preparando a lista de identificadores dos indicadores
Existem duas formas de se descobrir os identificadores (key) dos indicadores:- Utilizando a API de indicadores (metrics). O primeiro comando que vimos vai retornar todos os indicadores registrados no Sonar, Ele traz diversas as informações do indicador, como identificador (key), nome, descrição, etc.
Veja no exemplo o retorno dos dados do indicador Número de Linhas de Código:
http://localhost:9000/api/metrics/ncloc
<metrics></metrics> - Fazendo uma consulta direto no dashboard do Sonar e capturando os identificadores dos indicadores que são expostos pela Web API.
Vamos montar a consulta para recuperar o Número de Linhas de Código e o Total Quality e depois montar a requisição com o ncloc que já conhecemos e o Total Quality que é um indicador customizado.
Acessando a dashboard do Sonar, e logado com o usuário Admin, (login e senha "admin", lembra ? caso não se lembra, não deixe de ver o post "Configurando visualizações do Sonar") será exibido no menu o link para "measure", clique nele para acessarmos um gerador de consultas do Sonar. Pode acessar diretamente o link também:
http://localhost:9000/measures
Preencha o filtro de pesquisa com Projetos e adicione os dois indicadores (metrics) Lines os Code e Total Quality, como na imagem abaixo e clique em Search:
Filtro de pesquisa preenchido
A busca vai gerar o link abaixo na barra de endereço do navegador. Repare que nos trechos em negrito, já temos o que precisamos, que é os identificadores dos indicadores que queremos.
http://localhost:9000/measures/search?qualifiers%5B%5D=TRK&baseId=&c3_metric=ncloc&c3_period=&c3_op=gt&c3_val=0&c2_metric=total-quality&c2_period=&c2_op=gt&c2_val=0&search=Search
Com os identificadores expostos fica fácil gerar nossa query pela API:
http://localhost:9000/api/resources?metrics=ncloc,total-quality
<resources>
</resources>
O Sonar Snitch que implementei utiliza além desse serviço o serviço TimeMachine que consegue analisar os indicadores a cada build disparada. Já conversamos sobre essa ferramenta nos posts "Meus primeiros passos no Sonar" e "Integrando indicadores com o Total Quality". Vamos conversar mais sobre essa ferramenta em posts futuros, mas basicamente ela usa 2 serviços o resources que já vimos e o timemachine que permite analisar todos os indicadores de cada inspeção realizada.
Complemento
A documentação completa dessa API encontra-se no link abaixo:http://docs.codehaus.org/pages/viewpage.action?pageId=244875483
Espero que tenham se divertido tanto quanto eu, esse post vai servir de base para posts que mostrem como integrar o Sonar em outras aplicações e planilhas.
Um grande abraço a todos.
Atenciosamente,
Erick Ferreira Marques da Silva
Nenhum comentário:
Postar um comentário