From 59da9a53d14c6cb38fe4aadae8cff4ea7ff6e5f1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20L=C3=B6thberg?= Date: Tue, 7 Apr 2015 21:14:37 +0200 Subject: [PATCH] Add Coverity Scan integration Closes #405 Closes #325 --- server.js | 35 +++++++++++++++++++++++++++++++++++ try.html | 4 ++++ 2 files changed, 39 insertions(+) diff --git a/server.js b/server.js index 08cda12..66e75d2 100644 --- a/server.js +++ b/server.js @@ -578,6 +578,41 @@ camp.route(/^\/sonar\/(http|https)\/(.*)\/(.*)\/coverage\.(svg|png|gif|jpg|json) }); })); +// Coverity integration +camp.route(/^\/coverity\/scan\/(.+)\.(svg|png|gif|jpg|json)$/, +cache(function(data, match, sendBadge, request) { + var projectId = match[1]; // eg, `3997` + var format = match[2]; + var url = 'https://scan.coverity.com/projects/' + projectId + '/badge.json'; + var badgeData = getBadgeData('coverity', data); + request(url, function(err, res, buffer) { + if (err != null) { + badgeData.text[1] = 'inaccessible'; + sendBadge(format, badgeData); + return; + } + try { + var data = JSON.parse(buffer); + badgeData.text[1] = data.message; + + if (data.message === 'passed') { + badgeData.colorscheme = 'brightgreen' + } else if (/^passed .* new defects$/.test(data.message)) { + badgeData.colorscheme = 'yellow'; + } else if (data.message === 'pending') { + badgeData.colorscheme = 'orange'; + } else if (data.message === 'failed') { + badgeData.colorscheme = 'red'; + } + 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 605866b..39e729d 100644 --- a/try.html +++ b/try.html @@ -152,6 +152,10 @@ Pixel-perfect   Retina-ready   Fast   Consistent   Hackable https://img.shields.io/codecov/c/github/codecov/example-python.svg + Coverity Scan: + + https://img.shields.io/coverity/scan/3997.svg + HHVM: https://img.shields.io/hhvm/symfony/symfony.svg