Mono(cccheck) Mono(cccheck)

cccheck - انجام اعتبارسنجی ایستای قراردادهای کد برای اسمبلی‌های CLR

cccheck --assembly=<assembly> [options]

اعتبارسنجی ایستای قراردادهای کد (code contracts) را جهت یافتن باگ‌ها و ناسازگاری‌های میان کد و مشخصات (specification) انجام می‌دهد. این شامل تحلیل‌های non-null و اعداد صحیح (integer) می‌شود.

اسمبلی باید با تعریف نماد CONTRACTS_FULL کامپایل شده باشد، در غیر این صورت فراخوانی‌های متدهای قرارداد توسط کامپایلر حذف خواهند شد.

در حال حاضر تنها متدهای Contract.Assume() و Contract.Assert() پشتیبانی می‌شوند. فقط تحلیل non-null پشتیبانی می‌شود و تحلیل‌های بعدی در حال توسعه هستند. اگر cccheck نتواند تمام یا برخی از متدهای اسمبلی مشخص‌شده را پردازش کند، یک پیام خطا نمایش داده خواهد شد.

اسمبلی مورد نظر برای انجام اعتبارسنجی ایستا.
اطلاعات اشکال‌زدایی دربارهٔ فرایند اثبات ادعاها (assertions) را نمایش می‌دهد. این گزینه چهار لایهٔ انتزاع را نشان می‌دهد: لایهٔ خام (raw layer)، لایهٔ پشته (stack layer)، لایهٔ هیپ (heap layer) و سطح عبارات جایگزین‌شده (substituted expression level).
رشته‌ای برای یافتن متد. این گزینه تمام متدهای موجود در اسمبلی را که نام آن‌ها شامل این پارامتر به‌صورت زیررشته باشد، فیلتر می‌کند.
نمایش راهنمای cccheck همراه با فهرست کردن گزینه‌های پیکربندی.

فرض کنید متدی به شکل زیر دارید:

void Method() {
object x = null;
int y = 1;
if (y % 2 == 1)
x = new object();
else
x = new string();


Contract.Assert(x != null); }

پس از اعتبارسنجی، نتایج ابزار در قالب زیر خواهد بود: "Assertion at : [Subroutine: <id> Block <blockId> PC <id>] :
is (true|false|unproven|unreachable)". (PC شمارندهٔ برنامه یا program counter است)

نوشته‌شده توسط Alexander Chebaturkin

حق نشر (Copyright) 2011 متعلق به Alexander Chebaturkin است. تحت مجوز MIT منتشر شده است.

برای جزئیات بیشتر به http://www.mono-project.com مراجعه کنید