원클릭으로
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()