Skip to content

Instantly share code, notes, and snippets.

@maxkarelov
Last active December 2, 2015 10:52
Show Gist options
  • Save maxkarelov/22832133e433ca368e19 to your computer and use it in GitHub Desktop.
Save maxkarelov/22832133e433ca368e19 to your computer and use it in GitHub Desktop.
SQL queries to SonarQube 5.2 database for retrieve information
# get one line comma-separated list of project paths with zero integration test coverage
mysql -h127.0.0.1 -uroot -proot sonar -e "SELECT concat(projects.long_name,'/*,') FROM snapshots JOIN projects ON snapshots.project_id=projects.id JOIN project_measures as m1 ON m1.snapshot_id=snapshots.id JOIN project_measures as m2 ON m2.snapshot_id=snapshots.id WHERE snapshots.islast=1 AND snapshots.scope=\"DIR\" AND m1.metric_id=59 AND m1.value=0 AND m2.metric_id=3;" > /tmp/list.txt
sed -i '1d' /tmp/list.txt
cat /tmp/list.txt | tr -d ' ' | tr -d "\n" > /tmp/complete_list.txt
# or remove leading characters (jenkins limit 300k)
cat /tmp/classes.txt | awk -F"/" '{ print "**/" $(NF-1) "/" $NF }'
# update property in database
UPDATE properties AS p SET p.text_value="**/MyExclusionClass.java" WHERE p.resource_id=(SELECT p.id FROM projects AS p WHERE p.scope="PRJ" AND p.name LIKE "ProjectName" AND p.authorization_updated_at is not null LIMIT 0,1) AND p.prop_key="sonar.coverage.exclusions";
UPDATE properties AS p
SET p.text_value="**/MyExclusionClass.java"
WHER p.resource_id=(SELECT p.id FROM projects AS p WHERE p.scope="PRJ" AND
p.name LIKE "ProjectName" AND
p.authorization_updated_at is not null LIMIT 0,1)
AND p.prop_key="sonar.coverage.exclusions";
# query, m2.value contains line of code value
# metric_id = 59 - it line coverage
# metric_id = 3 - number lines of code
SELECT concat(projects.long_name,'/*,')
FROM snapshots
JOIN projects ON snapshots.project_id=projects.id
JOIN project_measures as m1 ON m1.snapshot_id=snapshots.id
JOIN project_measures as m2 ON m2.snapshot_id=snapshots.id
WHERE snapshots.islast=1 AND
snapshots.scope="DIR" AND
m1.metric_id=59 AND
m1.value=0 AND
m2.metric_id=3;
#
SELECT concat(projects.long_name,'/*,')
FROM snapshots
JOIN projects ON snapshots.project_id=projects.id
JOIN project_measures as m1 ON m1.snapshot_id=snapshots.id
JOIN project_measures as m2 ON m2.snapshot_id=snapshots.id
WHERE snapshots.root_project_id=( SELECT p.id
FROM projects AS p
WHERE p.scope="PRJ" AND
p.name LIKE "ProjectName" AND
p.authorization_updated_at is not null
LIMIT 0,1) AND
snapshots.islast=1 AND
snapshots.scope="DIR" AND
m1.metric_id=59 AND
m1.value=0 AND
m2.metric_id=3;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment