This is an automated email from the ASF dual-hosted git repository.

abeizn pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/incubator-devlake.git


The following commit(s) were added to refs/heads/main by this push:
     new cc47d5653 fix(sonarqube): add num of lines (#4532)
cc47d5653 is described below

commit cc47d5653fdbe5948c4f1aa9c30f0ef63c48c6ad
Author: Warren Chen <[email protected]>
AuthorDate: Mon Feb 27 19:36:05 2023 +0800

    fix(sonarqube): add num of lines (#4532)
---
 .../domainlayer/codequality/cq_file_metrics.go     | 10 +++++----
 .../migrationscripts/20230208_add_code_quality.go  |  2 +-
 .../migrationscripts/archived/cq_file_metrics.go   | 10 +++++----
 .../raw_tables/_raw_sonarqube_api_filemetrics.csv  | 12 +++++------
 .../_raw_sonarqube_api_filemetrics_additional.csv  | 12 +++++------
 .../_tool_sonarqube_filemetrics.csv                | 14 ++++++------
 .../sonarqube/e2e/snapshot_tables/filemetrics.csv  | 14 ++++++------
 .../migrationscripts/20230111_add_init_tables.go   |  2 +-
 .../archived/sonarqube_file_metrics.go             |  2 ++
 .../sonarqube/models/sonarqube_file_metrics.go     |  8 +++++--
 .../tasks/filemetrics_additional_collector.go      |  2 +-
 .../sonarqube/tasks/filemetrics_collector.go       |  2 +-
 .../sonarqube/tasks/filemetrics_convertor.go       |  2 ++
 backend/plugins/sonarqube/tasks/shared.go          | 25 ++++++++++++++++------
 14 files changed, 70 insertions(+), 47 deletions(-)

diff --git a/backend/core/models/domainlayer/codequality/cq_file_metrics.go 
b/backend/core/models/domainlayer/codequality/cq_file_metrics.go
index 4f70dd533..c83a79813 100644
--- a/backend/core/models/domainlayer/codequality/cq_file_metrics.go
+++ b/backend/core/models/domainlayer/codequality/cq_file_metrics.go
@@ -37,16 +37,18 @@ type CqFileMetrics struct {
        SecurityHotspots                    int
        SecurityHotspotsReviewed            float64
        SecurityReviewRating                string `gorm:"type:varchar(20)"`
-       Ncloc                               int    `json:"ncloc"`
+       Ncloc                               int
        UncoveredLines                      int
-       LinesToCover                        int     `json:"lines_to_cover"`
-       DuplicatedLinesDensity              float64 
`json:"duplicated_lines_density"`
-       DuplicatedBlocks                    int     `json:"duplicated_blocks"`
+       Coverage                            float64
+       LinesToCover                        int
+       DuplicatedLinesDensity              float64
+       DuplicatedBlocks                    int
        DuplicatedFiles                     int
        DuplicatedLines                     int
        EffortToReachMaintainabilityRatingA int
        Complexity                          int
        CognitiveComplexity                 int
+       NumOfLines                          int
 }
 
 func (CqFileMetrics) TableName() string {
diff --git a/backend/core/models/migrationscripts/20230208_add_code_quality.go 
b/backend/core/models/migrationscripts/20230208_add_code_quality.go
index 4cb43071e..6bdbc81e1 100644
--- a/backend/core/models/migrationscripts/20230208_add_code_quality.go
+++ b/backend/core/models/migrationscripts/20230208_add_code_quality.go
@@ -46,7 +46,7 @@ func (u *addCodeQuality) Up(basicRes context.BasicRes) 
errors.Error {
 }
 
 func (*addCodeQuality) Version() uint64 {
-       return 20230221000077
+       return 20230227000081
 }
 
 func (*addCodeQuality) Name() string {
diff --git a/backend/core/models/migrationscripts/archived/cq_file_metrics.go 
b/backend/core/models/migrationscripts/archived/cq_file_metrics.go
index fcda4f55a..e2ee56d2d 100644
--- a/backend/core/models/migrationscripts/archived/cq_file_metrics.go
+++ b/backend/core/models/migrationscripts/archived/cq_file_metrics.go
@@ -33,16 +33,18 @@ type CqFileMetrics struct {
        SecurityHotspots                    int
        SecurityHotspotsReviewed            float64
        SecurityReviewRating                string `gorm:"type:varchar(20)"`
-       Ncloc                               int    `json:"ncloc"`
+       Ncloc                               int
+       Coverage                            float64
        UncoveredLines                      int
-       LinesToCover                        int     `json:"lines_to_cover"`
-       DuplicatedLinesDensity              float64 
`json:"duplicated_lines_density"`
-       DuplicatedBlocks                    int     `json:"duplicated_blocks"`
+       LinesToCover                        int
+       DuplicatedLinesDensity              float64
+       DuplicatedBlocks                    int
        DuplicatedFiles                     int
        DuplicatedLines                     int
        EffortToReachMaintainabilityRatingA int
        Complexity                          int
        CognitiveComplexity                 int
+       NumOfLines                          int
 }
 
 func (CqFileMetrics) TableName() string {
diff --git 
a/backend/plugins/sonarqube/e2e/raw_tables/_raw_sonarqube_api_filemetrics.csv 
b/backend/plugins/sonarqube/e2e/raw_tables/_raw_sonarqube_api_filemetrics.csv
index ce5bb1cc5..ae9e81968 100644
--- 
a/backend/plugins/sonarqube/e2e/raw_tables/_raw_sonarqube_api_filemetrics.csv
+++ 
b/backend/plugins/sonarqube/e2e/raw_tables/_raw_sonarqube_api_filemetrics.csv
@@ -1,7 +1,7 @@
 "id","params","data","url","input","created_at"
-23927,"{""connectionId"":2,""ProjectKey"":""testDevLake""}","{""id"":""AYZ8ryX-vqC8Tm0EnSH_"",""key"":""testDevLake:backend/plugins/jenkins/tasks/api_client.go"",""name"":""api_client.go"",""qualifier"":""FIL"",""path"":""backend/plugins/jenkins/tasks/api_client.go"",""language"":""go"",""measures"":[{""metric"":""ncloc"",""value"":""25""},{""metric"":""lines_to_cover"",""value"":""8""},{""metric"":""uncovered_lines"",""value"":""8"",""bestValue"":false},{""metric"":""sqale_rating"",""va
 [...]
-24194,"{""connectionId"":2,""ProjectKey"":""testDevLake""}","{""id"":""AYZ8ryX-vqC8Tm0EnSI-"",""key"":""testDevLake:backend/plugins/gitlab/e2e/issues_test.go"",""name"":""issues_test.go"",""qualifier"":""FIL"",""path"":""backend/plugins/gitlab/e2e/issues_test.go"",""language"":""go"",""measures"":[{""metric"":""ncloc"",""value"":""117""},{""metric"":""lines_to_cover"",""value"":""18""},{""metric"":""uncovered_lines"",""value"":""18"",""bestValue"":false},{""metric"":""duplicated_blocks""
 [...]
-24712,"{""connectionId"":2,""ProjectKey"":""testDevLake""}","{""id"":""AYZ8ryX-vqC8Tm0EnSI1"",""key"":""testDevLake:backend/plugins/jenkins/impl/impl.go"",""name"":""impl.go"",""qualifier"":""FIL"",""path"":""backend/plugins/jenkins/impl/impl.go"",""language"":""go"",""measures"":[{""metric"":""ncloc"",""value"":""234""},{""metric"":""lines_to_cover"",""value"":""92""},{""metric"":""uncovered_lines"",""value"":""92"",""bestValue"":false},{""metric"":""sqale_rating"",""value"":""1.0"",""b
 [...]
-24093,"{""connectionId"":2,""ProjectKey"":""testDevLake""}","{""id"":""AYZ8ryX-vqC8Tm0EnSI4"",""key"":""testDevLake:backend/plugins/gitlab/e2e/mr_commits_test.go"",""name"":""mr_commits_test.go"",""qualifier"":""FIL"",""path"":""backend/plugins/gitlab/e2e/mr_commits_test.go"",""language"":""go"",""measures"":[{""metric"":""ncloc"",""value"":""139""},{""metric"":""lines_to_cover"",""value"":""24""},{""metric"":""uncovered_lines"",""value"":""24"",""bestValue"":false},{""metric"":""duplica
 [...]
-24107,"{""connectionId"":2,""ProjectKey"":""testDevLake""}","{""id"":""AYZ8ryX-vqC8Tm0EnSI5"",""key"":""testDevLake:backend/plugins/gitlab/e2e/mr_test.go"",""name"":""mr_test.go"",""qualifier"":""FIL"",""path"":""backend/plugins/gitlab/e2e/mr_test.go"",""language"":""go"",""measures"":[{""metric"":""ncloc"",""value"":""103""},{""metric"":""lines_to_cover"",""value"":""15""},{""metric"":""uncovered_lines"",""value"":""15"",""bestValue"":false},{""metric"":""duplicated_blocks"",""value"":"
 [...]
-24154,"{""connectionId"":2,""ProjectKey"":""testDevLake""}","{""id"":""AYZ8ryX-vqC8Tm0EnSI6"",""key"":""testDevLake:backend/plugins/gitlab/e2e/pipelines_test.go"",""name"":""pipelines_test.go"",""qualifier"":""FIL"",""path"":""backend/plugins/gitlab/e2e/pipelines_test.go"",""language"":""go"",""measures"":[{""metric"":""ncloc"",""value"":""64""},{""metric"":""lines_to_cover"",""value"":""15""},{""metric"":""uncovered_lines"",""value"":""15"",""bestValue"":false},{""metric"":""sqale_ratin
 [...]
+31657,"{""connectionId"":2,""ProjectKey"":""testDevLake""}","{""id"":""AYZ8ryX-vqC8Tm0EnSH_"",""key"":""testDevLake:backend/plugins/jenkins/tasks/api_client.go"",""name"":""api_client.go"",""qualifier"":""FIL"",""path"":""backend/plugins/jenkins/tasks/api_client.go"",""language"":""go"",""measures"":[{""metric"":""security_review_rating"",""value"":""1.0"",""bestValue"":true},{""metric"":""lines_to_cover"",""value"":""8""},{""metric"":""ncloc"",""value"":""25""},{""metric"":""reliability
 [...]
+31024,"{""connectionId"":2,""ProjectKey"":""testDevLake""}","{""id"":""AYZ8ryX-vqC8Tm0EnSI-"",""key"":""testDevLake:backend/plugins/gitlab/e2e/issues_test.go"",""name"":""issues_test.go"",""qualifier"":""FIL"",""path"":""backend/plugins/gitlab/e2e/issues_test.go"",""language"":""go"",""measures"":[{""metric"":""security_review_rating"",""value"":""1.0"",""bestValue"":true},{""metric"":""lines_to_cover"",""value"":""18""},{""metric"":""ncloc"",""value"":""117""},{""metric"":""reliability_
 [...]
+30976,"{""connectionId"":2,""ProjectKey"":""testDevLake""}","{""id"":""AYZ8ryX-vqC8Tm0EnSI1"",""key"":""testDevLake:backend/plugins/jenkins/impl/impl.go"",""name"":""impl.go"",""qualifier"":""FIL"",""path"":""backend/plugins/jenkins/impl/impl.go"",""language"":""go"",""measures"":[{""metric"":""security_review_rating"",""value"":""1.0"",""bestValue"":true},{""metric"":""lines_to_cover"",""value"":""92""},{""metric"":""ncloc"",""value"":""234""},{""metric"":""reliability_rating"",""value"
 [...]
+31223,"{""connectionId"":2,""ProjectKey"":""testDevLake""}","{""id"":""AYZ8ryX-vqC8Tm0EnSI4"",""key"":""testDevLake:backend/plugins/gitlab/e2e/mr_commits_test.go"",""name"":""mr_commits_test.go"",""qualifier"":""FIL"",""path"":""backend/plugins/gitlab/e2e/mr_commits_test.go"",""language"":""go"",""measures"":[{""metric"":""security_review_rating"",""value"":""1.0"",""bestValue"":true},{""metric"":""lines_to_cover"",""value"":""24""},{""metric"":""ncloc"",""value"":""139""},{""metric"":""
 [...]
+31237,"{""connectionId"":2,""ProjectKey"":""testDevLake""}","{""id"":""AYZ8ryX-vqC8Tm0EnSI5"",""key"":""testDevLake:backend/plugins/gitlab/e2e/mr_test.go"",""name"":""mr_test.go"",""qualifier"":""FIL"",""path"":""backend/plugins/gitlab/e2e/mr_test.go"",""language"":""go"",""measures"":[{""metric"":""security_review_rating"",""value"":""1.0"",""bestValue"":true},{""metric"":""lines_to_cover"",""value"":""15""},{""metric"":""ncloc"",""value"":""103""},{""metric"":""reliability_rating"",""v
 [...]
+31284,"{""connectionId"":2,""ProjectKey"":""testDevLake""}","{""id"":""AYZ8ryX-vqC8Tm0EnSI6"",""key"":""testDevLake:backend/plugins/gitlab/e2e/pipelines_test.go"",""name"":""pipelines_test.go"",""qualifier"":""FIL"",""path"":""backend/plugins/gitlab/e2e/pipelines_test.go"",""language"":""go"",""measures"":[{""metric"":""security_review_rating"",""value"":""1.0"",""bestValue"":true},{""metric"":""lines_to_cover"",""value"":""15""},{""metric"":""ncloc"",""value"":""64""},{""metric"":""reli
 [...]
diff --git 
a/backend/plugins/sonarqube/e2e/raw_tables/_raw_sonarqube_api_filemetrics_additional.csv
 
b/backend/plugins/sonarqube/e2e/raw_tables/_raw_sonarqube_api_filemetrics_additional.csv
index aa78b18ca..f53f3d857 100644
--- 
a/backend/plugins/sonarqube/e2e/raw_tables/_raw_sonarqube_api_filemetrics_additional.csv
+++ 
b/backend/plugins/sonarqube/e2e/raw_tables/_raw_sonarqube_api_filemetrics_additional.csv
@@ -1,7 +1,7 @@
 "id","params","data","url","input","created_at"
-13765,"{""connectionId"":2,""ProjectKey"":""testDevLake""}","{""id"":""AYZ8ryX-vqC8Tm0EnSH_"",""key"":""testDevLake:backend/plugins/jenkins/tasks/api_client.go"",""name"":""api_client.go"",""qualifier"":""FIL"",""path"":""backend/plugins/jenkins/tasks/api_client.go"",""language"":""go"",""measures"":[{""metric"":""complexity"",""value"":""3""},{""metric"":""cognitive_complexity"",""value"":""2"",""bestValue"":false},{""metric"":""duplicated_lines"",""value"":""10"",""bestValue"":true},{"
 [...]
-13832,"{""connectionId"":2,""ProjectKey"":""testDevLake""}","{""id"":""AYZ8ryX-vqC8Tm0EnSI-"",""key"":""testDevLake:backend/plugins/gitlab/e2e/issues_test.go"",""name"":""issues_test.go"",""qualifier"":""FIL"",""path"":""backend/plugins/gitlab/e2e/issues_test.go"",""language"":""go"",""measures"":[{""metric"":""complexity"",""value"":""1""},{""metric"":""duplicated_lines"",""value"":""46"",""bestValue"":false},{""metric"":""duplicated_files"",""value"":""1"",""bestValue"":false},{""metri
 [...]
-13484,"{""connectionId"":2,""ProjectKey"":""testDevLake""}","{""id"":""AYZ8ryX-vqC8Tm0EnSI1"",""key"":""testDevLake:backend/plugins/jenkins/impl/impl.go"",""name"":""impl.go"",""qualifier"":""FIL"",""path"":""backend/plugins/jenkins/impl/impl.go"",""language"":""go"",""measures"":[{""metric"":""complexity"",""value"":""39""},{""metric"":""cognitive_complexity"",""value"":""24"",""bestValue"":false},{""metric"":""duplicated_lines"",""value"":""2"",""bestValue"":true},{""metric"":""duplica
 [...]
-13531,"{""connectionId"":2,""ProjectKey"":""testDevLake""}","{""id"":""AYZ8ryX-vqC8Tm0EnSI4"",""key"":""testDevLake:backend/plugins/gitlab/e2e/mr_commits_test.go"",""name"":""mr_commits_test.go"",""qualifier"":""FIL"",""path"":""backend/plugins/gitlab/e2e/mr_commits_test.go"",""language"":""go"",""measures"":[{""metric"":""complexity"",""value"":""1""},{""metric"":""duplicated_lines"",""value"":""53"",""bestValue"":false},{""metric"":""duplicated_files"",""value"":""1"",""bestValue"":fal
 [...]
-13545,"{""connectionId"":2,""ProjectKey"":""testDevLake""}","{""id"":""AYZ8ryX-vqC8Tm0EnSI5"",""key"":""testDevLake:backend/plugins/gitlab/e2e/mr_test.go"",""name"":""mr_test.go"",""qualifier"":""FIL"",""path"":""backend/plugins/gitlab/e2e/mr_test.go"",""language"":""go"",""measures"":[{""metric"":""complexity"",""value"":""1""},{""metric"":""duplicated_lines"",""value"":""48"",""bestValue"":false},{""metric"":""duplicated_files"",""value"":""1"",""bestValue"":false},{""metric"":""cognit
 [...]
-13592,"{""connectionId"":2,""ProjectKey"":""testDevLake""}","{""id"":""AYZ8ryX-vqC8Tm0EnSI6"",""key"":""testDevLake:backend/plugins/gitlab/e2e/pipelines_test.go"",""name"":""pipelines_test.go"",""qualifier"":""FIL"",""path"":""backend/plugins/gitlab/e2e/pipelines_test.go"",""language"":""go"",""measures"":[{""metric"":""complexity"",""value"":""1""},{""metric"":""cognitive_complexity"",""value"":""2"",""bestValue"":true},{""metric"":""duplicated_lines"",""value"":""4"",""bestValue"":true
 [...]
+20995,"{""connectionId"":2,""ProjectKey"":""testDevLake""}","{""id"":""AYZ8ryX-vqC8Tm0EnSH_"",""key"":""testDevLake:backend/plugins/jenkins/tasks/api_client.go"",""name"":""api_client.go"",""qualifier"":""FIL"",""path"":""backend/plugins/jenkins/tasks/api_client.go"",""language"":""go"",""measures"":[{""metric"":""complexity"",""value"":""3""},{""metric"":""lines"",""value"":""49""},{""metric"":""cognitive_complexity"",""value"":""2"",""bestValue"":false},{""metric"":""duplicated_lines""
 [...]
+20662,"{""connectionId"":2,""ProjectKey"":""testDevLake""}","{""id"":""AYZ8ryX-vqC8Tm0EnSI-"",""key"":""testDevLake:backend/plugins/gitlab/e2e/issues_test.go"",""name"":""issues_test.go"",""qualifier"":""FIL"",""path"":""backend/plugins/gitlab/e2e/issues_test.go"",""language"":""go"",""measures"":[{""metric"":""duplicated_lines"",""value"":""46"",""bestValue"":false},{""metric"":""complexity"",""value"":""1""},{""metric"":""lines"",""value"":""147""},{""metric"":""duplicated_lines_densit
 [...]
+21114,"{""connectionId"":2,""ProjectKey"":""testDevLake""}","{""id"":""AYZ8ryX-vqC8Tm0EnSI1"",""key"":""testDevLake:backend/plugins/jenkins/impl/impl.go"",""name"":""impl.go"",""qualifier"":""FIL"",""path"":""backend/plugins/jenkins/impl/impl.go"",""language"":""go"",""measures"":[{""metric"":""complexity"",""value"":""39""},{""metric"":""lines"",""value"":""289""},{""metric"":""cognitive_complexity"",""value"":""24"",""bestValue"":false},{""metric"":""duplicated_lines"",""value"":""7"",
 [...]
+20861,"{""connectionId"":2,""ProjectKey"":""testDevLake""}","{""id"":""AYZ8ryX-vqC8Tm0EnSI4"",""key"":""testDevLake:backend/plugins/gitlab/e2e/mr_commits_test.go"",""name"":""mr_commits_test.go"",""qualifier"":""FIL"",""path"":""backend/plugins/gitlab/e2e/mr_commits_test.go"",""language"":""go"",""measures"":[{""metric"":""duplicated_lines"",""value"":""53"",""bestValue"":false},{""metric"":""complexity"",""value"":""1""},{""metric"":""lines"",""value"":""175""},{""metric"":""duplicated_
 [...]
+20875,"{""connectionId"":2,""ProjectKey"":""testDevLake""}","{""id"":""AYZ8ryX-vqC8Tm0EnSI5"",""key"":""testDevLake:backend/plugins/gitlab/e2e/mr_test.go"",""name"":""mr_test.go"",""qualifier"":""FIL"",""path"":""backend/plugins/gitlab/e2e/mr_test.go"",""language"":""go"",""measures"":[{""metric"":""duplicated_lines"",""value"":""48"",""bestValue"":false},{""metric"":""complexity"",""value"":""1""},{""metric"":""lines"",""value"":""132""},{""metric"":""duplicated_lines_density"",""value"
 [...]
+20922,"{""connectionId"":2,""ProjectKey"":""testDevLake""}","{""id"":""AYZ8ryX-vqC8Tm0EnSI6"",""key"":""testDevLake:backend/plugins/gitlab/e2e/pipelines_test.go"",""name"":""pipelines_test.go"",""qualifier"":""FIL"",""path"":""backend/plugins/gitlab/e2e/pipelines_test.go"",""language"":""go"",""measures"":[{""metric"":""complexity"",""value"":""1""},{""metric"":""lines"",""value"":""93""},{""metric"":""cognitive_complexity"",""value"":""7"",""bestValue"":true},{""metric"":""duplicated_li
 [...]
diff --git 
a/backend/plugins/sonarqube/e2e/snapshot_tables/_tool_sonarqube_filemetrics.csv 
b/backend/plugins/sonarqube/e2e/snapshot_tables/_tool_sonarqube_filemetrics.csv
index 6035d4348..f38bf08e6 100644
--- 
a/backend/plugins/sonarqube/e2e/snapshot_tables/_tool_sonarqube_filemetrics.csv
+++ 
b/backend/plugins/sonarqube/e2e/snapshot_tables/_tool_sonarqube_filemetrics.csv
@@ -1,7 +1,7 @@
-connection_id,file_metrics_key,project_key,file_name,file_path,file_language,code_smells,sqale_index,sqale_rating,bugs,reliability_rating,vulnerabilities,security_rating,security_hotspots,security_hotspots_reviewed,security_review_rating,ncloc,uncovered_lines,lines_to_cover,duplicated_lines_density,duplicated_blocks,duplicated_files,duplicated_lines,effort_to_reach_maintainability_rating_a,complexity,cognitive_complexity
-2,testDevLake:backend/plugins/gitlab/e2e/issues_test.go,testDevLake,issues_test.go,backend/plugins/gitlab/e2e/issues_test.go,go,0,0,1,0,A,0,A,0,0,A,117,18,18,31.299999237060547,1,1,46,3,1,50
-2,testDevLake:backend/plugins/gitlab/e2e/mr_commits_test.go,testDevLake,mr_commits_test.go,backend/plugins/gitlab/e2e/mr_commits_test.go,go,0,0,1,0,A,0,A,0,0,A,139,24,24,30.299999237060547,2,1,53,21,1,20
-2,testDevLake:backend/plugins/gitlab/e2e/mr_test.go,testDevLake,mr_test.go,backend/plugins/gitlab/e2e/mr_test.go,go,0,0,1,0,A,0,A,0,0,A,103,15,15,36.400001525878906,1,1,48,21,1,30
-2,testDevLake:backend/plugins/gitlab/e2e/pipelines_test.go,testDevLake,pipelines_test.go,backend/plugins/gitlab/e2e/pipelines_test.go,go,0,0,1,0,A,0,A,0,0,A,64,15,15,0,0,10,4,3,1,2
-2,testDevLake:backend/plugins/jenkins/impl/impl.go,testDevLake,impl.go,backend/plugins/jenkins/impl/impl.go,go,0,0,1,0,A,0,A,0,0,A,234,92,92,0,0,40,2,11,39,24
-2,testDevLake:backend/plugins/jenkins/tasks/api_client.go,testDevLake,api_client.go,backend/plugins/jenkins/tasks/api_client.go,go,0,0,1,0,A,0,A,0,0,A,25,8,8,0,0,50,10,2,3,2
+connection_id,file_metrics_key,project_key,file_name,file_path,file_language,code_smells,sqale_index,sqale_rating,bugs,reliability_rating,vulnerabilities,security_rating,security_hotspots,security_hotspots_reviewed,security_review_rating,ncloc,coverage,uncovered_lines,lines_to_cover,duplicated_lines_density,duplicated_blocks,duplicated_files,duplicated_lines,effort_to_reach_maintainability_rating_a,complexity,cognitive_complexity,num_of_lines
+2,testDevLake:backend/plugins/gitlab/e2e/issues_test.go,testDevLake,issues_test.go,backend/plugins/gitlab/e2e/issues_test.go,go,7,7,1,7,A,7,A,7,0,A,117,0,18,18,31.299999237060547,1,1,46,7,1,7,147
+2,testDevLake:backend/plugins/gitlab/e2e/mr_commits_test.go,testDevLake,mr_commits_test.go,backend/plugins/gitlab/e2e/mr_commits_test.go,go,7,7,1,7,A,7,A,7,0,A,139,0,24,24,30.299999237060547,2,1,53,7,1,7,175
+2,testDevLake:backend/plugins/gitlab/e2e/mr_test.go,testDevLake,mr_test.go,backend/plugins/gitlab/e2e/mr_test.go,go,7,7,1,7,A,7,A,7,0,A,103,0,15,15,36.400001525878906,1,1,48,7,1,7,132
+2,testDevLake:backend/plugins/gitlab/e2e/pipelines_test.go,testDevLake,pipelines_test.go,backend/plugins/gitlab/e2e/pipelines_test.go,go,7,7,1,7,A,7,A,7,0,A,64,0,15,15,0,7,7,7,7,1,7,93
+2,testDevLake:backend/plugins/jenkins/impl/impl.go,testDevLake,impl.go,backend/plugins/jenkins/impl/impl.go,go,7,7,1,7,A,7,A,7,0,A,234,0,92,92,0,7,7,7,7,39,24,289
+2,testDevLake:backend/plugins/jenkins/tasks/api_client.go,testDevLake,api_client.go,backend/plugins/jenkins/tasks/api_client.go,go,5,7,1,6,A,7,A,7,0,A,25,0,8,8,0,7,7,7,7,3,2,49
diff --git a/backend/plugins/sonarqube/e2e/snapshot_tables/filemetrics.csv 
b/backend/plugins/sonarqube/e2e/snapshot_tables/filemetrics.csv
index 613598cfe..520630ce5 100644
--- a/backend/plugins/sonarqube/e2e/snapshot_tables/filemetrics.csv
+++ b/backend/plugins/sonarqube/e2e/snapshot_tables/filemetrics.csv
@@ -1,7 +1,7 @@
-id,project_key,file_name,file_path,file_language,code_smells,sqale_index,sqale_rating,bugs,reliability_rating,vulnerabilities,security_rating,security_hotspots,security_hotspots_reviewed,security_review_rating,ncloc,uncovered_lines,lines_to_cover,duplicated_lines_density,duplicated_blocks,duplicated_files,duplicated_lines,effort_to_reach_maintainability_rating_a,complexity,cognitive_complexity
-sonarqube:SonarqubeFileMetrics:2:testDevLake:backend/plugins/gitlab/e2e/issues_test.go,sonarqube:SonarqubeProject:2:testDevLake,issues_test.go,backend/plugins/gitlab/e2e/issues_test.go,go,0,0,1,0,A,0,A,0,0,A,117,18,18,31.299999237060547,1,1,46,3,1,50
-sonarqube:SonarqubeFileMetrics:2:testDevLake:backend/plugins/gitlab/e2e/mr_commits_test.go,sonarqube:SonarqubeProject:2:testDevLake,mr_commits_test.go,backend/plugins/gitlab/e2e/mr_commits_test.go,go,0,0,1,0,A,0,A,0,0,A,139,24,24,30.299999237060547,2,1,53,21,1,20
-sonarqube:SonarqubeFileMetrics:2:testDevLake:backend/plugins/gitlab/e2e/mr_test.go,sonarqube:SonarqubeProject:2:testDevLake,mr_test.go,backend/plugins/gitlab/e2e/mr_test.go,go,0,0,1,0,A,0,A,0,0,A,103,15,15,36.400001525878906,1,1,48,21,1,30
-sonarqube:SonarqubeFileMetrics:2:testDevLake:backend/plugins/gitlab/e2e/pipelines_test.go,sonarqube:SonarqubeProject:2:testDevLake,pipelines_test.go,backend/plugins/gitlab/e2e/pipelines_test.go,go,0,0,1,0,A,0,A,0,0,A,64,15,15,0,0,10,4,3,1,2
-sonarqube:SonarqubeFileMetrics:2:testDevLake:backend/plugins/jenkins/impl/impl.go,sonarqube:SonarqubeProject:2:testDevLake,impl.go,backend/plugins/jenkins/impl/impl.go,go,0,0,1,0,A,0,A,0,0,A,234,92,92,0,0,40,2,11,39,24
-sonarqube:SonarqubeFileMetrics:2:testDevLake:backend/plugins/jenkins/tasks/api_client.go,sonarqube:SonarqubeProject:2:testDevLake,api_client.go,backend/plugins/jenkins/tasks/api_client.go,go,0,0,1,0,A,0,A,0,0,A,25,8,8,0,0,50,10,2,3,2
+id,project_key,file_name,file_path,file_language,code_smells,sqale_index,sqale_rating,bugs,reliability_rating,vulnerabilities,security_rating,security_hotspots,security_hotspots_reviewed,security_review_rating,ncloc,uncovered_lines,coverage,lines_to_cover,duplicated_lines_density,duplicated_blocks,duplicated_files,duplicated_lines,effort_to_reach_maintainability_rating_a,complexity,cognitive_complexity,num_of_lines
+sonarqube:SonarqubeFileMetrics:2:testDevLake:backend/plugins/gitlab/e2e/issues_test.go,sonarqube:SonarqubeProject:2:testDevLake,issues_test.go,backend/plugins/gitlab/e2e/issues_test.go,go,7,7,1,7,A,7,A,7,0,A,117,18,0,18,31.299999237060547,1,1,46,7,1,7,147
+sonarqube:SonarqubeFileMetrics:2:testDevLake:backend/plugins/gitlab/e2e/mr_commits_test.go,sonarqube:SonarqubeProject:2:testDevLake,mr_commits_test.go,backend/plugins/gitlab/e2e/mr_commits_test.go,go,7,7,1,7,A,7,A,7,0,A,139,24,0,24,30.299999237060547,2,1,53,7,1,7,175
+sonarqube:SonarqubeFileMetrics:2:testDevLake:backend/plugins/gitlab/e2e/mr_test.go,sonarqube:SonarqubeProject:2:testDevLake,mr_test.go,backend/plugins/gitlab/e2e/mr_test.go,go,7,7,1,7,A,7,A,7,0,A,103,15,0,15,36.400001525878906,1,1,48,7,1,7,132
+sonarqube:SonarqubeFileMetrics:2:testDevLake:backend/plugins/gitlab/e2e/pipelines_test.go,sonarqube:SonarqubeProject:2:testDevLake,pipelines_test.go,backend/plugins/gitlab/e2e/pipelines_test.go,go,7,7,1,7,A,7,A,7,0,A,64,15,0,15,0,7,7,7,7,1,7,93
+sonarqube:SonarqubeFileMetrics:2:testDevLake:backend/plugins/jenkins/impl/impl.go,sonarqube:SonarqubeProject:2:testDevLake,impl.go,backend/plugins/jenkins/impl/impl.go,go,7,7,1,7,A,7,A,7,0,A,234,92,0,92,0,7,7,7,7,39,24,289
+sonarqube:SonarqubeFileMetrics:2:testDevLake:backend/plugins/jenkins/tasks/api_client.go,sonarqube:SonarqubeProject:2:testDevLake,api_client.go,backend/plugins/jenkins/tasks/api_client.go,go,5,7,1,6,A,7,A,7,0,A,25,8,0,8,0,7,7,7,7,3,2,49
diff --git 
a/backend/plugins/sonarqube/models/migrationscripts/20230111_add_init_tables.go 
b/backend/plugins/sonarqube/models/migrationscripts/20230111_add_init_tables.go
index ad18fb3f0..56de7271a 100644
--- 
a/backend/plugins/sonarqube/models/migrationscripts/20230111_add_init_tables.go
+++ 
b/backend/plugins/sonarqube/models/migrationscripts/20230111_add_init_tables.go
@@ -51,7 +51,7 @@ func (*addInitTables) Up(basicRes context.BasicRes) 
errors.Error {
 }
 
 func (*addInitTables) Version() uint64 {
-       return 20230221220066
+       return 20230227220071
 }
 
 func (*addInitTables) Name() string {
diff --git 
a/backend/plugins/sonarqube/models/migrationscripts/archived/sonarqube_file_metrics.go
 
b/backend/plugins/sonarqube/models/migrationscripts/archived/sonarqube_file_metrics.go
index 42bac7b2f..867336239 100644
--- 
a/backend/plugins/sonarqube/models/migrationscripts/archived/sonarqube_file_metrics.go
+++ 
b/backend/plugins/sonarqube/models/migrationscripts/archived/sonarqube_file_metrics.go
@@ -39,6 +39,7 @@ type SonarqubeFileMetrics struct {
        SecurityHotspotsReviewed float64
        SecurityReviewRating     string `gorm:"type:varchar(20)"`
        Ncloc                    int
+       Coverage                 float64
        UncoveredLines           int
        LinesToCover             int
        DuplicatedLinesDensity   float64
@@ -49,6 +50,7 @@ type SonarqubeFileMetrics struct {
        EffortToReachMaintainabilityRatingA int
        Complexity                          int
        CognitiveComplexity                 int
+       NumOfLines                          int
        archived.NoPKModel
 }
 
diff --git a/backend/plugins/sonarqube/models/sonarqube_file_metrics.go 
b/backend/plugins/sonarqube/models/sonarqube_file_metrics.go
index 72a011460..c2e36f2fb 100644
--- a/backend/plugins/sonarqube/models/sonarqube_file_metrics.go
+++ b/backend/plugins/sonarqube/models/sonarqube_file_metrics.go
@@ -39,10 +39,9 @@ type SonarqubeFileMetrics struct {
        SecurityHotspotsReviewed float64
        SecurityReviewRating     string
        Ncloc                    int
+       Coverage                 float64
        UncoveredLines           int
        LinesToCover             int
-       DuplicatedLinesDensity   float64
-       DuplicatedBlocks         int
        common.NoPKModel
 }
 
@@ -58,6 +57,9 @@ type SonarqubeAdditionalFileMetrics struct {
        EffortToReachMaintainabilityRatingA int
        Complexity                          int
        CognitiveComplexity                 int
+       NumOfLines                          int
+       DuplicatedLinesDensity              float64
+       DuplicatedBlocks                    int
        common.NoPKModel
 }
 
@@ -83,6 +85,7 @@ type SonarqubeWholeFileMetrics struct {
        SecurityHotspotsReviewed            float64
        SecurityReviewRating                string `gorm:"type:varchar(20)"`
        Ncloc                               int
+       Coverage                            float64
        UncoveredLines                      int
        LinesToCover                        int
        DuplicatedLinesDensity              float64
@@ -92,6 +95,7 @@ type SonarqubeWholeFileMetrics struct {
        EffortToReachMaintainabilityRatingA int
        Complexity                          int
        CognitiveComplexity                 int
+       NumOfLines                          int
        common.NoPKModel
 }
 
diff --git 
a/backend/plugins/sonarqube/tasks/filemetrics_additional_collector.go 
b/backend/plugins/sonarqube/tasks/filemetrics_additional_collector.go
index 6fe73b88e..945338dbb 100644
--- a/backend/plugins/sonarqube/tasks/filemetrics_additional_collector.go
+++ b/backend/plugins/sonarqube/tasks/filemetrics_additional_collector.go
@@ -43,7 +43,7 @@ func CollectAdditionalFilemetrics(taskCtx 
plugin.SubTaskContext) errors.Error {
                        query := url.Values{}
                        query.Set("component", data.Options.ProjectKey)
                        query.Set("qualifiers", "FIL")
-                       query.Set("metricKeys", "duplicated_lines, 
duplicated_files, complexity, cognitive_complexity, 
effort_to_reach_maintainability_rating_a")
+                       query.Set("metricKeys", 
"duplicated_lines_density,duplicated_blocks,duplicated_lines, duplicated_files, 
complexity, cognitive_complexity, effort_to_reach_maintainability_rating_a, 
lines")
                        query.Set("p", fmt.Sprintf("%v", reqData.Pager.Page))
                        query.Set("ps", fmt.Sprintf("%v", reqData.Pager.Size))
                        return query, nil
diff --git a/backend/plugins/sonarqube/tasks/filemetrics_collector.go 
b/backend/plugins/sonarqube/tasks/filemetrics_collector.go
index d5bc51222..e42fe3fe0 100644
--- a/backend/plugins/sonarqube/tasks/filemetrics_collector.go
+++ b/backend/plugins/sonarqube/tasks/filemetrics_collector.go
@@ -47,7 +47,7 @@ func CollectFilemetrics(taskCtx plugin.SubTaskContext) 
errors.Error {
                        query := url.Values{}
                        query.Set("component", data.Options.ProjectKey)
                        query.Set("qualifiers", "FIL")
-                       query.Set("metricKeys", 
"code_smells,sqale_index,sqale_rating,bugs,reliability_rating,vulnerabilities,security_rating,security_hotspots,security_hotspots_reviewed,security_review_rating,ncloc,uncovered_lines,lines_to_cover,duplicated_lines_density,duplicated_blocks")
+                       query.Set("metricKeys", 
"code_smells,sqale_index,sqale_rating,bugs,reliability_rating,vulnerabilities,security_rating,security_hotspots,security_hotspots_reviewed,security_review_rating,ncloc,coverage,uncovered_lines,lines_to_cover")
                        query.Set("p", fmt.Sprintf("%v", reqData.Pager.Page))
                        query.Set("ps", fmt.Sprintf("%v", reqData.Pager.Size))
                        return query, nil
diff --git a/backend/plugins/sonarqube/tasks/filemetrics_convertor.go 
b/backend/plugins/sonarqube/tasks/filemetrics_convertor.go
index b7b464664..80d9725cb 100644
--- a/backend/plugins/sonarqube/tasks/filemetrics_convertor.go
+++ b/backend/plugins/sonarqube/tasks/filemetrics_convertor.go
@@ -81,6 +81,8 @@ func ConvertFileMetrics(taskCtx plugin.SubTaskContext) 
errors.Error {
                                EffortToReachMaintainabilityRatingA: 
sonarqubeFileMetric.EffortToReachMaintainabilityRatingA,
                                Complexity:                          
sonarqubeFileMetric.Complexity,
                                CognitiveComplexity:                 
sonarqubeFileMetric.CognitiveComplexity,
+                               NumOfLines:                          
sonarqubeFileMetric.NumOfLines,
+                               Coverage:                            
sonarqubeFileMetric.Coverage,
                        }
                        return []interface{}{
                                domainFileMetric,
diff --git a/backend/plugins/sonarqube/tasks/shared.go 
b/backend/plugins/sonarqube/tasks/shared.go
index b11c51dc5..4439af992 100644
--- a/backend/plugins/sonarqube/tasks/shared.go
+++ b/backend/plugins/sonarqube/tasks/shared.go
@@ -212,13 +212,8 @@ func setMetrics(fileMetrics *models.SonarqubeFileMetrics, 
metricsList []Measure)
                        if err != nil {
                                return err
                        }
-               case "duplicated_blocks":
-                       fileMetrics.DuplicatedBlocks, err = 
errors.Convert01(strconv.Atoi(v.Value))
-                       if err != nil {
-                               return err
-                       }
-               case "duplicated_lines_density":
-                       fileMetrics.DuplicatedLinesDensity, err = 
errors.Convert01(strconv.ParseFloat(v.Value, 32))
+               case "coverage":
+                       fileMetrics.Coverage, err = 
errors.Convert01(strconv.ParseFloat(v.Value, 32))
                        if err != nil {
                                return err
                        }
@@ -232,6 +227,11 @@ func setAdditionalMetrics(fileMetrics 
*models.SonarqubeAdditionalFileMetrics, me
        var err errors.Error
        for _, v := range metricsList {
                switch v.Metric {
+               case "duplicated_blocks":
+                       fileMetrics.DuplicatedBlocks, err = 
errors.Convert01(strconv.Atoi(v.Value))
+                       if err != nil {
+                               return err
+                       }
                case "duplicated_lines":
                        fileMetrics.DuplicatedLines, err = 
errors.Convert01(strconv.Atoi(v.Value))
                        if err != nil {
@@ -242,6 +242,11 @@ func setAdditionalMetrics(fileMetrics 
*models.SonarqubeAdditionalFileMetrics, me
                        if err != nil {
                                return err
                        }
+               case "duplicated_lines_density":
+                       fileMetrics.DuplicatedLinesDensity, err = 
errors.Convert01(strconv.ParseFloat(v.Value, 32))
+                       if err != nil {
+                               return err
+                       }
                case "complexity":
                        fileMetrics.Complexity, err = 
errors.Convert01(strconv.Atoi(v.Value))
                        if err != nil {
@@ -257,6 +262,12 @@ func setAdditionalMetrics(fileMetrics 
*models.SonarqubeAdditionalFileMetrics, me
                        if err != nil {
                                return err
                        }
+               case "lines":
+                       fileMetrics.NumOfLines, err = 
errors.Convert01(strconv.Atoi(v.Value))
+                       if err != nil {
+                               return err
+                       }
+
                }
        }
        return nil

Reply via email to