一键导入
pow10-rule-07-check-return-values
NASA Power of 10 Rule 7 — Check every non-void return value; validate every parameter. Severity: blocker.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
NASA Power of 10 Rule 7 — Check every non-void return value; validate every parameter. Severity: blocker.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
NASA Power of 10 Rule 1 — Restrict control flow to simple constructs (no goto, setjmp/longjmp, recursion). Severity: blocker.
NASA Power of 10 Rule 2 — Every loop must have a statically determinable upper bound. Severity: blocker.
NASA Power of 10 Rule 3 — No dynamic memory allocation after initialization. Severity: blocker.
NASA Power of 10 Rule 4 — Functions ≤60 lines (one printed page). Severity: high.
NASA Power of 10 Rule 5 — Average ≥2 runtime assertions per function. Severity: high.
NASA Power of 10 Rule 6 — Declare data at smallest possible scope. Severity: medium.
| name | pow10-rule-07-check-return-values |
| description | NASA Power of 10 Rule 7 — Check every non-void return value; validate every parameter. Severity: blocker. |
Severity: blocker
Check the return value of every non-void function. Validate every parameter at function entry, before any state mutation. Callers cannot be trusted, even within the same module.
Ignoring a return value discards error information the callee computed. Unvalidated parameters let bad input propagate into corrupted state. Both checks isolate errors at their source.
(void)foo(), _, _ = foo(), bare foo();)catch / except blocks swallowing errorsOptional.get() / !! without prior null checkAt function entry, validate every parameter against domain constraints and reject (return error or raise) before any side effect. After every fallible call, check the return; on failure, propagate (with wrapping for traceability) and roll back any partial mutation.
(void) castsWhen you genuinely don't care about a return value (best-effort cleanup), state why:
(void)fclose(fp); // best-effort; fp already drained
//nolint:errcheck // best-effort; lock already released
_ = file.Close()