如何使用web api sonarcloud
How to use web api sonarcloud
最近开始使用sonarcloud,大学项目要求我提取项目的技术债务。我正在尝试使用 sonarcloud 公开的网络 API 但收效甚微。这是我写的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格式,但它没有。请问有人好心告诉我哪里错了吗?提前谢谢了。你好。
我解决了这个问题。我在下面报告解决方案,以防它为其他人服务。无法使用 wget 或 curl 的 python 脚本提取指标,但您必须将 url 放在地址栏中
更改参数
组件 -> 项目的关键
metricKeys -> 您要采用的指标
ps -> 表示页面大小,因此元素的数量最多可以等于 500(从 0 到 499)
p -> 表示页面(例如,对于 1500 类 的项目,您必须先使用 p = 1 保存值,然后使用 p = 2,然后使用 p = 3)
我感谢那些试图帮助我的人,即使你的建议也很有帮助。我希望他能帮助你。问候
公认的解决方案表明无法使用 curl
或 Python 脚本收集指标。首先,我认为 Sonarcloud API 需要设置一定的 headers ,但事实并非如此
下面是一个通过 curl 访问 Sonarcloud API 的例子,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 returns HTTP 状态代码 200 和结果与通过浏览器访问时相同。
当我在搜索有关如何使用 Sonarcloud API 的示例时偶然发现了这个问题,它的文档在这里:https://sonarcloud.io/web_api
最近开始使用sonarcloud,大学项目要求我提取项目的技术债务。我正在尝试使用 sonarcloud 公开的网络 API 但收效甚微。这是我写的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格式,但它没有。请问有人好心告诉我哪里错了吗?提前谢谢了。你好。
我解决了这个问题。我在下面报告解决方案,以防它为其他人服务。无法使用 wget 或 curl 的 python 脚本提取指标,但您必须将 url 放在地址栏中
更改参数 组件 -> 项目的关键 metricKeys -> 您要采用的指标 ps -> 表示页面大小,因此元素的数量最多可以等于 500(从 0 到 499) p -> 表示页面(例如,对于 1500 类 的项目,您必须先使用 p = 1 保存值,然后使用 p = 2,然后使用 p = 3)
我感谢那些试图帮助我的人,即使你的建议也很有帮助。我希望他能帮助你。问候
公认的解决方案表明无法使用 curl
或 Python 脚本收集指标。首先,我认为 Sonarcloud API 需要设置一定的 headers ,但事实并非如此
下面是一个通过 curl 访问 Sonarcloud API 的例子,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 returns HTTP 状态代码 200 和结果与通过浏览器访问时相同。
当我在搜索有关如何使用 Sonarcloud API 的示例时偶然发现了这个问题,它的文档在这里:https://sonarcloud.io/web_api