CPPCHECK(1) cppcheck User Manual CPPCHECK(1)

cppcheck - ابزاری برای تحلیل ایستای کدهای C/C++

cppcheck [--check-config] [--check-library] [-D<id>] [-U<id>] [--disable=<id>] [--enable=<id>] [--error-exitcode=<n>] [--errorlist] [--exitcode-suppress=<spec>] [--exitcode-suppressions=<file>] [--file-list=<file>] [--filesdir] [--force] [--fsigned-char] [--funsigned-char] [--help] [-I<dir>] [--includes-file=<file>] [--config-exclude=<dir>] [--config-excludes-file=<file>] [--include=<file>] [-i<dir>] [--inconclusive] [--inline-suppr] [-j<jobs>] [-l<load>] [--language=<language>] [--library=<cfg>] [--max-configs=<limit>] [--max-ctu-depth=<limit>] [--platform=<type>] [--quiet] [--relative-paths=<paths>] [--report-progress] [--report-type=<type>] [--rule=<rule>] [--rule-file=<file>] [--showtime=<mode>] [--std=<id>] [--suppress=<spec>] [--suppressions-list=<file>] [--suppress-xml=<.xml file>] [--template='<text>'] [--verbose] [--version] [--xml] [--xml-version=<version>]] [file or path] ...

ابزار Cppcheck یک ابزار خط‌فرمانی است که تلاش می‌کند باگ‌هایی را که کامپایلر C/C++ شما متوجه آن‌ها نمی‌شود شناسایی کند. این ابزار چندمنظوره است و می‌تواند کدهای غیراستاندارد شامل افزونه‌های مختلف کامپایلر، کدهای اسمبلی درون‌خطی (inline assembly) و غیره را بررسی کند. پیش‌پردازنده داخلی آن می‌تواند فایل‌های include، ماکروها و دستورات مختلف پیش‌پردازنده را مدیریت نماید. اگرچه Cppcheck قابلیت پیکربندی بسیار بالایی دارد، شما می‌توانید تنها با مشخص کردن مسیر کد مبدأ، استفاده از آن را آغاز کنید.

فایل‌های C/C++ داده‌شده را برای یافتن خطاهای رایج تحلیل می‌کند.

--check-config

پیکربندی Cppcheck را بررسی می‌کند. با این پرچم، تحلیل معمولی کد غیرفعال می‌شود.

--check-library

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

-D<id>

به‌طور پیش‌فرض Cppcheck تمام پیکربندی‌ها را بررسی می‌کند. برای محدود کردن بررسی از -D استفاده کنید. هنگام استفاده از -D، بررسی به پیکربندی ارائه‌شده محدود می‌شود. مثال: -DDEBUG=1 -D__cplusplus

-U<id>

به‌طور پیش‌فرض Cppcheck تمام پیکربندی‌ها را بررسی می‌کند. از '-U' برای پنهان‌سازی صریح برخی مسیرهای کد #ifdef <id> از فرایند بررسی استفاده کنید. مثال: '-UDEBUG'

--disable=<id>

بررسی‌های منفرد را غیرفعال می‌کند. لطفاً برای جزئیات بیشتر به مستندات --enable=<id> مراجعه کنید.

--enable=<id>

بررسی‌های اضافی را فعال می‌کند. شناسه‌های موجود عبارتند از:

all

تمام بررسی‌ها را فعال می‌کند. توصیه می‌شود تنها زمانی از --enable=all استفاده کنید که کل برنامه پویش می‌شود، زیرا این گزینه unusedFunction را نیز فعال می‌کند.

warning

پیام‌های هشدار را فعال می‌کند.

style

تمام بررسی‌های شیوه کدنویسی را فعال می‌کند. تمام پیام‌ها با سطوح اهمیت 'style'، 'performance' و 'portability' فعال می‌شوند.

performance

پیام‌های مربوط به کارایی و عملکرد را فعال می‌کند.

portability

پیام‌های مربوط به قابلیت حمل را فعال می‌کند.

information

پیام‌های اطلاعاتی را فعال می‌کند.

unusedFunction

توابع استفاده‌نشده را بررسی می‌کند. توصیه می‌شود تنها زمانی این گزینه را فعال کنید که کل برنامه پویش می‌شود.

missingInclude

در صورت وجود includeهای مفقود، هشدار می‌دهد.

