نوافذ الافراج | OSS-الزغب | حالة بناء مسح التغطية | تضمين ما تستخدمه | رخصة |
---|---|---|---|---|
![]() | ![]() |
كان الاسم الأصلي لهذا البرنامج هو "C++check"، ولكن تم تغييره لاحقًا إلى "Cppcheck".
على الرغم من الاسم، تم تصميم Cppcheck لكل من C وC++.
دليل متاح على الانترنت.
Cppcheck هو مشروع هواية بموارد محدودة. يمكنك مساعدتنا من خلال التبرع بوحدة المعالجة المركزية (مركز واحد أو العدد الذي تريده). انها بسيطة:
cd cppcheck/
virtualenv .env
.env/bin/pip install -r tools/donate-cpu-requirements.txt
.env/bin/python tools/donate-cpu.py
سيقوم البرنامج النصي بتحليل كود مصدر دبيان وتحميل النتائج إلى خادم cppcheck. نحن بحاجة إلى هذه النتائج لتحسين Cppcheck واكتشاف الانحدارات.
يمكنك إيقاف البرنامج النصي وقتما تشاء باستخدام Ctrl C.
يتطلب Cppcheck مترجم C++ مع دعم (جزئي) C++11. الحد الأدنى من الإصدارات المطلوبة هوGC 5.1 / Clang 3.5 / Visual Studio 2015.
لإنشاء تطبيق واجهة المستخدم الرسومية (GUI)، تحتاج إلى استخدام نظام البناء CMake.
عند إنشاء أداة سطر الأوامر، يكون PCRE اختياريًا. يتم استخدامه إذا كنت تبني وفقًا للقواعد.
هناك خيارات تجميع متعددة:
الحد الأدنى المطلوب لإصدار بايثون هو 3.6.
الحد الأدنى للإصدار المطلوب هو CMake 3.5.
على سبيل المثال، تجميع Cppcheck باستخدام cmake:
mkdir build
cd build
cmake ..
cmake --build .
إذا كنت تريد تجميع واجهة المستخدم الرسومية، يمكنك استخدام العلامة. -DBUILD_GUI=ON
لدعم القواعد (يتطلب pcre) استخدم العلم. -DHAVE_RULES=ON
بالنسبة لبنيات الإصدار، يوصى باستخدام: -DUSE_MATCHCOMPILER=ON
لبناء الاختبارات استخدم العلم. -DBUILD_TESTS=ON
باستخدام cmake يمكنك إنشاء ملفات المشروع لـ Visual Studio وXCode وما إلى ذلك.
بالنسبة للمولدات ذات التكوين الفردي (مثل "Unix Makefiles")، يمكنك إنشاء وإنشاء تكوين محدد (على سبيل المثال "RelWithDebInfo") باستخدام:
mkdir build_RelWithDebInfo
cd build_RelWithDebInfo
cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo ..
cmake --build . --config RelWithDebInfo
بالنسبة للمولدات متعددة التكوين (مثل "Visual Studio 17 2022")، يتم تحقيق نفس الشيء باستخدام:
mkdir build
cd build
cmake ..
cmake --build . --config RelWithDebInfo
استخدم الملف cppcheck.sln. تم تكوين الملف لـ Visual Studio 2019، ولكن يمكن تغيير مجموعة أدوات النظام الأساسي بسهولة إلى الإصدارات الأقدم أو الأحدث. يحتوي الحل على أهداف النظام الأساسي لكل من x86 وx64.
للتجميع مع القواعد، حدد تكوين "Release-PCRE" أو "Debug-PCRE". من المتوقع أن يكون pcre.lib (pcre64.lib للإصدارات x64) وpcre.h موجودين في /externals بعد ذلك. يمكن الحصول على الإصدار الحالي من PCRE لبرنامج Visual Studio باستخدام vcpkg.
إذا كنت لا ترغب في استخدام Visual Studio IDE، يمكنك ترجمة cppcheck من سطر الأوامر الأمر التالي.
msbuild cppcheck.sln
قم بتثبيت MSYS2 للحصول على سلسلة أدوات GNU مع g++ وgdb (https://www.msys2.org/). قم بإنشاء ملف settings.json في المجلد .vscode بالمحتوى التالي (اضبط المسار حسب الضرورة):
{
"terminal.integrated.shell.windows": "C:\msys64\usr\bin\bash.exe",
"terminal.integrated.shellArgs.windows": [
"--login",
],
"terminal.integrated.env.windows": {
"CHERE_INVOKING": "1",
"MSYSTEM": "MINGW64",
}
}
قم بتشغيل "make" في الجهاز لإنشاء cppcheck.
لتصحيح الأخطاء، قم بإنشاء ملف Launch.json في المجلد .vscode بالمحتوى التالي، والذي يغطي التكوين لتصحيح أخطاء cppcheck وmisra.py:
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "cppcheck",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/cppcheck.exe",
"args": [
"--dump",
"${workspaceFolder}/addons/test/misra/misra-test.c"
],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": true,
"MIMode": "gdb",
"miDebuggerPath": "C:/msys64/mingw64/bin/gdb.exe",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
},
{
"name": "misra.py",
"type": "python",
"request": "launch",
"program": "${workspaceFolder}/addons/misra.py",
"console": "integratedTerminal",
"args": [
"${workspaceFolder}/addons/test/misra/misra-test.c.dump"
]
}
]
}
هناك حاجة إلى PCRE dll لإنشاء واجهة سطر الأوامر (CLI). يمكن تنزيله هنا: http://software-download.name/pcre-library-windows/
بناء بسيط وغير محسّن (بدون تبعيات):
make
بناء الإصدار الموصى به هو:
make MATCHCOMPILER=yes FILESDIR=/usr/share/cppcheck HAVE_RULES=yes CXXFLAGS= " -O2 -DNDEBUG -Wall -Wno-sign-compare -Wno-unused-function "
الأعلام:
MATCHCOMPILER=yes
، يتم استخدام لغة Python لتحسين cppcheck. يتم تحويل أنماط Token::Match إلى كود C++ في وقت الترجمة.
FILESDIR=/usr/share/cppcheck
حدد المجلد الذي تم تثبيت ملفات cppcheck فيه (الوظائف الإضافية، cfg، النظام الأساسي)
HAVE_RULES=yes
تمكين القواعد (مطلوب PCRE إذا تم استخدامه)
CXXFLAGS="-O2 -DNDEBUG -Wall -Wno-sign-compare -Wno-unused-function"
تمكين معظم تحسينات برنامج التحويل البرمجي، وتعطيل كود تصحيح الأخطاء الداخلي لـ cppcheck، وتمكين تحذيرات برنامج التحويل البرمجي الأساسية.
إذا كنت تريد فقط إنشاء Cppcheck بدون تبعيات، فيمكنك استخدام هذا الأمر:
g++ -o cppcheck -std=c++11 -Iexternals -Iexternals/simplecpp -Iexternals/tinyxml2 -Iexternals/picojson -Ilib cli/ * .cpp lib/ * .cpp externals/simplecpp/simplecpp.cpp externals/tinyxml2/ * .cpp
إذا كنت تريد استخدام --rule
و --rule-file
فستكون هناك حاجة إلى التبعيات:
g++ -o cppcheck -std=c++11 -lpcre -DHAVE_RULES -Ilib -Iexternals -Iexternals/simplecpp -Iexternals/tinyxml2 cli/ * .cpp lib/ * .cpp externals/simplecpp/simplecpp.cpp externals/tinyxml2/ * .cpp
mingw32-make
إذا واجهت الخطأ التالي مع MATCHCOMPILER=yes
فأنت بحاجة إلى تحديد مترجم Python الخاص بك عبر PYTHON_INTERPRETER
.
process_begin: CreateProcess(NULL, which python3, ...) failed.
makefile:24: pipe: No error
process_begin: CreateProcess(NULL, which python, ...) failed.
makefile:27: pipe: No error
makefile:30: *** Did not find a Python interpreter. Stop.
sudo apt-get install mingw32
make CXX=i586-mingw32msvc-g++ LDFLAGS= " -lshlwapi " RDYNAMIC= " "
mv cppcheck cppcheck.exe
إلى جانب بناء نفسك على النظام الأساسي الذي تختاره، هناك أيضًا عدة طرق للحصول على الحزم المعدة مسبقًا.
ملاحظة: لا تتم صيانة الحزم التي لا تعمل بنظام التشغيل Windows بواسطة فريق Cppcheck ولكن بواسطة الحزم المعنية بدلاً من ذلك.
yum
، و apt
، و pacman
، وما إلى ذلك). راجع https://pkgs.org/search/?q=cppcheck للحصول على نظرة عامة.brew
). راجع https://formulae.brew.sh/formula/cppcheck#default. https://cppcheck.sourceforge.io/