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/09 06:55:09 UTC

[incubator-devlake] branch main updated: fix(sonarqube): fix issues from first review (#4367)

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 3377487c9 fix(sonarqube): fix issues from first review (#4367)
3377487c9 is described below

commit 3377487c93e021ef7bcca23750e9ea248e271f70
Author: Warren Chen <yi...@merico.dev>
AuthorDate: Thu Feb 9 14:55:04 2023 +0800

    fix(sonarqube): fix issues from first review (#4367)
---
 .../models/domainlayer/securitytesting/st_file_metrics.go    |  3 +--
 backend/core/models/domainlayer/securitytesting/st_issues.go |  2 +-
 .../core/models/domainlayer/securitytesting/st_projects.go   |  2 +-
 .../models/migrationscripts/20230208_add_security_testing.go |  2 +-
 .../core/models/migrationscripts/archived/st_file_metrics.go |  3 +--
 backend/core/models/migrationscripts/archived/st_issues.go   |  2 +-
 backend/core/models/migrationscripts/archived/st_projects.go |  2 +-
 backend/plugins/sonarqube/api/blueprint_v200.go              |  4 ++--
 backend/plugins/sonarqube/api/blueprint_v200_test.go         |  2 +-
 backend/plugins/sonarqube/api/connection.go                  | 10 ++++++++++
 .../models/migrationscripts/20230111_add_init_tables.go      |  2 +-
 .../migrationscripts/archived/sonarqube_file_metrics.go      |  4 ++--
 .../models/migrationscripts/archived/sonarqube_hotspot.go    |  4 ++--
 .../models/migrationscripts/archived/sonarqube_issue.go      |  4 ++--
 .../models/migrationscripts/archived/sonarqube_project.go    |  2 +-
 backend/plugins/sonarqube/models/sonarqube_file_metrics.go   |  4 ++--
 backend/plugins/sonarqube/models/sonarqube_hotspot.go        |  4 ++--
 backend/plugins/sonarqube/models/sonarqube_issue.go          |  4 ++--
 backend/plugins/sonarqube/models/sonarqube_project.go        |  2 +-
 backend/plugins/sonarqube/tasks/filemetrics_convertor.go     |  7 +++----
 backend/plugins/sonarqube/tasks/filemetrics_extractor.go     | 12 ++++++------
 backend/plugins/sonarqube/tasks/hotspots_convertor.go        |  6 +++---
 .../plugins/sonarqube/tasks/issue_code_blocks_convertor.go   |  4 ++--
 backend/plugins/sonarqube/tasks/issues_convertor.go          |  6 +++---
 backend/plugins/sonarqube/tasks/issues_extractor.go          |  6 +++---
 backend/plugins/sonarqube/tasks/projects_convertor.go        |  6 +++---
 26 files changed, 58 insertions(+), 51 deletions(-)

diff --git a/backend/core/models/domainlayer/securitytesting/st_file_metrics.go b/backend/core/models/domainlayer/securitytesting/st_file_metrics.go
index 66513d3c5..7f4ed32ab 100644
--- a/backend/core/models/domainlayer/securitytesting/st_file_metrics.go
+++ b/backend/core/models/domainlayer/securitytesting/st_file_metrics.go
@@ -23,8 +23,7 @@ import (
 
 type StFileMetrics struct {
 	domainlayer.DomainEntity
-	ComponentKey             string
-	Project                  string  `gorm:"index;type:varchar(255)"` //domain project key
+	ProjectKey               string  `gorm:"index;type:varchar(255)"` //domain project key
 	BatchID                  string  `json:"batch_id"`
 	FileName                 string  `json:"file_name"`
 	FilePath                 string  `json:"file_path"`
diff --git a/backend/core/models/domainlayer/securitytesting/st_issues.go b/backend/core/models/domainlayer/securitytesting/st_issues.go
index 6cfb2d0f7..6a9fc1fd5 100644
--- a/backend/core/models/domainlayer/securitytesting/st_issues.go
+++ b/backend/core/models/domainlayer/securitytesting/st_issues.go
@@ -27,7 +27,7 @@ type StIssue struct {
 	Rule                     string           `json:"rule" gorm:"type:varchar(255)"`
 	Severity                 string           `json:"severity" gorm:"type:varchar(255)"`
 	Component                string           `json:"component" gorm:"type:varchar(255)"`
-	Project                  string           `gorm:"index;type:varchar(255)"`          //domain project key
+	ProjectKey               string           `gorm:"index;type:varchar(255)"`          //domain project key
 	BatchId                  string           `json:"batchId" gorm:"type:varchar(100)"` // from collection time
 	Line                     int              `json:"line"`
 	Status                   string           `json:"status" gorm:"type:varchar(255)"`
diff --git a/backend/core/models/domainlayer/securitytesting/st_projects.go b/backend/core/models/domainlayer/securitytesting/st_projects.go
index e08286352..8f004cd50 100644
--- a/backend/core/models/domainlayer/securitytesting/st_projects.go
+++ b/backend/core/models/domainlayer/securitytesting/st_projects.go
@@ -31,7 +31,7 @@ type StProject struct {
 	Qualifier        string           `json:"qualifier" gorm:"type:varchar(255)"`
 	Visibility       string           `json:"visibility" gorm:"type:varchar(64)"`
 	LastAnalysisDate *api.Iso8601Time `json:"lastAnalysisDate"`
-	Revision         string           `json:"revision" gorm:"type:varchar(128)"`
+	CommitSha        string           `json:"revision" gorm:"type:varchar(128)"`
 }
 
 func (StProject) TableName() string {
diff --git a/backend/core/models/migrationscripts/20230208_add_security_testing.go b/backend/core/models/migrationscripts/20230208_add_security_testing.go
index a4780ad13..c5add37cb 100644
--- a/backend/core/models/migrationscripts/20230208_add_security_testing.go
+++ b/backend/core/models/migrationscripts/20230208_add_security_testing.go
@@ -37,7 +37,7 @@ func (u *addSecurityTesting) Up(basicRes context.BasicRes) errors.Error {
 }
 
 func (*addSecurityTesting) Version() uint64 {
-	return 20230208000013
+	return 20230208000015
 }
 
 func (*addSecurityTesting) Name() string {
diff --git a/backend/core/models/migrationscripts/archived/st_file_metrics.go b/backend/core/models/migrationscripts/archived/st_file_metrics.go
index bf81ea6ff..307c93b69 100644
--- a/backend/core/models/migrationscripts/archived/st_file_metrics.go
+++ b/backend/core/models/migrationscripts/archived/st_file_metrics.go
@@ -19,8 +19,7 @@ package archived
 
 type StFileMetrics struct {
 	DomainEntity
-	ComponentKey             string
-	Project                  string  `gorm:"index;type:varchar(255)"` //domain project key
+	ProjectKey               string  `gorm:"index;type:varchar(255)"` //domain project key
 	BatchID                  string  `json:"batch_id"`
 	FileName                 string  `json:"file_name"`
 	FilePath                 string  `json:"file_path"`
diff --git a/backend/core/models/migrationscripts/archived/st_issues.go b/backend/core/models/migrationscripts/archived/st_issues.go
index 7d5c3f0dc..55f7493a3 100644
--- a/backend/core/models/migrationscripts/archived/st_issues.go
+++ b/backend/core/models/migrationscripts/archived/st_issues.go
@@ -26,7 +26,7 @@ type StIssue struct {
 	Rule                     string           `json:"rule" gorm:"type:varchar(255)"`
 	Severity                 string           `json:"severity" gorm:"type:varchar(255)"`
 	Component                string           `json:"component" gorm:"type:varchar(255)"`
-	Project                  string           `gorm:"index;type:varchar(255)"`          //domain project key
+	ProjectKey               string           `gorm:"index;type:varchar(255)"`          //domain project key
 	BatchId                  string           `json:"batchId" gorm:"type:varchar(100)"` // from collection time
 	Line                     int              `json:"line"`
 	Status                   string           `json:"status" gorm:"type:varchar(255)"`
diff --git a/backend/core/models/migrationscripts/archived/st_projects.go b/backend/core/models/migrationscripts/archived/st_projects.go
index 6fbcfd5a1..ebd8f10ec 100644
--- a/backend/core/models/migrationscripts/archived/st_projects.go
+++ b/backend/core/models/migrationscripts/archived/st_projects.go
@@ -27,7 +27,7 @@ type StProject struct {
 	Qualifier        string           `json:"qualifier" gorm:"type:varchar(255)"`
 	Visibility       string           `json:"visibility" gorm:"type:varchar(64)"`
 	LastAnalysisDate *api.Iso8601Time `json:"lastAnalysisDate"`
-	Revision         string           `json:"revision" gorm:"type:varchar(128)"`
+	CommitSha        string           `gorm:"type:varchar(128)"`
 }
 
 func (StProject) TableName() string {
diff --git a/backend/plugins/sonarqube/api/blueprint_v200.go b/backend/plugins/sonarqube/api/blueprint_v200.go
index 2f684c911..33fa3bdc6 100644
--- a/backend/plugins/sonarqube/api/blueprint_v200.go
+++ b/backend/plugins/sonarqube/api/blueprint_v200.go
@@ -86,7 +86,7 @@ func makeScopesV200(bpScopes []*plugin.BlueprintScopeV200, connectionId uint64)
 		sonarqubeProject := &models.SonarqubeProject{}
 		// get repo from db
 		err := basicRes.GetDal().First(sonarqubeProject,
-			dal.Where("connection_id = ? and `key` = ?",
+			dal.Where("connection_id = ? and project_key = ?",
 				connectionId, bpScope.Id))
 		if err != nil {
 			return nil, errors.Default.Wrap(err, fmt.Sprintf("fail to find sonarqube project %s", bpScope.Id))
@@ -95,7 +95,7 @@ func makeScopesV200(bpScopes []*plugin.BlueprintScopeV200, connectionId uint64)
 		if utils.StringsContains(bpScope.Entities, plugin.DOMAIN_TYPE_SECURITY_TESTING) {
 			stProject := &securitytesting.StProject{
 				DomainEntity: domainlayer.DomainEntity{
-					Id: didgen.NewDomainIdGenerator(&models.SonarqubeProject{}).Generate(sonarqubeProject.ConnectionId, sonarqubeProject.Key),
+					Id: didgen.NewDomainIdGenerator(&models.SonarqubeProject{}).Generate(sonarqubeProject.ConnectionId, sonarqubeProject.ProjectKey),
 				},
 				Name: sonarqubeProject.Name,
 			}
diff --git a/backend/plugins/sonarqube/api/blueprint_v200_test.go b/backend/plugins/sonarqube/api/blueprint_v200_test.go
index ccfbe6bde..02cfef76e 100644
--- a/backend/plugins/sonarqube/api/blueprint_v200_test.go
+++ b/backend/plugins/sonarqube/api/blueprint_v200_test.go
@@ -79,7 +79,7 @@ func TestMakeDataSourcePipelinePlanV200(t *testing.T) {
 func NewMockBasicRes() *mockcontext.BasicRes {
 	sonarqubeProject := &models.SonarqubeProject{
 		ConnectionId: 1,
-		Key:          "f5a50c63-2e8f-4107-9014-853f6f467757",
+		ProjectKey:   "f5a50c63-2e8f-4107-9014-853f6f467757",
 		Name:         "aerosolve",
 	}
 
diff --git a/backend/plugins/sonarqube/api/connection.go b/backend/plugins/sonarqube/api/connection.go
index dc861ece0..aa0b80fa5 100644
--- a/backend/plugins/sonarqube/api/connection.go
+++ b/backend/plugins/sonarqube/api/connection.go
@@ -30,6 +30,16 @@ type validation struct {
 	Valid bool `json:"valid"`
 }
 
+/*
+@Summary test sonarqube connection
+@Description Test sonarqube Connection
+@Tags plugins/sonarqube
+@Param body body models.SonarqubeConn true "json body"
+@Success 200  {object} shared.ApiBody "Success"
+@Failure 400  {string} errcode.Error "Bad Request"
+@Failure 500  {string} errcode.Error "Internal Error"
+@Router /plugins/sonarqube/test [POST]
+*/
 func TestConnection(input *plugin.ApiResourceInput) (*plugin.ApiResourceOutput, errors.Error) {
 	// decode
 	var err errors.Error
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 09b682b50..3ed9ccda5 100644
--- a/backend/plugins/sonarqube/models/migrationscripts/20230111_add_init_tables.go
+++ b/backend/plugins/sonarqube/models/migrationscripts/20230111_add_init_tables.go
@@ -40,7 +40,7 @@ func (*addInitTables) Up(basicRes context.BasicRes) errors.Error {
 }
 
 func (*addInitTables) Version() uint64 {
-	return 20230207220022
+	return 20230207220025
 }
 
 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 1466425c1..9d1ee07aa 100644
--- a/backend/plugins/sonarqube/models/migrationscripts/archived/sonarqube_file_metrics.go
+++ b/backend/plugins/sonarqube/models/migrationscripts/archived/sonarqube_file_metrics.go
@@ -23,8 +23,8 @@ import (
 
 type SonarqubeFileMetrics struct {
 	ConnectionId             uint64  `gorm:"primaryKey"`
-	ComponentKey             string  `json:"component_key" gorm:"primaryKey"`
-	Project                  string  `json:"project" gorm:"index"`
+	FileMetricsKey           string  `json:"component_key" gorm:"primaryKey"`
+	ProjectKey               string  `json:"project" gorm:"index"`
 	BatchID                  string  `json:"batch_id"`
 	FileName                 string  `json:"file_name"`
 	FilePath                 string  `json:"file_path"`
diff --git a/backend/plugins/sonarqube/models/migrationscripts/archived/sonarqube_hotspot.go b/backend/plugins/sonarqube/models/migrationscripts/archived/sonarqube_hotspot.go
index 3347f0936..89ea9efe3 100644
--- a/backend/plugins/sonarqube/models/migrationscripts/archived/sonarqube_hotspot.go
+++ b/backend/plugins/sonarqube/models/migrationscripts/archived/sonarqube_hotspot.go
@@ -24,10 +24,10 @@ import (
 
 type SonarqubeHotspot struct {
 	ConnectionId             uint64           `gorm:"primaryKey"`
-	Key                      string           `json:"key" gorm:"primaryKey"`
+	HotspotKey               string           `json:"key" gorm:"primaryKey"`
 	RuleKey                  string           `json:"ruleKey"`
 	Component                string           `json:"component" gorm:"index"`
-	Project                  string           `json:"project" gorm:"index"`
+	ProjectKey               string           `json:"project" gorm:"index"`
 	BatchId                  string           `json:"batchId" gorm:"type:varchar(100)"` // from collection time
 	Line                     int              `json:"line"`
 	Status                   string           `json:"status"`
diff --git a/backend/plugins/sonarqube/models/migrationscripts/archived/sonarqube_issue.go b/backend/plugins/sonarqube/models/migrationscripts/archived/sonarqube_issue.go
index 0b2c0f148..a12e1a434 100644
--- a/backend/plugins/sonarqube/models/migrationscripts/archived/sonarqube_issue.go
+++ b/backend/plugins/sonarqube/models/migrationscripts/archived/sonarqube_issue.go
@@ -24,11 +24,11 @@ import (
 
 type SonarqubeIssue struct {
 	ConnectionId uint64           `gorm:"primaryKey"`
-	Key          string           `json:"key" gorm:"primaryKey"`
+	IssueKey     string           `json:"key" gorm:"primaryKey"`
 	Rule         string           `json:"rule" gorm:"type:varchar(255)"`
 	Severity     string           `json:"severity" gorm:"type:varchar(255)"`
 	Component    string           `json:"component" gorm:"type:varchar(255)"`
-	Project      string           `gorm:"index;type:varchar(255)"`          //domain project key
+	ProjectKey   string           `gorm:"index;type:varchar(255)"`          //domain project key
 	BatchId      string           `json:"batchId" gorm:"type:varchar(100)"` // from collection time
 	Line         int              `json:"line"`
 	Status       string           `json:"status"`
diff --git a/backend/plugins/sonarqube/models/migrationscripts/archived/sonarqube_project.go b/backend/plugins/sonarqube/models/migrationscripts/archived/sonarqube_project.go
index 5d1a2e466..210619981 100644
--- a/backend/plugins/sonarqube/models/migrationscripts/archived/sonarqube_project.go
+++ b/backend/plugins/sonarqube/models/migrationscripts/archived/sonarqube_project.go
@@ -24,7 +24,7 @@ import (
 
 type SonarqubeProject struct {
 	ConnectionId     uint64     `gorm:"primaryKey"`
-	Key              string     `json:"key" gorm:"type:varchar(64);primaryKey"`
+	ProjectKey       string     `json:"key" gorm:"type:varchar(64);primaryKey"`
 	Name             string     `json:"name" gorm:"type:varchar(255)"`
 	Qualifier        string     `json:"qualifier" gorm:"type:varchar(255)"`
 	Visibility       string     `json:"visibility" gorm:"type:varchar(64)"`
diff --git a/backend/plugins/sonarqube/models/sonarqube_file_metrics.go b/backend/plugins/sonarqube/models/sonarqube_file_metrics.go
index 773dc7c58..10b0292c0 100644
--- a/backend/plugins/sonarqube/models/sonarqube_file_metrics.go
+++ b/backend/plugins/sonarqube/models/sonarqube_file_metrics.go
@@ -23,8 +23,8 @@ import (
 
 type SonarqubeFileMetrics struct {
 	ConnectionId             uint64  `gorm:"primaryKey"`
-	ComponentKey             string  `json:"component_key" gorm:"primaryKey"`
-	Project                  string  `json:"project" gorm:"index"`
+	FileMetricsKey           string  `json:"component_key" gorm:"primaryKey"`
+	ProjectKey               string  `json:"project" gorm:"index"`
 	BatchID                  string  `json:"batch_id"`
 	FileName                 string  `json:"file_name"`
 	FilePath                 string  `json:"file_path"`
diff --git a/backend/plugins/sonarqube/models/sonarqube_hotspot.go b/backend/plugins/sonarqube/models/sonarqube_hotspot.go
index 8e085515e..e72acf190 100644
--- a/backend/plugins/sonarqube/models/sonarqube_hotspot.go
+++ b/backend/plugins/sonarqube/models/sonarqube_hotspot.go
@@ -24,10 +24,10 @@ import (
 
 type SonarqubeHotspot struct {
 	ConnectionId             uint64           `gorm:"primaryKey"`
-	Key                      string           `json:"key" gorm:"primaryKey"`
+	HotspotKey               string           `json:"key" gorm:"primaryKey"`
 	RuleKey                  string           `json:"ruleKey"`
 	Component                string           `json:"component" gorm:"index"`
-	Project                  string           `json:"project" gorm:"index"`
+	ProjectKey               string           `json:"project" gorm:"index"`
 	BatchId                  string           `json:"batchId" gorm:"type:varchar(100)"` // from collection time
 	Line                     int              `json:"line"`
 	Status                   string           `json:"status"`
diff --git a/backend/plugins/sonarqube/models/sonarqube_issue.go b/backend/plugins/sonarqube/models/sonarqube_issue.go
index b089b5b8e..91233aa03 100644
--- a/backend/plugins/sonarqube/models/sonarqube_issue.go
+++ b/backend/plugins/sonarqube/models/sonarqube_issue.go
@@ -24,11 +24,11 @@ import (
 
 type SonarqubeIssue struct {
 	ConnectionId uint64           `gorm:"primaryKey"`
-	Key          string           `json:"key" gorm:"primaryKey"`
+	IssueKey     string           `json:"key" gorm:"primaryKey"`
 	Rule         string           `json:"rule" gorm:"type:varchar(255)"`
 	Severity     string           `json:"severity" gorm:"type:varchar(255)"`
 	Component    string           `json:"component" gorm:"type:varchar(255)"`
-	Project      string           `gorm:"index;type:varchar(255)"`          //domain project key
+	ProjectKey   string           `gorm:"index;type:varchar(255)"`          //domain project key
 	BatchId      string           `json:"batchId" gorm:"type:varchar(100)"` // from collection time
 	Line         int              `json:"line"`
 	Status       string           `json:"status"`
diff --git a/backend/plugins/sonarqube/models/sonarqube_project.go b/backend/plugins/sonarqube/models/sonarqube_project.go
index 0fdc7f978..2a817c5a8 100644
--- a/backend/plugins/sonarqube/models/sonarqube_project.go
+++ b/backend/plugins/sonarqube/models/sonarqube_project.go
@@ -25,7 +25,7 @@ import (
 type SonarqubeProject struct {
 	common.NoPKModel
 	ConnectionId     uint64           `gorm:"primaryKey"`
-	Key              string           `json:"key" gorm:"type:varchar(64);primaryKey"`
+	ProjectKey       string           `json:"key" gorm:"type:varchar(64);primaryKey"`
 	Name             string           `json:"name" gorm:"type:varchar(255)"`
 	Qualifier        string           `json:"qualifier" gorm:"type:varchar(255)"`
 	Visibility       string           `json:"visibility" gorm:"type:varchar(64)"`
diff --git a/backend/plugins/sonarqube/tasks/filemetrics_convertor.go b/backend/plugins/sonarqube/tasks/filemetrics_convertor.go
index bd0a24af9..3e8e6c593 100644
--- a/backend/plugins/sonarqube/tasks/filemetrics_convertor.go
+++ b/backend/plugins/sonarqube/tasks/filemetrics_convertor.go
@@ -41,7 +41,7 @@ func ConvertFileMetrics(taskCtx plugin.SubTaskContext) errors.Error {
 	db := taskCtx.GetDal()
 	rawDataSubTaskArgs, data := CreateRawDataSubTaskArgs(taskCtx, RAW_PROJECTS_TABLE)
 	cursor, err := db.Cursor(dal.From(sonarqubeModels.SonarqubeFileMetrics{}),
-		dal.Where("connection_id = ? and project = ?", data.Options.ConnectionId, data.Options.ProjectKey))
+		dal.Where("connection_id = ? and project_key = ?", data.Options.ConnectionId, data.Options.ProjectKey))
 	if err != nil {
 		return err
 	}
@@ -56,12 +56,11 @@ func ConvertFileMetrics(taskCtx plugin.SubTaskContext) errors.Error {
 		Convert: func(inputRow interface{}) ([]interface{}, errors.Error) {
 			sonarqubeFileMetric := inputRow.(*sonarqubeModels.SonarqubeFileMetrics)
 			domainFileMetric := &securitytesting.StFileMetrics{
-				DomainEntity: domainlayer.DomainEntity{Id: issueIdGen.Generate(data.Options.ConnectionId, sonarqubeFileMetric.ComponentKey)},
-				ComponentKey: sonarqubeFileMetric.ComponentKey,
+				DomainEntity: domainlayer.DomainEntity{Id: issueIdGen.Generate(data.Options.ConnectionId, sonarqubeFileMetric.FileMetricsKey)},
 				FileName:     sonarqubeFileMetric.FileName,
 				FilePath:     sonarqubeFileMetric.FilePath,
 				FileLanguage: sonarqubeFileMetric.FileLanguage,
-				Project:      projectIdGen.Generate(data.Options.ConnectionId, sonarqubeFileMetric.Project),
+				ProjectKey:   projectIdGen.Generate(data.Options.ConnectionId, sonarqubeFileMetric.ProjectKey),
 				//BatchID:                  sonarqubeFileMetric.BatchID,
 				CodeSmells:               sonarqubeFileMetric.CodeSmells,
 				SqaleIndex:               sonarqubeFileMetric.SqaleIndex,
diff --git a/backend/plugins/sonarqube/tasks/filemetrics_extractor.go b/backend/plugins/sonarqube/tasks/filemetrics_extractor.go
index 6b70b399f..16d39a194 100644
--- a/backend/plugins/sonarqube/tasks/filemetrics_extractor.go
+++ b/backend/plugins/sonarqube/tasks/filemetrics_extractor.go
@@ -41,12 +41,12 @@ func ExtractFilemetrics(taskCtx plugin.SubTaskContext) errors.Error {
 				return nil, err
 			}
 			fileMetrics := &models.SonarqubeFileMetrics{
-				ConnectionId: data.Options.ConnectionId,
-				ComponentKey: body.Key,
-				FileName:     body.Name,
-				FilePath:     body.Path,
-				FileLanguage: body.Language,
-				Project:      data.Options.ProjectKey,
+				ConnectionId:   data.Options.ConnectionId,
+				FileMetricsKey: body.Key,
+				FileName:       body.Name,
+				FilePath:       body.Path,
+				FileLanguage:   body.Language,
+				ProjectKey:     data.Options.ProjectKey,
 				//BatchID:                  "",
 			}
 			alphabetMap := map[string]string{
diff --git a/backend/plugins/sonarqube/tasks/hotspots_convertor.go b/backend/plugins/sonarqube/tasks/hotspots_convertor.go
index 50cb77c5f..20d9ded8d 100644
--- a/backend/plugins/sonarqube/tasks/hotspots_convertor.go
+++ b/backend/plugins/sonarqube/tasks/hotspots_convertor.go
@@ -41,7 +41,7 @@ func ConvertHotspots(taskCtx plugin.SubTaskContext) errors.Error {
 	db := taskCtx.GetDal()
 	rawDataSubTaskArgs, data := CreateRawDataSubTaskArgs(taskCtx, RAW_PROJECTS_TABLE)
 	cursor, err := db.Cursor(dal.From(sonarqubeModels.SonarqubeHotspot{}),
-		dal.Where("connection_id = ? and project = ?", data.Options.ConnectionId, data.Options.ProjectKey))
+		dal.Where("connection_id = ? and project_key = ?", data.Options.ConnectionId, data.Options.ProjectKey))
 	if err != nil {
 		return err
 	}
@@ -56,10 +56,10 @@ func ConvertHotspots(taskCtx plugin.SubTaskContext) errors.Error {
 		Convert: func(inputRow interface{}) ([]interface{}, errors.Error) {
 			sonarqubeHotspot := inputRow.(*sonarqubeModels.SonarqubeHotspot)
 			domainHotspot := &securitytesting.StIssue{
-				DomainEntity:             domainlayer.DomainEntity{Id: issueIdGen.Generate(data.Options.ConnectionId, sonarqubeHotspot.Key)},
+				DomainEntity:             domainlayer.DomainEntity{Id: issueIdGen.Generate(data.Options.ConnectionId, sonarqubeHotspot.HotspotKey)},
 				BatchId:                  sonarqubeHotspot.BatchId,
 				Component:                sonarqubeHotspot.Component,
-				Project:                  projectIdGen.Generate(data.Options.ConnectionId, sonarqubeHotspot.Project),
+				ProjectKey:               projectIdGen.Generate(data.Options.ConnectionId, sonarqubeHotspot.ProjectKey),
 				Line:                     sonarqubeHotspot.Line,
 				StartLine:                sonarqubeHotspot.Line,
 				Status:                   sonarqubeHotspot.Status,
diff --git a/backend/plugins/sonarqube/tasks/issue_code_blocks_convertor.go b/backend/plugins/sonarqube/tasks/issue_code_blocks_convertor.go
index 1676e3002..f2175feef 100644
--- a/backend/plugins/sonarqube/tasks/issue_code_blocks_convertor.go
+++ b/backend/plugins/sonarqube/tasks/issue_code_blocks_convertor.go
@@ -37,8 +37,8 @@ func ConvertIssueCodeBlocks(taskCtx plugin.SubTaskContext) errors.Error {
 
 	cursor, err := db.Cursor(
 		dal.From("_tool_sonarqube_issue_code_blocks icb"),
-		dal.Join("left join _tool_sonarqube_issues i on i.`key` = icb.issue_key"),
-		dal.Where("icb.connection_id = ? and project = ?", data.Options.ConnectionId, data.Options.ProjectKey))
+		dal.Join("left join _tool_sonarqube_issues i on i.project_key = icb.issue_key"),
+		dal.Where("icb.connection_id = ? and project_key = ?", data.Options.ConnectionId, data.Options.ProjectKey))
 	if err != nil {
 		return err
 	}
diff --git a/backend/plugins/sonarqube/tasks/issues_convertor.go b/backend/plugins/sonarqube/tasks/issues_convertor.go
index 7c0c850d5..ed0861341 100644
--- a/backend/plugins/sonarqube/tasks/issues_convertor.go
+++ b/backend/plugins/sonarqube/tasks/issues_convertor.go
@@ -42,7 +42,7 @@ func ConvertIssues(taskCtx plugin.SubTaskContext) errors.Error {
 	db := taskCtx.GetDal()
 	rawDataSubTaskArgs, data := CreateRawDataSubTaskArgs(taskCtx, RAW_PROJECTS_TABLE)
 	cursor, err := db.Cursor(dal.From(sonarqubeModels.SonarqubeIssue{}),
-		dal.Where("connection_id = ? and project = ?", data.Options.ConnectionId, data.Options.ProjectKey))
+		dal.Where("connection_id = ? and project_key = ?", data.Options.ConnectionId, data.Options.ProjectKey))
 	if err != nil {
 		return err
 	}
@@ -57,12 +57,12 @@ func ConvertIssues(taskCtx plugin.SubTaskContext) errors.Error {
 		Convert: func(inputRow interface{}) ([]interface{}, errors.Error) {
 			sonarqubeIssue := inputRow.(*sonarqubeModels.SonarqubeIssue)
 			domainIssue := &securitytesting.StIssue{
-				DomainEntity:      domainlayer.DomainEntity{Id: issueIdGen.Generate(data.Options.ConnectionId, sonarqubeIssue.Key)},
+				DomainEntity:      domainlayer.DomainEntity{Id: issueIdGen.Generate(data.Options.ConnectionId, sonarqubeIssue.IssueKey)},
 				BatchId:           sonarqubeIssue.BatchId,
 				Rule:              sonarqubeIssue.Rule,
 				Severity:          sonarqubeIssue.Severity,
 				Component:         sonarqubeIssue.Component,
-				Project:           projectIdGen.Generate(data.Options.ConnectionId, sonarqubeIssue.Project),
+				ProjectKey:        projectIdGen.Generate(data.Options.ConnectionId, sonarqubeIssue.ProjectKey),
 				Line:              sonarqubeIssue.Line,
 				Status:            sonarqubeIssue.Status,
 				Message:           sonarqubeIssue.Message,
diff --git a/backend/plugins/sonarqube/tasks/issues_extractor.go b/backend/plugins/sonarqube/tasks/issues_extractor.go
index d659c0117..382cb118f 100644
--- a/backend/plugins/sonarqube/tasks/issues_extractor.go
+++ b/backend/plugins/sonarqube/tasks/issues_extractor.go
@@ -48,12 +48,12 @@ func ExtractIssues(taskCtx plugin.SubTaskContext) errors.Error {
 
 			sonarqubeIssue := &models.SonarqubeIssue{
 				ConnectionId: data.Options.ConnectionId,
-				Key:          body.Key,
+				IssueKey:     body.Key,
 				// BatchId      string           `json:"batchId" gorm:"primaryKey"`
 				Rule:         body.Rule,
 				Severity:     body.Severity,
 				Component:    body.Component,
-				Project:      body.Project,
+				ProjectKey:   body.Project,
 				Line:         body.Line,
 				Status:       body.Status,
 				Message:      body.Message,
@@ -80,7 +80,7 @@ func ExtractIssues(taskCtx plugin.SubTaskContext) errors.Error {
 				for _, location := range v.Locations {
 					codeBlock := &models.SonarqubeIssueCodeBlock{
 						ConnectionId: data.Options.ConnectionId,
-						IssueKey:     sonarqubeIssue.Key,
+						IssueKey:     sonarqubeIssue.IssueKey,
 						Component:    location.Component,
 						Msg:          location.Msg,
 						StartLine:    location.TextRange.StartLine,
diff --git a/backend/plugins/sonarqube/tasks/projects_convertor.go b/backend/plugins/sonarqube/tasks/projects_convertor.go
index 6e4ff757e..796971a83 100644
--- a/backend/plugins/sonarqube/tasks/projects_convertor.go
+++ b/backend/plugins/sonarqube/tasks/projects_convertor.go
@@ -42,7 +42,7 @@ func ConvertProjects(taskCtx plugin.SubTaskContext) errors.Error {
 	db := taskCtx.GetDal()
 	rawDataSubTaskArgs, data := CreateRawDataSubTaskArgs(taskCtx, RAW_PROJECTS_TABLE)
 	cursor, err := db.Cursor(dal.From(sonarqubeModels.SonarqubeProject{}),
-		dal.Where("connection_id = ? and `key` = ?", data.Options.ConnectionId, data.Options.ProjectKey))
+		dal.Where("connection_id = ? and project_key = ?", data.Options.ConnectionId, data.Options.ProjectKey))
 	if err != nil {
 		return err
 	}
@@ -56,12 +56,12 @@ func ConvertProjects(taskCtx plugin.SubTaskContext) errors.Error {
 		Convert: func(inputRow interface{}) ([]interface{}, errors.Error) {
 			sonarqubeProject := inputRow.(*sonarqubeModels.SonarqubeProject)
 			domainProject := &securitytesting.StProject{
-				DomainEntity:     domainlayer.DomainEntity{Id: projectIdGen.Generate(data.Options.ConnectionId, sonarqubeProject.Key)},
+				DomainEntity:     domainlayer.DomainEntity{Id: projectIdGen.Generate(data.Options.ConnectionId, sonarqubeProject.ProjectKey)},
 				Name:             sonarqubeProject.Name,
 				Qualifier:        sonarqubeProject.Qualifier,
 				Visibility:       sonarqubeProject.Visibility,
 				LastAnalysisDate: sonarqubeProject.LastAnalysisDate,
-				Revision:         sonarqubeProject.Revision,
+				CommitSha:        sonarqubeProject.Revision,
 			}
 			return []interface{}{
 				domainProject,