به‌طور پیش‌فرض هیچ‌یک از بررسی‌های اضافی فعال نیستند. با جدا کردن شناسه‌ها با کاما می‌توان چندین شناسه را مشخص کرد، مانند: --enable=style,unusedFunction. همچنین --std را ببینید.

--error-exitcode=<n>

در صورت یافتن خطا، عدد صحیح <n> به جای مقدار پیش‌فرض 0 بازگردانده می‌شود. در صورتی که آرگومان‌ها نامعتبر باشند یا هیچ فایل ورودی ارائه نشده باشد، مقدار EXIT_FAILURE بازگردانده خواهد شد. توجه داشته باشید که سیستم‌عامل شما می‌تواند این مقدار را تغییر دهد، به عنوان مثال 256 ممکن است به 0 تبدیل شود.

--errorlist

فهرستی از تمام پیام‌های خطای ممکن را در قالب XML چاپ می‌کند.

--exitcode-suppress=<spec>

برای مشخص کردن شناسه خطایی استفاده می‌شود که نباید منجر به تولید کد خروج غیرصفر شود.

--exitcode-suppressions=<file>

زمانی استفاده می‌شود که پیام‌های خاصی باید نمایش داده شوند اما نباید باعث ایجاد کد خروج غیرصفر شوند.

--file-list=<file>

فایل‌های مورد نظر برای بررسی را از طریق یک فایل متنی مشخص می‌کند. در هر سطر یک نام فایل قرار می‌گیرد. هنگامی که نام فایل - باشد، فهرست فایل‌ها از ورودی استاندارد خوانده خواهد شد.

--filesdir

مقدار FILESDIR توکار را چاپ می‌کند.

-f, --force

بررسی اجباری فایل‌هایی که پیکربندی‌های بسیار زیادی دارند. در صورت برخورد با چنین فایلی خطایی چاپ می‌شود، بنابراین دلیلی برای استفاده از این گزینه به‌صورت پیش‌فرض وجود ندارد. در صورت استفاده هم‌زمان با --max-configs=، آخرین گزینه اعمال خواهد شد.

--fsigned-char

نوع char را علامت‌دار در نظر می‌گیرد. این گزینه تنظیمات گزینه‌های قبلی --platform را بازنویسی کرده و توسط گزینه‌های بعدی بازنویسی می‌شود.

--funsigned-char

نوع char را بدون‌علامت در نظر می‌گیرد. این گزینه تنظیمات گزینه‌های قبلی --platform را بازنویسی کرده و توسط گزینه‌های بعدی بازنویسی می‌شود.

-h, --help

متن راهنما را چاپ می‌کند.

-I <dir>

مسیری را برای جستجوی فایل‌های include مشخص می‌کند. برای مشخص کردن چندین مسیر، از چندین پارامتر -I استفاده کنید. نخستین مسیر داده‌شده، زودتر از بقیه برای فایل‌های هدر موجود در آن جستجو می‌شود. اگر مسیرها نسبت به فایل‌های مبدأ نسبی باشند، نیازی به این گزینه نیست.

--includes-file=<file>

مسیر دایرکتوری‌ها را برای جستجوی فایل‌های هدر includeشده در یک فایل متنی مشخص می‌کند. در هر سطر یک مسیر include اضافه کنید. نخستین مسیر داده‌شده، زودتر از بقیه برای فایل‌های هدر موجود در آن جستجو می‌شود. اگر مسیرها نسبت به فایل‌های مبدأ نسبی باشند، نیازی به این گزینه نیست.

--config-exclude=<dir>

مسیری (پیشوندی) که باید از بررسی پیکربندی مستثنی شود. پیکربندی‌های پیش‌پردازنده تعریف‌شده در هدرها (نه فایل‌های مبدأ) که با این پیشوند مطابقت داشته باشند، برای ارزیابی گزینه‌های پیکربندی در نظر گرفته نخواهند شد.

--config-exclude-file=<file>

فایلی شامل فهرستی از config-excludeها.

--include=<file>

گنجاندن اجباری یک فایل قبل از فایل بررسی‌شده. برای مثال هنگام بررسی هسته لینوکس، که در آن autoconf.h باید برای هر فایل کامپایل‌شده گنجانده شود، قابل استفاده است. عملکردی مشابه گزینه -include در GCC دارد.

-i <dir>

