2012-02-08 9 views
12

나는 아래 요인에 (코드 라인) 소나 데이터베이스 구조 란 무엇입니까?

  • 규칙 준수 %
  • 코멘트 %
  • 공공 문서화 된 API %
  • 보안 위반

    1. 명 LoC을 월별 보고서베이스를 생성하기 위해 노력하고
    2. 위반 (정보 제외)
    3. 중복 된 전화 %

    소나 데이터베이스에서 엔티티 관계를 확인하려고했지만 모든 테이블은 독립적입니다. 보고서를 생성하기 위해 어떤 테이블에서 값을 가져야하는지 확실하지 않습니다. 쿼리 아래의 힌트를

    는 언급

    힌트 :

    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

    은 [Report Plugin] (http://docs.codehaus.org/display/SONAR/Sonar+PDF+Plugin)이 너무 많습니다. – oers

    +0

    아, 이전 질문에 대한 답변을 제공하고 (답변 수락) (http://meta.stackexchange.com/a/5235/160062) 도와 주신 분께 감사드립니다. – oers

    답변

    7

    위의 정보를 사용하여 얻을 수 있습니다. 아래 표를 참조하십시오.

    1) 프로젝트, 스냅 샷, 메트릭 및 project_measures. 여기서 프로젝트 테이블에는 프로젝트 이름이 들어 있습니다. 그리고 각 프로젝트마다 하나의 스냅 샷 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가 맞습니다. 데이터베이스를 직접 쿼리하면 안되며, 우리가 제공하는 웹 서비스 API를 사용해야합니다.API가 사용자의 요구를 완전히 충족시키지 못하면 사용자 메일 링리스트에 메일을 보내 주시면 개선 방법을 알려 드리겠습니다. –

    관련 문제