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/08 07:53:14 UTC
[incubator-devlake] branch main updated: feat(sonarqube): add hotspot convertor (#4358)
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 65e3149ba feat(sonarqube): add hotspot convertor (#4358)
65e3149ba is described below
commit 65e3149bab734ea37da6f8f1198f21dd6604155a
Author: Warren Chen <yi...@merico.dev>
AuthorDate: Wed Feb 8 15:53:08 2023 +0800
feat(sonarqube): add hotspot convertor (#4358)
---
.../domainlayer/securitytesting/st_issues.go | 46 ++++++++---------
backend/plugins/sonarqube/impl/impl.go | 1 +
.../migrationscripts/20230111_add_init_tables.go | 2 +-
.../migrationscripts/archived/sonarqube_hotspot.go | 2 +-
.../plugins/sonarqube/models/sonarqube_hotspot.go | 2 +-
.../{issues_convertor.go => hotspots_convertor.go} | 59 +++++++++-------------
.../plugins/sonarqube/tasks/issues_convertor.go | 2 +-
7 files changed, 53 insertions(+), 61 deletions(-)
diff --git a/backend/core/models/domainlayer/securitytesting/st_issues.go b/backend/core/models/domainlayer/securitytesting/st_issues.go
index 952b33d10..1d99451c4 100644
--- a/backend/core/models/domainlayer/securitytesting/st_issues.go
+++ b/backend/core/models/domainlayer/securitytesting/st_issues.go
@@ -24,29 +24,29 @@ import (
type StIssue struct {
domainlayer.DomainEntity
- BatchId string `json:"batchId" gorm:"type:varchar(100)"` // from collection time
- Key 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 `json:"project" 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"`
+ BatchId string `json:"batchId" gorm:"type:varchar(100)"` // from collection time
+ Key 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 `json:"project" 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"`
}
func (StIssue) TableName() string {
diff --git a/backend/plugins/sonarqube/impl/impl.go b/backend/plugins/sonarqube/impl/impl.go
index 010baa712..ce9d168b0 100644
--- a/backend/plugins/sonarqube/impl/impl.go
+++ b/backend/plugins/sonarqube/impl/impl.go
@@ -65,6 +65,7 @@ func (p Sonarqube) SubTaskMetas() []plugin.SubTaskMeta {
tasks.ExtractAccountsMeta,
tasks.ConvertProjectsMeta,
tasks.ConvertIssuesMeta,
+ tasks.ConvertHotspotsMeta,
}
}
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 b917af525..3bbc09ad6 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 20230207220015
+ return 20230207220016
}
func (*addInitTables) Name() string {
diff --git a/backend/plugins/sonarqube/models/migrationscripts/archived/sonarqube_hotspot.go b/backend/plugins/sonarqube/models/migrationscripts/archived/sonarqube_hotspot.go
index db42c28d7..a94aeac94 100644
--- a/backend/plugins/sonarqube/models/migrationscripts/archived/sonarqube_hotspot.go
+++ b/backend/plugins/sonarqube/models/migrationscripts/archived/sonarqube_hotspot.go
@@ -24,7 +24,7 @@ import (
type SonarqubeHotspot struct {
ConnectionId uint64 `gorm:"primaryKey"`
- IssueKey string `json:"key" gorm:"primaryKey"`
+ Key string `json:"key" gorm:"primaryKey"`
BatchId string `json:"batchId" gorm:"type:varchar(100)"` // from collection time
Component string `json:"component" gorm:"index"`
Project string `json:"project" gorm:"index"`
diff --git a/backend/plugins/sonarqube/models/sonarqube_hotspot.go b/backend/plugins/sonarqube/models/sonarqube_hotspot.go
index e048b01cc..b8d62a63d 100644
--- a/backend/plugins/sonarqube/models/sonarqube_hotspot.go
+++ b/backend/plugins/sonarqube/models/sonarqube_hotspot.go
@@ -24,7 +24,7 @@ import (
type SonarqubeHotspot struct {
ConnectionId uint64 `gorm:"primaryKey"`
- IssueKey string `json:"key" gorm:"primaryKey"`
+ Key string `json:"key" gorm:"primaryKey"`
BatchId string `json:"batchId" gorm:"type:varchar(100)"` // from collection time
Component string `json:"component" gorm:"index"`
Project string `json:"project" gorm:"index"`
diff --git a/backend/plugins/sonarqube/tasks/issues_convertor.go b/backend/plugins/sonarqube/tasks/hotspots_convertor.go
similarity index 56%
copy from backend/plugins/sonarqube/tasks/issues_convertor.go
copy to backend/plugins/sonarqube/tasks/hotspots_convertor.go
index d30a92b9b..7367bffee 100644
--- a/backend/plugins/sonarqube/tasks/issues_convertor.go
+++ b/backend/plugins/sonarqube/tasks/hotspots_convertor.go
@@ -29,58 +29,49 @@ import (
"reflect"
)
-var ConvertIssuesMeta = plugin.SubTaskMeta{
- Name: "convertIssues",
- EntryPoint: ConvertIssues,
+var ConvertHotspotsMeta = plugin.SubTaskMeta{
+ Name: "convertHotspots",
+ EntryPoint: ConvertHotspots,
EnabledByDefault: true,
- Description: "Convert tool layer table sonarqube_issues into domain layer table issues",
+ Description: "Convert tool layer table sonarqube_hotspots into domain layer table st_hotspots",
DomainTypes: []string{plugin.DOMAIN_TYPE_SECURITY_TESTING},
}
-func ConvertIssues(taskCtx plugin.SubTaskContext) errors.Error {
+func ConvertHotspots(taskCtx plugin.SubTaskContext) errors.Error {
db := taskCtx.GetDal()
rawDataSubTaskArgs, data := CreateRawDataSubTaskArgs(taskCtx, RAW_PROJECTS_TABLE)
- cursor, err := db.Cursor(dal.From(sonarqubeModels.SonarqubeIssue{}),
+ cursor, err := db.Cursor(dal.From(sonarqubeModels.SonarqubeHotspot{}),
dal.Where("connection_id = ? and project = ?", data.Options.ConnectionId, data.Options.ProjectKey))
if err != nil {
return err
}
defer cursor.Close()
- accountIdGen := didgen.NewDomainIdGenerator(&sonarqubeModels.SonarqubeIssue{})
+ accountIdGen := didgen.NewDomainIdGenerator(&sonarqubeModels.SonarqubeHotspot{})
converter, err := api.NewDataConverter(api.DataConverterArgs{
- InputRowType: reflect.TypeOf(sonarqubeModels.SonarqubeIssue{}),
+ InputRowType: reflect.TypeOf(sonarqubeModels.SonarqubeHotspot{}),
Input: cursor,
RawDataSubTaskArgs: *rawDataSubTaskArgs,
Convert: func(inputRow interface{}) ([]interface{}, errors.Error) {
- sonarqubeIssue := inputRow.(*sonarqubeModels.SonarqubeIssue)
- domainIssue := &securitytesting.StIssue{
- DomainEntity: domainlayer.DomainEntity{Id: accountIdGen.Generate(data.Options.ConnectionId, sonarqubeIssue.Key)},
- BatchId: sonarqubeIssue.BatchId,
- Key: sonarqubeIssue.Key,
- Rule: sonarqubeIssue.Rule,
- Severity: sonarqubeIssue.Severity,
- Component: sonarqubeIssue.Component,
- Project: sonarqubeIssue.Project,
- Line: sonarqubeIssue.Line,
- Status: sonarqubeIssue.Status,
- Message: sonarqubeIssue.Message,
- Debt: sonarqubeIssue.Debt,
- Effort: sonarqubeIssue.Effort,
- CommitAuthorEmail: sonarqubeIssue.Author,
- Hash: sonarqubeIssue.Hash,
- Tags: sonarqubeIssue.Tags,
- Type: sonarqubeIssue.Type,
- Scope: sonarqubeIssue.Scope,
- StartLine: sonarqubeIssue.StartLine,
- EndLine: sonarqubeIssue.EndLine,
- StartOffset: sonarqubeIssue.StartOffset,
- EndOffset: sonarqubeIssue.EndOffset,
- CreationDate: sonarqubeIssue.CreationDate,
- UpdateDate: sonarqubeIssue.UpdateDate,
+ sonarqubeHotspot := inputRow.(*sonarqubeModels.SonarqubeHotspot)
+ domainHotspot := &securitytesting.StIssue{
+ DomainEntity: domainlayer.DomainEntity{Id: accountIdGen.Generate(data.Options.ConnectionId, sonarqubeHotspot.Key)},
+ BatchId: sonarqubeHotspot.BatchId,
+ Key: sonarqubeHotspot.Key,
+ Component: sonarqubeHotspot.Component,
+ Project: 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",
}
return []interface{}{
- domainIssue,
+ domainHotspot,
}, nil
},
})
diff --git a/backend/plugins/sonarqube/tasks/issues_convertor.go b/backend/plugins/sonarqube/tasks/issues_convertor.go
index d30a92b9b..c942038cc 100644
--- a/backend/plugins/sonarqube/tasks/issues_convertor.go
+++ b/backend/plugins/sonarqube/tasks/issues_convertor.go
@@ -33,7 +33,7 @@ var ConvertIssuesMeta = plugin.SubTaskMeta{
Name: "convertIssues",
EntryPoint: ConvertIssues,
EnabledByDefault: true,
- Description: "Convert tool layer table sonarqube_issues into domain layer table issues",
+ Description: "Convert tool layer table sonarqube_issues into domain layer table st_issues",
DomainTypes: []string{plugin.DOMAIN_TYPE_SECURITY_TESTING},
}