in bugbot/rules/crash_small_volume.py [0:0]
def handle_bug(self, bug, data):
bugid = str(bug["id"])
if self._is_topcrash_recently_added(bug):
return None
signatures = utils.get_signatures(bug["cf_crash_signature"])
if any(signature in self.blocked_signatures for signature in signatures):
# Ignore those bugs as we can't be sure.
return None
top_crash_signatures = [
signature
for signature in signatures
if signature in self.topcrash_signatures
]
keep_topcrash_startup = any(
any(
criterion["is_startup"]
for criterion in self.topcrash_signatures[signature]
)
for signature in top_crash_signatures
)
keywords_to_remove = None
if not top_crash_signatures:
keywords_to_remove = set(bug["keywords"]) & {"topcrash", "topcrash-startup"}
elif not keep_topcrash_startup:
keywords_to_remove = set(bug["keywords"]) & {"topcrash-startup"}
else:
return None
data[bugid] = {
"severity": bug["severity"],
"ignore_severity": (
bug["severity"] not in HIGH_SEVERITY
or bug["groups"] == "security"
or any(keyword in SECURITY_KEYWORDS for keyword in bug["keywords"])
or "[fuzzblocker]" in bug["whiteboard"]
or self._is_severity_recently_changed_by_human_or_bugbot(bug)
or self._has_severity_downgrade_comment(bug)
),
"keywords_to_remove": keywords_to_remove,
"signatures": signatures,
"needinfos_to_remove": (
self.get_needinfo_topcrash_ids(bug)
if "topcrash" in keywords_to_remove
else []
),
}
return bug