Метрика new_coverage не работает с момента предыдущего анализа сонара 5.3

Мой вопрос является продолжением вопроса, размещенного здесь на Новые показатели покрытия кода не возвращают значения из 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, но даже на стороне пользовательского интерфейса. Мы не видим «значение с момента предыдущего анализа» для новой метрики покрытия для нескольких метрик, но другие новые метрики кода и общее покрытие приходят просто отлично.


person Rohan    schedule 22.06.2016    source источник


Ответы (1)


У вас могут быть новые строки кода без нового покрытия, например, если новые строки кода являются комментариями. В этом случае у вас не должно быть значения, потому что 0 означает, что покрыто 0% нового кода.

Проверьте метрику new_lines_to_cover, которая возвращает количество строк, которые необходимо заполнить в новом коде. Обратите внимание, что в этом показателе есть ошибка, когда нет новых строк для покрытия.

В пользовательском интерфейсе был создан тикет.

person Teryk - SonarSource    schedule 23.06.2016
comment
Как я уже упоминал в конце, все новые строки представляют собой функциональный код в файлах классов .java, и ни один из файлов не игнорируется. на самом деле, в предыдущем прогоне были new_major_violations для var2, но не new_code_coverage для var2. Это кажется странным, верно? - person Rohan; 23.06.2016
comment
да, странно. Что возвращает new_lines_to_cover? - person Teryk - SonarSource; 23.06.2016
comment
так что эта проблема не возникла в последнем анализе, и, поскольку мы не принимали во внимание эту метрику, мы не знаем ценности этой метрики. Однако теперь мы будем отслеживать и эту метрику и добавим мой ответ через день или два, когда снова обнаружим эту проблему. - person Rohan; 23.06.2016