CODECHECKER هي بنية تحتية للتحليل الثابت المبني على أدوات محلل LLVM/CLANG الثابت ، لتحل محل scan-build في بيئة تطوير Linux أو MacOS (OS X).

تحقق من العرض التوضيحي الخاص بنا الذي يوضح بعض نتائج تحليل المشاريع مفتوحة المصدر!
ينفذ Clang-Tidy ، محلل ثابت Clang مع تحليل وحدة الانتقال عبر المترجمة ، التحليل الإحصائي (عندما تتوفر المدققون) ، CPPCHECK ، محلل ثابت GCC ومحلل الاستدلال فيسبوك .
يقوم بإنشاء قاعدة بيانات تجميع JSON عن طريق تصقّم أي عملية بناء (على سبيل المثال ، CodeChecker log -b "make" ).
يحلل تلقائيًا مشاريع GCC المتقاطعة: اكتشاف تكوين برنامج التحويل البرمجي GCC أو Clang وتشكيل دعوات محلل Clang المقابلة.
التحليل الإضافي: فقط الملفات المتغيرة وتبعياتها تحتاج إلى إعادة تحليل.
قمع إيجابي خاطئ مع إمكانية إضافة تعليقات المراجعة.
تصور النتيجة في سطر الأوامر أو في HTML ثابت.
يمكنك تخزين وتصور الآلاف من تقارير التحليلات للعديد من المحللين مثل Clang Static Analyzer (C/C ++) ، Clang Tidy (C/C ++) ، Facebook Interving (C/C ++ ، Java) ، Clang Clantizers (C/C ++) ، Spotbugs (Java) ، pylint (Python) ، Eslint (Javas).
للاطلاع على قائمة كاملة ، راجع التحليلات المدعومة
تطبيق الويب لعرض عيوب الكود المكتشفة مع تجربة سهلة وسهلة (مع postgresql أو sqlite الخلفية).
يُظهر تكامل Gerrit و Gitlab نتائج التحليل كمراجعات Gitlab أو Gerrit.
قابلة للتصفية (اسم مدقق العيوب ، وشدة ، ومسارات المصدر ، ...) ومماثلة (يحسب الفرق بين تحليلين للمشروع ، مما يدل على الأخطاء التي تم إصلاحها والتي تم تقديمها حديثًا) عرض نتيجة.
وضع DIFF: يوضح هذا قائمة الأخطاء التي تم تقديمها منذ تنفيذ المحلل الأخير.
يمكن مشاركة النتائج مع زملائه المطورين ، والتعليقات ونظام المراجعة تساعد على التواصل مع عيوب التعليمات البرمجية.
يمكن تنفيذها بسهولة الاتصالات المستندة إلى الخادم العميل المستخدم لتخزين العيوب المكتشفة والاستعلام عنها.
دعم الأمامات المتعددة لتصور الأخطاء ، مثل تطبيق الويب ، وأداة سطر الأوامر والمكون الإضافي Eclipse.
يحتوي أمر CodeChecker على العديد من اللوائح الفرعية التي يمكن استخدامها على سبيل المثال لتسجيل وتحليل مشاريعك أو طباعة النتائج أو بدء تشغيل خادم ويب. للاطلاع على القائمة الكاملة ، شاهد الجدول التالي أو تحقق من رسالة المساعدة لهذا الأمر ( CodeChecker --help ):
CodeChecker SUBSOMMAND | وصف |
|---|---|
analyze | قم بتنفيذ محللات التعليمات البرمجية المدعومة للملفات المسجلة في قاعدة بيانات تجميع JSON. |
analyzer-version | اطبع إصدار حزمة CodeChecker Analyzer التي يتم استخدامها. |
analyzers | قائمة المحللين المدعومة والمتاحة. |
check | إجراء تحليل على المشروع ونتائج الطباعة إلى الإخراج القياسي. |
checkers | سرد المدققين المتاحة لتحليل الكود. |
cmd | عرض نتائج التحليل على خادم قيد التشغيل من سطر الأوامر. |
fixit | قم بتطبيق الإصلاحات التلقائية بناءً على اقتراحات المحللين. |
log | قم بتشغيل أمر بناء ، وجمع أوامر التجميع التي تم تنفيذه وتخزينها في ملف JSON. |
parse | ملخص تحليل الطباعة ويؤدي إلى تنسيق قابل للقراءة الإنسان. |
server | ابدأ وإدارة خادم الويب CodeChecker. |
store | حفظ نتائج التحليل إلى قاعدة بيانات. |
version | اطبع إصدار حزمة CodeChecker التي يتم استخدامها. |
web-version | اطبع إصدار حزمة خادم CodeChecker التي يتم استخدامها. |
يحتوي CodeChecker cmd Subommand أيضًا على العديد من اللومبون الفرعيات الأخرى التي يمكن استخدامها للحصول على البيانات (المنتجات والتشغيل والنتائج والإحصائيات) من خادم CodeChecker قيد التشغيل. للاطلاع على القائمة الكاملة ، شاهد الجدول التالي أو تحقق من رسالة المساعدة لهذا المجموعة الفرعية ( CodeChecker cmd --help ):
CodeChecker cmd الفرعي | وصف |
|---|---|
runs | سرد عمليات التحليل المتاحة. |
history | عرض تاريخ تشغيل العديد من أشواط. |
results | قائمة تحليل قائمة (العثور) ملخص لجولة معينة. |
diff | قارن بين اثنين من التحليلات وإظهار الفرق. |
sum | إظهار إحصائيات الداما. |
token | الوصول الفرعي للوصول المتعلق بتكوين رموز الوصول الشخصية التي يديرها خادم CodeChecker. |
del | حذف التحليل يدير. |
update | تحديث تشغيل التحليل. |
suppress | إدارة واستيراد قمع التقارير على خادم CodeChecker. |
products | الوصول الفرعي للوصول إلى تكوين المنتجات التي يديرها خادم CodeChecker. |
components | الوصول الفرعي للوصول إلى تكوين مكونات المصدر التي يديرها خادم CodeChecker. |
login | المصادقة في خوادم codechecker التي تتطلب امتيازات. |
export | تصدير التعليقات ومراجعة الحالات من CodeChecker. |
import | استيراد التعليقات ومراجعة الحالات في codechecker. |

