You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
36 lines
1.3 KiB
36 lines
1.3 KiB
# Error handling style rules (YAML constraint example)
|
|
|
|
rules:
|
|
- name: explicit_exceptions
|
|
rule: "Raise explicit exceptions (ValueError, ProviderError) for known error conditions rather than returning magic values."
|
|
examples:
|
|
- good: |
|
|
if not isinstance(text, str):
|
|
raise ProviderError('text must be a string')
|
|
- bad: |
|
|
if not isinstance(text, str):
|
|
return []
|
|
|
|
- name: avoid_broad_except
|
|
rule: "Avoid 'except Exception:' that swallows errors. If broad except is used for best-effort, log the exception with logger.exception and re-raise or convert."
|
|
examples:
|
|
- bad: |
|
|
try:
|
|
do_work()
|
|
except Exception:
|
|
return []
|
|
- remediation: |
|
|
try:
|
|
do_work()
|
|
except SpecificError as exc:
|
|
logger.warning('Handled error: %s', exc)
|
|
raise
|
|
|
|
- name: logging_over_print
|
|
rule: "Prefer logger.* over print() for messages and errors."
|
|
examples:
|
|
- bad: "print('Error fetching motions from API: %s' % e)"
|
|
- good: "logger.exception('Error fetching motions from API')"
|
|
|
|
enforcement_examples:
|
|
- "Add a static code check to flag 'print(' in modules (except in simple scripts) and 'except Exception:' usages without logger.exception."
|
|
|