'\" t .\" Title: CPPCHECK .\" Author: Reijo Tomperi .\" Generator: DocBook XSL Stylesheets vsnapshot .\" Date: 06/23/2026 .\" Manual: cppcheck User Manual .\" Source: cppcheck .\" Language: English .\" .TH "CPPCHECK" "1" "06/23/2026" "cppcheck" "cppcheck User Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "نام (NAME)" cppcheck \- ابزاری برای تحلیل ایستای کدهای C/C++ .SH "خلاصه دستور (SYNOPSIS)" .HP \w'\fBcppcheck\fR\ 'u \fBcppcheck\fR [\fB\-\-check\-config\fR] [\fB\-\-check\-library\fR] [\fB\-D\fR] [\fB\-U\fR] [\fB\-\-disable=\fR] [\fB\-\-enable=\fR] [\fB\-\-error\-exitcode=\fR] [\fB\-\-errorlist\fR] [\fB\-\-exitcode\-suppress=\fR] [\fB\-\-exitcode\-suppressions=\fR] [\fB\-\-file\-list=\fR] [\fB\-\-filesdir\fR] [\fB\-\-force\fR] [\fB\-\-fsigned\-char\fR] [\fB\-\-funsigned\-char\fR] [\fB\-\-help\fR] [\fB\-I\fR] [\fB\-\-includes\-file=\fR] [\fB\-\-config\-exclude=\fR] [\fB\-\-config\-excludes\-file=\fR] [\fB\-\-include=\fR] [\fB\-i\fR] [\fB\-\-inconclusive\fR] [\fB\-\-inline\-suppr\fR] [\fB\-j\fR] [\fB\-l\fR] [\fB\-\-language=\fR] [\fB\-\-library=\fR] [\fB\-\-max\-configs=\fR] [\fB\-\-max\-ctu\-depth=\fR] [\fB\-\-platform=\fR] [\fB\-\-quiet\fR] [\fB\-\-relative\-paths=\fR] [\fB\-\-report\-progress\fR] [\fB\-\-report\-type=\fR] [\fB\-\-rule=\fR] [\fB\-\-rule\-file=\fR] [\fB\-\-showtime=\fR] [\fB\-\-std=\fR] [\fB\-\-suppress=\fR] [\fB\-\-suppressions\-list=\fR] [\fB\-\-suppress\-xml=<\&.xml\ file>\fR] [\fB\-\-template=\*(Aq\*(Aq\fR] [\fB\-\-verbose\fR] [\fB\-\-version\fR] [\fB\-\-xml\fR] [\fB\-\-xml\-version=]\fR] [\fBfile\ or\ path\fR] \fB\&.\&.\&.\fR .SH "توضیحات (DESCRIPTION)" .PP ابزار Cppcheck یک ابزار خط‌فرمانی است که تلاش می‌کند باگ‌هایی را که کامپایلر C/C++ شما متوجه آن‌ها نمی‌شود شناسایی کند\&. این ابزار چندمنظوره است و می‌تواند کدهای غیراستاندارد شامل افزونه‌های مختلف کامپایلر، کدهای اسمبلی درون‌خطی (inline assembly) و غیره را بررسی کند\&. پیش‌پردازنده داخلی آن می‌تواند فایل‌های include، ماکروها و دستورات مختلف پیش‌پردازنده را مدیریت نماید\&. اگرچه Cppcheck قابلیت پیکربندی بسیار بالایی دارد، شما می‌توانید تنها با مشخص کردن مسیر کد مبدأ، استفاده از آن را آغاز کنید\&. .SH "گزینه‌ها (OPTIONS)" .PP فایل‌های C/C++ داده‌شده را برای یافتن خطاهای رایج تحلیل می‌کند\&. .PP \fB\-\-check\-config\fR .RS 4 پیکربندی Cppcheck را بررسی می‌کند\&. با این پرچم، تحلیل معمولی کد غیرفعال می‌شود\&. .RE .PP \fB\-\-check\-library\fR .RS 4 در صورتی که فایل‌های کتابخانه دارای اطلاعات ناقص باشند، پیام‌های اطلاعاتی را نمایش می‌دهد\&. .RE .PP \fB\-D\fR .RS 4 به‌طور پیش‌فرض Cppcheck تمام پیکربندی‌ها را بررسی می‌کند\&. برای محدود کردن بررسی از \-D استفاده کنید\&. هنگام استفاده از \-D، بررسی به پیکربندی ارائه‌شده محدود می‌شود\&. مثال: \-DDEBUG=1 \-D__cplusplus .RE .PP \fB\-U\fR .RS 4 به‌طور پیش‌فرض Cppcheck تمام پیکربندی‌ها را بررسی می‌کند\&. از \*(Aq\-U\*(Aq برای پنهان‌سازی صریح برخی مسیرهای کد #ifdef از فرایند بررسی استفاده کنید\&. مثال: \*(Aq\-UDEBUG\*(Aq .RE .PP \fB\-\-disable=\fR .RS 4 بررسی‌های منفرد را غیرفعال می‌کند\&. لطفاً برای جزئیات بیشتر به مستندات \-\-enable= مراجعه کنید\&. .RE .PP \fB\-\-enable=\fR .RS 4 بررسی‌های اضافی را فعال می‌کند\&. شناسه‌های موجود عبارتند از: .PP all .RS 4 تمام بررسی‌ها را فعال می‌کند\&. توصیه می‌شود تنها زمانی از \-\-enable=all استفاده کنید که کل برنامه پویش می‌شود، زیرا این گزینه unusedFunction را نیز فعال می‌کند\&. .RE .PP warning .RS 4 پیام‌های هشدار را فعال می‌کند\&. .RE .PP style .RS 4 تمام بررسی‌های شیوه کدنویسی را فعال می‌کند\&. تمام پیام‌ها با سطوح اهمیت \*(Aqstyle\*(Aq، \*(Aqperformance\*(Aq و \*(Aqportability\*(Aq فعال می‌شوند\&. .RE .PP performance .RS 4 پیام‌های مربوط به کارایی و عملکرد را فعال می‌کند\&. .RE .PP portability .RS 4 پیام‌های مربوط به قابلیت حمل را فعال می‌کند\&. .RE .PP information .RS 4 پیام‌های اطلاعاتی را فعال می‌کند\&. .RE .PP unusedFunction .RS 4 توابع استفاده‌نشده را بررسی می‌کند\&. توصیه می‌شود تنها زمانی این گزینه را فعال کنید که کل برنامه پویش می‌شود\&. .RE .PP missingInclude .RS 4 در صورت وجود includeهای مفقود، هشدار می‌دهد\&. .RE .sp به‌طور پیش‌فرض هیچ‌یک از بررسی‌های اضافی فعال نیستند\&. با جدا کردن شناسه‌ها با کاما می‌توان چندین شناسه را مشخص کرد، مانند: \-\-enable=style,unusedFunction\&. همچنین \-\-std را ببینید\&. .RE .PP \fB\-\-error\-exitcode=\fR .RS 4 در صورت یافتن خطا، عدد صحیح به جای مقدار پیش‌فرض 0 بازگردانده می‌شود\&. در صورتی که آرگومان‌ها نامعتبر باشند یا هیچ فایل ورودی ارائه نشده باشد، مقدار EXIT_FAILURE بازگردانده خواهد شد\&. توجه داشته باشید که سیستم‌عامل شما می‌تواند این مقدار را تغییر دهد، به عنوان مثال 256 ممکن است به 0 تبدیل شود\&. .RE .PP \fB\-\-errorlist\fR .RS 4 فهرستی از تمام پیام‌های خطای ممکن را در قالب XML چاپ می‌کند\&. .RE .PP \fB\-\-exitcode\-suppress=\fR .RS 4 برای مشخص کردن شناسه خطایی استفاده می‌شود که نباید منجر به تولید کد خروج غیرصفر شود\&. .RE .PP \fB\-\-exitcode\-suppressions=\fR .RS 4 زمانی استفاده می‌شود که پیام‌های خاصی باید نمایش داده شوند اما نباید باعث ایجاد کد خروج غیرصفر شوند\&. .RE .PP \fB\-\-file\-list=\fR .RS 4 فایل‌های مورد نظر برای بررسی را از طریق یک فایل متنی مشخص می‌کند\&. در هر سطر یک نام فایل قرار می‌گیرد\&. هنگامی که نام فایل \- باشد، فهرست فایل‌ها از ورودی استاندارد خوانده خواهد شد\&. .RE .PP \fB\-\-filesdir\fR .RS 4 مقدار FILESDIR توکار را چاپ می‌کند\&. .RE .PP \fB\-f\fR, \fB\-\-force\fR .RS 4 بررسی اجباری فایل‌هایی که پیکربندی‌های بسیار زیادی دارند\&. در صورت برخورد با چنین فایلی خطایی چاپ می‌شود، بنابراین دلیلی برای استفاده از این گزینه به‌صورت پیش‌فرض وجود ندارد\&. در صورت استفاده هم‌زمان با \-\-max\-configs=، آخرین گزینه اعمال خواهد شد\&. .RE .PP \fB\-\-fsigned\-char\fR .RS 4 نوع char را علامت‌دار در نظر می‌گیرد\&. این گزینه تنظیمات گزینه‌های قبلی \-\-platform را بازنویسی کرده و توسط گزینه‌های بعدی بازنویسی می‌شود\&. .RE .PP \fB\-\-funsigned\-char\fR .RS 4 نوع char را بدون‌علامت در نظر می‌گیرد\&. این گزینه تنظیمات گزینه‌های قبلی \-\-platform را بازنویسی کرده و توسط گزینه‌های بعدی بازنویسی می‌شود\&. .RE .PP \fB\-h\fR, \fB\-\-help\fR .RS 4 متن راهنما را چاپ می‌کند\&. .RE .PP \fB\-I \fR .RS 4 مسیری را برای جستجوی فایل‌های include مشخص می‌کند\&. برای مشخص کردن چندین مسیر، از چندین پارامتر \-I استفاده کنید\&. نخستین مسیر داده‌شده، زودتر از بقیه برای فایل‌های هدر موجود در آن جستجو می‌شود\&. اگر مسیرها نسبت به فایل‌های مبدأ نسبی باشند، نیازی به این گزینه نیست\&. .RE .PP \fB\-\-includes\-file=\fR .RS 4 مسیر دایرکتوری‌ها را برای جستجوی فایل‌های هدر includeشده در یک فایل متنی مشخص می‌کند\&. در هر سطر یک مسیر include اضافه کنید\&. نخستین مسیر داده‌شده، زودتر از بقیه برای فایل‌های هدر موجود در آن جستجو می‌شود\&. اگر مسیرها نسبت به فایل‌های مبدأ نسبی باشند، نیازی به این گزینه نیست\&. .RE .PP \fB\-\-config\-exclude=\fR .RS 4 مسیری (پیشوندی) که باید از بررسی پیکربندی مستثنی شود\&. پیکربندی‌های پیش‌پردازنده تعریف‌شده در هدرها (نه فایل‌های مبدأ) که با این پیشوند مطابقت داشته باشند، برای ارزیابی گزینه‌های پیکربندی در نظر گرفته نخواهند شد\&. .RE .PP \fB\-\-config\-exclude\-file=\fR .RS 4 فایلی شامل فهرستی از config\-excludeها\&. .RE .PP \fB\-\-include=\fR .RS 4 گنجاندن اجباری یک فایل قبل از فایل بررسی‌شده\&. برای مثال هنگام بررسی هسته لینوکس، که در آن autoconf\&.h باید برای هر فایل کامپایل‌شده گنجانده شود، قابل استفاده است\&. عملکردی مشابه گزینه \-include در GCC دارد\&. .RE .PP \fB\-i \fR .RS 4 مسیری را برای نادیده گرفتن تعیین می‌کند\&. برای نادیده گرفتن چندین مسیر، چند پارامتر \-i تعیین کنید\&. نام دایرکتوری یا نام فایل به همراه مسیر را به عنوان پارامتر بدهید\&. نام دایرکتوری با تمام بخش‌های مسیر مطابقت داده می‌شود\&. .RE .PP \fB\-\-inconclusive\fR .RS 4 به Cppcheck اجازه می‌دهد حتی در صورتی که تحلیل غیرقطعی باشد گزارش دهد\&. با این گزینه موارد مثبت کاذب (false positives) وجود خواهد داشت\&. پیش از نتیجه‌گیری درباره صحت یا عدم صحت، هر نتیجه باید با دقت بررسی شود\&. .RE .PP \fB\-\-inline\-suppr\fR .RS 4 نادیده‌گیری‌های درون‌خطی را فعال می‌کند\&. برای استفاده از آن‌ها، پیش از خطی که باید نادیده گرفته شود کامنتی به این شکل قرار دهید: // cppcheck\-suppress memleak .RE.PP \fB\-j \fR .RS 4 راه‌اندازی ریسه برای انجام کار بررسی\&. .RE .PP \fB\-l \fR .RS 4 مشخص می‌کند که اگر ریسه‌های دیگری در حال اجرا باشند و میانگین بار کاری سیستم (load average) حداقل برابر با باشد، هیچ ریسه جدیدی شروع به کار نکند (در سیستم‌های غیرشبه‌یونیکس نادیده گرفته می‌شود)\&. .RE .PP \fB\-\-language=\fR .RS 4 اجبار cppcheck به بررسی تمام فایل‌ها در قالب زبان مشخص‌شده\&. مقادیر معتبر عبارتند از: c و c++ .RE .PP \fB\-\-library=\fR .RS 4 استفاده از پیکربندی کتابخانه\&. .RE .PP \fB\-\-max\-configs=\fR .RS 4 حداکثر تعداد پیکربندی‌ها برای بررسی در یک فایل پیش از رد شدن از آن\&. مقدار پیش‌فرض 12 است\&. در صورت استفاده هم‌زمان با \-\-force، آخرین گزینه مشخص‌شده اعمال خواهد شد\&. .RE .PP \fB\-\-max\-ctu\-depth=\fR .RS 4 حداکثر عمق در تحلیل سراسری برنامه (whole program analysis)\&. پیش‌فرض 2 است\&. .RE .PP \fB\-\-platform=\fR .RS 4 مشخص کردن نوع‌ها و اندازه‌های وابسته به پلتفرم\&. پلتفرم‌های موجود عبارتند از: .PP unix32 .RS 4 گونه ۳۲ بیتی unix .RE .PP unix64 .RS 4 گونه ۶۴ بیتی unix .RE .PP win32A .RS 4 نگارش ۳۲ بیتی Windows با کدگذاری نویسه ASCII .RE .PP win32W .RS 4 نگارش ۳۲ بیتی Windows با کدگذاری نویسه UNICODE .RE .PP win64 .RS 4 نگارش ۶۴ بیتی Windows .RE .sp به‌طور پیش‌فرض از پلتفرمی که برای کامپایل Cppcheck به کار رفته است استفاده می‌شود\&. .RE .PP \fB\-q\fR, \fB\-\-quiet\fR .RS 4 تنها در صورت وجود خطا پیام چاپ شود\&. .RE .PP \fB\-rp\fR, \fB\-rp=\fR, \fB\-\-relative\-paths;\fR, \fB\-\-relative\-paths=\fR .RS 4 استفاده از مسیرهای نسبی در خروجی\&. در صورت تعیین، مقادیر به عنوان پایه استفاده می‌شوند\&. می‌توانید چند مسیر را با \*(Aq;\*(Aq جدا کنید\&. در غیر این صورت، از مسیری که فایل‌های مبدأ در آن جستجو می‌شوند استفاده خواهد شد\&. برای مثال، اگر مقدار داده‌شده test باشد، هنگام بررسی test/test\&.cpp، مسیر در خروجی به جای test/test\&.cpp به صورت test\&.cpp درج می‌شود\&. این ویژگی برای ایجاد مسیرهای نسبی از مقایسه رشته‌ای استفاده می‌کند، بنابراین برای نمونه استفاده از ~ برای پوشه خانگی کار نمی‌کند\&. در حال حاضر، تنها اعمال مسیرهای پایه بر فایل‌هایی امکان‌پذیر است که در سطحی پایین‌تر در درخت دایرکتوری قرار دارند\&. .RE .PP \fB\-\-report\-progress\fR .RS 4 گزارش روند پیشرفت هنگام بررسی یک فایل\&. .RE .PP \fB\-\-report\-type=\fR .RS 4 افزودن فیلدهای راهنما و رده‌بندی برای استاندارد کدنویسی مشخص‌شده\&. نوع‌های گزارش در دسترس عبارتند از: .PP normal .RS 4 پیش‌فرض، فقط شناسه خطای cppcheck و شدت آن نمایش داده می‌شود) .RE .PP autosar .RS 4 Autosar .RE .PP cert\-c\-2016 .RS 4 Cert C 2016 .RE .PP cert\-cpp\-2016 .RS 4 Cert C++ 2016 .RE .PP misra\-c\-2012 .RS 4 Misra C 2012 .RE .PP misra\-c\-2023 .RS 4 Misra C 2023 .RE .PP misra\-c\-2025 .RS 4 Misra C 2025 .RE .PP misra\-cpp\-2008 .RS 4 Misra C++ 2008 .RE .PP misra\-cpp\-2023 .RS 4 Misra C++ 2023 .RE .sp .RE .PP \fB\-\-rule=\fR .RS 4 تطبیق عبارت باقاعده (regular expression) برای ایجاد بررسی‌های دلخواه خودتان\&. به عنوان مثال، قاعده "/ 0" می‌تواند برای بررسی تقسیم بر صفر به کار رود\&. این دستور تنها در صورتی در دسترس است که cppcheck با HAVE_RULES=yes کامپایل شده باشد\&. .RE .PP \fB\-\-rule\-file=\fR .RS 4 استفاده از فایل XML قواعد داده‌شده\&. برای اطلاعات بیشتر پیرامون نحو، https://sourceforge\&.net/projects/cppcheck/files/Articles را ببینید\&. این دستور تنها در صورتی در دسترس است که cppcheck با HAVE_RULES=yes کامپایل شده باشد\&. .RE .PP \fB\-\-showtime=\fR .RS 4 نمایش اطلاعات زمان‌بندی\&. حالت‌های موجود عبارتند از: .PP none .RS 4 چیزی نمایش داده نشود (پیش‌فرض) .RE .PP file .RS 4 نمایش برای هر فایل پردازش‌شده .RE .PP file\-total .RS 4 نمایش کل زمان تنها برای هر فایل پردازش‌شده .RE .PP summary .RS 4 نمایش خلاصه‌ای در پایان .RE .PP top5_file .RS 4 نمایش ۵ مورد برتر برای هر فایل پردازش‌شده .RE .PP top5_summary .RS 4 نمایش خلاصه‌ای از ۵ مورد برتر در پایان .RE .sp .RE .PP \fB\-\-std=\fR .RS 4 تعیین استاندارد\&. گزینه‌های موجود عبارتند از: .PP c89 .RS 4 کد C با C89 سازگار است .RE .PP c99 .RS 4 کد C با C99 سازگار است .RE .PP c11 .RS 4 کد C با C11 سازگار است (پیش‌فرض) .RE .PP c++03 .RS 4 کد C++ با C++03 سازگار است .RE .PP c++11 .RS 4 کد C++ با C++11 سازگار است .RE.PP c++14 .RS 4 کد C++ با C++14 سازگار است\&. .RE .PP c++17 .RS 4 کد C++ با C++17 سازگار است\&. .RE .PP c++20 .RS 4 کد C++ با C++20 سازگار است (پیش‌فرض)\&. .RE .sp .RE .PP \fB\-\-suppress=\fR .RS 4 نادیده‌گیری یک هشدار خاص\&. قالب به این صورت است: [error id]:[filename]:[line]\&. مقادیر [filename] و [line] اختیاری هستند\&. مقدار [error id] می‌تواند * باشد تا تمام هشدارها (برای یک فایل یا فایل‌های مشخص‌شده) نادیده گرفته شوند\&. [filename] می‌تواند شامل نویسه‌های عام * یا ? باشد\&. .RE .PP \fB\-\-suppressions\-list=\fR .RS 4 هشدارهای فهرست‌شده در فایل را نادیده می‌گیرد\&. هر مورد نادیده‌گیری مطابق قالب در بالا است\&. .RE .PP \fB\-\-suppress\-xml=<\&.xml file>\fR .RS 4 استفاده از موارد نادیده‌گیری تعریف‌شده در xml مطابق توضیحات دفترچهٔ راهنما\&. .RE .PP \fB\-\-template=\*(Aq\*(Aq\fR .RS 4 قالب‌بندی پیام‌های خطا\&. برای نمونه: \*(Aq{file}:{line},{severity},{id},{message}\*(Aq یا \*(Aq{file}({line}):({severity}) {message}\*(Aq\&. الگوهای از پیش‌تعریف‌شده: gcc, vs\&. .RE .PP \fB\-v\fR, \fB\-\-verbose\fR .RS 4 گزارش‌های خطای با جزئیات بیشتر\&. .RE .PP \fB\-\-version\fR .RS 4 نمایش اطلاعات نسخه\&. .RE .PP \fB\-\-xml\fR .RS 4 نوشتن نتایج با قالب XML در جریان خطا (stderr)\&. .RE .PP \fB\-\-xml\-version=\fR .RS 4 انتخاب نسخهٔ فایل XML\&. همچنین گزینهٔ \-\-xml را نیز اعمال می‌کند\&. در حال حاضر تنها نسخهٔ 2 در دسترس است\&. نسخهٔ پیش‌فرض 2 است\&. .RE .SH "نویسندگان (AUTHORS)" .PP این برنامه توسط Daniel Marjam\(:aki و تیم Cppcheck نوشته شده است\&. برای فهرست اعضای تیم، فایل AUTHORS را ببینید\&. .SH "همچنین ببینید (SEE ALSO)" .PP فهرست کامل ویژگی‌ها: https://sourceforge\&.net/p/cppcheck/wiki/Home .SH "نویسندگان (AUTHORS)" .PP \fBReijo Tomperi\fR <\&aggro80@users\&.sourceforge\&.net\&> .RS 4 این صفحهٔ راهنما را برای سیستم دبیان نوشته است\&. .RE .SH "کپی‌رایت و تکثیر (COPYRIGHT)" .br Copyright \(co 2009 - 2016 Reijo Tomperi .br .PP این صفحهٔ راهنما برای سیستم دبیان نوشته شده است (اما ممکن است توسط دیگران نیز استفاده شود)\&. .PP حق کپی، توزیع و/یا تغییر این سند تحت شرایط مجوز عمومی همگانی گنو (GNU General Public License)، نسخهٔ ۳ یا (به انتخاب شما) هر نسخهٔ بالاتر منتشرشده توسط بنیاد نرم‌افزارهای آزاد مجاز است\&. .PP در سیستم‌های دبیان، متن کامل مجوز عمومی همگانی گنو را می‌توان در مسیر /usr/share/common\-licenses/GPL\-3 یافت\&. .sp