Skip to content

Commit

Permalink
update vendor scan
Browse files Browse the repository at this point in the history
  • Loading branch information
LoRexxar committed Mar 2, 2022
1 parent 96bf022 commit fd53f47
Show file tree
Hide file tree
Showing 2 changed files with 34 additions and 2 deletions.
34 changes: 33 additions & 1 deletion core/vendors.py
Original file line number Diff line number Diff line change
Expand Up @@ -210,6 +210,7 @@ def __init__(self, task_id, project_id, target, files):
# 检查列表
self.get_vendor_file()
self.exist_file_list = list(set(self.exist_file_list))
self.exist_file_list = sorted(self.exist_file_list, key=lambda i:len(i))

if len(self.exist_file_list):
self.check_vendor()
Expand Down Expand Up @@ -271,6 +272,8 @@ def check_vendor(self):
f.seek(0, os.SEEK_SET)
savefilepath = filepath.replace(self.target_path, "").replace('\\', '/')

logger.info("[Vendor] Parse File {}.".format(savefilepath))

if filename == "requirements.txt":

for line in f:
Expand Down Expand Up @@ -365,8 +368,29 @@ def check_vendor(self):
default_version = "unknown"
project_version = "unknown"
for parent in parents:
project_groupid = parent.getchildren()[0].text
project_artifactId = parent.getchildren()[1].text
project_version = parent.getchildren()[2].text

# project version 格式检查
var_reg = "\${([\w\.\_-]+)}"
if re.search(var_reg, project_version, re.I):
p2 = re.compile(var_reg)
matchs = p2.finditer(project_version)

for match in matchs:
varname = match.group(1)

if varname in self.java_temp_vendor_list:
project_version = self.java_temp_vendor_list[varname]
continue

# project 依赖版本也可以加入全局表
vendor_name = "{}.{}".format(project_groupid, project_artifactId)
self.java_temp_vendor_list[vendor_name] = project_version
update_and_new_project_vendor(self.project_id, name=vendor_name, version=project_version,
language=language, source=savefilepath, ext=ext)

# 匹配通用配置
if pom_ns:
java_base_xpath_reg = ".//{%s}properties" % pom_ns
Expand All @@ -380,6 +404,12 @@ def check_vendor(self):
for btag in btags:
self.java_temp_vendor_list[btag.tag.replace("{%s}" % pom_ns, "")] = btag.text

# 全局表
vendor_name = btag.tag.replace("{%s}" % pom_ns, "")
self.java_temp_vendor_list[vendor_name] = btag.text
update_and_new_project_vendor(self.project_id, name=vendor_name, version=btag.text,
language=language, source=savefilepath, ext=ext)

# 匹配dependency
if pom_ns:
xpath_reg = ".//{%s}dependency" % pom_ns
Expand All @@ -396,7 +426,7 @@ def check_vendor(self):
version = default_version

var_reg = "\${([\w\.\_-]+)}"
if re.search(var_reg, version, re.I) and version == default_version:
if re.search(var_reg, version, re.I):
p2 = re.compile(var_reg)
matchs = p2.finditer(version)

Expand Down Expand Up @@ -433,6 +463,8 @@ def check_vendor(self):
vendor_version = version
ext = "mevan"

logger.debug("[Vendor][pom.xml] Found Vendor {} vension {} in file {}".format(vendor_name, vendor_version, savefilepath))

update_and_new_project_vendor(self.project_id, name=vendor_name, version=vendor_version,
language=language, source=savefilepath, ext=ext)

Expand Down
2 changes: 1 addition & 1 deletion web/index/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -111,7 +111,7 @@ def update_and_new_project_vendor(project_id, name, version, language, source=No
vendor = ProjectVendors.objects.filter(project_id=project_id, hash=hash).first()

if vendor:
if vendor.version != version:
if vendor.version != version and version != 'unknown':
logger.debug("[Vendors] Component {} update to version {}".format(name, version))

vendor.version = version
Expand Down

0 comments on commit fd53f47

Please sign in to comment.