【问题标题】:What is the sonar database structure?什么是声纳数据库结构?
【发布时间】:2012-02-29 21:55:28
【问题描述】:

我正在尝试根据以下因素生成月度报告

  1. Lo​​C(代码行)
  2. 遵守规则 %
  3. 评论%
  4. 公开记录的 API %
  5. 安全违规
  6. 违规(不包括信息)
  7. 重复行 %

我试图检查声纳数据库中的实体关系,所有表都是独立的。 我不确定我应该从哪个表中获取值以便生成报告。

对于下面的提示,查询被提及

提示:

select proj.name as ClassName, -- Class Name for which violation has been found out
       proj.long_name as LongName, -- Long Class Name i.e. with package for which violation has been found out
       rf.failure_level as ErrorLevel, -- Error level of the violation
       rf.message as Violation, -- Cause of Violation 
       rf.line as LineNumber, -- Line number of the class file
       ru.name ViolationName, -- Violation Description
       ru.plugin_name PluginType -- Plugin tool by which this error has been detected i.e. findbug, PMD, etc.
       --  ,ru.description  -- (if violation description is required we can add this column) from projects proj  inner join snapshots snap on  proj.id = snap.project_id inner join rule_failures rf on rf.snapshot_id = snap.id inner join rules ru on ru.id = rf.rule_id

【问题讨论】:

标签: sonarqube


【解决方案1】:

我建议使用Sonar REST API 来检索统计信息。

开发团队故意未记录数据库架构。这使他们能够做出不破坏相关报告应用程序的更改。 (显然这不会阻止某人运行 SQL 查询)


示例

CXF project in nemo 为例。

resources”REST API 返回您请求的指标的最新值

http://nemo.sonarsource.org/api/resources?resource=org.apache.cxf:cxf&verbose=true&metrics=ncloc,violations_density,comment_lines_density,public_documented_api_density,duplicated_lines_density,blocker_violations,critical_violations,major_violations,minor_violations

而“timemachine”REST API 返回数据的原始 CSV 转储:

http://nemo.sonarsource.org/api/timemachine?resource=org.apache.cxf:cxf&format=csv&metrics=ncloc,violations_density,comment_lines_density,public_documented_api_density,duplicated_lines_density,blocker_violations,critical_violations,major_violations,minor_violations

(我的浏览器会方便地启动一个电子表格来读取 CSV 数据)

【讨论】:

  • Mark 绝对正确,您不应该直接查询数据库,而应使用我们提供的 Web Service API。如果 API 不能完全满足您的需求,请在用户邮件列表中发送邮件,我们将看看如何改进。
【解决方案2】:

您可以使用下表获得以上信息。

1) 项目、快照、指标和 project_measures。其中项目表包含项目名称。并且对于每个项目,在快照表中的特定时间段内创建一个快照 id。然后从快照表中获取快照 id 并搜索它的 projects_measure 表。并使用度量 id 搜索描述属性的值。

select distinct proj.name NAME_OF_PROJ, metric.description Description,
                projdesc.value, snap.created_at CREATED_DATE
  from projects proj
    inner join snapshots snap on snap.project_id=proj.id 
  inner join (select max(snap2.created_at) as date_of_creation,id from snapshots snap2 
              where Date(snap2.created_at)   in ('2011-12-20','2012-02-21') 
               and snap2.project_id  in (5507,35252,9807,38954,23018,32390) 
              GROUP BY DAY(snap2.created_at),snap2.project_id ) as Lookup on Lookup.id=snap.id 

  inner join project_measures projdesc on  projdesc.snapshot_id=snap.id 
  inner join metrics metric on  projdesc.metric_id =metric.id 
  where  metric.id in( 1,2...)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-10-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-03
    • 1970-01-01
    • 2021-05-10
    • 2014-07-14
    • 2017-07-04
    相关资源
    最近更新 更多