This is an automated email from the ASF dual-hosted git repository.
Startrekzky pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/devlake.git
The following commit(s) were added to refs/heads/main by this push:
new 361455ef0 fix(sonarqube): correct aggregate coverage formula in
Grafana dashboards (#8997)
361455ef0 is described below
commit 361455ef07317141b3f72d5628d2298d1dd05a7d
Author: Bramhanand Lingala <[email protected]>
AuthorDate: Fri Aug 7 18:01:57 2026 +0530
fix(sonarqube): correct aggregate coverage formula in Grafana dashboards
(#8997)
---
grafana/dashboards/mysql/Sonarqube.json | 2 +-
grafana/dashboards/mysql/sonar-qube-cloud.json | 2 +-
grafana/dashboards/postgresql/Sonarqube.json | 2 +-
grafana/dashboards/postgresql/sonar-qube-cloud.json | 2 +-
4 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/grafana/dashboards/mysql/Sonarqube.json
b/grafana/dashboards/mysql/Sonarqube.json
index 4ab544576..a08e0b478 100644
--- a/grafana/dashboards/mysql/Sonarqube.json
+++ b/grafana/dashboards/mysql/Sonarqube.json
@@ -530,7 +530,7 @@
"editorMode": "code",
"format": "table",
"rawQuery": true,
- "rawSql": "SELECT\n CONCAT(ROUND((sum(lines_to_cover) -
sum(uncovered_lines)) / sum(lines_to_cover) * 100, 1), '% ', 'Coverage on ',
ROUND(sum(lines_to_cover) / 1000, 0),'k Lines to cover')\nFROM
cq_file_metrics\nWHERE\n project_key in (${project_id})\n",
+ "rawSql": "SELECT\n CONCAT(ROUND(SUM(coverage * lines_to_cover) /
NULLIF(SUM(lines_to_cover), 0), 1), '% ', 'Coverage on ',
ROUND(sum(lines_to_cover) / 1000, 0),'k Lines to cover')\nFROM
cq_file_metrics\nWHERE\n project_key in (${project_id})\n",
"refId": "A",
"sql": {
"columns": [
diff --git a/grafana/dashboards/mysql/sonar-qube-cloud.json
b/grafana/dashboards/mysql/sonar-qube-cloud.json
index 064285ab9..8b2726d72 100644
--- a/grafana/dashboards/mysql/sonar-qube-cloud.json
+++ b/grafana/dashboards/mysql/sonar-qube-cloud.json
@@ -634,7 +634,7 @@
"editorMode": "code",
"format": "table",
"rawQuery": true,
- "rawSql": "SELECT\n CONCAT(ROUND((sum(lines_to_cover) -
sum(uncovered_lines)) / sum(lines_to_cover) * 100, 1), '% ', 'Coverage on ',
ROUND(sum(lines_to_cover) / 1000, 0),'k Lines to cover')\nFROM
cq_file_metrics\nWHERE\n project_key in (${project_id})\n",
+ "rawSql": "SELECT\n CONCAT(ROUND(SUM(coverage * lines_to_cover) /
NULLIF(SUM(lines_to_cover), 0), 1), '% ', 'Coverage on ',
ROUND(sum(lines_to_cover) / 1000, 0),'k Lines to cover')\nFROM
cq_file_metrics\nWHERE\n project_key in (${project_id})\n",
"refId": "A",
"sql": {
"columns": [
diff --git a/grafana/dashboards/postgresql/Sonarqube.json
b/grafana/dashboards/postgresql/Sonarqube.json
index b9b916f14..e8f45f4df 100644
--- a/grafana/dashboards/postgresql/Sonarqube.json
+++ b/grafana/dashboards/postgresql/Sonarqube.json
@@ -530,7 +530,7 @@
"editorMode": "code",
"format": "table",
"rawQuery": true,
- "rawSql": "SELECT ROUND(CAST((SUM(lines_to_cover) -
SUM(uncovered_lines)) AS NUMERIC) / NULLIF(SUM(lines_to_cover), 0) * 100, 1) ||
'% ' || 'Coverage on ' || ROUND(CAST(CAST(SUM(lines_to_cover) AS NUMERIC) /
NULLIF(1000, 0) AS DECIMAL), 0) || 'k Lines to cover' FROM cq_file_metrics
WHERE ('${project_id:csv}' = '' OR project_key::text =
ANY(ARRAY[${project_id:singlequote}]::text[]))",
+ "rawSql": "SELECT ROUND(CAST(SUM(coverage * lines_to_cover) AS
NUMERIC) / NULLIF(SUM(lines_to_cover), 0), 1) || '% ' || 'Coverage on ' ||
ROUND(CAST(CAST(SUM(lines_to_cover) AS NUMERIC) / NULLIF(1000, 0) AS DECIMAL),
0) || 'k Lines to cover' FROM cq_file_metrics WHERE ('${project_id:csv}' = ''
OR project_key::text = ANY(ARRAY[${project_id:singlequote}]::text[]))",
"refId": "A",
"sql": {
"columns": [
diff --git a/grafana/dashboards/postgresql/sonar-qube-cloud.json
b/grafana/dashboards/postgresql/sonar-qube-cloud.json
index 496fd63a8..ea7c1ecc6 100644
--- a/grafana/dashboards/postgresql/sonar-qube-cloud.json
+++ b/grafana/dashboards/postgresql/sonar-qube-cloud.json
@@ -634,7 +634,7 @@
"editorMode": "code",
"format": "table",
"rawQuery": true,
- "rawSql": "SELECT ROUND(CAST((SUM(lines_to_cover) -
SUM(uncovered_lines)) AS NUMERIC) / NULLIF(SUM(lines_to_cover), 0) * 100, 1) ||
'% ' || 'Coverage on ' || ROUND(CAST(CAST(SUM(lines_to_cover) AS NUMERIC) /
NULLIF(1000, 0) AS DECIMAL), 0) || 'k Lines to cover' FROM cq_file_metrics
WHERE ('${project_id:csv}' = '' OR project_key::text =
ANY(ARRAY[${project_id:singlequote}]::text[]))",
+ "rawSql": "SELECT ROUND(CAST(SUM(coverage * lines_to_cover) AS
NUMERIC) / NULLIF(SUM(lines_to_cover), 0), 1) || '% ' || 'Coverage on ' ||
ROUND(CAST(CAST(SUM(lines_to_cover) AS NUMERIC) / NULLIF(1000, 0) AS DECIMAL),
0) || 'k Lines to cover' FROM cq_file_metrics WHERE ('${project_id:csv}' = ''
OR project_key::text = ANY(ARRAY[${project_id:singlequote}]::text[]))",
"refId": "A",
"sql": {
"columns": [