مشروع Sonarsource هذا هو محلل رمز ثابت للغة PHP المستخدمة كملحق لمنصة Sonarqube. سيسمح لك بإنتاج رمز نظيف مستقر ويدعم بسهولة من خلال مساعدتك في العثور على الأخطاء ونقاط الضعف ورائحة الرمز.
لتقديم ملاحظات (طلب ميزة ، الإبلاغ عن خطأ ، وما إلى ذلك) استخدم منتدى Sonarsource Community. من فضلك لا تنسى تحديد اللغة (PHP!) ، إصدار البرنامج المساعد ، ونسخة Sonarqube.
إذا كان لديك سؤال حول كيفية استخدام البرنامج المساعد (ولا تساعدك المستندات) ، فنحن نشجعك أيضًا على استخدام منتدى المجتمع.
لطلب ميزة جديدة ، يرجى إنشاء موضوع جديد في منتدى مجتمع Sonarsource. حتى إذا كنت تخطط لتنفيذها بنفسك وإرسالها إلى المجتمع ، فيرجى بدء تشغيل موضوع جديد أولاً للتأكد من أنه يمكننا متابعة ذلك.
لتقديم مساهمة ، قم بإنشاء طلب سحب لهذا المستودع. يرجى التأكد من اتباع نمط الكود الخاص بنا وأن جميع الاختبارات تمر.
إذا كانت لديك فكرة عن قاعدة ولكنك لست متأكدًا من أن الجميع يحتاجون إليها ، فيمكنك تنفيذ قاعدة مخصصة متاحة لك فقط.
newIssue إضافية إلى واجهة CheckContext APIPHPCustomRulesDefinition ، تم إهماله منذ الإصدار 2.13 (مارس 2018)ParameterTree#type() . استخدم ParameterTree#declaredType() بدلاً من ذلك.ReturnTypeClauseTree#type() . استخدم ReturnTypeClauseTree#declaredType() بدلاً من ذلك.ClassPropertyDeclarationTree#typeAnnotation() . استخدم ClassPropertyDeclarationTree#declaredType() بدلاً من ذلك.CatchBlockTree#variable() يمكن الآن إعادة NULL .FunctionCallTree#arguments() . استخدم FunctionCallTree#callArguments() بدلاً من ذلك.AnonymousClassTree#arguments() . استخدم AnonymousClassTree#callArguments() بدلاً من ذلك.CallArgumentTree . تلتف هذه الشجرة تعبيرات تم تمريرها كحجج الآن.ThrowExpressionTree .MatchExpressionTree .ParameterTree لديها الآن طريقة visibility .لتشغيل الاختبارات محليا اتبع هذه التعليمات.
لإنشاء المكون الإضافي وتشغيل اختبارات الوحدة الخاصة به ، قم بتنفيذ هذا الأمر من دليل الجذر للمشروع:
./gradlew build لتشغيل اختبارات التكامل ، ستحتاج إلى إنشاء ملف خصائص مثل هذا الموضح أدناه ، وتعيين موقعه في متغير البيئة باسم ORCHESTRATOR_CONFIG_URL .
# version of SonarQube server
sonar.runtimeVersion =9.9قبل تشغيل أي من اختبارات التكامل ، تأكد من التحقق من النسيج الفرعي:
git submodule update --init"اختبار البرنامج المساعد" هو اختبار تكامل إضافي يتحقق
./gradlew its:plugin:integrationTest"الاختبار الحاكم" هو اختبار تكامل خاص يطلق تحليل قاعدة رمز كبيرة ، ويحفظ المشكلات التي أنشأها المكون الإضافي في ملفات التقارير ، ثم يقارن هذه النتائج بمجموعة من المشكلات المتوقعة (المخزنة كملفات JSON). لإطلاق الاختبار الحاكم:
./gradlew its:ruling:integrationTestيمنحك هذا الاختبار الفرصة لدراسة المشكلات التي أنشأتها كل قاعدة والتأكد من أنها ما تتوقعه. يمكنك فحص القضايا الجديدة/المفقودة عن طريق التحقق من عنوان URL المحلي Sonarqube المذكور في السجلات في نهاية التحليل. إذا كان كل شيء يبدو جيدًا بالنسبة لك ، فيمكنك نسخ الملف بالمشكلات الفعلية الموجودة في
sonar-php/its/ruling/target/actual/
في الدليل مع القضايا المتوقعة
sonar-php/its/ruling/src/test/resources/expected/
لتحديث جميع أوصاف القواعد:
./gradlew ruleApiUpdateلجلب الملفات الثابتة لقاعدة SXXXX من RSPEC:
./gradlew ruleApiGenerateRule -Prule=SXXXX نفس الشيء بالنسبة لفرع RSPEC معين ( master افتراضيًا):
./gradlew ruleApiGenerateRule -Prule=SXXXX -Pbranch=my-branchحقوق الطبع والنشر 2010-2024 Sonarsource.
يتم نشر Sonarqube Analyzers التي تم إصدارها بعد 29 نوفمبر 2024 ، بما في ذلك إصلاحات التصحيح للإصدارات السابقة ، تحت إصدار ترخيص Sonar المصدر 1 (SSALV1).
راجع الملفات الفردية للحصول على التفاصيل التي تحدد الترخيص المطبق على كل ملف. سيتم ملاحظة الملفات الخاضعة لـ SSALV1 في رؤوسهم.