.\" Sparse manpage by Josh Triplett .TH sparse "1" . .SH "نام (NAME)" sparse \- تجزیه‌کننده معنایی برای C . .SH "خلاصه دستور (SYNOPSIS)" .B sparse [\fIWARNING OPTIONS\fR]... \fIfile.c\fR . .SH "توضیحات (DESCRIPTION)" برنامه Sparse کدهای منبع C را تجزیه کرده و خطاهای احتمالی را جستجو می‌کند، و هشدارها را در خروجی خطای استاندارد تولید می‌نماید. .P برنامه Sparse گزینه‌هایی را برای کنترل مجموعه هشدارهای تولیدی می‌پذیرد. برای فعال‌سازی هشدارهایی که Sparse به طور پیش‌فرض صادر نمی‌کند، از گزینه هشدار مربوطه یعنی \fB\-Wsomething\fR استفاده کنید. Sparse برخی از هشدارها را به صورت پیش‌فرض صادر می‌کند؛ برای غیرفعال کردن این هشدارها، نقیض گزینه هشدار مرتبط یعنی \fB\-Wno\-something\fR را ارسال کنید. . .SH "گزینه‌های هشدار (WARNING OPTIONS)" .TP .B \-fmax-errors=COUNT حداکثر تعداد خطاهای نمایش‌داده‌شده را به COUNT تنظیم می‌کند، که باید یک مقدار عددی یا \(lqunlimited\(rq باشد. محدودیت پیش‌فرض 100 است. . .TP .B \-fmax-warnings=COUNT حداکثر تعداد هشدارهای نمایش‌داده‌شده را به COUNT تنظیم می‌کند، که باید یک مقدار عددی یا \(lqunlimited\(rq باشد. محدودیت پیش‌فرض 100 است. . .TP .B \-Wsparse\-all تمام هشدارهای sparse را فعال می‌کند، به جز مواردی که صراحتاً از طریق \fB\-Wno\-something\fR غیرفعال شده‌اند. .TP .B \-Wsparse\-error تمام هشدارهای sparse را به خطا تبدیل می‌کند. .TP .B \-Waddress\-space در مورد کدهایی که اشاره‌گرها به فضاهای آدرس مختلف را ترکیب می‌کنند، هشدار می‌دهد. برنامه Sparse صفت گسترش‌یافته .BI __attribute__((address_space( id ))) را روی اشاره‌گرها مجاز می‌داند، که نشان‌دهنده یک مقصد اشاره‌گر در فضای آدرس \fIid\fR (یک شناسه یا یک عدد صحیح ثابت) است. با \fB\-Waddress\-space\fR، برنامه Sparse با اشاره‌گرهایی با انواع هدف یکسان اما فضاهای آدرس متفاوت به عنوان انواعی متمایز رفتار کرده و بر همین اساس هشدار خواهد داد. همچنین Sparse در مورد تبدیل نوع‌هایی (cast) که فضای آدرس را حذف می‌کنند (تبدیل به یک نوع عدد صحیح یا به یک نوع اشاره‌گر ساده) هشدار می‌دهد. یک استثنا در این مورد زمانی است که نوع مقصد \fBuintptr_t\fR (یا \fBunsigned long\fR) باشد، زیرا چنین تبدیل‌هایی اغلب برای «به دست آوردن نمایش مقدار یک اشاره‌گر در یک نوع عدد صحیح» استفاده می‌شوند و چنین مقادیری مستقل از فضای آدرس هستند. برای نادیده گرفتن این هشدارها، از نوعی استفاده کنید که شامل \fB__attribute__((force))\fR باشد. برنامه Sparse این هشدارها را به طور پیش‌فرض صادر می‌کند. برای غیرفعال کردن آن‌ها، از \fB\-Wno\-address\-space\fR استفاده کنید. . .TP .B \-Wbitwise در مورد عملیات‌های پشتیبانی‌نشده یا عدم تطابق نوع با انواع عدد صحیح محدودشده هشدار می‌دهد. برنامه Sparse از یک صفت گسترش‌یافته، \fB__attribute__((bitwise))\fR، پشتیبانی می‌کند که یک نوع عدد صحیح محدودشده جدید از یک نوع عدد صحیح پایه ایجاد می‌کند؛ متمایز از نوع عدد صحیح پایه و از هر نوع عدد صحیح محدودشده دیگری که در همان اعلان یا \fBtypedef\fR تعریف نشده باشد. به عنوان مثال، این به برنامه‌ها اجازه می‌دهد تا \fBtypedef\fRهایی برای انواع عدد صحیح با ترتیب بایت‌های (endianness) مشخص ایجاد کنند. با \fB-Wbitwise\fR، برنامه Sparse در مورد هرگونه استفاده از یک نوع محدودشده در عملیات‌های حسابی به جز عملیات‌های بیتی، و در مورد هر تبدیل از یک نوع محدودشده به نوعی دیگر، مگر از طریق یک تبدیل نوع که شامل \fB__attribute__((force))\fR باشد، هشدار خواهد داد. عبارت __bitwise در نهایت یک «تفکیک قوی‌تر اعداد صحیح» ایجاد می‌کند، تفکیکی که اجازه نمی‌دهد شما آن‌ها را با اعداد صحیح غیر بیتی مخلوط کنید، بنابراین اکنون از دست دادن تصادفی نوع بسیار دشوارتر است. عبارت __bitwise برای *انواع یکتا* است که نمی‌توان آن‌ها را با سایر انواع ترکیب کرد، و هرگز نمی‌خواهید فقط به عنوان یک عدد صحیح تصادفی از آن‌ها استفاده کنید (هرچند عدد صحیح 0 خاص است و اگر درست خاطرم باشد، در سکوت پذیرفته می‌شود - چیزی شبیه به «NULL» برای اشاره‌گرها). بنابراین انواع «gfp_t» یا «ترتیب بایت امن» از نوع __bitwise خواهند بود: شما فقط می‌توانید با انجام عملیات‌های خاصی که در مورد *آن* نوع به‌خصوص می‌دانند، بر روی آن‌ها عملیات انجام دهید. برنامه Sparse این هشدارها را به طور پیش‌فرض صادر می‌کند. برای غیرفعال کردن آن‌ها، از \fB\-Wno\-bitwise\fR استفاده کنید. . .TP .B \-Wbitwise\-pointer همانند \fB\-Wbitwise\fR است، اما برای تبدیل نوع‌ها به یا از اشاره‌گرها به انواع bitwise. برنامه Sparse این هشدارها را به طور پیش‌فرض صادر نمی‌کند. . .TP .B \-Wcast\-from\-as در مورد تبدیل نوع‌هایی که یک فضای آدرس را از یک نوع اشاره‌گر حذف می‌کنند، هشدار می‌دهد. این شبیه به \fB\-Waddress\-space\fR است اما در تبدیل‌ها به \fBunsigned long\fR نیز هشدار خواهد داد. برنامه Sparse این هشدارها را به طور پیش‌فرض صادر نمی‌کند. . .TP .B \-Wcast\-to\-as در مورد تبدیل نوع‌هایی که یک فضای آدرس را به یک نوع اشاره‌گر اضافه می‌کنند، هشدار می‌دهد. یک تبدیل نوع که شامل \fB__attribute__((force))\fR باشد، این هشدار را سرکوب می‌کند. اگر نوع اصلی \fBuintptr_t\fR (یا \fBunsigned long\fR) باشد، هیچ هشداری تولید نمی‌شود. برنامه Sparse این هشدارها را به طور پیش‌فرض صادر نمی‌کند. . .TP .B \-Wcast\-truncate در مورد تبدیل نوع‌هایی که مقادیر ثابت را کوتاه‌سازی (truncate) می‌کنند، هشدار می‌دهد. برنامه Sparse این هشدارها را به طور پیش‌فرض صادر می‌کند. برای غیرفعال کردن آن‌ها، از \fB\-Wno\-cast\-truncate\fR استفاده کنید. . .TP .B \-Wconstant\-suffix در صورتی که یک ثابت عدد صحیح از حداکثر مقدار قابل‌نمایشِ نوع مشخص‌شده توسط پسوند نوع آن (در صورت وجود) بزرگ‌تر باشد، هشدار می‌دهد. برای مثال، در سیستمی که intها ۳۲بیتی و longها ۶۴بیتی هستند، ثابت \fB0x100000000U\fR بزرگ‌تر از مقداری است که توسط یک \fBunsigned int\fR قابل نمایش باشد اما در یک \fBunsigned long\fR جای می‌گیرد. بنابراین نوع آن \fBunsigned long\fR است اما این موضوع توسط پسوند آن مشخص نشده است. در این حالت، می‌توان با استفاده از پسوند \fBUL\fR هشدار را سرکوب کرد: \fB0x100000000UL\fR. برنامه Sparse این هشدارها را به طور پیش‌فرض صادر نمی‌کند. . .TP .B \-Wconstexpr-not-const اگر در جایی که واقعاً انتظار یک عبارت ثابت می‌رود، یک عبارت غیرثابت مشاهده شود، هشدار می‌دهد. در حال حاضر، این گزینه هنگام مقداردهی اولیه به شیئی با مدت ذخیره‌سازی ایستا (static storage duration) با یک مقداردهنده‌ای که یک عبارت ثابت نیست، هشدار می‌دهد. برنامه Sparse این هشدارها را به طور پیش‌فرض صادر نمی‌کند. . .TP .B \-Wcontext در مورد خطاهای بالقوه در همگام‌سازی یا سایر زمینه‌های تحدیدشده هشدار می‌دهد. برنامه Sparse از چندین روش برای تعیین توابع یا دستوراتی که زمینه‌ها را تحدید می‌کنند (مانند همگام‌سازی)، پشتیبانی می‌کند. توابعی با صفت گسترش‌یافته .BI __attribute__((context( expression , in_context , out_context )) هنگام فراخوانی، مستلزم آن هستند که زمینه \fIexpression\fR (برای نمونه، یک قفل) مقدار \fIin_context\fR (یک عدد صحیح غیرمنفی ثابت) را داشته باشد، و با مقدار \fIout_context\fR (یک عدد صحیح غیرمنفی ثابت) بازگردد. برای APIهایی که از طریق ماکروها تعریف شده‌اند، از فرم دستوری .BI __context__( expression , in_value , out_value ) در بدنه ماکرو استفاده کنید. با \fB-Wcontext\fR، برنامه Sparse هنگامی که ببیند تابعی زمینه را بدون مشخص کردن آن با صفت \fBcontext\fR تغییر می‌دهد، هشدار خواهد داد؛ خواه با کاهش یک زمینه به زیر صفر (مانند آزادسازی یک قفل بدون تصاحب آن)، یا بازگشت با یک زمینه تغییریافته (مانند تصاحب یک قفل بدون آزادسازی آن). همچنین Sparse در مورد بلوک‌هایی از کد که ممکن است به طور بالقوه با زمینه‌های متفاوتی اجرا شوند، هشدار خواهد داد. برنامه Sparse این هشدارها را به طور پیش‌فرض صادر می‌کند. برای غیرفعال کردن آن‌ها، از \fB\-Wno\-context\fR استفاده کنید. . .TP .B \-Wdecl در مورد هر تعریف متغیر یا تابع غیر\-\fBstatic\fR که فاقد اعلان قبلی باشد، هشدار می‌دهد. نمادهای خصوصی (توابع و متغیرها) که درون یک فایل منبع معین داخلی هستند باید از \fBstatic\fR استفاده کنند تا امکان بهینه‌سازی‌های بیشتر کامپایلر فراهم شود، امکان تشخیص نمادهای استفاده‌نشده میسر گردد، و از تکیه کردن سایر کدها بر این نمادهای داخلی جلوگیری شود. نمادهای عمومی که توسط سایر فایل‌های منبع استفاده می‌شوند به اعلان‌هایی نیاز خواهند داشت که برای آن فایل‌های منبع دیگر قابل مشاهده باشد، مانند فایلی سرایند (header). همه اعلان‌ها باید در یکی از این دو دسته قرار گیرند. بنابراین، با \fB-Wdecl\fR، برنامه Sparse در مورد هر تعریف نمادی که نه \fBstatic\fR باشد و نه دارای اعلان، هشدار می‌دهد. برای رفع این هشدار، نمادهای خصوصی را \fBstatic\fR اعلان کنید و اطمینان حاصل نمایید که فایل‌های تعریف‌کننده نمادهای عمومی، ابتدا اعلان نمادها را در دسترس دارند (مانند گنجاندن فایل سرایند مناسب). برنامه Sparse این هشدارها را به طور پیش‌فرض صادر می‌کند. برای غیرفعال کردن آن‌ها، از \fB\-Wno\-decl\fR استفاده کنید. ..TP .B \-Wdeclaration-after-statement هشدار درباره اعلان‌هایی که در ابتدای یک بلوک قرار ندارند. این اعلان‌ها در C99 مجاز هستند اما در C89 مجاز نیستند. Sparse این هشدارها را به طور پیش‌فرض تنها زمانی صادر می‌کند که لهجه C روی C89 باشد (یعنی \-ansi یا \-std=c89). برای غیرفعال کردن آن‌ها، از \fB\-Wno\-declaration\-after\-statement\fR استفاده کنید. . .TP .B \-Wdefault\-bitfield\-sign هشدار درباره هر میدان بیتی (bitfield) بدون علامت (signedness) صریح. میدان‌های بیتی دارای علامت پیش‌فرض مشخص‌شده در استاندارد نیستند (C99 6.7.2). یک میدان بیتی بدون \fBsigned\fR یا \fBunsigned\fR صریح، برای نرم‌افزارهایی که به محدوده مقادیر موجود وابسته هستند، مشکل سازگاری و انتقال‌پذیری ایجاد می‌کند. برای رفع این مشکل، نوع میدان بیتی را به طور صریح به صورت \fBsigned\fR یا \fBunsigned\fR مشخص کنید. Sparse این هشدارها را به طور پیش‌فرض صادر نمی‌کند. . .TP .B \-Wdesignated\-init هشدار درباره مقداردهی اولیه موضعی ساختارهایی که به عنوان نیازمند مقداردهنده‌های اولیه‌ی تعیین‌شده (designated initializers) نشانه‌گذاری شده‌اند. Sparse ویژگی .BI __attribute__((designated_init)) را فراهم می‌کند که یک ساختار (struct) را نیازمند مقداردهنده‌های اولیه‌ی تعیین‌شده نشانه‌گذاری می‌کند. Sparse درباره مقداردهی اولیه موضعی متغیر ساختار یا لیترال ساختار از نوعی که این صفت را دارد، هشدار خواهد داد. الزام به استفاده از مقداردهنده‌های اولیه‌ی تعیین‌شده برای یک نوع ساختار خاص، کدی را که از آن نوع ساختار استفاده می‌کند از تغییرات در چیدمان (layout) آن نوع محافظت می‌کند؛ و نیاز به تغییر مقداردهنده‌های اولیه برای آن نوع را از بین می‌برد، مگر اینکه یک فیلدِ حذف‌شده یا ناسازگار تغییریافته را مقداردهی کنند. نمونه‌های متداول این نوع از ساختارها شامل مجموعه‌هایی از اشاره‌گرهای تابع برای پیاده‌سازی دسته‌ای از عملیات مرتبط است، که در آن‌ها مقدار پیش‌فرض NULL برای فیلدی که نام آن در مقداردهی اولیه تعیین‌شده نیامده، به درستی نشان‌دهنده عدم وجود آن عملیات خواهد بود. Sparse این هشدارها را به طور پیش‌فرض صادر می‌کند. برای غیرفعال کردن آن‌ها، از \fB\-Wno\-designated\-init\fR استفاده کنید. . .TP .B \-Wdo\-while هشدار درباره حلقه‌های do-while که بدنه حلقه را با آکولاد احاطه نمی‌کنند. Sparse این هشدارها را به طور پیش‌فرض صادر نمی‌کند. . .TP .B \-Wenum\-mismatch هشدار درباره استفاده از عبارتی با نوع \fBenum\fR نادرست هنگام مقداردهی اولیه یک نوع \fBenum\fR دیگر، انتساب به یک نوع \fBenum\fR دیگر، یا ارسال یک آرگومان به تابعی که انتظار یک نوع \fBenum\fR دیگر را دارد. Sparse این هشدارها را به طور پیش‌فرض صادر می‌کند. برای غیرفعال کردن آن‌ها، از \fB\-Wno\-enum\-mismatch\fR استفاده کنید. . .TP .B \-Wexternal\-function\-has\-definition هشدار درباره تعاریف توابعی که با پیوند خارجی (external linkage) اعلان شده‌اند. Sparse این هشدارها را به طور پیش‌فرض صادر می‌کند. برای غیرفعال کردن آن‌ها، از \fB\-Wno\-external\-function\-has\-definition\fR استفاده کنید. . .TP .B -Wflexible-array-array هشدار درباره آرایه‌هایی از ساختارها که شامل یک آرایه منعطف (flexible array) هستند. Sparse این هشدارها را به طور پیش‌فرض صادر می‌کند. برای غیرفعال کردن آن‌ها، از \fB-Wno-flexible-array-array\fR استفاده کنید. . .TP .B -Wflexible-array-nested هشدار درباره قرار گرفتن ساختارهای حاوی یک آرایه منعطف درون ساختار، union یا آرایه‌ای دیگر. Sparse این هشدارها را به طور پیش‌فرض صادر نمی‌کند. . .TP .B -Wflexible-array-sizeof هشدار درباره استفاده از عملگر sizeof روی ساختاری که شامل یک آرایه منعطف است، احتمالاً به صورت بازگشتی. Sparse این هشدارها را به طور پیش‌فرض صادر نمی‌کند. . .TP .B -Wflexible-array-union فعال‌سازی هشدارهای مربوط به آرایه‌های منعطف و unionها. برای داشتن هرگونه تأثیر، حداقل یکی از گزینه‌های \fB-Wflexible-array-array\fR، \fB-Wflexible-array-nested\fR یا \fB-Wflexible-array-sizeof\fR نیز باید فعال باشد. Sparse این هشدارها را به طور پیش‌فرض صادر می‌کند. . .TP .B \-Winit\-cstring هشدار درباره مقداردهی اولیه یک آرایه char با یک رشته ثابت C که بیش از حد طولانی است. اگر اندازه آرایه char و طول رشته برابر باشند، فضایی برای آخرین نویسه nul رشته در آرایه وجود نخواهد داشت: .nf char s[3] = "abc"; .fi اگر از آرایه به عنوان یک آرایه بایتی استفاده شود و نه به عنوان رشته C، این هشدار صرفاً نویز و مزاحمت است. با این حال، اگر آرایه به توابعی که با رشته‌های C کار می‌کنند مانند printf(%s) و strcmp ارسال شود، ممکن است مشکل‌ساز شود. Sparse این هشدارها را به طور پیش‌فرض صادر نمی‌کند. . .TP .B \-Wmemcpy\-max\-count هشدار درباره فراخوانی \fBmemcpy()\fR، \fBmemset()\fR، \fBcopy_from_user()\fR یا \fBcopy_to_user()\fR با تعداد بایت بزرگ در زمان کامپایل. Sparse این هشدارها را به طور پیش‌فرض صادر می‌کند. برای غیرفعال کردن آن‌ها، از \fB\-Wno\-memcpy\-max\-count\fR استفاده کنید. این حد مجاز را می‌توان با \fB\-fmemcpy\-max\-count=COUNT\fR تغییر داد، که مقدار پیش‌فرض آن \fB100000\fR است. . .TP .B \-Wnewline\-eof هشدار در صورتی که فایل ورودی به یک خط جدید (newline) ختم نشود. Sparse این هشدارها را به طور پیش‌فرض صادر می‌کند. برای غیرفعال کردن آن‌ها، از \fB\-Wno\-newline\-eof\fR استفاده کنید. . .TP .B \-Wnon\-pointer\-null هشدار درباره استفاده از 0 به عنوان یک اشاره‌گر NULL. 0 دارای نوع عدد صحیح (integer) است. NULL دارای نوع اشاره‌گر است. Sparse این هشدارها را به طور پیش‌فرض صادر می‌کند. برای غیرفعال کردن آن‌ها، از \fB\-Wno\-non\-pointer\-null\fR استفاده کنید. . .TP .B \-Wold\-initializer هشدار درباره استفاده از نحو پیش از C99 در GCC برای مقداردهنده‌های اولیه‌ی تعیین‌شده. استاندارد C99 یک نحو استاندارد برای فیلدهای تعیین‌شده در مقداردهنده‌های اولیه \fBstruct\fR یا \fBunion\fR ارائه می‌دهد: .nf struct structname var = { .field = value }; .fi همچنین GCC دارای یک نحو قدیمی و غیراستاندارد برای مقداردهنده‌های اولیه‌ی تعیین‌شده است که به پیش از C99 برمی‌گردد: .nf struct structname var = { field: value }; .fi Sparse در مورد استفاده از نحو غیراستاندارد GCC برای مقداردهنده‌های اولیه‌ی تعیین‌شده هشدار خواهد داد. برای رفع این هشدار، مقداردهنده‌های اولیه‌ی تعیین‌شده را برای استفاده از نحو استاندارد C99 تبدیل کنید. Sparse این هشدارها را به طور پیش‌فرض صادر می‌کند. برای غیرفعال کردن آن‌ها، از \fB\-Wno\-old\-initializer\fR استفاده کنید. . .TP .B \-Wone\-bit\-signed\-bitfield هشدار درباره هر میدان بیتی یک بیتی از نوع \fBsigned\fR. یک میدان بیتی یک بیتی از نوع \fBsigned\fR تنها می‌تواند مقادیر 0 و -1، یا در برخی کامپایلرها تنها 0 را داشته باشد؛ این موضوع منجر به رفتار غیرمنتظره در برنامه‌هایی می‌شود که انتظار توانایی ذخیره 0 و 1 را داشتند. Sparse این هشدارها را به طور پیش‌فرض صادر می‌کند. برای غیرفعال کردن آن‌ها، از \fB\-Wno\-one\-bit\-signed\-bitfield\fR استفاده کنید. . .TP .B \-Wparen\-string هشدار درباره استفاده از یک رشته درون پرانتز برای مقداردهی اولیه یک آرایه. نحو استاندارد C استفاده از یک رشته درون پرانتز را به عنوان مقداردهنده اولیه آرایه مجاز نمی‌داند. GCC این نحو را به عنوان یک افزونه (extension) مجاز می‌داند. با \fB\-Wparen\-string\fR، Sparse درباره این نحو هشدار خواهد داد. Sparse این هشدارها را به طور پیش‌فرض صادر نمی‌کند. ..TP .B -Wpast-deep-designator هنگامی که در یک فهرست مقداردهی اولیه (initializer-list)، یک مقداردهی اولیه با تعیین‌کننده (designator) عمیق (تودرتو) با مقداری بدون تعیین‌کننده دنبال شود، هشدار می‌دهد. Sparse به‌طور پیش‌فرض این هشدارها را صادر نمی‌کند. . .TP .B \-Wpointer\-arith در مورد هر چیزی که به \fBsizeof\fR یک نوع void یا تابع وابسته باشد، هشدار می‌دهد. استاندارد C99 اجازه اعمال عملگر \fBsizeof\fR بر روی انواع تابع یا انواع ناقص مانند void را نمی‌دهد. GCC به عنوان یک افزونه (extension) اجازه اعمال \fBsizeof\fR بر روی این انواع را داده و اندازه آن‌ها را \fI1\fR در نظر می‌گیرد. با \fB\-pointer\-arith\fR، ابزار Sparse در مورد محاسبات اشاره‌گر روی اشاره‌گرهای void یا تابع، و همچنین عباراتی که مستقیماً عملگر \fBsizeof\fR را بر انواع void یا تابع اعمال می‌کنند، هشدار خواهد داد. Sparse به‌طور پیش‌فرض این هشدارها را صادر نمی‌کند. . .TP .B \-Wptr\-subtraction\-blows هنگام تفریق دو اشاره‌گر به نوعی با اندازه‌ای غیر از توان‌های دو، هشدار می‌دهد. تفریق دو اشاره‌گر به یک نوع معین، اختلافی بر حسب تعداد آیتم‌های آن نوع به دست می‌دهد. برای تولید این مقدار، کامپایلرها معمولاً باید این اختلاف را بر اندازه آن نوع تقسیم کنند، که می‌تواند برای اندازه‌هایی غیر از توان‌های دو عملیاتی سنگین و هزینه‌بر باشد. کدهایی که با استفاده از تفریق اشاره‌گر نوشته شده‌اند اغلب می‌توانند در عوض از رویکرد دیگری استفاده کنند، مانند اندیس‌گذاری آرایه با یک متغیر اندیس صریح، که ممکن است به کامپایلرها اجازه دهد کد کارآمدتری تولید کنند. Sparse به‌طور پیش‌فرض این هشدارها را صادر نمی‌کند. . .TP .B \-Wreturn\-void اگر تابعی با نوع بازگشتی void، یک عبارت void را برگرداند، هشدار می‌دهد. استاندارد C99 این کار را مجاز می‌داند، و در برخی موارد این قابلیت امکان نوشتن کدهای عمومی‌تری را در ماکروهایی که از typeof استفاده کرده یا نوعی را به عنوان آرگومان ماکرو دریافت می‌کنند، فراهم می‌سازد. با این حال، برخی برنامه‌ها این شیوه را نامناسب تلقی می‌کنند، و آن برنامه‌ها می‌توانند از \fB\-Wreturn\-void\fR برای دریافت هشدارها در این باره استفاده کنند. Sparse به‌طور پیش‌فرض این هشدارها را صادر نمی‌کند. . .TP .B \-Wshadow هنگام اعلان نمادی که اعلانی با همان نام را در یک حوزه (scope) بیرونی می‌پوشاند (shadow می‌کند)، هشدار می‌دهد. چنین اعلان‌هایی می‌توانند منجر به کدهای مستعد خطا شوند. Sparse به‌طور پیش‌فرض این هشدارها را صادر نمی‌کند. . .TP .B \-Wshift-count-negative اگر مقدار شیفت منفی باشد، هشدار می‌دهد. Sparse به‌طور پیش‌فرض این هشدارها را صادر می‌کند. . .TP .B \-Wshift-count-overflow اگر مقدار شیفت از عرض عملوند (operand) بزرگتر باشد، هشدار می‌دهد. Sparse به‌طور پیش‌فرض این هشدارها را صادر می‌کند. . .TP .B \-Wsizeof-bool هنگام بررسی sizeof یک _Bool، هشدار می‌دهد. استاندارد C99 اندازه یک _Bool را مشخص نکرده است. GCC به‌طور پیش‌فرض از \fI1\fR استفاده می‌کند. Sparse به‌طور پیش‌فرض این هشدارها را صادر نمی‌کند. . .TP .B \-Wtransparent\-union در مورد هرگونه اعلان با استفاده از افزونه GCC به صورت \fB__attribute__((transparent_union))\fR هشدار می‌دهد. Sparse به‌طور پیش‌فرض این هشدارها را صادر می‌کند. برای خاموش کردن آن‌ها، از \fB\-Wno\-transparent\-union\fR استفاده کنید. . .TP .B \-Wtypesign هنگام تبدیل اشاره‌گری به یک نوع عدد صحیح، به اشاره‌گری به یک نوع عدد صحیح با علامت‌داری (signedness) متفاوت، هشدار می‌دهد. Sparse به‌طور پیش‌فرض این هشدارها را صادر نمی‌کند. . .TP .B \-Wundef در مورد شرط‌های پیش‌پردازنده‌ای که از مقدار یک نماد تعریف‌نشده پیش‌پردازنده استفاده می‌کنند، هشدار می‌دهد. استاندارد C (بخش C99 6.10.1) استفاده از مقدار یک نماد تعریف‌نشده پیش‌پردازنده در شرط‌های پیش‌پردازنده را مجاز می‌شمارد و مشخص می‌کند که مقدار آن 0 است. با این حال، این رفتار می‌تواند منجر به خطاهای پنهان و ظریف شود. Sparse به‌طور پیش‌فرض این هشدارها را صادر نمی‌کند. . .TP .B \-Wuniversal\-initializer هشدارهای ناشی از استفاده از '{\ 0\ }' به جای '{\ }' در انواع تجمیعی (aggregate types) را سرکوب نکرده و وضعیت ویژه آن را به عنوان مقداردهی اولیه همگانی (universal initializer) نادیده می‌گیرد. هشدارهای مربوطه به عنوان مثال مواردی هستند که توسط \fB\-Wdesignated\-init\fR یا \fB\-Wnon\-pointer\-null\fR ایجاد می‌شوند. Sparse به‌طور پیش‌فرض این هشدارها را صادر نمی‌کند و با '{\ 0\ }' مانند '{\ }' رفتار می‌کند. . .TP .B -Wunion-cast هنگام تبدیل نوع (cast) به انواع union هشدار می‌دهد. Sparse به‌طور پیش‌فرض این هشدارها را صادر نمی‌کند. ..SH "گزینه‌های متفرقه (MISC OPTIONS)" .TP .B \-\-arch=\fIARCH\fR معماری هدف را مشخص می‌کند. برای معماری‌هایی که دارای هر دو گونهٔ ۳۲ بیتی و ۶۴ بیتی هستند (mips، powerpc، riscv و sparc)، نام معماری می‌تواند با پسوند \fI32\fR یا \fI64\fR همراه شود. معماری و اندازهٔ پیش‌فرض، همان معماری ماشینی است که برای ساخت Sparse استفاده شده است. . .TP .B \-gcc-base-dir \fIdir\fR سرفایلهای سیستمی ارائه‌شده توسط کامپایلر را در \fIdir\fR/include/ و \fIdir\fR/include-fixed/ جستجو می‌کند. . .TP .B \-multiarch-dir \fIdir\fR سرفایلهای سیستمی را در زیرشاخهٔ چندمعماری (multiarch) \fIdir\fR جستجو می‌کند. نام \fIdir\fR معمولاً به شکل سه‌تایی استانداردشدهٔ گنو (normalized GNU triplet) برای هدف خواهد بود (مانند i386-linux-gnu). . .TP .B --os=\fIOS\fR سیستم‌عامل هدف را مشخص می‌کند. این گزینه تنها تفاوت‌های اندکی در انواع داده‌های از پیش تعریف‌شده ایجاد می‌کند. مقادیر پذیرفته‌شده عبارت‌اند از: linux، unix، freebsd، netbsd، opensd، sunos، darwin و cygwin. سیستم‌عامل پیش‌فرض، در صورت قابل تشخیص بودن، سیستم‌عامل ماشینی است که برای ساخت Sparse به کار رفته است؛ در غیر این صورت از برخی تنظیمات عمومی استفاده می‌شود. . .SH "گزینه‌های اشکال‌زدایی (DEBUG OPTIONS)" .TP .B \-fmem-report برخی آمارهای مربوط به تخصیص حافظهٔ استفاده‌شده توسط این ابزار را گزارش می‌دهد. . .SH "سایر گزینه‌ها (OTHER OPTIONS)" .TP .B \-fdiagnostic-prefix[=PREFIX] تمام پیام‌های تشخیصی را با PREFIX داده‌شده و به دنبال آن ": " پیشوندگذاری می‌کند. اگر مقداری مشخص نشود، "sparse" به کار می‌رود. حالت پیش‌فرض این است که اصلاً از هیچ پیشوندی استفاده نشود. . .TP .B \-fmemcpy-max-count=COUNT حد آستانه را برای هشدارهای صادرشده توسط \fB-Wmemcpy-max-count\fR تعیین می‌کند. مقدار COUNT برابر با 'unlimited' یا '0' عملاً این هشدار را غیرفعال می‌کند. حد پیش‌فرض 100000 است. . .TP .B \-ftabstop=WIDTH فاصلهٔ بین توقف‌های تب (tab stop) را تنظیم می‌کند. این کار به sparse در گزارش درست شمارهٔ ستون‌ها در هشدارها یا خطاها کمک می‌کند. اگر این مقدار کمتر از ۱ یا بیشتر از ۱۰۰ باشد، این گزینه نادیده گرفته می‌شود. مقدار پیش‌فرض ۸ است. . .TP .B \-f[no-]unsigned-bitfields, \-f[no-]signed-bitfields علامت‌دار بودن فیلدهای بیتی (bitfields) را که بدون علامت صریح ('signed' یا 'unsigned') تعریف شده‌اند، تعیین می‌کند. به‌طور پیش‌فرض این فیلدهای بیتی مانند دیگر اعداد صحیح ساده، علامت‌دار هستند. . .TP .B \-f[no-]unsigned-char, \-f[no-]signed-char تعیین می‌کند که نوع سادهٔ 'char' بدون علامت یا علامت‌دار باشد. به‌طور پیش‌فرض charها علامت‌دار هستند. . .SH "همچنین ببینید (SEE ALSO)" .BR cgcc (1) . .SH "صفحه خانگی (HOMEPAGE)" https://sparse.docs.kernel.org . .SH "فهرست پستی (MAILING LIST)" linux-sparse@vger.kernel.org . .SH "مشارکت و گزارش باگ‌ها (CONTRIBUTING AND REPORTING BUGS)" ارسال وصله‌ها و گزارش باگ‌ها، و همچنین مباحث مرتبط با Sparse باید از طریق فهرست پستی (linux-sparse@vger.kernel.org) انجام گیرد؛ جایی که توسعه و نگهداری عمدتاً در آنجا صورت می‌پذیرد. برای ارسال پیام به این فهرست نیازی به عضویت در آن ندارید. باگ‌ها همچنین می‌توانند از طریق باگزیلای هسته لینوکس گزارش و پیگیری شوند: http://bugzilla.kernel.org/enter_bug.cgi?component=Sparse&product=Tools . ..SH "مستندات (DOCUMENTATION)" مستندات بیشتر دربارهٔ Sparse در نشانی زیر قابل دسترسی است: https://sparse.docs.kernel.org . .SH "نویسندگان (AUTHORS)" پروژهٔ Sparse توسط Linus Torvalds آغاز شد. فهرست کامل مشارکت‌کنندگان را می‌توان در نشانی زیر یافت: https://www.openhub.net/p/sparse/contributors . در حال حاضر Chris Li نگه‌دارندهٔ کنونی Sparse است.