ما هو SonarQube؟
SonarQube هي منصة مفتوحة المصدر طورتها SonarSource للفحص المستمر لجودة الكود. تقوم بإجراء تحليل ثابت للكود لاكتشاف الأخطاء، و”روائح الكود” (code smells)، والثغرات الأمنية في أكثر من 25 لغة برمجة. يتكامل SonarQube مع سير عملك الحالي (خطوط أنابيب CI/CD) ويوفر للمطورين لوحة تحكم شاملة لتحديد المشكلات وإصلاحها، مما يضمن أن الكود نظيف وآمن وقابل للصيانة.
الميزات الرئيسية
- دعم متعدد اللغات: يحلل مجموعة واسعة من اللغات بما في ذلك Java و C# و Python و JavaScript و C++ وغيرها.
- كشف الثغرات الأمنية: يحدد العيوب الأمنية الشائعة مثل حقن SQL والبرمجة النصية عبر المواقع (XSS) وغيرها من ثغرات OWASP Top 10.
- مقاييس جودة الكود: يتتبع المقاييس الرئيسية مثل تعقيد الكود والتكرار وتغطية الاختبار للحفاظ على مستوى عالٍ من صحة الكود.
- تكامل CI/CD: يتكامل بسلاسة مع أدوات CI/CD الشائعة مثل Jenkins و Azure DevOps و GitLab و GitHub Actions لأتمتة تحليل الكود.
- بوابات الجودة (Quality Gates): تسمح لك بتحديد مجموعة من الشروط التي يجب أن يفي بها مشروعك قبل إصداره، مما يمنع الكود السيئ من الوصول إلى الإنتاج.
- تكامل بيئة التطوير المتكاملة (IDE): يوفر ملحقات لبيئات التطوير مثل IntelliJ IDEA و VS Code و Eclipse، مما يسمح للمطورين بإصلاح المشكلات قبل إرسال الكود.
حالات الاستخدام
- التكامل المستمر/النشر المستمر (CI/CD): تحليل كل طلب سحب وسطر كود جديد تلقائيًا لاكتشاف المشكلات في وقت مبكر من عملية التطوير.
- عمليات تدقيق الأمان: إجراء عمليات مسح أمني شاملة على التطبيقات لتحديد الثغرات الأمنية ومعالجتها قبل النشر.
- إعادة هيكلة الكود القديم: تقييم جودة قاعدة بيانات الكود الحالية لتحديد أولويات الديون التقنية وإدارتها.
- فرض معايير الترميز: ضمان التزام جميع المطورين في الفريق بمجموعة متسقة من معايير الترميز وأفضل الممارسات.
البدء
البدء باستخدام SonarQube يتضمن عادةً تشغيل خادم SonarQube وماسح ضوئي. Docker هو أسهل طريقة لتشغيل الخادم للتجربة.
- تشغيل خادم SonarQube باستخدام Docker:
docker run -d --name sonarqube -p 9000:9000 sonarqube:latestيمكنك الوصول إلى الخادم على
http://localhost:9000. -
تشغيل SonarScanner على مشروع: قم بتنزيل وتكوين SonarScanner لمشروعك. لمشروع Java بسيط، ستقوم بإنشاء ملف
sonar-project.properties:# يجب أن يكون فريدًا في مثيل SonarQube معين sonar.projectKey=my-java-project # --- خصائص اختيارية --- sonar.projectName=My Java Project sonar.projectVersion=1.0 # المسار نسبي لملف sonar-project.properties. sonar.sources=. # ترميز الكود المصدري. الافتراضي هو ترميز النظام الافتراضي sonar.sourceEncoding=UTF-8 - تنفيذ الفحص:
من الدليل الجذر لمشروعك، قم بتشغيل أمر الماسح الضوئي:
sonar-scannerبعد اكتمال التحليل، ستكون النتائج متاحة على لوحة تحكم SonarQube الخاصة بك.
التسعير
يقدم SonarQube نموذج Freemium (مجاني مع ميزات مدفوعة):
- إصدار المجتمع (Community Edition): مجاني ومفتوح المصدر، يقدم تحليلًا ثابتًا لأكثر من 15 لغة.
- إصدار المطور (Developer Edition): اشتراك مدفوع يضيف ميزات مثل تحليل طلبات السحب وتحليل لغات مثل Swift و Objective-C.
- إصدار المؤسسة (Enterprise Edition): اشتراك مدفوع مصمم للمؤسسات الكبيرة، يقدم ميزات أمان متقدمة وإدارة المحافظ وإعداد التقارير.
- إصدار مركز البيانات (Data Center Edition): لعمليات النشر الحيوية، يوفر توفرًا عاليًا وقابلية للتوسع.