SonarQube 不会将所有结果存储在数据库中吗?
SonarQube doesn't store all results in the database?
我知道我不应该直接从 SonarQube 使用数据库,但这是一次性的复杂事情,如果我可以直接从数据库进行操作,可以节省我的时间。
我需要知道每个项目的 类 数量,其中行数少于 200。到目前为止,在 SQL 中创建它没有问题。
我唯一的问题是:对于 2 个项目,此信息根本没有存储在数据库中!在 SonarQube 的 GUI 中,我可以看到每个文件的这个度量,但是在数据库中,这些文件只存储了 1 个度量(技术债务)。
我的猜测是,由于某些奇怪的原因,这些措施是为该项目即时计算的?那可能吗?有没有办法强制 SonarQube 为数据库中的每个文件存储项目度量?我尝试使用 sonar.analysis.mode=analysis 参数,但没有用?
非常感谢和问候,
彼得
我对你的问题有点困惑。你是说,当使用你的 SQL 查询时,除了 2 个项目,你的结果都是正确的,其指标出现在 SonarQube 仪表板中?
我想问题不会来自您的 SQL 查询?
您最近 运行 这 2 个项目了吗?
尝试清除浏览器缓存?
此致。
这是由于查询。这是正确的查询
SELECT metrics.description, root.name, COUNT(project_measures.metric_id) AS AmountOfFiles,
SUM(CASE WHEN project_measures.value < 200 THEN 1 ELSE 0 END) Less200,
SUM(CASE WHEN ((project_measures.value >= 200) AND (project_measures.value <= 1000)) THEN 1 ELSE 0 END) Between200And1000,
SUM(CASE WHEN project_measures.value > 1000 THEN 1 ELSE 0 END) More1000
FROM project_measures
INNER JOIN metrics on project_measures.metric_id = metrics.id
INNER JOIN snapshots on project_measures.snapshot_id = snapshots.id
INNER JOIN projects root on snapshots.root_project_id = root.id
WHERE metrics.id = '1' /*Line: code lines + comments + blanc lines*/
and root.scope = 'PRJ' /*projects*/
and snapshots.scope = 'FIL'
and root.name like '%' /* '%' to show all projects*/
GROUP BY root.name
我知道我不应该直接从 SonarQube 使用数据库,但这是一次性的复杂事情,如果我可以直接从数据库进行操作,可以节省我的时间。
我需要知道每个项目的 类 数量,其中行数少于 200。到目前为止,在 SQL 中创建它没有问题。
我唯一的问题是:对于 2 个项目,此信息根本没有存储在数据库中!在 SonarQube 的 GUI 中,我可以看到每个文件的这个度量,但是在数据库中,这些文件只存储了 1 个度量(技术债务)。
我的猜测是,由于某些奇怪的原因,这些措施是为该项目即时计算的?那可能吗?有没有办法强制 SonarQube 为数据库中的每个文件存储项目度量?我尝试使用 sonar.analysis.mode=analysis 参数,但没有用?
非常感谢和问候,
彼得
我对你的问题有点困惑。你是说,当使用你的 SQL 查询时,除了 2 个项目,你的结果都是正确的,其指标出现在 SonarQube 仪表板中?
我想问题不会来自您的 SQL 查询? 您最近 运行 这 2 个项目了吗? 尝试清除浏览器缓存?
此致。
这是由于查询。这是正确的查询
SELECT metrics.description, root.name, COUNT(project_measures.metric_id) AS AmountOfFiles,
SUM(CASE WHEN project_measures.value < 200 THEN 1 ELSE 0 END) Less200,
SUM(CASE WHEN ((project_measures.value >= 200) AND (project_measures.value <= 1000)) THEN 1 ELSE 0 END) Between200And1000,
SUM(CASE WHEN project_measures.value > 1000 THEN 1 ELSE 0 END) More1000
FROM project_measures
INNER JOIN metrics on project_measures.metric_id = metrics.id
INNER JOIN snapshots on project_measures.snapshot_id = snapshots.id
INNER JOIN projects root on snapshots.root_project_id = root.id
WHERE metrics.id = '1' /*Line: code lines + comments + blanc lines*/
and root.scope = 'PRJ' /*projects*/
and snapshots.scope = 'FIL'
and root.name like '%' /* '%' to show all projects*/
GROUP BY root.name