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

Function ReadPom

opensca/sca/java/pom.go:132–224  ·  view source on GitHub ↗

ReadPom 读取pom信息

(reader io.Reader)

Source from the content-addressed store, hash-verified

130
131// ReadPom 读取pom信息
132func ReadPom(reader io.Reader) *Pom {
133
134 data, err := io.ReadAll(reader)
135 if err != nil {
136 logs.Warn(err)
137 return nil
138 }
139
140 data = regexp.MustCompile(`xml version="1.0" encoding="\S+"`).ReplaceAll(data, []byte(`xml version="1.0" encoding="UTF-8"`))
141 p := &Pom{Properties: PomProperties{}}
142 xml.Unmarshal(data, &p)
143
144 trimSpace(&p.Parent)
145 trimSpace(&p.PomDependency)
146
147 if p.GroupId == "" {
148 p.GroupId = p.Parent.GroupId
149 }
150 if p.Version == "" {
151 p.Version = p.Parent.Version
152 }
153
154 p.Parent.Define = p
155 for _, v := range p.Properties {
156 v.Define = p
157 }
158 for _, d := range p.DependencyManagement {
159 d.Define = p
160 }
161 for _, d := range p.Dependencies {
162 trimSpace(d)
163 d.Define = p
164 }
165
166 // 添加内置属性
167 p.Properties["project.groupId"] = &Property{Key: "project.groupId", Value: p.GroupId}
168 p.Properties["groupId"] = &Property{Key: "groupId", Value: p.GroupId}
169 p.Properties["pom.groupId"] = &Property{Key: "pom.groupId", Value: p.GroupId}
170 p.Properties["project.parent.groupId"] = &Property{Key: "project.parent.groupId", Value: p.Parent.GroupId}
171 p.Properties["parent.groupId"] = &Property{Key: "parent.groupId", Value: p.Parent.GroupId}
172 p.Properties["project.version"] = &Property{Key: "project.version", Value: p.Version}
173 p.Properties["version"] = &Property{Key: "version", Value: p.Version}
174 p.Properties["pom.version"] = &Property{Key: "pom.version", Value: p.Version}
175 p.Properties["project.parent.version"] = &Property{Key: "project.parent.version", Value: p.Parent.Version}
176 p.Properties["parent.version"] = &Property{Key: "parent.version", Value: p.Parent.Version}
177
178 // 添加第一个Profile
179 if len(p.Profiles) > 0 {
180 profile := p.Profiles[0]
181 for k, v := range profile.Properties {
182 if _, ok := p.Properties[k]; !ok {
183 p.Properties[k] = v
184 }
185 }
186 p.Dependencies = append(p.Dependencies, profile.Dependencies...)
187 p.DependencyManagement = append(p.DependencyManagement, profile.DependencyManagement...)
188 p.Modules = append(p.Modules, profile.Modules...)
189 p.Mirrors = append(p.Mirrors, profile.Mirrors...)

Callers 5

initFunction · 0.92
mainFunction · 0.92
ScaMethod · 0.85
ParsePomsFunction · 0.85
mvn.goFile · 0.85

Calls 4

WarnFunction · 0.92
UnmarshalFunction · 0.92
trimSpaceFunction · 0.85
Index2Method · 0.80

Tested by

no test coverage detected