MCPcopy Index your code
hub / github.com/XmirrorSecurity/OpenSCA-cli / Sca

Method Sca

opensca/sca/python/sca.go:26–77  ·  view source on GitHub ↗
(ctx context.Context, parent *model.File, files []*model.File, call model.ResCallback)

Source from the content-addressed store, hash-verified

24}
25
26func (sca Sca) Sca(ctx context.Context, parent *model.File, files []*model.File, call model.ResCallback) {
27
28 path2dir := func(relpath string) string { return path.Dir(strings.ReplaceAll(relpath, `\`, `/`)) }
29
30 // 记录存在lock文件的目录
31 lockSet := map[string]bool{}
32 for _, file := range files {
33 if filter.PythonPipfileLock(file.Relpath()) {
34 lockSet[path2dir(file.Relpath())] = true
35 }
36 }
37
38 // 记录使用pipenv解析过的目录
39 pipSet := map[string]bool{}
40 // 尝试使用pipenv解析
41 for _, file := range files {
42 if pipSet[path2dir(file.Relpath())] {
43 continue
44 }
45 if filter.PythonPipfile(file.Relpath()) ||
46 filter.PythonRequirementsTxt(file.Relpath()) {
47 } else {
48 continue
49 }
50 root := ParsePythonWithEnv(ctx, file)
51 if root == nil {
52 continue
53 }
54 call(file, root)
55 pipSet[path2dir(file.Relpath())] = true
56 }
57
58 // 静态解析
59 for _, file := range files {
60 if pipSet[path2dir(file.Relpath())] {
61 continue
62 }
63 if filter.PythonPipfile(file.Relpath()) {
64 if !lockSet[path2dir(file.Relpath())] {
65 call(file, ParsePipfile(file))
66 }
67 } else if filter.PythonPipfileLock(file.Relpath()) {
68 call(file, ParsePipfileLock(file))
69 } else if filter.PythonRequirementsIn(file.Relpath()) {
70 call(file, ParseRequirementIn(file))
71 } else if filter.PythonRequirementsTxt(file.Relpath()) {
72 call(file, ParseRequirementTxt(file))
73 } else if filter.PythonSetup(file.Relpath()) {
74 call(file, ParseSetup(file))
75 }
76 }
77}

Callers

nothing calls this directly

Implementers 10

Scaopensca/sca/python/sca.go
Scaopensca/sca/golang/sca.go
Scaopensca/sca/php/sca.go
Scaopensca/sca/erlang/sca.go
Scaopensca/sca/groovy/sca.go
Scaopensca/sca/ruby/sca.go
Scaopensca/sca/sbom/sca.go
Scaopensca/sca/rust/sca.go
Scaopensca/sca/javascript/sca.go
Scaopensca/sca/java/sca.go

Calls 7

ParsePythonWithEnvFunction · 0.85
ParsePipfileFunction · 0.85
ParsePipfileLockFunction · 0.85
ParseRequirementInFunction · 0.85
ParseRequirementTxtFunction · 0.85
ParseSetupFunction · 0.85
RelpathMethod · 0.80

Tested by

no test coverage detected