X-Git-Url: https://gerrit.opnfv.org/gerrit/gitweb?a=blobdiff_plain;f=anteater%2Fsrc%2Fpatch_scan.py;h=3d29c65ecfc204be7a424cde61073df78092bde9;hb=21eba438574c13ecd49119ab9a7df882e517f566;hp=0bc4e7268193cc9c39d056a567cce69815fce01f;hpb=0d0bdddb062d4e93cfa0ed025dfed1a6ff65df9d;p=releng-anteater.git diff --git a/anteater/src/patch_scan.py b/anteater/src/patch_scan.py index 0bc4e72..3d29c65 100644 --- a/anteater/src/patch_scan.py +++ b/anteater/src/patch_scan.py @@ -47,7 +47,10 @@ def prepare_patchset(project, patchset): file_audit_list, file_audit_project_list = lists.file_audit_list(project) # Get file content black list and project waivers - master_list, project_list_re = lists.file_content_list(project) + master_list, ignore_list = lists.file_content_list(project) + + # Get File Ignore Lists + file_ignore = lists.file_ignore() # Get Licence Lists licence_ext = lists.licence_extensions() @@ -66,8 +69,8 @@ def prepare_patchset(project, patchset): # Perform binary and file / content checks scan_patch(project, patch_file, binary_list, file_audit_list, file_audit_project_list, - master_list, project_list_re, licence_ext, - licence_ignore) + master_list, ignore_list, licence_ext, + file_ignore, licence_ignore) # Process each file in patch set using waivers generated above # Process final result @@ -76,12 +79,13 @@ def prepare_patchset(project, patchset): def scan_patch(project, patch_file, binary_list, file_audit_list, file_audit_project_list, master_list, - project_list_re, licence_ext, licence_ignore): + ignore_list, licence_ext, file_ignore, licence_ignore): """ Scan actions for each commited file in patch set """ global failure if is_binary(patch_file): hashlist = get_lists.GetLists() - binary_hash = hashlist.binary_hash(project, patch_file) + split_path = patch_file.split(project + '/', 1)[-1] + binary_hash = hashlist.binary_hash(project, split_path) if not binary_list.search(patch_file): with open(patch_file, 'rb') as afile: buf = afile.read() @@ -99,6 +103,9 @@ def scan_patch(project, patch_file, binary_list, file_audit_list, as gate_report: gate_report.write('Non Whitelisted Binary file: {0}\n'. format(patch_file)) + gate_report.write('Submit patch with the following hash: {0}\n'. + format(hasher.hexdigest())) + else: # Check file names / extensions if file_audit_list.search(patch_file) and not \ @@ -118,32 +125,34 @@ def scan_patch(project, patch_file, binary_list, file_audit_list, try: fo = open(patch_file, 'r') lines = fo.readlines() + file_exists = True except IOError: - logger.error('%s does not exist', patch_file) - sys.exit(1) - - for line in lines: - for key, value in master_list.iteritems(): - regex = value['regex'] - desc = value['desc'] - if re.search(regex, line) and not re.search(project_list_re, line): - logger.error('File contains violation: %s', patch_file) - logger.error('Flagged Content: %s', line.rstrip()) - logger.error('Matched Regular Exp: %s', regex) - logger.error('Rationale: %s', desc.rstrip()) - failure = True - with open(reports_dir + "contents_" + project + ".log", - "a") as gate_report: - gate_report.write('File contains violation: {0}\n'. - format(patch_file)) - gate_report.write('Flagged Content: {0}'. - format(line)) - gate_report.write('Matched Regular Exp: {0}'. - format(regex)) - gate_report.write('Rationale: {0}'. - format(desc.rstrip())) - # Run license check - licence_check(project, licence_ext, licence_ignore, patch_file) + file_exists = False + + if file_exists and not patch_file.endswith(tuple(file_ignore)): + for line in lines: + for key, value in master_list.iteritems(): + regex = value['regex'] + desc = value['desc'] + if re.search(regex, line) and not re.search( + ignore_list, line): + logger.error('File contains violation: %s', patch_file) + logger.error('Flagged Content: %s', line.rstrip()) + logger.error('Matched Regular Exp: %s', regex) + logger.error('Rationale: %s', desc.rstrip()) + failure = True + with open(reports_dir + "contents_" + project + ".log", + "a") as gate_report: + gate_report.write('File contains violation: {0}\n'. + format(patch_file)) + gate_report.write('Flagged Content: {0}'. + format(line)) + gate_report.write('Matched Regular Exp: {0}\n'. + format(regex)) + gate_report.write('Rationale: {0}\n'. + format(desc.rstrip())) + # Run license check + licence_check(project, licence_ext, licence_ignore, patch_file) def licence_check(project, licence_ext,