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 <[email protected]>
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,

Reply via email to