مشروع Sonarsource هذا هو محلل رمز لمشاريع Java لمساعدة المطورين على إنتاج رمز نظيف. تتوفر معلومات حول تحليل ميزات Java هنا.
لتقديم ملاحظات (طلب ميزة ، الإبلاغ عن خطأ ، وما إلى ذلك) استخدم منتدى مجتمع Sonar. يرجى عدم نسيان تحديد اللغة (Java!) ، إصدار البرنامج المساعد وإصدار Sonarqube.
إذا كان لديك سؤال حول كيفية استخدام البرنامج المساعد (ولا تساعدك المستندات) ، فنحن نشجعك أيضًا على استخدام منتدى المجتمع.
لطلب ميزة جديدة ، يرجى إنشاء موضوع جديد في منتدى مجتمع Sonarqube. حتى إذا كنت تخطط لتنفيذها بنفسك وإرساله مرة أخرى إلى المجتمع ، فيرجى بدء تشغيل موضوع جديد أولاً للتأكد من أنه يمكننا استخدامه.
لتقديم مساهمة ، قم بإنشاء طلب سحب لهذا المستودع. يرجى التأكد من اتباع نمط الكود الخاص بنا وأن جميع الاختبارات تمر (يجب أن تكون جميع الشيكات خضراء).
إذا كانت لديك فكرة عن قاعدة ولكنك لست متأكدًا من أن الجميع يحتاجون إليها ، فيمكنك تنفيذ قاعدة مخصصة متاحة لك فقط. لاحظ أنه من أجل مساعدتك ، نوصي بشدة باتباع البرنامج التعليمي المخصص 101 قبل الغوص مباشرة في تنفيذ القواعد من نقطة الصفر.
هل ترغب في العمل في هذا المشروع بدوام كامل؟ نحن نتعاقد! تحقق من https://www.sonarsource.com/hiring
لتشغيل الاختبارات محليا اتبع هذه التعليمات.
تحتاج إلى Java 22 لبناء المشروع و Java 17 قم بتشغيل اختبارات التكامل (ITS).
Java 17 لإنشاء واختبار جميع الوحدات باستثناء java-checks-test-sources التي تتطلب Java 22 .Java 22 لبناء واختبار جميع الوحدات باستثناء its يتطلب Java 17 بسبب عدم توافق SQ.لإنشاء المكون الإضافي وتشغيل اختبارات الوحدة الخاصة به ، قم بتنفيذ هذا الأمر من دليل الجذر للمشروع:
mvn clean install
قد تتكبد اختبارات الوحدة في IDE في بعض القضايا بسبب الطريقة التي تم بها بناء المشروع باستخدام Maven. إذا رأيت شيئًا كهذا:
java.lang.SecurityException: class ... signer information does not match signer information of other classes in the same package
حاول إزالة طبيعة Maven لوحدة "JDT".
لتشغيل اختبارات التكامل ، ستحتاج إلى إنشاء ملف خصائص مثل الموجود الموضح أدناه ، وتعيين عنوان URL يشير إلى موقعه في متغير البيئة باسم ORCHESTRATOR_CONFIG_URL .
# version of SonarQube Server
sonar.runtimeVersion=LATEST_RELEASE
orchestrator.updateCenterUrl=http://update.sonarsource.org/update-center-dev.properties
# The location of the Maven local repository is not automatically guessed. It can also be set with the env variable MAVEN_LOCAL_REPOSITORY.
maven.localRepository=/home/myName/.m2/repository
على سبيل المثال ، يتم تعيين متغير ORCHESTRATOR_CONFIG_URL على النحو التالي:
export ORCHESTRATOR_CONFIG_URL=file:///home/user/workspace/orchestrator.properties
قبل تشغيل ITS ، تأكد من تعيين متغير بيئة Maven_Home.
"اختبار العقل" هو اختبار يقوم بتشغيل جميع الشيكات مقابل جميع ملفات مصدر الاختبار دون مراعاة نتيجة التحليل. إنه يتحقق من أن القواعد لا تتعطل على أي ملف في مصادر الاختبار الخاصة بنا. بشكل افتراضي ، يتم استبعاد هذا الاختبار من البناء. لإطلاقه:
mvn clean install -P sanity
"اختبار البرنامج المساعد" هو جناح اختبار التكامل الذي يتحقق
mvn clean install -Pit-plugin -DcommunityEditionTestsOnly=true
ملاحظة للمساهمين الداخليين: من أجل تنفيذ الاختبارات التي تعتمد على إصدار Sonarqube Enterprise ، استخدم:
mvn clean install -Pit-plugin
"الاختبار الحاكم" هو جناح اختبار التكامل الذي يطلق تحليل قاعدة رمز كبيرة ، ويحفظ المشكلات التي تم إنشاؤها بواسطة البرنامج المساعد في ملفات التقارير ، ثم يقارن هذه النتائج بمجموعة من المشكلات المتوقعة (المخزنة كملفات JSON).
لتشغيل الاختبار ، تأكد أولاً من التحقق من العداوة الفرعية:
git submodule update --init --recursive
بعد ذلك ، تأكد من تعيين متغير بيئة JAVA_HOME لتنفيذ الاختبارات الحاكمة وأنه يشير إلى تثبيت JDK 17 المحلي. الفشل في القيام بذلك سيؤدي إلى تناقضات مع النتائج المتوقعة.
من المجلد its/ruling ، قم بإطلاق الاختبارات الحاكمة:
mvn clean install -Pit-ruling -DcommunityEditionTestsOnly=true
# Alternatively
JAVA_HOME=/my/local/java17/jdk/ mvn clean install -Pit-ruling -DcommunityEditionTestsOnly=true
ملاحظة للمساهمين الداخليين: من أجل تنفيذ الاختبارات التي تعتمد على إصدار Sonarqube Enterprise ، استخدم:
mvn clean install -Pit-ruling
يمنحك هذا الاختبار الفرصة لدراسة المشكلات التي أنشأتها كل قاعدة والتأكد من أنها ما تتوقعه. من المحتمل جدًا أن تثير أي قاعدة تنفذ قضايا في المشاريع المتعددة التي نستخدمها كقاعدة قانونية.
بالنسبة للقاعدة التي تم تنفيذها حديثًا ، فهذا يعني أن البناء الأول سيفشل على الأرجح ، بسبب الاختلافات بين النتائج المتوقعة (دون أي قيم للقاعدة الجديدة) والنتائج الجديدة. يمكنك فحص هذه المشكلات الجديدة من خلال البحث عن الملفات التي تم تسميتها بعد القاعدة الخاصة بك ( squid-SXXXX.json ) في المجلد التالي:
/path/to/project/sonar-java/its/ruling/target/actual/...
بالنسبة للقواعد الحالية التي يتم تعديلها ، قد تتوقع بعض الاختلافات بين "الفعلي" (من التحليل الجديد) والنتائج المتوقعة. راجع بعناية التغييرات التي يتم عرضها وتحديث الموارد المتوقعة وفقًا لذلك.
تحتوي جميع ملفات json على قائمة بالخطوط ، مفهرسة حسب الملف ، موضحة المكان الذي توجد فيه المشكلات التي تثيرها قاعدة محددة. إذا/عندما يبدو كل شيء جيدًا بالنسبة لك ، يمكنك نسخ الملف بالمشكلات الفعلية الموجودة في:
its/ruling/target/actual/
في الدليل مع القضايا المتوقعة:
its/ruling/src/test/resources/
على سبيل المثال باستخدام الأمر:
cp its/ruling/target/actual/* its/ruling/src/test/resources/
تم تصميم الاختبارات في وحدة أوتوسكان للكشف عن الاختلافات بين المشكلات التي يمكن أن يجدها محلل Java مع وبدون رمز Bytecode. الهدف هنا هو اكتشاف وإصلاح FPS المحتملة ، والتحقق من FNs المتوقعة بين ذلك سيظهر في التحليل التلقائي لـ Sonarcloud.
يمكن تقسيم هذا الاختبار في خطوتين:
تأكد من تجميع وحدة java-checks-tests-sources (أي: ملفات .class في java-checks-tests-sources/target/ is to to there).
في شك ، اذهب إلى وحدة java-checks-tests-sources وتشغيلها:
# Use java 22!
mvn clean compile لتشغيل الاختبارات ، انتقل إلى مجلد its/autoscan وتشغيله:
# cd its/autoscan
# use Java 17!
mvn clean package --batch-mode --errors --show-version
--activate-profiles it-autoscan
-Dsonar.runtimeVersion=LATEST_RELEASE سيتم العثور على القطع الأثرية التي تم إنتاجها أثناء تنفيذ الاختبار في its/autoscan/target/actual . سترغب في مقارنة النتائج التي تم إنتاجها في أدوات أوتوسكان ديفيف
لمزيد من المعلومات التفصيلية ، يمكنك مقارنة الاختلافات بين النتائج الموجودة مع رمز Bytecode وبدون رمز Bytecode من خلال مقارنة مجلدين كل منهما:
اعتمادًا على النتائج الموجودة ، قد تحتاج إلى تحديث الحقيقة الأساسية. يتم سرد النتائج المتوقعة في SRC/اختبار/الموارد.
يمكنك تصحيحها عن طريق إضافة -Dmaven.binary=mvnDebug كخيار عند إجراء الاختبارات. سيؤدي ذلك إلى انتظار المحلل JVM حتى يتم إرفاق تصحيح الأخطاء قبل المتابعة.
حقوق الطبع والنشر 2012-2024 Sonarsource.
يتم نشر Sonarqube Analyzers التي تم إصدارها بعد 29 نوفمبر 2024 ، بما في ذلك إصلاحات التصحيح للإصدارات السابقة ، تحت إصدار ترخيص Sonar المصدر 1 (SSALV1).
راجع الملفات الفردية للحصول على التفاصيل التي تحدد الترخيص المطبق على كل ملف. سيتم ملاحظة الملفات الخاضعة لـ SSALV1 في رؤوسهم.