Nedosažitelný kód je v programování část zdrojového kódu programu, která není nikdy vykonána, protože neexistuje žádná cesta, která by k ní vedla ze zbytku programu.
Nedosažitelný kód je někdy nesprávně označován jako mrtvý kód, avšak mrtvým kódem se rozumí kód, který je vykonán, ale jeho výsledek nemá žádný vliv na výstup programu.
Obecně je nedosažitelný kód považován za nežádoucí například z následujících důvodů:
Deklarace int Z = X + Y; nebylo nikdy dosaženo, protože dříve nastal návrat z funkce. Deklarace proměnné Z proto může být odstraněna.
Analýza
Detekce nedosažitelného kódu je forma statické analýzy a zahrnuje provedení analýzy řídícího toku k nalezení částí, které nebyly nikdy dosaženy bez ohledu na hodnoty proměnných a jiných podmínek při běhu. V některých jazycích (např. Java) jsou určité formy nedosažitelného kódu explicitně zakázány. Optimalizace odstraňující nedosažitelný kód se nazývá eliminace nedosažitelného kódu.
Kód se může stát nedosažitelným v důsledku optimalizací provedených kompilátorem (např. eliminace společných podvýrazů). V praxi má na odhalování nedosažitelného kódu značný vliv míra důmyslnosti provedené analýzy. Například výpočet konstantních výrazů a jednoduchá analýza toku dat snadno odhalí, že volání funkce bar(); je nedosažitelné.
intN=2+1;if(N==4){bar();}
Avšak mnohem komplexnější a důmyslnější analýzy musí být provedeny, aby odhalily nedosažitelné volání funkce bar(); v tomto příkladu:
doubleX=sqrt(2);if(X>5){bar();}
Technika eliminace nedosažitelného kódu je ve stejné třídě optimalizací jako eliminace mrtvého kódu a redundantního kódu.
Nedosažitelnost a profilování
V některých případech může být praktický přístup vyřešit snadná kritéria neodosažitelnosti a na komplexnější použít profiler. Profilování samo o sobě nedokazuje cokoli o nedosažitelnosti kusu kódu, ale může být dobrý vodítkem k potenciálně nedosažitelnému kódu. Když je ten nalezen, nedosažitelnost je třeba ověřit komplexnějším nástrojem nebo i ruční analýzou a rozhodnout, zdali je podezřelá část skutečně nedosažitelná.