Statická analýza kódu je sada metod pro analýzu počítačových programů, které jsou aplikovány bez jejich spuštění (softwarová analýza, která je aplikována na spuštěné programy se nazývá dynamická softwarová analýza). V nejběžnějších případech je analýza prováděna na nějaké verzi zdrojových kódů, nebo formě objektových kódů. Termín analýza programů je většinou spojen s nástroji pro automatickou analýzu, nebo s lidskou analýzou, která se nazývá program comprehension (pochopení programu) nebo posouzení kódu (code review).
Náročnost statické analýzy vykonávané danými nástroji se liší od těch, které berou v úvahu pouze chování jednotlivých deklarací a definicí, a těch, které obsahují kompletní zdrojový kód programu. Informace získané z analýzy daného programu mohou být různé od zdůraznění možných chyb v kódu až po metody, které matematicky vyjadřují vlastnosti týkající se daného programu.
Softwarová metrika a reverzní inženýrství mohou být popsány jako jedny z možných forem softwarové analýzy. Softwarová metrika a statická analýza jsou společně použity zejména při tvorbě vestavěných (embedded) systémů, definující tzv. kvalitu softwarových cílů. Nárůst komerčního použití statické analýzy nastal z důvodů potřeby ověření vlastností programů používaných v počítačových systémech, které jsou z hlediska počítačové bezpečnosti zranitelné. Například následující průmyslová odvětví používají statickou analýzu kódu jako prostředek ke zlepšení kvality stále náročnějších a složitějších programů.
Studie provedená VDC Research z roku 2012 říká, že v současné době 28,7% embedded software inženýrů využívá nástrojů pro statickou analýzu a 39,7% očekávají jejich použití během dvou let.
OMG (Object Management Group) nedávno zveřejnila studii týkající se typů softwarových analýz potřebných pro měření a hodnocení kvality softwaru. Tento dokument "How to Deliver Resilient, Secure, Efficient, and Easily Changed IT Systems in Line with CISQ REcommendations" popisuje čtyři úrovně softwarové analýzy.
Formální metody označují termín používaný v analýze softwaru (a počítačového hardwaru), jejichž výsledky jsou získány pomocí složitých matematických operací. Tyto matematické techniky zahrnují metody jako například denotační sémantika, axiomatická sémantika, abstraktní interpretace a jiné. Ale ani těmito technikami nelze vždy najít všechny možné běhové (run-time) chyby: neexistuje žádný mechanismus, který vždy pravdivě zodpoví, zda libovolný program může nebo nemusí vykazovat běhové chyby.
V tomto článku byl použit překlad textu z článku Static program analysis na anglické Wikipedii.