/** * Pass #28: unchecked-return (CWE-252, category: reliability) * * Detects calls to methods that signal success/failure via their return value * when that return value is silently discarded. Missing the check means silent * failure propagation that can corrupt application state. * * Detection strategy: * Two-tier curated list: * HIGH: Always flag — the method's name is unambiguous (e.g. File.delete, * Matcher.find, Lock.tryLock) and discarding is almost always a bug. * MEDIUM: Flag only when the receiver name suggests a File object — * guards against common false positives on generic names. * * For each candidate call: * 1. If there is a DFG def at the call's line, the result was captured. * 2. If the source line matches a conditional/assertion pattern, the * return value is already being used. * If neither applies → emit finding. */ import type { AnalysisPass, PassContext } from '../../graph/analysis-pass.js'; export interface UncheckedReturnResult { /** Calls where the return value is silently discarded. */ uncheckedCalls: Array<{ line: number; method: string; receiver: string | null; }>; } export declare class UncheckedReturnPass implements AnalysisPass { readonly name = "unchecked-return"; readonly category: "reliability"; run(ctx: PassContext): UncheckedReturnResult; } //# sourceMappingURL=unchecked-return-pass.d.ts.map