Sonarqube REST API: какова структура «показателей» в «GET api/measures/component» WS

avatar
Tristan
1 июля 2021 в 15:58
865
1
0

В примере ответа из документации веб-API я вижу, что метрика «ncloc» должна быть такой в ​​веб-ответе JSON:

  "measures": [
  {
    "metric": "ncloc",
    "value": "114",
    "periods": [
      {
        "index": 1,
        "value": "3"
      }
    ]
  },

Но это не так, в моем ответе нет "периодов" для этой метрики:

"measures":[
{
  "metric": "ncloc",
  "value": "2943"
},

Есть "периоды" для некоторых других метрик, и в этом случае нет значения метрики, только значение для каждого периода (и никогда не бывает нескольких периодов, только один соответствует периоду "нового кода") .

Итак, вот мои вопросы по этому поводу: Как я могу узнать, какую структуру ожидать для метрики? какой будет метрика, в которой «периоды» будут иметь список периодов, а не только один, соответствующий «новому коду»?

Источник

Ответы (1)

avatar
raspy
1 июля 2021 в 21:17
1

Я не думаю, что есть несколько периодов. В документации API для моей версии (8.9) указано только period, что, вероятно, означает Период утечки, поскольку раньше назывался Новый код. Я предполагаю, что общее значение относится к общему значению, а значение периода относится к новому коду. Некоторые показатели могут не иметь смысла или учитываться для общего или нового кода, поэтому я бы не стал делать предположений о том, будет ли значение показателя для периода или общего.

Изменить:

Ниже представлена ​​документация по версии 8.9:

ПОЛУЧИТЬ API/меры/компонент

С 5.4

Возврат компонента с указанными мерами. Требуется следующее разрешение: «Обзор» в проекте указанного компонента.

Параметры

Параметр Требуется? С Описание Пример значения
дополнительные поля дополнительно Список дополнительных полей, разделенных запятыми, которые могут быть возвращены в ответе. Возможные значения: метрики, период, периоды Пример значения: период,метрики
филиал дополнительно 6,6 Ключ ответвления. Недоступно в версии для сообщества. Пример значения: feature/my_branch
компонент обязательно Ключ компонента Пример значения: my_project
metricKeys обязательно Список ключей метрик, разделенных запятыми Пример значения: ncloc,сложность,нарушения
pullRequest дополнительно 7.1 Идентификатор запроса на вытягивание. Недоступно в версии для сообщества. Пример значения: 5461

Пример ответа

{
 "component": {
   "key": "MY_PROJECT:ElementImpl.java",
   "name": "ElementImpl.java",
   "qualifier": "FIL",
   "language": "java",
   "path": "src/main/java/com/sonarsource/markdown/impl/ElementImpl.java",
   "measures": [
     {
       "metric": "complexity",
       "value": "12",
       "period": {
         "value": "2",
         "bestValue": false
       }
     },
     {
       "metric": "new_violations",
       "period": {
         "value": "25",
         "bestValue": false
       }
     },
     {
       "metric": "ncloc",
       "value": "114",
       "period": {
         "value": "3",
         "bestValue": false
       }
     }
   ]
 },
 "metrics": [
   {
     "key": "complexity",
     "name": "Complexity",
     "description": "Cyclomatic complexity",
     "domain": "Complexity",
     "type": "INT",
     "higherValuesAreBetter": false,
     "qualitative": false,
     "hidden": false,
     "custom": false
   },
   {
     "key": "ncloc",
     "name": "Lines of code",
     "description": "Non Commenting Lines of Code",
     "domain": "Size",
     "type": "INT",
     "higherValuesAreBetter": false,
     "qualitative": false,
     "hidden": false,
     "custom": false
   },
   {
     "key": "new_violations",
     "name": "New issues",
     "description": "New Issues",
     "domain": "Issues",
     "type": "INT",
     "higherValuesAreBetter": false,
     "qualitative": true,
     "hidden": false,
     "custom": false
   }
 ],
 "period": {
   "mode": "previous_version",
   "date": "2016-01-11T10:49:50+0100",
   "parameter": "1.0-SNAPSHOT"
 }
}

Журнал изменений

Версия Изменить
8,8 устаревшее поле ответа 'id' было удалено.
8,8 устаревшее поле ответа 'refId' было удалено.
8.1 периоды поля ответа в поле измерений устарели. Вместо этого используйте точку.
8.1 периоды поля ответа устарели. Вместо этого используйте точку.
7,6 Использование ключей модуля в параметре 'component' устарело
6,6 поле ответа 'id' устарело. Вместо этого используйте ключ.
6,6 поле ответа 'refId' устарело. Вместо этого используйте 'refKey'.
Tristan
2 июля 2021 в 09:51
0

Это интересно, я в 7.9, не могли бы вы показать пример ответа из 8.9 в своем ответе? (этой документации нет в Интернете, вам нужен установленный экземпляр, чтобы увидеть ее).

Tristan
2 июля 2021 в 11:42
0

Хорошо, мило. Согласно «периоды поля ответа устарели. Вместо этого используйте период». Похоже, они поняли, что никогда не бывает нескольких периодов.