mirror of
https://github.com/chaitin/MonkeyCode.git
synced 2026-02-03 15:23:30 +08:00
feat: 扫描详情增加代码原文
This commit is contained in:
@@ -24,9 +24,6 @@ image:
|
||||
.
|
||||
|
||||
wire:
|
||||
wire cmd/server/wire.go cmd/server/main.go
|
||||
|
||||
wire-pro:
|
||||
wire pro/cmd/server/wire.go pro/cmd/server/main.go
|
||||
|
||||
wire-scanner:
|
||||
|
||||
1
backend/doc.go
Normal file
1
backend/doc.go
Normal file
@@ -0,0 +1 @@
|
||||
package backend
|
||||
@@ -84,6 +84,7 @@ type SecurityScanningResult struct {
|
||||
Status consts.SecurityScanningStatus `json:"status"` // 扫描状态
|
||||
Risk SecurityScanningRiskResult `json:"risk"` // 风险结果
|
||||
User *User `json:"user"` // 用户
|
||||
Error string `json:"error"` // 错误信息
|
||||
CreatedAt int64 `json:"created_at"` // 扫描开始时间
|
||||
}
|
||||
|
||||
@@ -98,6 +99,7 @@ func (s *SecurityScanningResult) From(e *db.SecurityScanning) *SecurityScanningR
|
||||
s.Path = e.Workspace
|
||||
s.Status = e.Status
|
||||
s.User = cvt.From(e.Edges.User, &User{})
|
||||
s.Error = e.ErrorMessage
|
||||
s.CreatedAt = e.CreatedAt.Unix()
|
||||
|
||||
return s
|
||||
@@ -119,6 +121,7 @@ type SecurityScanningRiskDetail struct {
|
||||
End *types.Position `json:"end"` // 风险代码行结束位置
|
||||
Fix string `json:"fix"` // 修复建议
|
||||
Filename string `json:"filename"` // 风险文件名
|
||||
Content string `json:"content"` // 代码内容
|
||||
}
|
||||
|
||||
func (s *SecurityScanningRiskDetail) GetRiskLevelPriority() int {
|
||||
|
||||
@@ -214,6 +214,11 @@ func (s *SecurityScanningRepo) Detail(ctx context.Context, userID, id string) ([
|
||||
return nil, err
|
||||
}
|
||||
|
||||
scanning, err := s.db.SecurityScanning.Get(ctx, sid)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
q := s.db.SecurityScanningResult.Query().
|
||||
Where(securityscanningresult.SecurityScanningID(sid))
|
||||
|
||||
@@ -232,8 +237,25 @@ func (s *SecurityScanningRepo) Detail(ctx context.Context, userID, id string) ([
|
||||
return nil, err
|
||||
}
|
||||
|
||||
paths := cvt.Iter(scannings, func(_ int, r *db.SecurityScanningResult) string {
|
||||
p := strings.ReplaceAll(r.Path, scanning.Workspace, "")
|
||||
return strings.TrimPrefix(p, "/")
|
||||
})
|
||||
|
||||
fs, err := s.db.WorkspaceFile.Query().Where(workspacefile.PathIn(paths...)).All(ctx)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
cnts := cvt.IterToMap(fs, func(_ int, f *db.WorkspaceFile) (string, string) {
|
||||
return f.Path, f.Content
|
||||
})
|
||||
|
||||
rs := cvt.Iter(scannings, func(_ int, r *db.SecurityScanningResult) *domain.SecurityScanningRiskDetail {
|
||||
return cvt.From(r, &domain.SecurityScanningRiskDetail{})
|
||||
p := strings.ReplaceAll(r.Path, scanning.Workspace, "")
|
||||
p = strings.TrimPrefix(p, "/")
|
||||
return cvt.From(r, &domain.SecurityScanningRiskDetail{
|
||||
Content: cnts[p],
|
||||
})
|
||||
})
|
||||
domain.SortRiskDetailsByLevel(rs)
|
||||
return rs, nil
|
||||
|
||||
Submodule backend/pro updated: 7e827ccf41...9198dedc92
Reference in New Issue
Block a user