الخطوة 1 : يقوم CodeChecker log بتشغيل أمر الإنشاء المحدد ويسجل خطوات التجميع التي تم تنفيذه. تتم كتابة هذه الخطوات إلى ملف الإخراج (قاعدة بيانات التجميع) بتنسيق JSON.
الخطوة 2 : يستخدم CodeChecker analyze قاعدة بيانات تجميع JSON التي تم إنشاؤها مسبقًا لإجراء تحليل على المشروع ، حيث ينتج عن التحليل الإخراج تنسيقًا قابل للقراءة (PLIST).
الخطوة 3 : في هذه الخطوة ، يمكنك القيام بأشياء متعددة:
Parse وطباعة الملخص بشكل جميل ونتائج ملفات التحليل ( CodeChecker parse ).
قم بتخزين النتائج إلى خادم CodeChecker قيد التشغيل ( CodeChecker store ).
قارن بين نتائج/عمليات التحليل لإظهار النتائج التي تختلف بين الاثنين ( CodeChecker cmd diff ).
إلخ.
لمزيد من المعلومات كيفية استخدام CodeChecker ، انظر دليل المستخدم لدينا.
البدء (كيف مع الأمثلة)
دليل المستخدم المحلل
تجنب أو قمع إيجابيات كاذبة
المدقق والتكوين المحلل الثابت
عدم التوافق في مجلس التعاون الخليجي
قمع الإيجابيات الخاطئة
دليل مستخدم خادم الويب
دليل مستخدم واجهة المستخدم الرسومية ويب
نظرة عامة على سطر الأوامر وميزات واجهة المستخدم
تكوين الأمان
تكوين المصادقة
تكوين التفويض
النشر
نشر الخادم باستخدام Docker
تكوين الخادم
تكوين تسجيل الخادم
إعداد مستودعات CodeChecker متعددة في خادم واحد
التكامل المستمر (CI)
CodeChecker كعمل github
إعداد CI Gating مع Gerrit و Jenkins
تكوين قاعدة البيانات
دليل إعداد قاعدة بيانات PostgreSQL
دليل ترقية مخطط CodeChecker ودليل مخطط قاعدة البيانات
يمكن استخدام CodeChecker كأداة عامة لتصور نتائج المحلل.
الأدوات التالية مدعومة:
| لغة | محلل |
|---|---|
| C/C ++ | Clang محلل ثابت |
| كلانج ترتيب | |
| قاذورات clang | |
| cppcheck | |
| استنتاج الفيسبوك | |
| coccinelle | |
| الضمور | |
| kernel-doc | |
| متناثر | |
| cpplint | |
| ج# | roslynator.dotnet.cli |
| جافا | بقعة سبوت |
| استنتاج الفيسبوك | |
| بيثون | بيلنت |
| بيفليك | |
| جافا سكريبت | eslint |
| TypeScript | tslint |
| يذهب | جولينت |
| تخفيض السعر | Marmdownlint |
| أبو الهول |
لمزيد من التفاصيل ، راجع وثائق محلل الرمز المدعوم وأداة محول التقارير.
أدوات مفيدة يمكن استخدامها أيضًا خارج CodeChecker.
Build Logger (لإنشاء قاعدة بيانات تجميع JSON من البناء)
plist/sarif إلى محول HTML (لإنشاء ملفات HTML من ملفات plist أو sarif المحددة)
أداة محول التقرير (لتحويل نتائج التحليل من تحليلات أخرى إلى تنسيق دليل CodeChecker Report))))
جامع وحدة الترجمة (لجمع الملفات المصدر لوحدة ترجمة أو للحصول على ملفات المصدر التي تعتمد على ملفات الرأس المحددة)
تقرير مولد التجزئة (لإنشاء معرفات تجزئة فريدة للتقارير)
نصوص المساعد للتحليل اليومي
pipيتوفر CodeChecker على PYPI ويمكن تثبيته مع الأمر التالي:
PIP3 تثبيت CODECHECKER
ملاحظة: يمكن تثبيت هذه الحزمة على أنظمة Linux و OSX و Windows حيث يتوفر أمر pip3 . على OSX ، يجب تثبيت intercept-build لتسجيل التسجيل ( CodeChecker log ). على Windows ، التسجيل غير متوفر.
snap Package Managerيتوفر CodeChecker على متجر Snap ويمكن تثبيته مع الأمر التالي:
sudo snap تثبيت codechecker -cclassic
ملاحظة: لسوء الحظ ، تدعم حزمة SNAP أسماء الأوامر ذات الحالة الأدنى فقط. لهذا السبب ، تحتاج إلى استخدام أمر codechecker بدلاً من CodeChecker في كل مكان. للحصول على قائمة كاملة بالأوامر المتاحة في حزمة CodeChecker Snap ، قم بتشغيل snap info codechecker .
للحصول على قائمة تبعية مفصلة ، وللتعليمات حول كيفية تثبيت إصدارات Clang و Clang Tidy الأحدث ، يرجى الاطلاع على المتطلبات. يتم استخدام الأوامر التالية لتمهيد codechecker على Ubuntu 20.04 LTS:
# تثبيت التبعيات الإلزامية لبيئة التطوير والتحليل. clang clang-tidy cppcheck g ++ build-assess اطلاع
GCC-Multilib git python3-dev python3-Venv python3-setuptools# في حالة Target في Venv_dev و Ubuntu 23 Linux ، قم بتثبيت مكتبة إضافية: Sudo APT-Get Libpq-dev# تثبيت Nodejs التبعية على الويب. في حالة Debian/Ubuntu ، يمكنك استخدام الأوامر التالية. لمزيد من المعلومات ، راجع المستندات الرسمية:# https://nodejs.org/en/download/package-manager/curl -sl https://deb.nodesource.com/setup_16.x | سودو -باش -
sudo apt -get install -y nodejs# تحقق من codechecker code. `venv`.make venvsource $ pwd/venv/bin/activate# [اختياري] إذا كنت تريد استخدام طرق المصادقة الخارجية (LDAP/PAM)# اتبع التعليمات في# docs/web/anterftication. path = "$ pwd/build/codechecker/bin: $ path" cd ..ملحوظات :
بشكل افتراضي ، ستقوم make package ببناء كائنات مشتركة لـ ldlogger لـ 32bit و 64bit أيضًا. إذا كنت ترغب في إنشاء وحزم 64 bit only الكائنات المشتركة و LdLogger ثنائي ، يمكنك تعيين BUILD_LOGGER_64_BIT_ONLY متغير إلى YES قبل إنشاء الحزمة: BUILD_LOGGER_64_BIT_ONLY=YES make package .
بشكل افتراضي ، ستقوم make package بإنشاء رمز واجهة المستخدم إذا لم يتم بناؤه بعد أو تم تغيير رمز واجهة المستخدم. إذا كنت لا ترغب في إنشاء رمز واجهة المستخدم ، فيمكنك تعيين متغير بيئة BUILD_UI_DIST إلى NO قبل إنشاء الحزمة: BUILD_UI_DIST=NO make package .
استخدم make standalone_package بدلاً من make package لتجنب الاضطرار إلى تنشيط البيئة يدويًا قبل تشغيل CodeChecker.
إذا قمت بترقية بيثون نظامك إلى إصدار أحدث (على سبيل المثال ، من 3.8 إلى 3.11 -هذا هو الحال عند ترقية Ubuntu من 20.04 LTS إلى 22.04 LTS) ، فإن البيئة المثبتة لن تعمل خارج الصندوق. لإصلاح هذه المشكلة ، قم بتشغيل الأمر التالي لترقية checker_env أيضًا:
CD ~/CODECHECKER/VENV Python3 -M Venv.
للحصول على تعليمات التثبيت لـ Mac OS X ، انظر وثائق دليل تثبيت Mac OS X.
لتشغيل خادم CodeChecker في Docker ، انظر وثائق Docker. يمكنك العثور على حاوية خادم الويب CodeChecker في مركز Docker.
يمكنك تثبيت واستخدام امتداد CodeChecker VSCode من سوق Visual Studio أو من Open VSX.
الميزات الرئيسية:
قم بتشغيل تحليل CodeChecker من المحرر وشاهد النتائج تلقائيًا.
إعادة تحليل الملف الحالي عند حفظه.
الأوامر وبناء مهام لتشغيل codechecker كجزء من نظام البناء.
تصفح من خلال التقارير التي تم العثور عليها وإظهار خطوات التكاثر مباشرة في الكود.
التنقل بين خطوات التكاثر.

