الأداة الأمامية البسيطة التي يمكنها تشغيل أدوات تحليل ثابتة مختلفة عن طريق قراءة المعلومات المطلوبة من compile_commands.json.
يوفر تنسيق الإخراج للتكامل مع أدوات أخرى ، والانكسيشوسي عند الحاجة ، والقدرة على تجاوز/إعادة تكوين علامات التحويل البرمجي وما شابه على متطلبات "أداة" لكل "أداة".
يتم التطوير الحالي بشكل أساسي على Windows ولكن يجب أن يعمل على أي منصة حيث يكون لديك بيثون ، وبيئة تطوير العمل لمشروعك ومحللك. تلك المدعومة حاليا:
المشروع متاح في PYPI كتوزيع المصدر:
pip install processcdb
نظرًا لأن ProcessCDB ستقوم أيضًا بتثبيت بعض التبعيات ، يتم تقديم استخدام PIPX للتثبيت.
بمجرد تثبيت الحزمة. إنشاء ملف تكوين مع:
processcdb --dump-config
سيؤدي ذلك إلى إنشاء ملف تكوين Barebones إلى الموقع الافتراضي (يمكن الكتابة فوقه لاحقًا مع -وسيطة -config). قم بتحرير هذا الملف لتشير إلى خيارات "ثنائية" لتلك المحلل للإشارة إلى قابلة للتنفيذ. على Windows ، لا تحذف تمديد الملف.
المساعدة الأساسية:
processcdb --help
بعد عملية إنشاء compile_commands.json ، يمكنك تشغيل ProcessCDB باستخدام أداة محددة مثل هذه:
processcdb --tool clang-tidy
سيحاول ذلك تحديد موقع ملف JSON من دليل العمل الحالي وتشغيل الأداة ، في هذه الحالة ، في هذه الحالة ، مقابل جميع الملفات التي يتم تجميعها وليس سوداء في ملف Comfig ProcessCDB أو في ملف التكوين الخاص بالأدوات وإنشاء الإخراج إلى الإخراج القياسي. إذا كنت بحاجة إلى تشغيل الأداة عندما لا تتمكن من الوصول إلى تغيير دليل العمل الحالي ، فيمكنك تمرير --cdb والموقع المطلق:
processcdb --tool clang-tidy --cdb D:srcmyprojectbuildcompile_commands.json
يمكن للمرء توجيه أدوات إخراج إلى ملف مع --output المخرج. تجدر الإشارة إلى أن بعض الأدوات ( -t ) يمكن أن توفر وسيطات أخرى لأغراض المعالجة بعد المرحلة أو الأداة:
processcdb --tool clang-tidy --cdb ~/src/myproject/build/compile_commands.json --output scan.log --xml
إذا تم استدعاء ProcessCDB دون تمرير --config -يتم استخدام ملف التكوين الافتراضي. يعتمد الموقع على نظام التشغيل. إذا كنت بحاجة إلى تحليل مشاريع متعددة بنوع مختلف من الإعدادات أو تريد التحليل مع إصدارات مختلفة من ماسح ضوئي معين ، فاستخدم ملفات تكوين متعددة.
على سبيل المثال ، إذا كان لديك قاعدة كود ، فأنت ترغب في المسح الضوئي باستخدام Clang 11.0.0 ولكن يتم تجميع مشروعك حقًا باستخدام Microsoft من MSVC ولديك مشروع آخر يتجمع مع Clang: قم بعمل ملف تكوين منفصل لـ MSVC و Clang واستدعاء ProcessCDB:
processcdb --tool clang-tidy --config location/to/config/msvc17_clang_interop.ini
إذا تم استدعاء ProcessCDB دون تمرير --config -يتم استخدام ملف التكوين الافتراضي. لإنشاء ملف التكوين ، تمرير- --dump-config إلى ProcessCDB. لحفظ ملف التكوين الافتراضي إلى ملف. إما التقاط الإخراج القياسي أو توفير المعلمة --config .
تحتوي كل أداة على قسم منفصل ويمكن تكوين كل قسم إما في القسم المحدد للأداة أو بشكل افتراضي. الحد الأدنى. سيبدو أداة واحدة من مثل هذا: شيء من هذا القبيل:
[clang-tidy]
binary=C:llvm-11.0.0binclang-tidy.exe
هنا لدينا قسم لأداة clang-tidy ، حيث نقوم بتعيين متغير binary لقيمة c:llvm-11.0.0binclang-tidy.exe .
يتم استخدام وحدة Python configparser لتحميل/تحليل الملف.
تتم مشاركة المتغيرات التالية بين الأدوات:
binary - المسار المطلق إلى الماسح الضوئي.file_blacklist - قائمة مواصفات الملفات التي يجب حذفها من الفحصarg_blacklist - قائمة وسيطات سطر الأوامر التي تم تمريرها إلى برنامج التحويل البرمجي الذي لا ينبغي نقله إلى أداة.arg_additions - قائمة من أزواج المفاتيح/القيمة. إذا تم العثور على المفتاح في JSON ، يتم وضع قيمة في وسيطات الأداة.jobs - معالجة الأرقام الافتراضية ProcessCDB أو الأداة التي يمكن أن تستخدمها للمعالجة. 0 للكشف عن السيارات.default_includes - قائمة المسارات التي يجب نقلها تلقائيًا إلى الأداة كما تتضمن المسارات التي قد لا يتم تحديدها في compile_commands.jsondefault_args - قائمة الوسيطات التي يجب نقلها إلى الأداة التي لا يتم توفيرها بواسطة compile_commands.jsonincludes_as_system : قائمة مواصفات الملفات التي يجب تحويلها من المعتاد -I تضمين إلى -isystem.كل خيار تكوين هو قائمة ويسمح بقيم متعددة ، استخدم Semicolon كفاصل عنصر.
باستخدام arg_blacklist ، يمكن للمرء تجريد وسيطات سطر الأوامر غير الضرورية ويمكن استخدام arg_addition لحقن وسيطات جديدة. على سبيل المثال ، إذا كان يجمع مشروعًا في MSVC وتمكين الاستثناءات ، فسيسمح للتكوين التالي أداة Clang-Tidy بالعمل بشكل صحيح:
[clang-tidy]
binary=C:llvm-11.0.0binclang-tidy.exe
arg_blacklist=EHsc
arg_additions=EHsc=-Xclang,-fcxx-exceptions
كما أولاً ، قد تلاحظ ProcessCDB أن compile_commands.json قد يكون لديه /EHsc وسيطة ، فإنه سيضيف وسيطتين جديدتين -Xclang و '-fcxx-exceptions' ثم Arg_BlackList يقوم بعد ذلك بإزالة الأصل /EHsc
تحتوي أداة CPPCheck أيضًا على خيار supression_file الذي يجب أن يكون ، إذا لزم الأمر ، موقعًا مطلقًا لملف قمع CPPCHECKS.
تعد قدرة Clang-Tidy Tooool على تحويل ملف السجل إلى XML لدعم Jenkins المباشر جزءًا من مشروع CodeChecker ومرخصته بموجب Apache 2.0
الصفحة الرئيسية: https://github.com/rasjani/processcdb القضايا: https://github.com/rasjani/ProcessCdb/issues