.TH "SPLINT" "1" "02/27/2017" "Release 3.1.2a" "Release 3.1.2a" .SH "نام (NAME)" splint \- ابزاری برای بررسی ایستای برنامه‌های C .SH "خلاصه دستور (SYNOPSIS)" .BR splint [گزینه‌ها] .SH "توضیحات (DESCRIPTION)" .BR splint ابزاری برای بررسی ایستای برنامه‌های C جهت یافتن آسیب‌پذیری‌های امنیتی و اشتباهات رایج برنامه‌نویسی است. با کمترین تلاش، splint می‌تواند به عنوان یک lint(1) بهتر مورد استفاده قرار گیرد. اگر تلاش بیشتری برای افزودن حاشیه‌نویسی‌ها (annotations) به برنامه‌ها صرف شود، splint می‌تواند بررسی‌های قوی‌تری نسبت به آنچه توسط هر lint استانداردی انجام می‌شود، به عمل آورد. برای مستندات کامل، لطفاً پیوند http://www.splint.org را ببینید. این صفحهٔ راهنما تنها بخش کوچکی از گزینه‌های موجود را پوشش می‌دهد. .SH "گزینه‌ها (OPTIONS)" .TP 6 .B \-help نمایش راهنما. .PP .B مقداردهی اولیه (Initialization) این پرچم‌ها دایرکتوری‌ها و فایل‌های مورد استفاده توسط splint را کنترل می‌کنند. می‌توان از آن‌ها در خط فرمان یا در یک فایل گزینه‌ها استفاده کرد، اما نمی‌توان از آن‌ها به عنوان کامنت‌های کنترلی در کد منبع استفاده نمود. به‌جز مواردی که ذکر شده است، این پرچم‌ها با قرار گرفتن \- یا + در ابتدای آن‌ها معنای یکسانی دارند. .TP 6 .BI \-tmpdir " directory" تنظیم دایرکتوری برای نوشتن فایل‌های موقت. مقدار پیش‌فرض /tmp/ است. .TP 6 .BI \-I " directory" افزودن دایرکتوری به مسیر جستجوی فایل‌های include در C. توجه داشته باشید که برای سازگاری با پرچم‌های پیش‌پردازندهٔ C، هیچ فاصله‌ای پس از I قرار نمی‌گیرد. .TP 6 .BI \-S " directory" افزودن دایرکتوری به مسیر جستجوی فایل‌های مشخصات .lcl. .TP 6 .BI \-f " file" بارگذاری فایل گزینه‌های . اگر از این پرچم در خط فرمان استفاده شود، فایل پیش‌فرض ~/.splintrc بارگذاری نمی‌شود. این پرچم می‌تواند در یک فایل گزینه‌ها برای بارگذاری یک فایل گزینه‌های دیگر استفاده شود. .TP 6 .B \-nof از بارگذاری فایل‌های گزینه‌های پیش‌فرض (./.splintrc و ~/.splintrc) جلوگیری می‌کند. (تنظیم \-nof بر +nof ارجحیت دارد و باعث می‌شود فایل‌های گزینه‌ها به صورت عادی بارگذاری شوند.) .TP 6 .BI \-system\-dirs " directories" تنظیم دایرکتوری‌ها برای فایل‌های سیستمی (پیش‌فرض "/usr/include" است). دایرکتوری‌ها را با دونقطه از هم جدا کنید (مانند "/usr/include:/usr/local/lib"). تنظیمات پرچم به فایل‌های موجود در دایرکتوری‌های سیستمی سرایت می‌کند. اگر \-system\-dir\-errors تنظیم شده باشد، هیچ خطایی برای فایل‌های موجود در دایرکتوری‌های سیستمی گزارش نمی‌شود. .PP .B پیش‌پردازنده (Pre\-processor) این پرچم‌ها برای تعریف یا لغو تعریف ثوابت پیش‌پردازنده استفاده می‌شوند. پرچم \-I نیز به پیش‌پردازندهٔ C فرستاده می‌شود. .TP 6 .BI \-D " initializer" به پیش‌پردازندهٔ C فرستاده می‌شود. .TP 6 .BI \-U " initializer" به پیش‌پردازندهٔ C فرستاده می‌شود. .PP .B کتابخانه‌ها (Libraries) این پرچم‌ها ایجاد و استفاده از کتابخانه‌ها را کنترل می‌کنند. .TP 6 .BI \-dump " file" ذخیرهٔ وضعیت در برای بارگذاری. در صورتی که پسوندی نداشته باشد، پسوند پیش‌فرض .lcd اضافه می‌شود. .TP 6 .BI \-load " file" بارگذاری وضعیت از (ایجادشده توسط \-dump). در صورتی که پسوندی نداشته باشد، پسوند پیش‌فرض .lcd اضافه می‌شود. تنها یک فایل کتابخانه را می‌توان بارگذاری کرد. به‌طور پیش‌فرض، اگر از پرچم \-load برای بارگذاری یک کتابخانهٔ کاربری استفاده نشود، کتابخانهٔ استاندارد بارگذاری می‌شود. اگر هیچ کتابخانهٔ کاربری‌ای بارگذاری نشده باشد، می‌توان از یکی از پرچم‌های زیر برای انتخاب یک کتابخانهٔ استاندارد دیگر استفاده کرد. برای بارگذاری کتابخانهٔ شرح‌داده‌شده، پیش از پرچم از + استفاده کنید (یا با استفاده از nolib از بارگذاری یک کتابخانه جلوگیری نمایید). برای اطلاعات در مورد کتابخانه‌های ارائه‌شده، پیوست F را ببینید. .TP 6 .B \-nolib هیچ کتابخانه‌ای بارگذاری نشود. این گزینه از بارگذاری کتابخانهٔ استاندارد جلوگیری می‌کند. .TP 6 .B \-standard\-lib استفاده از کتابخانهٔ استاندارد (ISO C99) (به‌طور پیش‌فرض انتخاب شده است). .TP 6 .B \-standard\-strict\-lib استفاده از نسخهٔ سخت‌گیرانهٔ (strict) کتابخانهٔ استاندارد (ISO C99). .TP 6 .B \-posix\-lib استفاده از کتابخانهٔ استاندارد POSIX. .TP 6 .B \-posix\-strict\-lib استفاده از نسخهٔ سخت‌گیرانهٔ کتابخانهٔ استاندارد POSIX. .TP 6 .B \-unix\-lib استفاده از نسخهٔ UNIX کتابخانهٔ استاندارد. .TP 6 .B \-unix\-strict\-lib استفاده از نسخهٔ سخت‌گیرانهٔ کتابخانهٔ استاندارد UNIX. .PP .B خروجی (Output) این پرچم‌ها کنترل می‌کنند چه اطلاعات اضافی‌ای توسط splint چاپ شود. تنظیم + باعث می‌شود اطلاعات شرح‌داده‌شده چاپ شوند؛ تنظیم \- از چاپ آن جلوگیری می‌کند. به‌طور پیش‌فرض، همهٔ این پرچم‌ها غیرفعال هستند. .TP 6 .B \-use\-stderr ارسال پیام‌های خطا به خطای استاندارد (به جای خروجی استاندارد). .TP 6 .B \-show\-summary نمایش خلاصه‌ای از تمام خطاهای گزارش‌شده و فرونشانده‌شده (suppressed). شمارش خطاهای فرونشانده‌شده لزوماً دقیق نیست؛ زیرا خاموش کردن یک پرچم ممکن است برای صرفه‌جویی در محاسبات از انجام برخی بررسی‌ها جلوگیری کند، و خطاهایی که گزارش نمی‌شوند ممکن است نسبت به زمان گزارش شدن به شکل متفاوتی سرایت کنند. .TP 6 .B \-show\-scan نمایش نام فایل‌ها هنگام پردازش آن‌ها. .TP 6 .B \-show\-alluses نمایش فهرست استفاده از تمامی شناسه‌های خارجی مرتب‌شده بر اساس تعداد استفاده. .TP 6 .B \-stats نمایش تعداد خطوط پردازش‌شده و زمان بررسی. .TP 6 .B \-time\-dist نمایش نحوهٔ توزیع و صرف زمان بررسی. .TP 6 .B \-quiet فرونشاندن اعلان آغازین (herald) و شمارش خطاها. (اگر quiet تنظیم نشده باشد، splint پیش از شروع بررسی یک پیام آغازین با اطلاعات نسخه، و خطی شامل خلاصهٔ تعداد کل خطاهای گزارش‌شده چاپ می‌کند.) .TP 6 .B \-which\-lib چاپ نام فایل کتابخانهٔ استاندارد و اطلاعات ایجاد آن. .TP 6 .BI \-limit " number" حداکثر خطای مشابه به صورت پیاپی گزارش می‌شود. خطاهای بیشتر فرونشانده می‌شوند و پیامی حاوی تعداد پیام‌های فرونشانده‌شده چاپ می‌شود. .PP .B خطاهای مورد انتظار (Expected Errors) به‌طور معمول، splint انتظار دارد هیچ خطایی گزارش نشود. در صورتی که هیچ خطایی گزارش نشود، وضعیت خروج موفقیت‌آمیز (0) و در صورت گزارش هرگونه خطا، شکست خواهد بود. می‌توان از پرچم‌ها برای تنظیم تعداد خطاهای مورد انتظار گزارش‌شده استفاده کرد. به دلیل سازوکارهای ارائه‌شده برای فرونشانی خطا، این گزینه‌ها احتمالاً نباید برای بررسی نهایی برنامه‌های واقعی استفاده شوند، اما ممکن است در توسعهٔ برنامه‌ها با استفاده از make مفید باشند. .TP 6 .BI \-expect " number" دقیقاً خطای کد مورد انتظار است. splint با وضعیت خروج شکست خاتمه می‌یابد مگر اینکه دقیقاً خطای کد شناسایی شود. .TP 6 .B قالب پیام (\-Message Format) این پرچم‌ها نحوهٔ چاپ پیام‌ها را کنترل می‌کنند. می‌توان آن‌ها را در خط فرمان، در فایل‌های گزینه‌ها یا به صورت محلی در کامنت‌های نحوی تنظیم کرد. پرچم‌های linelen و limit می‌توانند با + یا \- با معنای یکسان به کار روند؛ برای سایر پرچم‌ها، + چاپ توصیف‌شده را فعال و \- آن را غیرفعال می‌کند. کادر سمت چپ هر پرچم مقدار پیش‌فرض آن را نشان می‌دهد. .TP 6 .B \-show\-column نمایش شماره ستونی که خطا در آن یافت شده است. پیش‌فرض: + .TP 6 .B \-show\-func نمایش نام تابع (یا تعریف ماکرو) شامل خطا. نام تابع یک بار پیش از اولین پیام شناسایی‌شده در آن تابع چاپ می‌شود. پیش‌فرض: + .TP 6 .B \-show\-all\-conjs نمایش تمام انواع جایگزین ممکن (بخش 8.2.2 را ببینید). پیش‌فرض: \- .TP 6 .B \-paren\-file\-format استفاده از قالب file(line) در پیام‌ها. .TP 6 .B \-hints ارائهٔ نکات راهنما (hints) در شرح خطا و نحوهٔ فرونشاندن پیام برای اولین خطای گزارش‌شده در هر ردهٔ خطا. پیش‌فرض: + .TP 6 .B \-force\-hints ارائهٔ نکات راهنما برای تمام خطاهای گزارش‌شده، حتی اگر نکته قبلاً برای همان ردهٔ خطا نمایش داده شده باشد. پیش‌فرض: \- .TP 6 .BI \-linelen " number" تنظیم حداکثر طول خط پیام روی نویسه. splint پیام‌های طولانی‌تر از نویسه را به چندین خط می‌شکند. پیش‌فرض: 80 .PP .B پرچم‌های انتخاب حالت (Mode Selector Flags) پرچم‌های انتخاب حالت، پرچم‌های بررسی حالت را روی مقادیر از پیش تعریف‌شده تنظیم می‌کنند. آن‌ها روشی سریع و درشت‌دانه برای کنترل رده‌های خطاهای گزارش‌شده فراهم می‌آورند. می‌توان پرچم‌های بررسی خاص را پس از یک پرچم حالت تنظیم کرد تا تنظیمات حالت لغو (override) شوند. پرچم‌های حالت می‌توانند به صورت محلی نیز استفاده شوند، با این حال تنظیمات حالت بر تنظیمات خاص پرچم‌های خط فرمان ارجحیت خواهند داشت. اگر یک پرچم حالت پس از تنظیم شدن یک پرچم بررسی حالت استفاده شود، هشداری صادر می‌شود. این‌ها توصیف‌های کوتاهی برای ارائهٔ یک دید کلی از عملکرد هر حالت هستند. برای مشاهدهٔ تنظیمات کامل پرچم در هر حالت، از دستور splint \-help modes استفاده کنید. پرچم حالت چه با + و چه با \- استفاده شود اثر یکسانی دارد. .TP 6 .B \-weak بررسی ضعیف (weak)، مناسب برای کدهای معمولی C بدون حاشیه‌نویسی. هیچ‌گونه بررسی اصلاحی (modifies checking)، بررسی ماکرو، آشکارسازی بازنمود (rep exposure) یا بررسی رابط تمیز (clean interface) انجام نمی‌شود. مقادیر بازگشتی از نوع int ممکن است نادیده گرفته شوند. انواع دادهٔ bool، int، char و انواع enum تعریف‌شده توسط کاربر همگی معادل هستند. اعلان‌های سبک قدیمی گزارش نمی‌شوند. .TP 6 .B \-standard حالت پیش‌فرض. تمام بررسی‌های انجام‌شده توسط weak، به علاوهٔ بررسی اصلاحات، بررسی نام مستعار سراسری (global alias checking)، استفاده از تمام پارامترها، استفاده از فضای آزادشده، مقادیر بازگشتی نادیده‌گرفته‌شده از هر نوع، بررسی ماکرو، کد غیرقابل‌دسترس، حلقه‌های بی‌نهایت و موارد عبور بدون توقف (fall\-through). انواع دادهٔ bool، int و char متمایز هستند. اعلان‌های سبک قدیمی گزارش می‌شوند. .TP 6 .B \-checks بررسی نسبتاً سخت‌گیرانه. تمام بررسی‌های انجام‌شده توسط standard، به علاوهٔ بررسی اصلاحات الزامی (must modification checking)، آشکارسازی بازنمود (rep exposure)، نام‌های مستعار بازگشتی (return alias)، مدیریت حافظه و رابط‌های کامل. .TP 6 .B \-strict بررسی بسیار سخت‌گیرانه و وسواس‌گونه. تمام بررسی‌های انجام‌شده توسط checks، به علاوهٔ اصلاحات و متغیرهای سراسری استفاده‌شده در توابع مشخص‌نشده، کتابخانهٔ استاندارد سخت‌گیرانه، و نوع‌بندی دقیق و سخت‌گیرانهٔ عملگرهای C. جایزهٔ ویژه‌ای به اولین فردی اعطا خواهد شد که یک برنامهٔ واقعی تولید کند که در بررسی strict هیچ خطایی نداشته باشد. .SH "نویسندگان (AUTHORS)" اگر نیاز به برقراری ارتباط با نویسندگان دارید، به نشانی زیر ایمیل بفرستید: .UR mailto:info@splint.org .UE یا از تارنمای زیر بازدید کنید: .UR http://www.splint.org .UE .SH "همچنین ببینید (SEE ALSO)" lint(1)