feat: 扫描详情增加代码原文

This commit is contained in:
yokowu
2025-08-08 15:45:12 +08:00
parent 81a21cd233
commit a218979cd7
5 changed files with 28 additions and 5 deletions

View File

@@ -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
View File

@@ -0,0 +1 @@
package backend

View File

@@ -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 {

View File

@@ -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