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 76fadf45e fix(sonarqube): fix minor issues (#4364)
76fadf45e is described below

commit 76fadf45ebaed9e77e006a0d9a5cd02504d5858a
Author: Warren Chen <[email protected]>
AuthorDate: Thu Feb 9 11:15:26 2023 +0800

    fix(sonarqube): fix minor issues (#4364)
---
 .../domainlayer/securitytesting/st_file_metrics.go |  2 +-
 .../securitytesting/st_issue_code_blocks.go        | 15 ++++---
 .../domainlayer/securitytesting/st_issues.go       | 46 +++++++++++-----------
 .../20230208_add_security_testing.go               |  2 +-
 .../migrationscripts/archived/st_file_metrics.go   |  4 +-
 .../archived/st_issue_code_blocks.go               | 15 ++++---
 .../models/migrationscripts/archived/st_issues.go  | 46 +++++++++++-----------
 backend/plugins/sonarqube/impl/impl.go             |  1 +
 .../migrationscripts/20230111_add_init_tables.go   |  2 +-
 .../archived/sonarqube_file_metrics.go             |  2 +-
 .../migrationscripts/archived/sonarqube_hotspot.go | 12 +++---
 .../migrationscripts/archived/sonarqube_issue.go   | 10 ++---
 .../archived/sonarqube_issue_code_block.go         |  2 +-
 .../sonarqube/models/sonarqube_file_metrics.go     |  2 +-
 .../plugins/sonarqube/models/sonarqube_hotspot.go  | 12 +++---
 .../plugins/sonarqube/models/sonarqube_issue.go    | 10 ++---
 .../sonarqube/models/sonarqube_issue_code_block.go |  8 ++--
 .../plugins/sonarqube/tasks/hotspots_convertor.go  | 29 ++++++++------
 .../sonarqube/tasks/issue_code_blocks_convertor.go | 21 +++++-----
 19 files changed, 122 insertions(+), 119 deletions(-)

diff --git a/backend/core/models/domainlayer/securitytesting/st_file_metrics.go 
b/backend/core/models/domainlayer/securitytesting/st_file_metrics.go
index b51ea665e..66513d3c5 100644
--- a/backend/core/models/domainlayer/securitytesting/st_file_metrics.go
+++ b/backend/core/models/domainlayer/securitytesting/st_file_metrics.go
@@ -25,10 +25,10 @@ type StFileMetrics struct {
        domainlayer.DomainEntity
        ComponentKey             string
        Project                  string  `gorm:"index;type:varchar(255)"` 
//domain project key
+       BatchID                  string  `json:"batch_id"`
        FileName                 string  `json:"file_name"`
        FilePath                 string  `json:"file_path"`
        FileLanguage             string  `json:"file_language"`
-       BatchID                  string  `json:"batch_id"`
        CodeSmells               int     `json:"code_smells"`
        SqaleIndex               string  `json:"sqale_index"`
        SqaleRating              string  `json:"sqale_rating"`
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 1fd94a90d..e34356b4b 100644
--- a/backend/core/models/domainlayer/securitytesting/st_issue_code_blocks.go
+++ b/backend/core/models/domainlayer/securitytesting/st_issue_code_blocks.go
@@ -21,14 +21,13 @@ import 
"github.com/apache/incubator-devlake/core/models/domainlayer"
 
 type StIssueCodeBlock struct {
        domainlayer.DomainEntity
-       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" `
+       IssueKey    string `json:"key" gorm:"index"`
+       Component   string `json:"component" gorm:"index"`
+       StartLine   int    `json:"startLine" `
+       EndLine     int    `json:"endLine" `
+       StartOffset int    `json:"startOffset" `
+       EndOffset   int    `json:"endOffset" `
+       Msg         string `json:"msg" `
 }
 
 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 6105224eb..6cfb2d0f7 100644
--- a/backend/core/models/domainlayer/securitytesting/st_issues.go
+++ b/backend/core/models/domainlayer/securitytesting/st_issues.go
@@ -24,28 +24,30 @@ import (
 
 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
-       Rule              string           `json:"rule" 
gorm:"type:varchar(255)"`
-       Severity          string           `json:"severity" 
gorm:"type:varchar(255)"`
-       Component         string           `json:"component" 
gorm:"type:varchar(255)"`
-       Line              int              `json:"line"`
-       Status            string           `json:"status" 
gorm:"type:varchar(255)"`
-       Message           string           `json:"message"`
-       Debt              string           `json:"debt" 
gorm:"type:varchar(255)"`
-       Effort            string           `json:"effort" 
gorm:"type:varchar(255)"`
-       CommitAuthorEmail string           `json:"author" 
gorm:"type:varchar(255)"`
-       Assignee          string           `json:"assignee" 
gorm:"type:varchar(255)"`
-       Hash              string           `json:"hash" 
gorm:"type:varchar(255)"`
-       Tags              string           `json:"tags" 
gorm:"type:varchar(255)"`
-       Type              string           `json:"type" 
gorm:"type:varchar(255)"`
-       Scope             string           `json:"scope" 
gorm:"type:varchar(255)"`
-       StartLine         int              `json:"startLine"`
-       EndLine           int              `json:"endLine"`
-       StartOffset       int              `json:"startOffset"`
-       EndOffset         int              `json:"endOffset"`
-       CreationDate      *api.Iso8601Time `json:"creationDate"`
-       UpdateDate        *api.Iso8601Time `json:"updateDate"`
+       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
+       BatchId                  string           `json:"batchId" 
gorm:"type:varchar(100)"` // from collection time
+       Line                     int              `json:"line"`
+       Status                   string           `json:"status" 
gorm:"type:varchar(255)"`
+       Message                  string           `json:"message"`
+       Debt                     string           `json:"debt" 
gorm:"type:varchar(255)"`
+       Effort                   string           `json:"effort" 
gorm:"type:varchar(255)"`
+       CommitAuthorEmail        string           `json:"author" 
gorm:"type:varchar(255)"`
+       Assignee                 string           `json:"assignee" 
gorm:"type:varchar(255)"`
+       Hash                     string           `json:"hash" 
gorm:"type:varchar(255)"`
+       Tags                     string           `json:"tags" 
gorm:"type:varchar(255)"`
+       Type                     string           `json:"type" 
gorm:"type:varchar(255)"`
+       Scope                    string           `json:"scope" 
gorm:"type:varchar(255)"`
+       StartLine                int              `json:"startLine"`
+       EndLine                  int              `json:"endLine"`
+       StartOffset              int              `json:"startOffset"`
+       EndOffset                int              `json:"endOffset"`
+       VulnerabilityProbability string           `gorm:"type:varchar(100)"`
+       SecurityCategory         string           `gorm:"type:varchar(100)"`
+       CreationDate             *api.Iso8601Time `json:"creationDate"`
+       UpdateDate               *api.Iso8601Time `json:"updateDate"`
 }
 
 func (StIssue) 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 9ece14f53..a4780ad13 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 20230208000008
+       return 20230208000013
 }
 
 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 b93b51f02..bf81ea6ff 100644
--- a/backend/core/models/migrationscripts/archived/st_file_metrics.go
+++ b/backend/core/models/migrationscripts/archived/st_file_metrics.go
@@ -19,12 +19,12 @@ package archived
 
 type StFileMetrics struct {
        DomainEntity
-       ComponentKey             string  `json:"component_key"`
+       ComponentKey             string
        Project                  string  `gorm:"index;type:varchar(255)"` 
//domain project key
+       BatchID                  string  `json:"batch_id"`
        FileName                 string  `json:"file_name"`
        FilePath                 string  `json:"file_path"`
        FileLanguage             string  `json:"file_language"`
-       BatchID                  string  `json:"batch_id"`
        CodeSmells               int     `json:"code_smells"`
        SqaleIndex               string  `json:"sqale_index"`
        SqaleRating              string  `json:"sqale_rating"`
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 86044b90b..381710d9c 100644
--- a/backend/core/models/migrationscripts/archived/st_issue_code_blocks.go
+++ b/backend/core/models/migrationscripts/archived/st_issue_code_blocks.go
@@ -19,14 +19,13 @@ package archived
 
 type StIssueCodeBlock struct {
        DomainEntity
-       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" `
+       IssueKey    string `json:"key" gorm:"index"`
+       Component   string `json:"component" gorm:"index"`
+       StartLine   int    `json:"startLine" `
+       EndLine     int    `json:"endLine" `
+       StartOffset int    `json:"startOffset" `
+       EndOffset   int    `json:"endOffset" `
+       Msg         string `json:"msg" `
 }
 
 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 82f969801..7d5c3f0dc 100644
--- a/backend/core/models/migrationscripts/archived/st_issues.go
+++ b/backend/core/models/migrationscripts/archived/st_issues.go
@@ -23,28 +23,30 @@ import (
 
 type StIssue struct {
        DomainEntity
-       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)"`
-       Line              int              `json:"line"`
-       Status            string           `json:"status" 
gorm:"type:varchar(255)"`
-       Message           string           `json:"message"`
-       Debt              string           `json:"debt" 
gorm:"type:varchar(255)"`
-       Effort            string           `json:"effort" 
gorm:"type:varchar(255)"`
-       CommitAuthorEmail string           `json:"author" 
gorm:"type:varchar(255)"`
-       Assignee          string           `json:"assignee" 
gorm:"type:varchar(255)"`
-       Hash              string           `json:"hash" 
gorm:"type:varchar(255)"`
-       Tags              string           `json:"tags" 
gorm:"type:varchar(255)"`
-       Type              string           `json:"type" 
gorm:"type:varchar(255)"`
-       Scope             string           `json:"scope" 
gorm:"type:varchar(255)"`
-       StartLine         int              `json:"startLine"`
-       EndLine           int              `json:"endLine"`
-       StartOffset       int              `json:"startOffset"`
-       EndOffset         int              `json:"endOffset"`
-       CreationDate      *api.Iso8601Time `json:"creationDate"`
-       UpdateDate        *api.Iso8601Time `json:"updateDate"`
+       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
+       BatchId                  string           `json:"batchId" 
gorm:"type:varchar(100)"` // from collection time
+       Line                     int              `json:"line"`
+       Status                   string           `json:"status" 
gorm:"type:varchar(255)"`
+       Message                  string           `json:"message"`
+       Debt                     string           `json:"debt" 
gorm:"type:varchar(255)"`
+       Effort                   string           `json:"effort" 
gorm:"type:varchar(255)"`
+       CommitAuthorEmail        string           `json:"author" 
gorm:"type:varchar(255)"`
+       Assignee                 string           `json:"assignee" 
gorm:"type:varchar(255)"`
+       Hash                     string           `json:"hash" 
gorm:"type:varchar(255)"`
+       Tags                     string           `json:"tags" 
gorm:"type:varchar(255)"`
+       Type                     string           `json:"type" 
gorm:"type:varchar(255)"`
+       Scope                    string           `json:"scope" 
gorm:"type:varchar(255)"`
+       StartLine                int              `json:"startLine"`
+       EndLine                  int              `json:"endLine"`
+       StartOffset              int              `json:"startOffset"`
+       EndOffset                int              `json:"endOffset"`
+       VulnerabilityProbability string           `gorm:"type:varchar(100)"`
+       SecurityCategory         string           `gorm:"type:varchar(100)"`
+       CreationDate             *api.Iso8601Time `json:"creationDate"`
+       UpdateDate               *api.Iso8601Time `json:"updateDate"`
 }
 
 func (StIssue) TableName() string {
diff --git a/backend/plugins/sonarqube/impl/impl.go 
b/backend/plugins/sonarqube/impl/impl.go
index b9412d891..58f44d901 100644
--- a/backend/plugins/sonarqube/impl/impl.go
+++ b/backend/plugins/sonarqube/impl/impl.go
@@ -68,6 +68,7 @@ func (p Sonarqube) SubTaskMetas() []plugin.SubTaskMeta {
                tasks.ConvertIssueCodeBlocksMeta,
                tasks.ConvertHotspotsMeta,
                tasks.ConvertFileMetricsMeta,
+               tasks.ConvertAccountsMeta,
        }
 }
 
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 4dd8e6238..09b682b50 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 20230207220021
+       return 20230207220022
 }
 
 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 6f17c2682..1466425c1 100644
--- 
a/backend/plugins/sonarqube/models/migrationscripts/archived/sonarqube_file_metrics.go
+++ 
b/backend/plugins/sonarqube/models/migrationscripts/archived/sonarqube_file_metrics.go
@@ -25,10 +25,10 @@ type SonarqubeFileMetrics struct {
        ConnectionId             uint64  `gorm:"primaryKey"`
        ComponentKey             string  `json:"component_key" 
gorm:"primaryKey"`
        Project                  string  `json:"project" gorm:"index"`
+       BatchID                  string  `json:"batch_id"`
        FileName                 string  `json:"file_name"`
        FilePath                 string  `json:"file_path"`
        FileLanguage             string  `json:"file_language"`
-       BatchID                  string  `json:"batch_id"`
        CodeSmells               int     `json:"code_smells"`
        SqaleIndex               string  `json:"sqale_index"`
        SqaleRating              string  `json:"sqale_rating"`
diff --git 
a/backend/plugins/sonarqube/models/migrationscripts/archived/sonarqube_hotspot.go
 
b/backend/plugins/sonarqube/models/migrationscripts/archived/sonarqube_hotspot.go
index f8259b654..3347f0936 100644
--- 
a/backend/plugins/sonarqube/models/migrationscripts/archived/sonarqube_hotspot.go
+++ 
b/backend/plugins/sonarqube/models/migrationscripts/archived/sonarqube_hotspot.go
@@ -25,19 +25,19 @@ import (
 type SonarqubeHotspot struct {
        ConnectionId             uint64           `gorm:"primaryKey"`
        Key                      string           `json:"key" gorm:"primaryKey"`
+       RuleKey                  string           `json:"ruleKey"`
+       Component                string           `json:"component" 
gorm:"index"`
        Project                  string           `json:"project" gorm:"index"`
        BatchId                  string           `json:"batchId" 
gorm:"type:varchar(100)"` // from collection time
-       Component                string           `json:"component" 
gorm:"index"`
-       SecurityCategory         string           `json:"securityCategory"`
-       VulnerabilityProbability string           
`json:"vulnerabilityProbability"`
-       Status                   string           `json:"status"`
        Line                     int              `json:"line"`
+       Status                   string           `json:"status"`
        Message                  string           `json:"message"`
-       Assignee                 string           `json:"assignee"`
        Author                   string           `json:"author"`
+       Assignee                 string           `json:"assignee"`
+       SecurityCategory         string           `json:"securityCategory"`
+       VulnerabilityProbability string           
`json:"vulnerabilityProbability"`
        CreationDate             *api.Iso8601Time `json:"creationDate"`
        UpdateDate               *api.Iso8601Time `json:"updateDate"`
-       RuleKey                  string           `json:"ruleKey"`
        archived.NoPKModel
 }
 
diff --git 
a/backend/plugins/sonarqube/models/migrationscripts/archived/sonarqube_issue.go 
b/backend/plugins/sonarqube/models/migrationscripts/archived/sonarqube_issue.go
index 287a393ed..0b2c0f148 100644
--- 
a/backend/plugins/sonarqube/models/migrationscripts/archived/sonarqube_issue.go
+++ 
b/backend/plugins/sonarqube/models/migrationscripts/archived/sonarqube_issue.go
@@ -24,12 +24,12 @@ import (
 
 type SonarqubeIssue struct {
        ConnectionId uint64           `gorm:"primaryKey"`
-       BatchId      string           `json:"batchId" gorm:"type:varchar(100)"` 
// from collection time
        Key          string           `json:"key" gorm:"primaryKey"`
-       Rule         string           `json:"rule"`
-       Severity     string           `json:"severity"`
-       Component    string           `json:"component"`
-       Project      string           `json:"project"`
+       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
+       BatchId      string           `json:"batchId" gorm:"type:varchar(100)"` 
// from collection time
        Line         int              `json:"line"`
        Status       string           `json:"status"`
        Message      string           `json:"message"`
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 cab175c35..d94d911ea 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,11 +24,11 @@ type SonarqubeIssueCodeBlock struct {
        Id           string `gorm:"primaryKey"`
        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" `
+       Msg          string `json:"msg" `
        archived.NoPKModel
 }
 
diff --git a/backend/plugins/sonarqube/models/sonarqube_file_metrics.go 
b/backend/plugins/sonarqube/models/sonarqube_file_metrics.go
index b0718e6e5..773dc7c58 100644
--- a/backend/plugins/sonarqube/models/sonarqube_file_metrics.go
+++ b/backend/plugins/sonarqube/models/sonarqube_file_metrics.go
@@ -25,10 +25,10 @@ type SonarqubeFileMetrics struct {
        ConnectionId             uint64  `gorm:"primaryKey"`
        ComponentKey             string  `json:"component_key" 
gorm:"primaryKey"`
        Project                  string  `json:"project" gorm:"index"`
+       BatchID                  string  `json:"batch_id"`
        FileName                 string  `json:"file_name"`
        FilePath                 string  `json:"file_path"`
        FileLanguage             string  `json:"file_language"`
-       BatchID                  string  `json:"batch_id"`
        CodeSmells               int     `json:"code_smells"`
        SqaleIndex               string  `json:"sqale_index"`
        SqaleRating              string  `json:"sqale_rating"`
diff --git a/backend/plugins/sonarqube/models/sonarqube_hotspot.go 
b/backend/plugins/sonarqube/models/sonarqube_hotspot.go
index b8d62a63d..8e085515e 100644
--- a/backend/plugins/sonarqube/models/sonarqube_hotspot.go
+++ b/backend/plugins/sonarqube/models/sonarqube_hotspot.go
@@ -25,19 +25,19 @@ import (
 type SonarqubeHotspot struct {
        ConnectionId             uint64           `gorm:"primaryKey"`
        Key                      string           `json:"key" gorm:"primaryKey"`
-       BatchId                  string           `json:"batchId" 
gorm:"type:varchar(100)"` // from collection time
+       RuleKey                  string           `json:"ruleKey"`
        Component                string           `json:"component" 
gorm:"index"`
        Project                  string           `json:"project" gorm:"index"`
-       SecurityCategory         string           `json:"securityCategory"`
-       VulnerabilityProbability string           
`json:"vulnerabilityProbability"`
-       Status                   string           `json:"status"`
+       BatchId                  string           `json:"batchId" 
gorm:"type:varchar(100)"` // from collection time
        Line                     int              `json:"line"`
+       Status                   string           `json:"status"`
        Message                  string           `json:"message"`
-       Assignee                 string           `json:"assignee"`
        Author                   string           `json:"author"`
+       Assignee                 string           `json:"assignee"`
+       SecurityCategory         string           `json:"securityCategory"`
+       VulnerabilityProbability string           
`json:"vulnerabilityProbability"`
        CreationDate             *api.Iso8601Time `json:"creationDate"`
        UpdateDate               *api.Iso8601Time `json:"updateDate"`
-       RuleKey                  string           `json:"ruleKey"`
        common.NoPKModel
 }
 
diff --git a/backend/plugins/sonarqube/models/sonarqube_issue.go 
b/backend/plugins/sonarqube/models/sonarqube_issue.go
index d5de96cd3..b089b5b8e 100644
--- a/backend/plugins/sonarqube/models/sonarqube_issue.go
+++ b/backend/plugins/sonarqube/models/sonarqube_issue.go
@@ -24,12 +24,12 @@ import (
 
 type SonarqubeIssue struct {
        ConnectionId uint64           `gorm:"primaryKey"`
-       BatchId      string           `json:"batchId" gorm:"type:varchar(100)"` 
// from collection time
        Key          string           `json:"key" gorm:"primaryKey"`
-       Rule         string           `json:"rule"`
-       Severity     string           `json:"severity"`
-       Component    string           `json:"component"`
-       Project      string           `json:"project"`
+       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
+       BatchId      string           `json:"batchId" gorm:"type:varchar(100)"` 
// from collection time
        Line         int              `json:"line"`
        Status       string           `json:"status"`
        Message      string           `json:"message"`
diff --git a/backend/plugins/sonarqube/models/sonarqube_issue_code_block.go 
b/backend/plugins/sonarqube/models/sonarqube_issue_code_block.go
index d16939d3e..8e4e7ea86 100644
--- a/backend/plugins/sonarqube/models/sonarqube_issue_code_block.go
+++ b/backend/plugins/sonarqube/models/sonarqube_issue_code_block.go
@@ -17,21 +17,19 @@ limitations under the License.
 
 package models
 
-import (
-       "github.com/apache/incubator-devlake/core/models/common"
-)
+import "github.com/apache/incubator-devlake/core/models/common"
 
 type SonarqubeIssueCodeBlock struct {
-       common.NoPKModel
        ConnectionId uint64 `gorm:"primaryKey"`
        Id           string `gorm:"primaryKey"`
        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" `
+       Msg          string `json:"msg" `
+       common.NoPKModel
 }
 
 func (SonarqubeIssueCodeBlock) TableName() string {
diff --git a/backend/plugins/sonarqube/tasks/hotspots_convertor.go 
b/backend/plugins/sonarqube/tasks/hotspots_convertor.go
index 065367c05..50cb77c5f 100644
--- a/backend/plugins/sonarqube/tasks/hotspots_convertor.go
+++ b/backend/plugins/sonarqube/tasks/hotspots_convertor.go
@@ -56,19 +56,22 @@ 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)},
-                               BatchId:           sonarqubeHotspot.BatchId,
-                               Component:         sonarqubeHotspot.Component,
-                               Project:           
projectIdGen.Generate(data.Options.ConnectionId, sonarqubeHotspot.Project),
-                               Line:              sonarqubeHotspot.Line,
-                               Status:            sonarqubeHotspot.Status,
-                               Message:           sonarqubeHotspot.Message,
-                               CommitAuthorEmail: sonarqubeHotspot.Author,
-                               Assignee:          sonarqubeHotspot.Assignee,
-                               Rule:              sonarqubeHotspot.RuleKey,
-                               CreationDate:      
sonarqubeHotspot.CreationDate,
-                               UpdateDate:        sonarqubeHotspot.UpdateDate,
-                               Type:              "HOTSPOTS",
+                               DomainEntity:             
domainlayer.DomainEntity{Id: issueIdGen.Generate(data.Options.ConnectionId, 
sonarqubeHotspot.Key)},
+                               BatchId:                  
sonarqubeHotspot.BatchId,
+                               Component:                
sonarqubeHotspot.Component,
+                               Project:                  
projectIdGen.Generate(data.Options.ConnectionId, sonarqubeHotspot.Project),
+                               Line:                     sonarqubeHotspot.Line,
+                               StartLine:                sonarqubeHotspot.Line,
+                               Status:                   
sonarqubeHotspot.Status,
+                               Message:                  
sonarqubeHotspot.Message,
+                               CommitAuthorEmail:        
sonarqubeHotspot.Author,
+                               Assignee:                 
sonarqubeHotspot.Assignee,
+                               Rule:                     
sonarqubeHotspot.RuleKey,
+                               CreationDate:             
sonarqubeHotspot.CreationDate,
+                               UpdateDate:               
sonarqubeHotspot.UpdateDate,
+                               Type:                     "HOTSPOTS",
+                               VulnerabilityProbability: 
sonarqubeHotspot.VulnerabilityProbability,
+                               Severity:                 
sonarqubeHotspot.SecurityCategory,
                        }
                        return []interface{}{
                                domainHotspot,
diff --git a/backend/plugins/sonarqube/tasks/issue_code_blocks_convertor.go 
b/backend/plugins/sonarqube/tasks/issue_code_blocks_convertor.go
index 9d92ebea3..1676e3002 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("_tool_sonarqube_issues i on i.key = icb.issue_key"),
-               dal.Where("connection_id = ? and project = ?", 
data.Options.ConnectionId, data.Options.ProjectKey))
+               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))
        if err != nil {
                return err
        }
@@ -53,15 +53,14 @@ 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)},
-                               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,
+                               DomainEntity: domainlayer.DomainEntity{Id: 
idGen.Generate(data.Options.ConnectionId, 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{}{

Reply via email to