2012-02-08 16 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

+0

ああ、前回の質問であなたを助け、[回答を受け入れる]努力(http://meta.stackexchange.com/a/5235/160062)に感謝します。 – oers

答えて

7

あなたは上記の情報を使用して次の表を得ることができます。

1)プロジェクト、スナップショット、メトリック、およびプロジェクト対策。プロジェクトテーブルにはプロジェクト名が含まれます。また、各プロジェクトごとに、特定の期間にスナップショットテーブルに1つのスナップショットIDが作成されます。スナップショットテーブルからスナップショットIDを取得し、それをprojects_measureテーブルで検索します。 metric idを使用して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

11

私は統計情報を取得するためにSonar REST APIを使用してお勧めします。

データベーススキーマは、開発チームによって意図的に文書化されていません。これにより、依存するレポート作成アプリケーションを壊さない変更を加えることができます。例としてCXF project in nemoを使用して


(これは明らかに、誰か実行しているSQLクエリを停止しません)。

"リソース" 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 dat a)

+0

Markは間違いなく正しいです。データベースを直接照会するのではなく、提供するWebサービスAPIを使用してください。APIがあなたのニーズを十分に満たしていない場合は、ユーザーのメーリングリストでメールを送信してください。改善の方法がわかります。 –

関連する問題