MCPcopy Create free account
hub / github.com/XmirrorSecurity/OpenSCA-cli / Sqlite

Function Sqlite

cmd/format/sqlite.go:19–70  ·  view source on GitHub ↗
(report Report, out string)

Source from the content-addressed store, hash-verified

17var initSql string
18
19func Sqlite(report Report, out string) {
20
21 dbFile := out
22 db, err := sql.Open("sqlite", dbFile)
23 if err != nil {
24 logs.Error(err)
25 }
26 defer db.Close()
27
28 if _, err := os.Stat(dbFile); err != nil {
29 logs.Info("initing database: " + dbFile)
30 _, err = db.Exec(initSql)
31 if err != nil {
32 logs.Warn(err)
33 }
34 }
35
36 moduleName := filepath.Base(report.TaskInfo.AppName)
37
38 if report.DepDetailGraph != nil && report.DepDetailGraph.Name != "" {
39 moduleName = report.DepDetailGraph.Name
40 }
41
42 logs.Debugf("sql report of %s", moduleName)
43 insertFmt := "insert or ignore into component (name, version, vendor, language, purl) values ('%s','%s','%s','%s','%s');\n"
44 insertRef := "insert or ignore into reference (module_name, purl) values ('%s','%s');\n"
45
46 report.DepDetailGraph.ForEach(func(n *detail.DepDetailGraph) bool {
47 if n.Name == "" {
48 return true
49 }
50 _, err := db.Exec("insert or ignore into component (name, version, vendor, language, purl) values (?,?,?,?,?)", n.Name, n.Version, n.Vendor, n.Language, n.Purl())
51 if err != nil {
52 logs.Debugf(insertFmt, quoteEscape(n.Name), quoteEscape(n.Version), quoteEscape(n.Vendor), quoteEscape(n.Language), quoteEscape(n.Purl()))
53 logs.Warn(err)
54 }
55 return true
56 })
57
58 report.DepDetailGraph.ForEach(func(n *detail.DepDetailGraph) bool {
59 if n.Name == "" {
60 return true
61 }
62 _, err := db.Exec("insert or ignore into reference (module_name, purl) values (?, ?)", moduleName, n.Purl())
63 if err != nil {
64 logs.Debugf(insertRef, moduleName, quoteEscape(n.Purl()))
65 logs.Warn(err)
66 }
67 return true
68 })
69
70}
71
72// quoteEscape 转义单引号
73func quoteEscape(src string) (out string) {

Callers 1

SaveFunction · 0.85

Calls 8

ErrorFunction · 0.92
InfoFunction · 0.92
WarnFunction · 0.92
DebugfFunction · 0.92
quoteEscapeFunction · 0.85
PurlMethod · 0.80
CloseMethod · 0.45
ForEachMethod · 0.45

Tested by

no test coverage detected