2012-02-08 122 views
12

我想下面的因素生成月度報告的基礎什麼是聲納數據庫結構?

  1. LOC(行代碼)
  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 
+0

是否太多適合您的需求了?[報告插件](http://docs.codehaus.org/display/SONAR/Sonar+PDF+Plugin)? – oers 2012-02-08 13:03:14

+0

哦,請在您以前的問題上爲您的努力提供幫助並[請接受答案](http://meta.stackexchange.com/a/5235/160062)。 – oers 2012-02-08 13:06:04

回答

7

你可以得到上面的信息使用下表。

1)項目,快照,指標和項目對策。其中項目表包含項目名稱。並且對於每個項目,在快照表中的一段時間內創建一個快照ID。然後從快照表中獲取快照ID並搜索它的projects_measure表。並使用度量標識搜索descibed屬性的值。

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...) 
+0

是的它工作正常 – Amrin 2012-02-23 11:34:56

11

我會建議使用Sonar REST API檢索統計數據。

數據庫架構故意未被開發團隊記錄在案。這使他們能夠進行不會中斷相關報告應用程序的更改。 (顯然,這並不能阻止別人運行SQL查詢)


使用CXF project in nemo作爲一個例子。

的 「資源」 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

和 「時間機器」 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數據a)

+0

Mark絕對是對的,你不應該直接查詢數據庫,而是使用我們提供的Web服務API。如果API不能完全滿足您的需求,那麼請在用戶郵件列表上發送郵件,我們將看到如何改進它。 – 2012-02-09 12:29:33