تحليل البرنامج الساكن  تحليل البرامج الساكن هو تحليل لبرمجيات الحاسوب يُجرى دون تنفيذ البرامج فعليًا، على عكس التحليل الديناميكي، الذي يُجرى على البرامج أثناء تنفيذها. يُجرى التحليل في معظم الحالات على بعض إصدارات الكود المصدري، أو على بعض أشكال الكود الهدف في حالات أخرى.  يطبق هذا المصطلح عادةً على التحليل المنفذ بواسطة أداة تلقائية، يسمى التحليل البشري فهم البرنامج أو إدراك البرنامج أو مراجعة الكود. وتُستخدم في الحالة الأخيرة عمليات فحص البرمجيات وتقديم البرمجيات.  يختلف مدى تطور التحليل الذي تنفذه الأدوات من التي تبحث في سلوك التعليمات والتصريحات الفردية فقط، إلى التي تتضمن الكود المصدري الكامل للبرنامج في تحليلها.  تختلف استخدامات المعلومات الناتجة عن التحليل من تميز أخطاء الترميز المحتملة (مثل، أداة لنت) إلى الأساليب الرسمية التي تثبت رياضيًا خواص برنامج معين (يتوافق سلوكه مع مواصفاته مثلًا).  يمكن وصف المقاييس البرمجية والهندسة العكسية كأشكال من التحليل الساكن. يتزايد نشر المقاييس البرمجية المشتقة والتحليل الساكن معًا، خاصةً في إنشاء أنظمة مضمنة، من خلال تعريف ما يسمى أهداف جودة البرمجيات.  هناك استخدام تجاري متزايد للتحليل الساكن في التحقق من خصائص البرمجيات المستخدمة في الأنظمة الحاسوبية الحساسة للسلامة وتحديد موقع الكود الضعيف المحتمل. مثلًا، حددت الصناعات التالية استخدام تحليل الكود الساكن كوسيلة لتحسين نوعية البرمجيات المعقدة والمتطورة بصورة متزايدة:   أشارت دراسة أجرتها شركة فيّ دي سي ريسيرش عام 2012 إلى أن 28.7% من مهندسي البرمجيات المضمنة المشمولين بالاستقصاء يستخدمون حاليًا أدوات التحليل الساكن ومن المتوقع أن يستخدمه 39.7% في غضون عامين. وجدت دراسة من عام 2010 أن 60% من المطورين الذين جرت مقابلتهم في مشاريع بحثية أوروبية استفادوا على الأقل من برامج التحليل الساكن المدمجة في بيئة التطوير المتكامل الخاصة بهم. واستخدم نحو 10% فقط أداة تحليل أخرى (ربما أكثر تطوراً).  يستخدم في مجال صناعة أمن التطبيقات أيضًا ما يسمى اختبار أمن التطبيقات الساكن (إس إيه إس تي). يعتبر اختبار أمن التطبيقات الساكن جزءًا مهمًا من دورة حياة تطوير الأمن (إس دي إل) مثل دورة حياة تطوير الأمن من مايكروسوفت، وهو ممارسة شائعة في شركات البرمجيات.  نشرت مجموعة إدارة الهدف (أو إم جي) دراسة تتعلق بأنواع تحليل البرمجيات المطلوب لقياس جودة البرمجيات وتقييمها. يصف هذا المستند عن «كيفية تسليم أنظمة تكنولوجيا معلومات المرنة والآمنة والفعالة وسهلة التغيير وفقًا لتوصيات اتحاد جودة برمجيات تكنولوجيا المعلومات (سي إس آي كيو)» ثلاثة مستويات من تحليل البرمجيات.  التحليل الذي يتم داخل برنامج أو روتين فرعي معين، دون الاتصال بسياق ذلك البرنامج.  التحليل الذي يراعي التفاعلات بين برامج الوحدة للحصول على رؤية أكثر شمولية ودلالية للبرنامج الكلي للعثور على المشاكل وتجنب النتائج الإيجابية الزائفة الواضحة. مثلًا، يمكن تحليل حزمة تقنية أندرويد بشكل ساكن للعثور على أخطاء الأذونات.  التحليل الذي يراعي التفاعلات بين برامج الوحدة، لكن دون تقيد بتقنية أو لغة برمجة واحدة محددة.  يمكن تعريف مستوى آخر من تحليل البرمجيات.  التحليل الذي يراعي مصطلحات وقواعد وعمليات طبقة العمل/المهمة المنفذة  ضمن نظام البرمجيات لتشغيله كجزء من أنشطة طبقة المؤسسة أو البرنامج/المهمة. تُنفذ هذه العناصر دون تقيدها بتكنولوجيا أو لغة برمجة محددة، وتوزع في حالات كثيرة على لغات متعددة، لكنها تُستخرج وتُحلل بشكل ساكن لفهم النظام وبالتالي لضمان المهمة.  الأساليب الشكلية هي المصطلح المطبق على تحليل البرمجيات (والعتاد الحاسوبي) الذي تُستخدم أساليب رياضية دقيقة حصرًا للحصول على نتائجه. تشمل التقنيات الرياضية المستخدمة دلالات ترميزية، ودلالات بديهية، ودلالات تشغيلية والتفسير المجرد.  يمكن من خلال الحد المباشر لمسألة التوقف، إثبات أن عثور (أي لغة كاملة حسب تورينغ) على جميع أخطاء زمن التنفيذ المحتملة في برنامج كيفي (أو أي نوع من خرق المواصفات في النتيجة النهائية للبرنامج عمومًا) غير قابل للحسم: لا توجد طريقة آلية يمكنها دائمًا الإجابة بصدق عمّا إذا كان البرنامج الكيفي سيظهر أو لن يظهر أخطاء زمن التنفيذ. تعود هذه النتائج إلى أعمال تشرتش وغودل وتورنغ في ثلاثينيات القرن العشرين (انظر: مسألة التوقف ونظرية رايس). مثل العديد من الأسئلة غير القابلة للحسم، يمكن محاولة تقديم حلول تقريبية مفيدة.  تتضمن بعض تقنيات تنفيذ التحليل الساكن الشكلي ما يلي:   يستخدم التحليل الساكن المساق بالبيانات كميات كبيرة من التعليمات البرمجية لاستنتاج قواعد الترميز. مثلًا، يمكن استخدام جميع حزم جافا مفتوحة المصدر في موقع غيت هاب لتعلم إستراتيجية تحليل جيدة. يمكن لقاعدة الاستدلال أن تستخدم تقنيات التعلم الآلي. فمثلُا، تبين أنه عندما ينحرف كثيرًا عن طريقة استخدام واجهة برمجة التطبيقات كائنية التوجه، فمن المحتمل أن يكون هذا خطأ برمجي. من الممكن أيضًا التعلم من الإصلاحات والتحذيرات السابقة الكثيرة.