You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@devlake.apache.org by wa...@apache.org on 2023/02/08 12:42:46 UTC

[incubator-devlake] branch main updated: feat: sonarqube issue project update (#4361)

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

warren 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 80ae9de11 feat: sonarqube issue project update (#4361)
80ae9de11 is described below

commit 80ae9de11db9441826370e24eb16cf4259e88bd6
Author: abeizn <zi...@merico.dev>
AuthorDate: Wed Feb 8 20:42:41 2023 +0800

    feat: sonarqube issue project update (#4361)
    
    * feat: sonar qube issue project update
    
    * feat: sonar qube issue project update
    
    * feat: sonar qube issue project update
    
    * feat: sonar qube issue project update
---
 .../securitytesting/st_issue_code_blocks.go        | 17 +++++++-------
 .../domainlayer/securitytesting/st_issues.go       |  1 -
 .../domainlayer/securitytesting/st_projects.go     |  1 -
 .../archived/st_issue_code_blocks.go               | 17 +++++++-------
 .../models/migrationscripts/archived/st_issues.go  |  5 ++---
 .../migrationscripts/archived/st_projects.go       |  1 -
 .../archived/sonarqube_issue_code_block.go         |  1 -
 .../sonarqube/models/sonarqube_issue_code_block.go |  1 -
 .../plugins/sonarqube/tasks/hotspots_convertor.go  |  1 -
 .../sonarqube/tasks/issue_code_blocks_convertor.go | 26 ++++++++++++----------
 .../plugins/sonarqube/tasks/issues_convertor.go    |  4 ++--
 .../plugins/sonarqube/tasks/issues_extractor.go    |  1 -
 .../plugins/sonarqube/tasks/projects_convertor.go  |  4 ++--
 13 files changed, 36 insertions(+), 44 deletions(-)

diff --git a/backend/core/models/domainlayer/securitytesting/st_issue_code_blocks.go b/backend/core/models/domainlayer/securitytesting/st_issue_code_blocks.go
index 9d0fbe6e1..1fd94a90d 100644
--- a/backend/core/models/domainlayer/securitytesting/st_issue_code_blocks.go
+++ b/backend/core/models/domainlayer/securitytesting/st_issue_code_blocks.go
@@ -21,15 +21,14 @@ import "github.com/apache/incubator-devlake/core/models/domainlayer"
 
 type StIssueCodeBlock struct {
 	domainlayer.DomainEntity
-	Id          string `gorm:"primaryKey"`
-	IssueKey    string `json:"key" gorm:"index"`
-	Component   string `json:"component" gorm:"index"`
-	Project     string `json:"project" gorm:"index"`
-	Msg         string `json:"msg" `
-	StartLine   int    `json:"startLine" `
-	EndLine     int    `json:"endLine" `
-	StartOffset int    `json:"startOffset" `
-	EndOffset   int    `json:"endOffset" `
+	IssueCodeBlockId string `json:"issueCodeBlockId"`
+	IssueKey         string `json:"key" gorm:"index"`
+	Component        string `json:"component" gorm:"index"`
+	Msg              string `json:"msg" `
+	StartLine        int    `json:"startLine" `
+	EndLine          int    `json:"endLine" `
+	StartOffset      int    `json:"startOffset" `
+	EndOffset        int    `json:"endOffset" `
 }
 
 func (StIssueCodeBlock) TableName() string {
diff --git a/backend/core/models/domainlayer/securitytesting/st_issues.go b/backend/core/models/domainlayer/securitytesting/st_issues.go
index e45ebe9d9..6105224eb 100644
--- a/backend/core/models/domainlayer/securitytesting/st_issues.go
+++ b/backend/core/models/domainlayer/securitytesting/st_issues.go
@@ -26,7 +26,6 @@ type StIssue struct {
 	domainlayer.DomainEntity
 	BatchId           string           `json:"batchId" gorm:"type:varchar(100)"` // from collection time
 	Project           string           `gorm:"index;type:varchar(255)"`          //domain project key
-	Key               string           `json:"key"`
 	Rule              string           `json:"rule" gorm:"type:varchar(255)"`
 	Severity          string           `json:"severity" gorm:"type:varchar(255)"`
 	Component         string           `json:"component" 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 eec3cb395..e08286352 100644
--- a/backend/core/models/domainlayer/securitytesting/st_projects.go
+++ b/backend/core/models/domainlayer/securitytesting/st_projects.go
@@ -27,7 +27,6 @@ var _ plugin.Scope = (*StProject)(nil)
 
 type StProject struct {
 	domainlayer.DomainEntity
-	Key              string           `json:"key" gorm:"type:varchar(64)"`
 	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/core/models/migrationscripts/archived/st_issue_code_blocks.go b/backend/core/models/migrationscripts/archived/st_issue_code_blocks.go
index ec36f130d..86044b90b 100644
--- a/backend/core/models/migrationscripts/archived/st_issue_code_blocks.go
+++ b/backend/core/models/migrationscripts/archived/st_issue_code_blocks.go
@@ -19,15 +19,14 @@ package archived
 
 type StIssueCodeBlock struct {
 	DomainEntity
-	Id          string `gorm:"primaryKey"`
-	IssueKey    string `json:"key" gorm:"index"`
-	Component   string `json:"component" gorm:"index"`
-	Project     string `json:"project" gorm:"index"`
-	Msg         string `json:"msg" `
-	StartLine   int    `json:"startLine" `
-	EndLine     int    `json:"endLine" `
-	StartOffset int    `json:"startOffset" `
-	EndOffset   int    `json:"endOffset" `
+	IssueCodeBlockId string `json:"issueCodeBlockId"`
+	IssueKey         string `json:"key" gorm:"index"`
+	Component        string `json:"component" gorm:"index"`
+	Msg              string `json:"msg" `
+	StartLine        int    `json:"startLine" `
+	EndLine          int    `json:"endLine" `
+	StartOffset      int    `json:"startOffset" `
+	EndOffset        int    `json:"endOffset" `
 }
 
 func (StIssueCodeBlock) TableName() string {
diff --git a/backend/core/models/migrationscripts/archived/st_issues.go b/backend/core/models/migrationscripts/archived/st_issues.go
index 1460831be..82f969801 100644
--- a/backend/core/models/migrationscripts/archived/st_issues.go
+++ b/backend/core/models/migrationscripts/archived/st_issues.go
@@ -23,9 +23,8 @@ import (
 
 type StIssue struct {
 	DomainEntity
-	BatchId           string `json:"batchId" gorm:"type:varchar(100)"` // from collection time
-	Key               string
-	Project           string           `gorm:"index;type:varchar(255)"` //domain project key
+	BatchId           string           `json:"batchId" gorm:"type:varchar(100)"` // from collection time
+	Project           string           `gorm:"index;type:varchar(255)"`          //domain project key
 	Rule              string           `json:"rule" gorm:"type:varchar(255)"`
 	Severity          string           `json:"severity" gorm:"type:varchar(255)"`
 	Component         string           `json:"component" 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 6646a5c38..6fbcfd5a1 100644
--- a/backend/core/models/migrationscripts/archived/st_projects.go
+++ b/backend/core/models/migrationscripts/archived/st_projects.go
@@ -23,7 +23,6 @@ import (
 
 type StProject struct {
 	DomainEntity
-	Key              string           `json:"key" gorm:"type:varchar(64)"`
 	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/migrationscripts/archived/sonarqube_issue_code_block.go b/backend/plugins/sonarqube/models/migrationscripts/archived/sonarqube_issue_code_block.go
index 57aa332ba..cab175c35 100644
--- a/backend/plugins/sonarqube/models/migrationscripts/archived/sonarqube_issue_code_block.go
+++ b/backend/plugins/sonarqube/models/migrationscripts/archived/sonarqube_issue_code_block.go
@@ -24,7 +24,6 @@ type SonarqubeIssueCodeBlock struct {
 	Id           string `gorm:"primaryKey"`
 	IssueKey     string `json:"key" gorm:"index"`
 	Component    string `json:"component" gorm:"index"`
-	Project      string `json:"project" gorm:"index"`
 	Msg          string `json:"msg" `
 	StartLine    int    `json:"startLine" `
 	EndLine      int    `json:"endLine" `
diff --git a/backend/plugins/sonarqube/models/sonarqube_issue_code_block.go b/backend/plugins/sonarqube/models/sonarqube_issue_code_block.go
index 7e5ed3fbb..d16939d3e 100644
--- a/backend/plugins/sonarqube/models/sonarqube_issue_code_block.go
+++ b/backend/plugins/sonarqube/models/sonarqube_issue_code_block.go
@@ -27,7 +27,6 @@ type SonarqubeIssueCodeBlock struct {
 	Id           string `gorm:"primaryKey"`
 	IssueKey     string `json:"key" gorm:"index"`
 	Component    string `json:"component" gorm:"index"`
-	Project      string `json:"project" gorm:"index"`
 	Msg          string `json:"msg" `
 	StartLine    int    `json:"startLine" `
 	EndLine      int    `json:"endLine" `
diff --git a/backend/plugins/sonarqube/tasks/hotspots_convertor.go b/backend/plugins/sonarqube/tasks/hotspots_convertor.go
index 02dbd1d09..065367c05 100644
--- a/backend/plugins/sonarqube/tasks/hotspots_convertor.go
+++ b/backend/plugins/sonarqube/tasks/hotspots_convertor.go
@@ -58,7 +58,6 @@ func ConvertHotspots(taskCtx plugin.SubTaskContext) errors.Error {
 			domainHotspot := &securitytesting.StIssue{
 				DomainEntity:      domainlayer.DomainEntity{Id: issueIdGen.Generate(data.Options.ConnectionId, sonarqubeHotspot.Key)},
 				BatchId:           sonarqubeHotspot.BatchId,
-				Key:               sonarqubeHotspot.Key,
 				Component:         sonarqubeHotspot.Component,
 				Project:           projectIdGen.Generate(data.Options.ConnectionId, sonarqubeHotspot.Project),
 				Line:              sonarqubeHotspot.Line,
diff --git a/backend/plugins/sonarqube/tasks/issue_code_blocks_convertor.go b/backend/plugins/sonarqube/tasks/issue_code_blocks_convertor.go
index 36db485d8..9d92ebea3 100644
--- a/backend/plugins/sonarqube/tasks/issue_code_blocks_convertor.go
+++ b/backend/plugins/sonarqube/tasks/issue_code_blocks_convertor.go
@@ -35,14 +35,17 @@ func ConvertIssueCodeBlocks(taskCtx plugin.SubTaskContext) errors.Error {
 	db := taskCtx.GetDal()
 	rawDataSubTaskArgs, data := CreateRawDataSubTaskArgs(taskCtx, RAW_ISSUES_TABLE)
 
-	cursor, err := db.Cursor(dal.From(&models.SonarqubeIssueCodeBlock{}), dal.Where("connection_id = ? and project = ? ",
-		data.Options.ConnectionId, data.Options.ProjectKey))
+	cursor, err := db.Cursor(
+		dal.From("_tool_sonarqube_issue_code_blocks icb"),
+		dal.Join("_tool_sonarqube_issues i on i.key = icb.issue_key"),
+		dal.Where("connection_id = ? and project = ?", data.Options.ConnectionId, data.Options.ProjectKey))
 	if err != nil {
 		return err
 	}
 	defer cursor.Close()
 
 	idGen := didgen.NewDomainIdGenerator(&models.SonarqubeIssueCodeBlock{})
+	issueIdGen := didgen.NewDomainIdGenerator(&models.SonarqubeIssue{})
 	converter, err := api.NewDataConverter(api.DataConverterArgs{
 		InputRowType:       reflect.TypeOf(models.SonarqubeIssueCodeBlock{}),
 		Input:              cursor,
@@ -50,16 +53,15 @@ func ConvertIssueCodeBlocks(taskCtx plugin.SubTaskContext) errors.Error {
 		Convert: func(inputRow interface{}) ([]interface{}, errors.Error) {
 			sonarqubeIssueCodeBlock := inputRow.(*models.SonarqubeIssueCodeBlock)
 			domainIssueCodeBlock := &securitytesting.StIssueCodeBlock{
-				DomainEntity: domainlayer.DomainEntity{Id: idGen.Generate(data.Options.ConnectionId, sonarqubeIssueCodeBlock.Id)},
-				Id:           sonarqubeIssueCodeBlock.Id,
-				IssueKey:     sonarqubeIssueCodeBlock.IssueKey,
-				Component:    sonarqubeIssueCodeBlock.Component,
-				Msg:          sonarqubeIssueCodeBlock.Msg,
-				Project:      sonarqubeIssueCodeBlock.Project,
-				StartLine:    sonarqubeIssueCodeBlock.StartLine,
-				EndLine:      sonarqubeIssueCodeBlock.EndLine,
-				StartOffset:  sonarqubeIssueCodeBlock.StartOffset,
-				EndOffset:    sonarqubeIssueCodeBlock.EndOffset,
+				DomainEntity:     domainlayer.DomainEntity{Id: idGen.Generate(data.Options.ConnectionId, sonarqubeIssueCodeBlock.Id)},
+				IssueCodeBlockId: sonarqubeIssueCodeBlock.Id,
+				IssueKey:         issueIdGen.Generate(data.Options.ConnectionId, sonarqubeIssueCodeBlock.IssueKey),
+				Component:        sonarqubeIssueCodeBlock.Component,
+				Msg:              sonarqubeIssueCodeBlock.Msg,
+				StartLine:        sonarqubeIssueCodeBlock.StartLine,
+				EndLine:          sonarqubeIssueCodeBlock.EndLine,
+				StartOffset:      sonarqubeIssueCodeBlock.StartOffset,
+				EndOffset:        sonarqubeIssueCodeBlock.EndOffset,
 			}
 
 			return []interface{}{
diff --git a/backend/plugins/sonarqube/tasks/issues_convertor.go b/backend/plugins/sonarqube/tasks/issues_convertor.go
index 1df8e094b..7c0c850d5 100644
--- a/backend/plugins/sonarqube/tasks/issues_convertor.go
+++ b/backend/plugins/sonarqube/tasks/issues_convertor.go
@@ -18,6 +18,8 @@ limitations under the License.
 package tasks
 
 import (
+	"reflect"
+
 	"github.com/apache/incubator-devlake/core/dal"
 	"github.com/apache/incubator-devlake/core/errors"
 	"github.com/apache/incubator-devlake/core/models/domainlayer"
@@ -26,7 +28,6 @@ import (
 	"github.com/apache/incubator-devlake/core/plugin"
 	"github.com/apache/incubator-devlake/helpers/pluginhelper/api"
 	sonarqubeModels "github.com/apache/incubator-devlake/plugins/sonarqube/models"
-	"reflect"
 )
 
 var ConvertIssuesMeta = plugin.SubTaskMeta{
@@ -58,7 +59,6 @@ func ConvertIssues(taskCtx plugin.SubTaskContext) errors.Error {
 			domainIssue := &securitytesting.StIssue{
 				DomainEntity:      domainlayer.DomainEntity{Id: issueIdGen.Generate(data.Options.ConnectionId, sonarqubeIssue.Key)},
 				BatchId:           sonarqubeIssue.BatchId,
-				Key:               sonarqubeIssue.Key,
 				Rule:              sonarqubeIssue.Rule,
 				Severity:          sonarqubeIssue.Severity,
 				Component:         sonarqubeIssue.Component,
diff --git a/backend/plugins/sonarqube/tasks/issues_extractor.go b/backend/plugins/sonarqube/tasks/issues_extractor.go
index e8d4eedc8..97e941797 100644
--- a/backend/plugins/sonarqube/tasks/issues_extractor.go
+++ b/backend/plugins/sonarqube/tasks/issues_extractor.go
@@ -82,7 +82,6 @@ func ExtractIssues(taskCtx plugin.SubTaskContext) errors.Error {
 						ConnectionId: data.Options.ConnectionId,
 						IssueKey:     sonarqubeIssue.Key,
 						Component:    location.Component,
-						Project:      body.Project,
 						Msg:          location.Msg,
 						StartLine:    location.TextRange.StartLine,
 						EndLine:      location.TextRange.EndLine,
diff --git a/backend/plugins/sonarqube/tasks/projects_convertor.go b/backend/plugins/sonarqube/tasks/projects_convertor.go
index 9cad73f3f..6e4ff757e 100644
--- a/backend/plugins/sonarqube/tasks/projects_convertor.go
+++ b/backend/plugins/sonarqube/tasks/projects_convertor.go
@@ -18,6 +18,8 @@ limitations under the License.
 package tasks
 
 import (
+	"reflect"
+
 	"github.com/apache/incubator-devlake/core/dal"
 	"github.com/apache/incubator-devlake/core/errors"
 	"github.com/apache/incubator-devlake/core/models/domainlayer"
@@ -26,7 +28,6 @@ import (
 	"github.com/apache/incubator-devlake/core/plugin"
 	"github.com/apache/incubator-devlake/helpers/pluginhelper/api"
 	sonarqubeModels "github.com/apache/incubator-devlake/plugins/sonarqube/models"
-	"reflect"
 )
 
 var ConvertProjectsMeta = plugin.SubTaskMeta{
@@ -56,7 +57,6 @@ func ConvertProjects(taskCtx plugin.SubTaskContext) errors.Error {
 			sonarqubeProject := inputRow.(*sonarqubeModels.SonarqubeProject)
 			domainProject := &securitytesting.StProject{
 				DomainEntity:     domainlayer.DomainEntity{Id: projectIdGen.Generate(data.Options.ConnectionId, sonarqubeProject.Key)},
-				Key:              sonarqubeProject.Key,
 				Name:             sonarqubeProject.Name,
 				Qualifier:        sonarqubeProject.Qualifier,
 				Visibility:       sonarqubeProject.Visibility,