لمزيد من المعلومات حول كيفية تثبيت هذا البرنامج المساعد واستخدامه ، انظر مستودع هذا الامتداد.

يمكن تنفيذ CodeChecker من خلال إجراء github قابل لإعادة الاستخدام لمشروعك! تحتاج فقط إلى تحديد أمر build ، كما لو كنت ستقوم بتشغيل التحليل محليًا.
لمزيد من المعلومات ، تحقق من إجراء تحليل CodeChecker الثابت في سوق إجراءات GitHub.
يجب دائمًا اتخاذ هذه الخطوات في موجه أوامر جديد ترغب في تنفيذ التحليل فيه.
المصدر ~/codechecker/venv/bin/activate# path of codechecker package# ملاحظة: تخطي هذا السطر إذا كنت تريد دائمًا تحديد مسار codechecker الكامل path>/build/bin: $ path
قم بتحليل مشروعك باستخدام أمر check :
CodeChecker check -b "cd ~/your-project && make clean && make" -o ./results
سيقوم check بطباعة نظرة عامة على المشكلات الموجودة في مشروعك من قبل المحللين. سيتم تخزين التقارير في دليل ./results بتنسيق plist XML.
يمكنك تصور النتائج على أنها HTML ثابت من خلال التنفيذ
CodeChecker parse -e html ./results -o ./reports_html
سيتم إنشاء صفحة فهرس مع قائمة بجميع الشباك في ./reports_html/index.html
إذا كان لديك مئات النتائج ، فقد ترغب في تخزينها على خادم الويب مع الواجهة الخلفية لقاعدة البيانات.
ابدأ خادم الويب وخادم التخزين في محطة أخرى أو كعملية خلفية. بشكل افتراضي ، سوف يستمع إلى localhost:8001 .
سيتم وضع قاعدة بيانات SQLite التي تحتوي على التقارير في دليل مساحة العمل الخاصة بك ( ~/.codechecker بشكل افتراضي) ، والتي يمكن توفيرها عبر علامة -w .
CodeChecker server
قم بتخزين تقارير التحليل الخاصة بك على الخادم لتتمكن من استخدام عارض الويب.
CodeChecker store ./results -n my-project
افتح CodeChecker Web Viewer في متصفحك ، ويجب أن يتم استقبالك بتطبيق ويب يوضح لك نتائج التحليل.
بنيان
تخطيط الحزمة
التبعيات
واجهة التوفير
اختبارات الحزمة والتكامل
تم تقديم نظرة عامة حول البنية التحتية CodeChecker في PLDI 2020.
Márton ، Gábor و Krupp ، Dániel :
Tool Talk: CodeChecker
تتوفر نظرة عامة رفيعة المستوى حول البنية التحتية بين عروض مؤتمر Euro LLVM لعام 2015.
Krupp ، Dániel و Orbán ، György و Horváth ، Gábor and Babati ، Bence :
التجارب الصناعية مع مجموعة أدوات التحليل الثابت Clang