You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@devlake.apache.org by ab...@apache.org on 2023/02/27 11:36:09 UTC
[incubator-devlake] branch main updated: fix(sonarqube): add num of lines (#4532)
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 <yi...@merico.dev>
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