مسیری را برای نادیده گرفتن تعیین می‌کند. برای نادیده گرفتن چندین مسیر، چند پارامتر -i تعیین کنید. نام دایرکتوری یا نام فایل به همراه مسیر را به عنوان پارامتر بدهید. نام دایرکتوری با تمام بخش‌های مسیر مطابقت داده می‌شود.

--inconclusive

به Cppcheck اجازه می‌دهد حتی در صورتی که تحلیل غیرقطعی باشد گزارش دهد. با این گزینه موارد مثبت کاذب (false positives) وجود خواهد داشت. پیش از نتیجه‌گیری درباره صحت یا عدم صحت، هر نتیجه باید با دقت بررسی شود.

--inline-suppr

نادیده‌گیری‌های درون‌خطی را فعال می‌کند. برای استفاده از آن‌ها، پیش از خطی که باید نادیده گرفته شود کامنتی به این شکل قرار دهید: // cppcheck-suppress memleak -j <jobs>
راه‌اندازی <jobs> ریسه برای انجام کار بررسی.

-l <load>

مشخص می‌کند که اگر ریسه‌های دیگری در حال اجرا باشند و میانگین بار کاری سیستم (load average) حداقل برابر با <load> باشد، هیچ ریسه جدیدی شروع به کار نکند (در سیستم‌های غیرشبه‌یونیکس نادیده گرفته می‌شود).

--language=<language>

اجبار cppcheck به بررسی تمام فایل‌ها در قالب زبان مشخص‌شده. مقادیر معتبر عبارتند از: c و c++

--library=<cfg>

استفاده از پیکربندی کتابخانه.

--max-configs=<limit>

حداکثر تعداد پیکربندی‌ها برای بررسی در یک فایل پیش از رد شدن از آن. مقدار پیش‌فرض 12 است. در صورت استفاده هم‌زمان با --force، آخرین گزینه مشخص‌شده اعمال خواهد شد.

--max-ctu-depth=<limit>

حداکثر عمق در تحلیل سراسری برنامه (whole program analysis). پیش‌فرض 2 است.

--platform=<type>

مشخص کردن نوع‌ها و اندازه‌های وابسته به پلتفرم. پلتفرم‌های موجود عبارتند از:

unix32

گونه ۳۲ بیتی unix

unix64

گونه ۶۴ بیتی unix

win32A

نگارش ۳۲ بیتی Windows با کدگذاری نویسه ASCII

win32W

نگارش ۳۲ بیتی Windows با کدگذاری نویسه UNICODE

win64

نگارش ۶۴ بیتی Windows

به‌طور پیش‌فرض از پلتفرمی که برای کامپایل Cppcheck به کار رفته است استفاده می‌شود.

-q, --quiet

تنها در صورت وجود خطا پیام چاپ شود.

-rp, -rp=<paths>, --relative-paths;, --relative-paths=<paths>

استفاده از مسیرهای نسبی در خروجی. در صورت تعیین، مقادیر <paths> به عنوان پایه استفاده می‌شوند. می‌توانید چند مسیر را با ';' جدا کنید. در غیر این صورت، از مسیری که فایل‌های مبدأ در آن جستجو می‌شوند استفاده خواهد شد. برای مثال، اگر مقدار داده‌شده test باشد، هنگام بررسی test/test.cpp، مسیر در خروجی به جای test/test.cpp به صورت test.cpp درج می‌شود. این ویژگی برای ایجاد مسیرهای نسبی از مقایسه رشته‌ای استفاده می‌کند، بنابراین برای نمونه استفاده از ~ برای پوشه خانگی کار نمی‌کند. در حال حاضر، تنها اعمال مسیرهای پایه بر فایل‌هایی امکان‌پذیر است که در سطحی پایین‌تر در درخت دایرکتوری قرار دارند.

--report-progress

گزارش روند پیشرفت هنگام بررسی یک فایل.

--report-type=<type>

افزودن فیلدهای راهنما و رده‌بندی برای استاندارد کدنویسی مشخص‌شده. نوع‌های گزارش در دسترس عبارتند از:

normal

پیش‌فرض، فقط شناسه خطای cppcheck و شدت آن نمایش داده می‌شود)

autosar

Autosar

cert-c-2016

Cert C 2016

cert-cpp-2016

Cert C++ 2016

misra-c-2012

Misra C 2012

misra-c-2023

Misra C 2023

misra-c-2025

Misra C 2025

misra-cpp-2008

Misra C++ 2008

misra-cpp-2023

Misra C++ 2023

--rule=<rule>

