Мой вопрос является продолжением вопроса, размещенного здесь на Новые показатели покрытия кода не возвращают значения из SonarQube 5.3 API
Недавно мы выпустили Sonar 5.3, чтобы использовать преимущества new_coverage и других новых показателей. Однако после нескольких дней анализа кода мы обнаружили, что Sonar неправильно обрабатывает метрику new_coverage. Однако он может использовать new_violations и т. д.
Эта ситуация довольно регулярна и происходит для нескольких проектов на основе Java. После запуска анализа Sonar сообщит об изменении в ncloc, new_violations и т. д., но не сообщит значение для var2 и fvar2 для new_coverage. Вот пример ответа для одного приложения по URL-адресу https://internal.sonar.server.com/api/resources?resource=prj_key&format=json&metrics=ncloc,new_coverage&includealerts=true&includetrends=true
[
{
"creationDate": "2016-04-06T15:51:29-0400",
"date": "2016-06-20T21:48:27-0400",
"description": "",
"id": 6610,
"key": "<PRJ_KEY>",
"lname": "<PRJ_LNAME>",
"name": "<PRJ_LNAME>",
"p1": "previous_version",
"p1d": "2016-06-06T02:21:39-0400",
"p1p": "16.06.00-SNAPSHOT",
"p2": "previous_analysis",
"p2d": "2016-06-20T16:42:38-0400",
"p2p": "2016-06-20",
"p3": "days",
"p3d": "2016-05-22T02:22:57-0400",
"p3p": "30",
"qualifier": "TRK",
"scope": "PRJ",
"uuid": "AVPtITChBmbOnKmhsXJi",
"version": "16.06.01-SNAPSHOT",
"msr": [
{
"alert": null,
"alert_text": null,
"frmt_val": "41,589",
"fvar1": "483",
"fvar2": "9",
"fvar3": "743",
"key": "ncloc",
"val": 41589.0,
"var1": 483.0,
"var2": 9.0,
"var3": 743.0
},
{
"alert": null,
"alert_text": null,
"frmt_val": "47.9%",
"fvar1": "-0.4%",
"fvar2": "0.0%",
"fvar3": "-0.3%",
"key": "coverage",
"val": 47.9,
"var1": -0.399999999999999,
"var2": 0.0,
"var3": -0.300000000000004
},
{
"alert": "OK",
"alert_text": null,
"fvar1": "15.2%",
"fvar3": "28.1%",
"key": "new_coverage",
"var1": 15.2317880794702,
"var3": 28.1407035175879
}
]
}
]
Как вы видите в приведенном выше ответе, у нас есть строки кода, измененные с момента предыдущего анализа (и все эти строки находятся в функциональном коде, который не игнорируется. Однако для var2 для поля new_coverage нет значения, несмотря на то, что анализ был только что сделано вчера. Проблема не только в API, но даже на стороне пользовательского интерфейса. Мы не видим «значение с момента предыдущего анализа» для новой метрики покрытия для нескольких метрик, но другие новые метрики кода и общее покрытие приходят просто отлично.