in dusty/scanners/sast/gitleaks/legacy.py [0:0]
def __init__(self, data, scanner):
dupes = dict()
self.items = []
try:
data = json.load(open(data))
except:
return
show_offender_line = scanner.config.get("show_offender_line", True)
squash_commits = scanner.config.get("squash_commits", False) or scanner.config.get(
"hide_commit_author", False)
commit_line_limit = scanner.config.get("commit_line_limit", 15)
for item in data:
title = self.get_title(item)
if title in dupes:
if len(dupes[title]["commits"]) < commit_line_limit:
dupes[title]["commits"].append(
self.get_commit_info(item, show_offender_line, squash_commits))
else:
dupes[title]["skipped_commits"] += 1
else:
dupes[title] = {
"description": ("\n\n**Info:** ") + item.get('info'),
"severity": item.get('severity'),
"date": item.get('date'),
"rule": item.get('rule'),
"file_path": item.get('file'),
"skipped_commits": 0,
"commits": [self.get_commit_info(item, show_offender_line, squash_commits)]
}
commits_head = []
commits_head.append("\n\n**Commits:**\n\n")
if squash_commits:
commits_head.append("| Line |")
commits_head.append("| ---- |")
else:
commits_head.append("| Commit | Author | Line |")
commits_head.append("| ------ | ------ | ---- |")
for key, item in dupes.items():
if len(item.get('commits')) == commit_line_limit:
if squash_commits:
item["commits"].append(f"_And {item.get('skipped_commits')} more_")
else:
item["commits"].append(f"_And {item.get('skipped_commits')} more_ | - | -")
self.items.append({
"title": key,
"description": item.get("description") +
"\n".join(commits_head +
["| {} |".format(line) for line in item.get('commits')]),
"severity": constants.RULES_SEVERITIES.get(item.get('rule'), 'Critical'),
"file_path": item.get('file_path'),
"date": item.get('date')
})