def _build_search_patterns_for_mode( self, rule: YamlTree[YamlMap]) -> Tuple[BooleanRuleExpression, Mode]: rule_raw = rule.value mode = (Mode(str(rule_raw["mode"].unroll())) if rule_raw.get("mode") else DEFAULT_MODE) if mode == TAINT_MODE: # Raises InvalidRuleSchemaError if fails to parse in search mode return self._build_taint_expression(rule), mode else: # Raises InvalidRuleSchemaError if fails to parse in search mode return self._build_boolean_expression(rule), mode
def _taint_or_search_patterns_validation( self, rule: YamlTree[YamlMap]) -> Tuple[BooleanRuleExpression, Mode]: rule_raw = rule.value mode = (Mode(str(rule_raw["mode"].unroll())) if rule_raw.get("mode") else DEFAULT_MODE) if mode == TAINT_MODE: # Raises InvalidRuleSchemaError if fails to parse in search mode return self._build_taint_expression(rule), mode elif mode == SEARCH_MODE: # Raises InvalidRuleSchemaError if fails to parse in search mode return self._build_boolean_expression(rule), mode else: raise InvalidRuleSchemaError( short_msg="invalid mode", long_msg=f"The only supported modes are {SUPPORTED_MODES}", spans=[rule_raw["mode"].span], )