تطبیق عبارت باقاعده (regular expression) برای ایجاد بررسی‌های دلخواه خودتان. به عنوان مثال، قاعده "/ 0" می‌تواند برای بررسی تقسیم بر صفر به کار رود. این دستور تنها در صورتی در دسترس است که cppcheck با HAVE_RULES=yes کامپایل شده باشد.

--rule-file=<file>

استفاده از فایل XML قواعد داده‌شده. برای اطلاعات بیشتر پیرامون نحو، https://sourceforge.net/projects/cppcheck/files/Articles را ببینید. این دستور تنها در صورتی در دسترس است که cppcheck با HAVE_RULES=yes کامپایل شده باشد.

--showtime=<mode>

نمایش اطلاعات زمان‌بندی. حالت‌های موجود عبارتند از:

none

چیزی نمایش داده نشود (پیش‌فرض)

file

نمایش برای هر فایل پردازش‌شده

file-total

نمایش کل زمان تنها برای هر فایل پردازش‌شده

summary

نمایش خلاصه‌ای در پایان

top5_file

نمایش ۵ مورد برتر برای هر فایل پردازش‌شده

top5_summary

نمایش خلاصه‌ای از ۵ مورد برتر در پایان

--std=<id>

تعیین استاندارد. گزینه‌های موجود عبارتند از:

c89

کد C با C89 سازگار است

c99

کد C با C99 سازگار است

c11

کد C با C11 سازگار است (پیش‌فرض)

c++03

کد C++ با C++03 سازگار است

c++11

کد C++ با C++11 سازگار است c++14
کد C++ با C++14 سازگار است.

c++17

کد C++ با C++17 سازگار است.

c++20

کد C++ با C++20 سازگار است (پیش‌فرض).

--suppress=<spec>

نادیده‌گیری یک هشدار خاص. قالب <spec> به این صورت است: [error id]:[filename]:[line]. مقادیر [filename] و [line] اختیاری هستند. مقدار [error id] می‌تواند * باشد تا تمام هشدارها (برای یک فایل یا فایل‌های مشخص‌شده) نادیده گرفته شوند. [filename] می‌تواند شامل نویسه‌های عام * یا ? باشد.

--suppressions-list=<file>

هشدارهای فهرست‌شده در فایل را نادیده می‌گیرد. هر مورد نادیده‌گیری مطابق قالب <spec> در بالا است.

--suppress-xml=<.xml file>;

استفاده از موارد نادیده‌گیری تعریف‌شده در xml مطابق توضیحات دفترچهٔ راهنما.

--template='<text>'

قالب‌بندی پیام‌های خطا. برای نمونه: '{file}:{line},{severity},{id},{message}' یا '{file}({line}):({severity}) {message}'. الگوهای از پیش‌تعریف‌شده: gcc, vs.

-v, --verbose

گزارش‌های خطای با جزئیات بیشتر.

--version

نمایش اطلاعات نسخه.

--xml

نوشتن نتایج با قالب XML در جریان خطا (stderr).

--xml-version=<version>

انتخاب نسخهٔ فایل XML. همچنین گزینهٔ --xml را نیز اعمال می‌کند. در حال حاضر تنها نسخهٔ 2 در دسترس است. نسخهٔ پیش‌فرض 2 است.

این برنامه توسط Daniel Marjamäki و تیم Cppcheck نوشته شده است. برای فهرست اعضای تیم، فایل AUTHORS را ببینید.

فهرست کامل ویژگی‌ها: https://sourceforge.net/p/cppcheck/wiki/Home

Reijo Tomperi <aggro80@users.sourceforge.net>

این صفحهٔ راهنما را برای سیستم دبیان نوشته است.

Copyright © 2009 - 2016 Reijo Tomperi

این صفحهٔ راهنما برای سیستم دبیان نوشته شده است (اما ممکن است توسط دیگران نیز استفاده شود).

حق کپی، توزیع و/یا تغییر این سند تحت شرایط مجوز عمومی همگانی گنو (GNU General Public License)، نسخهٔ ۳ یا (به انتخاب شما) هر نسخهٔ بالاتر منتشرشده توسط بنیاد نرم‌افزارهای آزاد مجاز است.

در سیستم‌های دبیان، متن کامل مجوز عمومی همگانی گنو را می‌توان در مسیر /usr/share/common-licenses/GPL-3 یافت.

06/23/2026 cppcheck