def handle_bug()

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