Как использовать веб-API Sonarcloud - PullRequest
0 голосов
/ 13 ноября 2018

Недавно я начал использовать sonarcloud, и меня попросили разработать университетский проект для получения технического долга по проекту. Я пытаюсь использовать веб-API, представленный sonarcloud, но без особого успеха. Это код Python, который я написал

import requests
import json

r = requests.get ('https://sonarcloud.io/component_measures?id=Huginn87_jabref/api/metrics/component?component=&metricKeys=sqale_index',auth= (' usr ',' pwd '))

code = r.status_code

print "Status code:", code

print r.json ()

и вот результат я получаю

Status code: 200

Traceback (most recent call last):
  File "test.py", line 7, in <module>
    print r.json ()

  File "/home/usr/.local/lib/python2.7/site-packages/requests/models.py", line 897, in json
    return complexjson.loads (self.text, ** kwargs)

  File "/usr/lib/python2.7/json/__init__.py", line 339, in loads
    return _default_decoder.decode (s)

  File "/usr/lib/python2.7/json/decoder.py", line 364, in decode
    obj, end = self.raw_decode (s, idx = _w (s, 0) .end ())

  File "/usr/lib/python2.7/json/decoder.py", line 382, ​​in raw_decode
    raise ValueError ("No JSON object could be decoded")

ValueError: No JSON object could be decoded

Согласно документации, вы должны указать мне формат json, но это не так. Будет ли кто-нибудь любезен сказать мне, где я не прав, пожалуйста? Спасибо заранее. Привет.

Ответы [ 2 ]

0 голосов
/ 16 января 2019

В принятом решении говорится, что невозможно собрать метрики, используя curl или скрипт Python. Сначала я подумал, что для Sonarcloud API требуется установить определенный набор заголовков, но это не так.

Далее приведен пример доступа к API Sonarcloud через curl и Python с примером из приведенного выше.

curl "https://sonarcloud.io/api/measures/component_tree?component=keyJabref4.2&metricKeys=sqale_index&ps=100&p=1"

Обратите внимание на кавычки вокруг URL, которые, я думаю, были забыты ранее.

Или аналогично в Python с модулем requests:

import requests

url = 'https://sonarcloud.io/api/measures/component_tree'
query = {'component': 'keyJabref4.2', 'metricKeys': 'sqale_index', 'ps': 100, 'p': 1}
r = requests.get(url, params=query)
metrics_dict = r.json()

В обоих случаях API возвращает HTTP-код состояния 200, и результаты такие же, как при доступе через браузер.

Поскольку я наткнулся на этот вопрос при поиске примера использования API Sonarcloud, его документация находится здесь: https://sonarcloud.io/web_api

0 голосов
/ 22 ноября 2018

Я решил проблему.Я сообщаю ниже решение в случае, если оно служило кому-то еще.Невозможно извлечь метрику с помощью скрипта Python ни с помощью wget, ни с помощью curl, но вы должны поместить URL-адрес в адресную строку

https://sonarcloud.io/api/measures/component_tree?component=keyJabref4.2&metricKeys=sqale_index&ps=100&p=1

Изменение компонента параметров -> ключ к вашему проекту metricKeys -> метрика, которую вы хотите взять ps -> указывает размер страницы и, следовательно, количество элементов, которое, самое большее, может быть равно 500 (от 0 до 499) p -> обозначает страницу(Например, для проектов из 1500 классов вы должны сначала сохранить значения с p = 1, затем с p = 2 и затем с p = 3)

Я благодарю людей, которые пытались мне помочь, даже ваши предложениябыли полезныЯ надеюсь, что он может помочь вам.Привет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...