کد مرده
کد مرده در برنامهنویسی کامپیوتر، بخشی از کد منبع برنامه است که اجرا میشود اما نتیجه آن هرگز در محاسبات دیگر استفاده نمیشود. اجرای کد مرده، زمان محاسبه و حافظه را هدر میدهد.
در حالی که ممکن است نتیجه یک محاسبه مرده هرگز مورد استفاده قرار نگیرد، ممکن است استثنائات (خطاها) را ایجاد کند یا بر برخی از حالتهای سراسری تأثیر بگذارد، بنابراین حذف چنین کدی ممکن است خروجی برنامه
را تغییر داده و اشکالات ناخواسته ای را به وجود آورد. در صورت وجود هرگونه ابهام در مورد حذف کد مرده بر خروجی برنامه، بهینهسازیهای کامپایلر در برخورد با حذف کد مرده معمولاً محافظه کار هستند. برنامهنویس ممکن
است با استفاده بیشتر از توابع استاتیک و/یا درون-خطی و استفاده از بهینهسازی لینک-زمان، به کامپایلر در این زمینه کمک کند.
مثال
}(int foo (int iX, int iY
;int iZ = iX/iY
;return iX*iY
{
در مثال بالا، اگرچه تقسیم iX توسط iY محاسبه میشود و هرگز مورد استفاده قرار نمیگیرد، در صورت وقوع تقسیم بر صفر خطا اتفاق خواهد افتاد؛ بنابراین، حذف کد مرده ممکن است خروجی برنامه را تغییر دهد.
تحلیل و بررسی
حذف کد مرده نوعی بهینهسازی کامپایلر است که در آن کد مرده از برنامه حذف میشود. تجزیه و تحلیل کد مرده میتواند با استفاده از تجزیه و تحلیل متغیر زنده، نوعی از تجزیه و تحلیل کد استاتیک و تجزیه و تحلیل جریان
دادهها انجام شود. این برخلاف تجزیه و تحلیل کد غیرقابل دستیابی است که بر اساس تجزیه و تحلیل جریان کنترل است.
تکنیک حذف کد مرده در کلاس بهینهسازیها به عنوان حذف کد غیرقابل دستیابی و حذف کدهای اضافی قرار دارد.
در پروژههای بزرگ برنامهنویسی، تشخیص و از بین بردن کد مرده، به ویژه هنگامی که کل ماژولها از بین میروند، گاهی اوقات دشوار است.
در ظاهر تست میتواند به نظر برسد که کد هنوز زنده است و در بعضی مواقع، زبان قرارداد میتواند به تحویل کد حتی در صورتی که کد دیگر مرتبط نباشد، نیاز داشته باشد.
برخی از IDEها (مانند Xcode , Visual Studio 2010 و Eclipse Galileo) این قابلیت را دارند که کدهای مرده را در مرحله تدوین پیدا کنند.
در حالی که اکثر تکنیکهای بهینهسازی به دنبال پیادهسازی حذف کد مرده هستند، در اشکال شدید بهینهسازی برای اندازه ممکن است گاهی اوقات بخواهیم بهطور عمدی کدهای به ظاهر مرده را معرفی کنیم و با دقت شکل دهیم، که این امکان را میدهد که بخشهای غیر مرتبط کد را به هم متصل کنیم (و در نتیجه کاهش اندازه ترکیبی آنها) به طوری که کد اضافی بهطور مؤثری به اولین مسیر اجرا از طریق کد آسیب نرساند بلکه برای انجام اقدامهای لازم برای مسیرهای جایگزین اجرا مورد استفاده قرار میگیرد، که ممکن است سایر قسمتهای کد تبدیل به کد مرده شوند.
در سطح کاربردی تر، این میتواند به عنوان هر دو، معرفی مصنوعی عوارض جانبی بیضرر / مفید و کاهش افزونگی کد باشد، اما میتوان از آن در سطح کدگذاری نیز استفاده کرد تا امکان استفاده از دستورالعملهای کوتاهتر فراهم شود؛ که در صورت چینش توالیهای کد بدون معرفی همزمان عوارض جانبی ناشی از کد مرده امکانپذیر نیست.
جستارهای وابسته
منابع
- ^ Debray, S. K., Evans, W., Muth, R., and De Sutter, B. 2000. Compiler techniques for code compaction. ACM Trans. Program. Lang. Syst. 22, 2 (Mar. 2000), 378-41 5.
- ^ Appel, A. W. 1998 Modern Compiler Implementation in Java. Cambridge University Press.
- ^ Douglas W. Jones Dead Code Maintenance, Risks 8.19 (Feb. 1, 1989) Archived 2011-07-08 at the Wayback Machine
- ^ Habib Heydarian, Microsoft Corp
- ^ Eclipse Developer Guide
پیوند به بیرون
- Dead Code Detector (DCD) simply finds never used code in your Java/JEE applications
- Comparisons of some Java Dead Code Detector
- UCDetector Eclipse PlugIn to find dead java code