| Mono(ccrewrite) | Mono(ccrewrite) |
نام (NAME)
ccrewrite - بازنویسی اسمبلیهای CLR برای راستیآزمایی قراردادهای کد در زمان اجرا
خلاصه دستور (SYNOPSIS)
ccrewrite --assembly=<assembly> [گزینهها]
توضیحات (DESCRIPTION)
اسمبلیهای CLR را بازنویسی میکند تا فراخوانیها به فضاینام System.Diagnostics.Contracts را جهت انجام راستیآزمایی قراردادها در زمان اجرا تبدیل نماید. این فرآیند شامل توارث قرارداد برای متدهای مجازی نیز میشود.
اسمبلی باید با تعریف نماد CONTRACTS_FULL کامپایل شده باشد، در غیر این صورت فراخوانی متدهای قرارداد توسط کامپایلر حذف شده خواهند بود.
در حال حاضر تنها پیششرطها با استفاده از متد Contract.Requires() پشتیبانی میشوند. توارث قرارداد برای متدهای مجازی پشتیبانی میشود. تنها دامنه محدودی از عملیاتها و انواع را میتوان در یک پیششرط استفاده کرد؛ در صورتی که ccrewrite قادر به پردازش اسمبلی مشخصشده نباشد، یک پیام خطا نمایش داده خواهد شد.
گزینههای پیکربندی (CONFIGURATION OPTIONS)
- --assembly <assembly-name>
- اسمبلی مورد نظر برای بازنویسی. اگر گزینه --output مشخص نشده باشد، این فایل با نسخه بازنویسیشده رونویسی میشود.
- --debug
- استفاده از اطلاعات اشکالزدایی (debug) در صورت وجود، برای بهبود کارآمدی پیامهای شکست قرارداد.
- --help
- نمایش راهنمای ccrewrite و فهرست کردن گزینههای پیکربندی.
- --level <level> (پیشفرض=4)
- تعیین اینکه کدام انواع قرارداد در اسمبلی بازنویسیشده وجود داشته باشند: 0 = بدون قرارداد (No contracts)؛ 1 = شروط لازم در حالت انتشار (Release requires)؛ 2 = شروط لازم (Requires)؛ 3 = شروط تضمین (Ensures)؛ 4 = ناورداها (Invariants)؛ (هر سطح شامل تمامی سطوح قبلی نیز میشود)
- --output <file-name>
- نوشتن اسمبلی بازنویسیشده در فایل مشخصشده. اگر این گزینه ارائه نشود، فایل اسمبلی ورودی با نسخه بازنویسیشده رونویسی خواهد شد.
- --rewrite (پیشفرض=true)
- بازنویسی اسمبلی. اگر مقدار آن false باشد، هیچ عملیاتی انجام نمیشود.
- --throwOnFailure (پیشفرض=false)
- پرتاب یک استثنای ContractException در صورت بروز شکست مدیریتنشده در قرارداد. رفتار پیشفرض استفاده از Assert است.
نویسندگان (AUTHORS)
نوشتهشده توسط Chris Bacon
کپیرایت و تکثیر (COPYRIGHT)
حق نشر (C) 2010 متعلق به Chris Bacon. تحت مجوز MIT منتشر شده است.
وبگاه (WEB SITE)
برای جزئیات بیشتر به http://www.mono-project.com مراجعه کنید