Comment utiliser SonarQube API web?
Auparavant, j'ai demandé à comment exporter des données personnalisées à partir de SonarQube Base de données, et le Sonar de l'Équipe suggère de moi que je dois utiliser l'API Web.
Après quelques recherches, je suis toujours en difficulté sur la façon d'utiliser l'API Web. (
Je suis très familier avec la façon dont le Web API travaille)
Après la lecture de ce post, je me rends compte que je peux utiliser du code Java pour le faire. (Je viens juste de passer à travers la façon d'utiliser Apache Http Client) Cependant, après l'exécution
HttpGet httpGet = new HttpGet("http://localhost:9000/api/issues?metrics=lines");
(copié à partir de ce post)
J'ai eu:
HTTP/1.1 404
{"errors":[{"msg":"Unknown url : /api/issues"}]}
Après je modifier cette ligne:
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 href="/apple-touch-icon.png"><link sizes="57x57" href="/apple-touch-icon-57x57.png"><link sizes="60x60" href="/apple-touch-icon-60x60.png"><link sizes="72x72" href="/apple-touch-icon-72x72.png"><link sizes="76x76" href="/apple-touch-icon-76x76.png"><link sizes="114x114" href="/apple-touch-icon-114x114.png"><link sizes="120x120" href="/apple-touch-icon-120x120.png"><link sizes="144x144" href="/apple-touch-icon-144x144.png"><link sizes="152x152" href="/apple-touch-icon-152x152.png"><link sizes="180x180" href="/apple-touch-icon-180x180.png"><link 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" ><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>
Qui n'est pas ce que j'attends en tant que bien.
Je me demande quelle est la bonne façon d'utiliser le Web API? Par exemple, si je veux obtenir les odeurs de code pour un projet. La façon dont le code doit être en Java?
Voici le code que j'utilise pour le 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écier pour toute aide ou des conseils!
Vous devez vous connecter pour publier un commentaire.
La SonarQube web API vit sous le
/api
chemin de contexte, comme par le SonarQube de la documentation, ainsi que la section et de la section de fonctionnement (qui vous semblent manquer).Comme un exemple, pour rechercher des questions sur localhost en cours d'exécution sur le port 9000, envoyer un
GET
àhttp://localhost:9000/api/issues/search?pageSize=500&componentKeys=YOUR_COMPONENT
et d'analyser la réponse JSON.Vous devrez peut-être fournir l'autorisation, ce qui est envoyé sous la forme soit d'un nom d'utilisateur mot de passe combo, ou un jeton d'accès que vous pouvez le récupérer via le client web.
pageSize
juste contrôle le nombre de résultats que vous obtenez en retour, 500 est le maximum. Le obsolète liste de documents, mais je serais surpris si ils ont été supprimé: docs.sonarqube.org/pages/viewpage.action?pageId=2392181http://localhost:9000/api/issues/search?pageSize=500&componentKeys=YOUR_COMPONENT
, il donne une bonne recherche des problèmes dans le format JSON sur le navigateur. Mais quand j'essaie de le lancer par le biais de l'extraction de l'API à partir de Javascript, il ne semble pas réagir avec ant résultats. Aucune idée pourquoi?