web-dev-qa-db-fra.com

Comment utiliser l'API Web SonarQube?

Auparavant, j'ai demandé comment exporter des données personnalisées à partir de la base de données SonarQube , et l'équipe Sonar m'a suggéré d'utiliser l'API Web.

Après quelques recherches, je me bats toujours sur la façon d'utiliser l'API Web. (Je ne connais pas très bien le fonctionnement de l'API Web)

Après avoir lu ce post , je me rends compte que je peux utiliser Java code pour le faire. (Je viens de découvrir comment utiliser Apache Http Client) Cependant, après courir

HttpGet httpGet = new HttpGet("http://localhost:9000/api/issues?metrics=lines"); (copié de ce message)

J'ai eu:

HTTP/1.1 404 {"errors":[{"msg":"Unknown url : /api/issues"}]}

Après avoir changé cette ligne en:

HttpGet httpGet = new HttpGet("http://localhost:9000/project/issues?facetMode=effort&id=project%3Atesting&resolved=false&types=CODE_SMELL");

J'ai eu:

HTTP/1.1 200 <!DOCTYPE html><html lang="en"><head><meta http-equiv="content-type" content="text/html; charset=UTF-8" charset="UTF-8"/><meta http-equiv="X-UA-Compatible" content="IE=Edge"><link rel="Apple-touch-icon" href="/Apple-touch-icon.png"><link rel="Apple-touch-icon" sizes="57x57" href="/Apple-touch-icon-57x57.png"><link rel="Apple-touch-icon" sizes="60x60" href="/Apple-touch-icon-60x60.png"><link rel="Apple-touch-icon" sizes="72x72" href="/Apple-touch-icon-72x72.png"><link rel="Apple-touch-icon" sizes="76x76" href="/Apple-touch-icon-76x76.png"><link rel="Apple-touch-icon" sizes="114x114" href="/Apple-touch-icon-114x114.png"><link rel="Apple-touch-icon" sizes="120x120" href="/Apple-touch-icon-120x120.png"><link rel="Apple-touch-icon" sizes="144x144" href="/Apple-touch-icon-144x144.png"><link rel="Apple-touch-icon" sizes="152x152" href="/Apple-touch-icon-152x152.png"><link rel="Apple-touch-icon" sizes="180x180" href="/Apple-touch-icon-180x180.png"><link rel="icon" type="image/x-icon" href="/favicon.ico"><meta name="application-name" content="SonarQube"/><meta name="msapplication-TileColor" content="#FFFFFF"/><meta name="msapplication-TileImage" content="/mstile-512x512.png"/><link href="/css/sonar.bf342fee.css" rel="stylesheet"><title>SonarQube</title></head><body><div id="content"><div class="global-loading"><i class="spinner global-loading-spinner"></i> <span class="global-loading-text">Loading...</span></div></div><script>window.baseUrl=""</script><script src="/js/vendor.0ba4fd94.js"></script><script src="/js/app.bf342fee.js"></script></body></html>

Ce qui n'est pas non plus ce que j'attends.

Je me demande quelle est la bonne façon d'utiliser le Web API ? Par exemple, si je veux obtenir le code sent pour un projet. Comment le code devrait être en Java?

Voici le code que j'utilise en ce moment:

import Java.io.IOException;
import org.Apache.http.HttpEntity;
import org.Apache.http.client.ClientProtocolException;
import org.Apache.http.client.methods.CloseableHttpResponse;
import org.Apache.http.client.methods.HttpGet;
import org.Apache.http.impl.client.CloseableHttpClient;
import org.Apache.http.impl.client.HttpClients;
import org.Apache.http.util.EntityUtils;

public class Test {
    public static void main(String[] args) throws ClientProtocolException, IOException {

        //HttpGet httpGet = new HttpGet("http://localhost:9000/api/issues?metrics=lines");
        HttpGet httpGet = new HttpGet("http://localhost:9000/project/issues?facetMode=effort&id=project%3Atesting&resolved=false&types=CODE_SMELL");

        try(CloseableHttpClient httpClient = HttpClients.createDefault();
            CloseableHttpResponse response = httpClient.execute(httpGet);) {
            System.out.println(response.getStatusLine());
            HttpEntity entity = response.getEntity();
            System.out.println(EntityUtils.toString(entity));
        }
    }
}

Appréciez pour toute aide ou conseil!

6
MaXon

L'API Web SonarQube vit sous le /api chemin de contexte, selon la documentation SonarQube, ainsi que la section et l'opération (qui vous semblent manquer).

Par exemple, pour rechercher des problèmes sur l'hôte local exécuté sur le port 9000, envoyez un GET à http://localhost:9000/api/issues/search?pageSize=500&componentKeys=YOUR_COMPONENT et analyser la réponse JSON.

Vous devrez peut-être également fournir une autorisation, qui est envoyée sous la forme d'un combo de mot de passe de nom d'utilisateur BASIC ou d'un jeton d'accès que vous pouvez récupérer via le client Web.

12
Evan Knowles

http://localhost:9000/web_api/ peut être utile, expliquer les paramètres, avoir des exemples de changements de réponse et de trace avec les versions de Sonarqube.

4
JARVARS