diff --git a/.semgrep.yml b/.semgrep.yml index 5a4eb2583..88406bb5f 100644 --- a/.semgrep.yml +++ b/.semgrep.yml @@ -98,6 +98,16 @@ rules: ... except Exception as $VAR: raise $VAR from $CAUSE + - pattern-not: | + try: + ... + except Exception: # error-propagation: allow + ... + - pattern-not: | + try: + ... + except Exception as $VAR: # error-propagation: allow + ... - patterns: - pattern: | try: @@ -134,6 +144,16 @@ rules: ... except BaseException as $VAR: raise $VAR from $CAUSE + - pattern-not: | + try: + ... + except BaseException: # error-propagation: allow + ... + - pattern-not: | + try: + ... + except BaseException as $VAR: # error-propagation: allow + ... message: > Broad exception suppression detected. Do not suppress Exception or BaseException without re-raising or narrowing to a specific exception type. @@ -141,12 +161,12 @@ rules: CRITICAL: Let exceptions propagate to top-level execution (see CONTRIBUTING.md). If you have specific recovery logic that justifies suppressing this exception, - add the annotation '# nosemgrep' on the except line to disable this rule. + add the annotation '# error-propagation: allow' on the except line to disable this rule. Example of allowed suppression: try: resource.cleanup() - except Exception: # nosemgrep + except Exception: # error-propagation: allow pass # Resource already cleaned up; safe to ignore languages: [python] severity: ERROR @@ -160,7 +180,7 @@ rules: - pattern: contextlib.suppress(Exception) - pattern: contextlib.suppress(BaseException) - pattern-not: | - # nosemgrep + # error-propagation: allow contextlib.suppress(...) message: > Use of contextlib.suppress(Exception) or contextlib.suppress(BaseException) @@ -169,10 +189,10 @@ rules: CRITICAL: Let exceptions propagate to top-level execution (see CONTRIBUTING.md). If you have specific recovery logic that justifies suppressing this exception, - add the annotation '# nosemgrep' on the line above the suppress call. + add the annotation '# error-propagation: allow' on the line above the suppress call. Example of allowed suppression: - # nosemgrep + # error-propagation: allow with contextlib.suppress(Exception): resource.cleanup() # Resource already cleaned up; safe to ignore languages: [python]