From 526a7a59017f2a66900c417558048989bc5018cb Mon Sep 17 00:00:00 2001 From: Dmitry Baev Date: Fri, 26 Dec 2014 18:37:50 +0300 Subject: [PATCH] add sonar coverage support --- server.js | 36 ++++++++++++++++++++++++++++++++++++ try.html | 4 ++++ 2 files changed, 40 insertions(+) diff --git a/server.js b/server.js index 2358111f8d..4e0e277cec 100644 --- a/server.js +++ b/server.js @@ -471,6 +471,42 @@ cache(function(data, match, sendBadge, request) { }); })); +// SonarQube code coverage +camp.route(/^\/sonar\/(http|https)\/(.*)\/(.*)\/coverage\.(svg|png|gif|jpg|json)$/, + cache(function(data, match, sendBadge, request) { + var scheme = match[1]; + var serverUrl = match[2]; // eg, `sonar.qatools.ru`. + var buildType = match[3]; // eg, `ru.yandex.qatools.allure:allure-core:master`. + var format = match[4]; + var apiUrl = scheme + '://' + serverUrl + '/api/resources?resource=' + buildType + + '&depth=0&metrics=coverage&includetrends=true'; + var badgeData = getBadgeData('coverage', data); + request(apiUrl, { headers: { 'Accept': 'application/json' } }, function(err, res, buffer) { + if (err != null) { + badgeData.text[1] = 'inaccessible'; + sendBadge(format, badgeData); + } + try { + var data = JSON.parse(buffer); + + var percentage = data[0].msr[0].val; + + if (percentage === undefined) { + badgeData.text[1] = 'unknown'; + sendBadge(format, badgeData); + return; + } + + badgeData.text[1] = percentage.toFixed(0) + '%'; + badgeData.colorscheme = coveragePercentageColor(percentage); + sendBadge(format, badgeData); + } catch(e) { + badgeData.text[1] = 'invalid'; + sendBadge(format, badgeData); + } + }); + })); + // Gratipay integration. camp.route(/^\/(gittip|gratipay)\/(.*)\.(svg|png|gif|jpg|json)$/, cache(function(data, match, sendBadge, request) { diff --git a/try.html b/try.html index df844fe75f..2c3eb9c934 100644 --- a/try.html +++ b/try.html @@ -124,6 +124,10 @@ When that is implemented, change the placeholder to 'search / project URL' https://img.shields.io/coveralls/jekyll/jekyll/master.svg + SonarQube Coverage: + + https://img.shields.io/sonar/http/sonar.qatools.ru/ru.yandex.qatools.allure:allure-core:master/coverage.svg + TeamCity CodeBetter Coverage: https://img.shields.io/teamcity/coverage/bt1242.svg